-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathMakefile
More file actions
171 lines (142 loc) · 6.58 KB
/
Copy pathMakefile
File metadata and controls
171 lines (142 loc) · 6.58 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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
.PHONY: lint mypy test test-cov test-verbose build generate push install-dev format test-health \
run-core run-gateway run-frontend prepare-bun
# Makefile for Aura Project
TAG ?= latest
REGISTRY ?= ghcr.io/zaebee
PLATFORM ?= linux/amd64
DNA_PATH := packages/aura-core/src:packages/aura-core/gen-proto
CORE_PATH := core/src:core/gen-proto:$(DNA_PATH)
GATEWAY_PATH := api-gateway/src:api-gateway/gen-proto:$(DNA_PATH)
TG_PATH := synapses/telegram-bot/src:$(DNA_PATH)
MCP_PATH := synapses/mcp-server/src:synapses/mcp-server/gen-proto:core/src:$(DNA_PATH)
KEEPER_PATH := agents/bee-keeper/src:$(DNA_PATH)
TOOL_PATH := $(CORE_PATH):$(DNA_PATH)
# Proto source files (for incremental generation)
PROTO_SOURCES := $(wildcard proto/aura/*/v1/*.proto)
PROTO_SENTINEL := .gen-proto.stamp
# --- 1. CODE QUALITY ---
lint: $(PROTO_SENTINEL)
# Protobuf Lint
cd proto && buf lint
# Python Lint (Ruff)
PYTHONPATH=$(DNA_PATH):$(CORE_PATH):$(GATEWAY_PATH):$(TG_PATH):$(MCP_PATH):$(KEEPER_PATH) uv run ruff check .
# Python Type Check (Mypy)
# We use --explicit-package-bases to avoid double discovery when multiple paths overlap
MYPYPATH=$(CORE_PATH) uv run mypy --explicit-package-bases core/src
MYPYPATH=$(GATEWAY_PATH) uv run mypy --explicit-package-bases api-gateway/src
MYPYPATH=$(TG_PATH) uv run mypy --explicit-package-bases synapses/telegram-bot/src
MYPYPATH=$(MCP_PATH) uv run mypy --explicit-package-bases synapses/mcp-server/src
MYPYPATH=$(KEEPER_PATH) uv run mypy --explicit-package-bases agents/bee-keeper/src
MYPYPATH=$(DNA_PATH) uv run mypy packages/aura-core/src
# Security Audit (Bandit)
uv run bandit -r . -c pyproject.toml
# Frontend Lint
# cd frontend && bun run lint
mypy:
MYPYPATH=$(CORE_PATH) uv run mypy --explicit-package-bases core/src
MYPYPATH=$(GATEWAY_PATH) uv run mypy --explicit-package-bases api-gateway/src
MYPYPATH=$(TG_PATH) uv run mypy --explicit-package-bases synapses/telegram-bot/src
MYPYPATH=$(MCP_PATH) uv run mypy --explicit-package-bases synapses/mcp-server/src
MYPYPATH=$(KEEPER_PATH) uv run mypy --explicit-package-bases agents/bee-keeper/src
MYPYPATH=$(DNA_PATH) uv run mypy packages/aura-core/src
setup-hooks:
# Install pre-commit hooks
uv run pre-commit install
# Run tests
test: $(PROTO_SENTINEL)
# Run core tests
PYTHONPATH=$(CORE_PATH) uv run pytest core/tests/ -v
# Run telegram-bot tests with isolated path to avoid 'src' collision
PYTHONPATH=$(TG_PATH) uv run pytest synapses/telegram-bot/tests/ -v
# Run mcp-server tests if they exist
if [ -d "synapses/mcp-server/tests" ]; then PYTHONPATH=$(MCP_PATH):$(CORE_PATH) uv run pytest synapses/mcp-server/tests/ -v; fi
# Run tests with coverage report
test-cov:
PYTHONPATH=$(CORE_PATH) uv run pytest core/tests/ -v --cov=core/src --cov-report=term-missing
# Run tests with verbose output
test-verbose:
PYTHONPATH=$(CORE_PATH) uv run pytest core/tests/ -vv -s
# --- 2. BUILD ---
build: generate build-tg
# Build Docker images for all services
docker build --platform $(PLATFORM) -t $(REGISTRY)/aura-gateway:$(TAG) -f api-gateway/Dockerfile .
docker build --platform $(PLATFORM) -t $(REGISTRY)/aura-core:$(TAG) -f core/Dockerfile .
docker build --platform $(PLATFORM) -t $(REGISTRY)/aura-frontend:$(TAG) -f frontend/Dockerfile .
build-tg:
docker build --platform $(PLATFORM) -t $(REGISTRY)/aura-telegram-bot:$(TAG) -f synapses/telegram-bot/Dockerfile .
# --- 3. HELPER ---
# Incremental generation: only re-run buf if .proto files changed
$(PROTO_SENTINEL): $(PROTO_SOURCES) buf.gen.yaml
# Generate Protobuf code directly into packages/aura-core/gen-proto/aura_core_gen
# Uses buf.gen.yaml which leverages betterproto
mkdir -p packages/aura-core/gen-proto/aura_core_gen
buf generate
# Fix betterproto google import shim
if [ -d "packages/aura-core/gen-proto/aura_core_gen/aura/core" ]; then \
mkdir -p packages/aura-core/gen-proto/aura_core_gen/aura/core/google; \
echo "from betterproto.lib.google import protobuf" > packages/aura-core/gen-proto/aura_core_gen/aura/core/google/__init__.py; \
fi
# Post-generation fix for double-prefix in negotiation chromosome
if [ -f "packages/aura-core/gen-proto/aura_core_gen/aura/negotiation/v1.py" ]; then \
sed -i 's/from \.aura\.core import v1/from aura_core_gen.aura.core import v1/g' packages/aura-core/gen-proto/aura_core_gen/aura/negotiation/v1.py; \
fi
if [ -d "packages/aura-core/gen-proto/aura_core_gen/aura/assets" ]; then \
mkdir -p packages/aura-core/gen-proto/aura_core_gen/aura/assets/google; \
echo "from betterproto.lib.google import protobuf" > packages/aura-core/gen-proto/aura_core_gen/aura/assets/google/__init__.py; \
fi
touch $(PROTO_SENTINEL)
generate: $(PROTO_SENTINEL)
# --- 4. PUBLISH (CI ONLY) ---
push: push-tg
# Push Docker images to registry
docker push $(REGISTRY)/aura-gateway:$(TAG)
docker push $(REGISTRY)/aura-core:$(TAG)
docker push $(REGISTRY)/aura-frontend:$(TAG)
push-tg:
docker push $(REGISTRY)/aura-telegram-bot:$(TAG)
# --- 5. DEV TASKS ---
install-dev:
# Install development dependencies
uv sync --group dev
format:
# Format code
uv run ruff format .
# --- 6. RUN SERVICES (auto-generates protos if needed) ---
run-core: $(PROTO_SENTINEL)
# Run Core gRPC service
PYTHONPATH=$(TOOL_PATH) uv run python -m core.src.main
run-gateway: $(PROTO_SENTINEL)
# Run API Gateway
PYTHONPATH=$(GATEWAY_PATH):$(DNA_PATH) uv run uvicorn main:app --host 0.0.0.0 --port 8000 --app-dir api-gateway/src
prepare-bun:
# Install frontend dependencies via bun
cd frontend && bun install
run-frontend: prepare-bun
# Run Frontend dev server
cd frontend && bun run dev
# --- 7. CORE TASKS ---
core-seed:
# Seed the database with initial inventory
PYTHONPATH=$(CORE_PATH) uv run python core/scripts/seed.py
core-pulse:
# Trigger a manual NegotiationAccepted event
PYTHONPATH=$(CORE_PATH) uv run python core/scripts/trigger_pulse.py
core-train:
# Train the DSPy negotiation engine
PYTHONPATH=$(CORE_PATH) uv run python core/scripts/training/train_dspy.py
# Test health endpoints
tools-health:
# Test health check endpoints (requires running services)
PYTHONPATH=$(TOOL_PATH) uv run python tools/test_health_endpoints.py
tools-distill:
# Distill architectural knowledge from the codebase into binary/JSON artifacts
PYTHONPATH=$(TOOL_PATH) uv run python tools/distill_knowledge.py
tools-validate:
# Validate knowledge artifacts against the markdown architectural anchor
PYTHONPATH=$(TOOL_PATH) uv run python tools/validate_knowledge.py
tools-simulate:
# Run agent negotiation simulation
PYTHONPATH=$(TOOL_PATH) uv run python tools/simulators/agent_sim.py
tools-buyer:
# Run agent negotiation simulation
PYTHONPATH=$(TOOL_PATH) uv run python tools/simulators/autonomous_buyer.py