-
-
Notifications
You must be signed in to change notification settings - Fork 247
Expand file tree
/
Copy pathMakefile
More file actions
138 lines (102 loc) · 4.09 KB
/
Copy pathMakefile
File metadata and controls
138 lines (102 loc) · 4.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# 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/...
# 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 20m $$(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"