mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-04-28 11:30:15 +00:00
122 lines
3.8 KiB
Makefile
122 lines
3.8 KiB
Makefile
# Pulse Makefile for development
|
|
|
|
.PHONY: build run dev dev-status dev-logs dev-stop dev-restart dev-backend-restart dev-verify dev-foreground frontend backend all clean distclean dev-hot lint lint-backend lint-frontend format format-backend format-frontend build-agents control-plane handoff
|
|
|
|
FRONTEND_DIR := frontend-modern
|
|
FRONTEND_DIST := $(FRONTEND_DIR)/dist
|
|
FRONTEND_EMBED_DIR := internal/api/frontend-modern
|
|
|
|
# Build everything (including all agent binaries)
|
|
all: frontend backend build-agents
|
|
|
|
# Build frontend only
|
|
frontend:
|
|
npm --prefix $(FRONTEND_DIR) run build
|
|
@echo "✓ Frontend build synced to $(FRONTEND_EMBED_DIR)"
|
|
|
|
# Build backend only (includes embedded frontend)
|
|
backend:
|
|
go build -o pulse ./cmd/pulse
|
|
|
|
# Build both and run
|
|
build: frontend backend
|
|
|
|
# Run the built binary
|
|
run: build
|
|
./pulse
|
|
|
|
# Development - managed local runtime
|
|
dev:
|
|
npm run dev
|
|
|
|
dev-status:
|
|
npm run dev:status
|
|
|
|
dev-logs:
|
|
npm run dev:logs
|
|
|
|
dev-stop:
|
|
npm run dev:stop
|
|
|
|
dev-restart:
|
|
npm run dev:restart
|
|
|
|
dev-backend-restart:
|
|
npm run dev:backend-restart
|
|
|
|
dev-verify:
|
|
npm run dev:verify
|
|
|
|
dev-foreground:
|
|
npm run dev:foreground
|
|
|
|
dev-hot:
|
|
npm run dev:foreground
|
|
|
|
# Clean build artifacts
|
|
clean:
|
|
rm -f pulse
|
|
rm -rf $(FRONTEND_DIST) $(FRONTEND_EMBED_DIR)
|
|
|
|
distclean: clean
|
|
./scripts/cleanup.sh
|
|
|
|
# Quick managed restart for development
|
|
restart: dev-restart
|
|
|
|
# Run linters for both backend and frontend
|
|
lint: lint-backend lint-frontend
|
|
|
|
lint-backend:
|
|
golangci-lint run ./...
|
|
|
|
lint-frontend:
|
|
npm --prefix $(FRONTEND_DIR) run lint
|
|
|
|
# Apply formatters
|
|
format: format-backend format-frontend
|
|
|
|
format-backend:
|
|
gofmt -w cmd internal pkg
|
|
|
|
format-frontend:
|
|
npm --prefix $(FRONTEND_DIR) run format
|
|
|
|
# Build control plane binary
|
|
control-plane:
|
|
@VERSION=$$(cat VERSION | tr -d '\n') && \
|
|
go build -ldflags="-s -w -X main.Version=v$$VERSION" -trimpath -o pulse-control-plane ./cmd/pulse-control-plane
|
|
|
|
test:
|
|
@./scripts/ensure_test_assets.sh
|
|
@echo "Running backend tests (excluding tmp tooling)..."
|
|
go test -race -timeout 10m $$(go list ./... | grep -v '/tmp$$')
|
|
|
|
# Run integration tests (requires Ollama at OLLAMA_URL or 127.0.0.1:11434)
|
|
test-integration:
|
|
@echo "Running AI integration tests against Ollama..."
|
|
@echo "Set OLLAMA_URL to override default (http://127.0.0.1:11434)"
|
|
go test -tags=integration -v ./internal/ai/providers/... -run "TestIntegration"
|
|
|
|
# Run both unit and integration tests
|
|
test-all: test test-integration
|
|
|
|
# Build all agent binaries for all platforms
|
|
build-agents:
|
|
@echo "Building agent binaries for all platforms..."
|
|
@mkdir -p bin
|
|
@VERSION=$$(cat VERSION | tr -d '\n') && \
|
|
echo "Building unified agent binaries..." && \
|
|
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w -X main.Version=v$$VERSION" -trimpath -o bin/pulse-agent-linux-amd64 ./cmd/pulse-agent && \
|
|
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags="-s -w -X main.Version=v$$VERSION" -trimpath -o bin/pulse-agent-linux-arm64 ./cmd/pulse-agent && \
|
|
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -ldflags="-s -w -X main.Version=v$$VERSION" -trimpath -o bin/pulse-agent-darwin-amd64 ./cmd/pulse-agent && \
|
|
CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w -X main.Version=v$$VERSION" -trimpath -o bin/pulse-agent-darwin-arm64 ./cmd/pulse-agent && \
|
|
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags="-s -w -X main.Version=v$$VERSION" -trimpath -o bin/pulse-agent-windows-amd64.exe ./cmd/pulse-agent
|
|
@echo "✓ All agent binaries built in bin/"
|
|
|
|
# Session handoff — merge a Claude session's handoff entry into MEMORY.md (flock-safe)
|
|
# Usage: make handoff SESSION_ID=<id>
|
|
# Expects handoff content at /tmp/handoff-$(SESSION_ID).md
|
|
handoff:
|
|
@if [ -z "$(SESSION_ID)" ]; then echo "Error: SESSION_ID required (make handoff SESSION_ID=xxx)" >&2; exit 1; fi
|
|
@./scripts/session-handoff.sh "$(SESSION_ID)" "/tmp/handoff-$(SESSION_ID).md"
|