-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
136 lines (109 loc) · 4.79 KB
/
Makefile
File metadata and controls
136 lines (109 loc) · 4.79 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
.PHONY: install test lint format clean dev-install precommit build \
clear-memory clear-demo-memory reset-all reset-dry-run \
backend frontend services services-stop services-logs \
deploy-frontend-swa \
deploy-backend deploy-backend-mempalace deploy-backend-mem0 rollout-status
install:
uv pip install --system -e .[develop]
dev-install:
uv pip install -e .[develop]
test:
# Hermetic tests only. Integration/manual suites depend on live services
# (Neo4j, Mem0, Qdrant, Falkor, RabbitMQ) and run in dedicated workflows
# (see .github/workflows/eval-tests.yml and `make test-integration`).
# Uses the ambient pytest so the `make install` target (which does
# `uv pip install --system`) and `make test` share the same interpreter
# in CI. Locally, run from an activated venv or use `uv run make test`.
pytest --ignore=tests/integration --ignore=tests/manual --ignore=tests/eval -m "not integration"
test-integration:
pytest tests/integration tests/manual tests/eval -m "integration or not integration"
lint:
ruff check .
format:
ruff check --fix .
clean:
rm -rf build/
rm -rf dist/
rm -rf *.egg-info
find . -type d -name __pycache__ -exec rm -rf {} +
find . -type f -name "*.pyc" -delete
precommit:
pre-commit run --all-files
build:
echo "Build placeholder"
run:
@ROLE=$${ROLE:-arx}; \
docker build -f Dockerfile.$${ROLE} -t multi-agent-system-$${ROLE} . && \
docker run --rm multi-agent-system-$${ROLE}
# ============================================
# Memory Management
# ============================================
# Clear all memories for a specific patient (usage: make clear-memory PATIENT=patient:demo)
clear-memory:
@PATIENT_ID=$${PATIENT:-patient:demo}; \
echo "Clearing memories for patient: $$PATIENT_ID"; \
uv run python scripts/clear_patient_memories.py "$$PATIENT_ID"
# Shortcut: Clear demo patient memories (most common use case)
clear-demo-memory:
@echo "Clearing all memories for patient:demo..."
uv run python scripts/clear_patient_memories.py patient:demo
# Full reset — clear ALL derived data stores (requires --confirm)
reset-all:
@echo "Resetting ALL SynapseFlow data stores..."
uv run python scripts/maintenance/full_reset.py --confirm
# Preview what reset-all would clear (no deletions)
reset-dry-run:
uv run python scripts/maintenance/full_reset.py
# ============================================
# Development Services
# ============================================
# Start the backend API server
backend:
uv run uvicorn src.application.api.main:app --host 0.0.0.0 --port 8000 --reload
# Start the frontend dev server
frontend:
cd frontend && npm run dev
# Start required Docker services (Neo4j, Redis, Qdrant, FalkorDB)
services:
docker compose -f docker-compose.services.yml up -d
docker compose -f docker-compose.memory.yml up -d
@echo "✅ Services started: Neo4j (7687), Redis (6380), Qdrant (6333), FalkorDB (6379)"
# Stop all Docker services
services-stop:
docker compose -f docker-compose.services.yml down
docker compose -f docker-compose.memory.yml down
# View service logs
services-logs:
docker compose -f docker-compose.services.yml logs -f
# ============================================
# Azure Deployment
# ============================================
# Apply full dev overlay (includes MemPalace patch) — triggers backend redeploy via Recreate
deploy-backend:
kubectl apply -k infra/k8s/overlays/dev/
@echo "Waiting for backend rollout..."
kubectl rollout status deployment/backend -n synapseflow-backend --timeout=120s
# Activate MemPalace mid-term memory in dev (adds overlay patch + redeploys)
deploy-backend-mempalace:
@if ! grep -q "backend-mempalace.yaml" infra/k8s/overlays/dev/kustomization.yaml; then \
echo "Adding MemPalace patch to dev overlay..."; \
fi
kubectl apply -k infra/k8s/overlays/dev/
kubectl rollout status deployment/backend -n synapseflow-backend --timeout=120s
@echo "MemPalace is now active in dev."
# Revert to Mem0 (removes MemPalace patch from overlay, redeploys)
deploy-backend-mem0:
@sed -i.bak '/MemPalace: activate/,/namespace: synapseflow-backend/d' infra/k8s/overlays/dev/kustomization.yaml && rm -f infra/k8s/overlays/dev/kustomization.yaml.bak
kubectl apply -k infra/k8s/overlays/dev/
kubectl rollout status deployment/backend -n synapseflow-backend --timeout=120s
@echo "Reverted to Mem0 in dev."
# Watch backend rollout
rollout-status:
kubectl rollout status deployment/backend -n synapseflow-backend
# Deploy frontend to Azure Static Web App
deploy-frontend-swa:
cd frontend && npm ci && PUBLIC_API_URL=https://20-50-212-98.nip.io npm run build
cp frontend/staticwebapp.config.json frontend/dist/client/
npx @azure/static-web-apps-cli deploy frontend/dist/client \
--env production \
--deployment-token $$(az keyvault secret show --vault-name kv-odin-dev-we --name swa-deployment-token --query value -o tsv)