mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-08-24 16:33:34 +00:00
The internal/api race suite now routinely exceeds the old 20-minute package timeout on hosted runners while passing. Set a governed 30-minute package timeout and 40-minute release job ceiling, pin the relationship with contract tests, and refresh the rc.4 packet with the fixes landed since preparation.
139 lines
4.1 KiB
Makefile
139 lines
4.1 KiB
Makefile
# Pulse Makefile for development
|
|
|
|
.PHONY: build run dev dev-lab dev-status dev-status-lab dev-logs dev-stop dev-restart dev-restart-lab dev-backend-restart dev-verify dev-verify-lab dev-foreground dev-foreground-lab 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
|
|
GO_TEST_PACKAGES := ./cmd/... ./internal/... ./pkg/... ./scripts/... ./tests/...
|
|
GO_TEST_TIMEOUT ?= 30m
|
|
|
|
# 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-lab:
|
|
npm run dev:lab
|
|
|
|
dev-status:
|
|
npm run dev:status
|
|
|
|
dev-status-lab:
|
|
npm run dev:status:lab
|
|
|
|
dev-logs:
|
|
npm run dev:logs
|
|
|
|
dev-stop:
|
|
npm run dev:stop
|
|
|
|
dev-restart:
|
|
npm run dev:restart
|
|
|
|
dev-restart-lab:
|
|
npm run dev:restart:lab
|
|
|
|
dev-backend-restart:
|
|
npm run dev:backend-restart
|
|
|
|
dev-verify:
|
|
npm run dev:verify
|
|
|
|
dev-verify-lab:
|
|
npm run dev:verify:lab
|
|
|
|
dev-foreground:
|
|
npm run dev:foreground
|
|
|
|
dev-foreground-lab:
|
|
npm run dev:foreground:lab
|
|
|
|
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..."
|
|
go test -race -timeout $(GO_TEST_TIMEOUT) $$(go list $(GO_TEST_PACKAGES))
|
|
|
|
# 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"
|