-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
304 lines (234 loc) · 10.7 KB
/
Makefile
File metadata and controls
304 lines (234 loc) · 10.7 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
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
.PHONY: help docker-up docker-down docker-restart docker-logs docker-clean docker-rebuild health setup test
# Default target
.DEFAULT_GOAL := help
# Colors for output
BLUE := \033[0;34m
GREEN := \033[0;32m
YELLOW := \033[1;33m
NC := \033[0m
##@ Docker Environment
docker-up: ## Start Docker development environment
@echo "$(BLUE)Starting development environment...$(NC)"
@./scripts/start-dev.sh -d
docker-up-prod: ## Start Docker production environment
@echo "$(BLUE)Starting production environment...$(NC)"
@./scripts/start-dev.sh --prod -d
docker-down: ## Stop Docker environment
@echo "$(YELLOW)Stopping development environment...$(NC)"
@docker-compose down
docker-clean: ## Stop and remove all volumes (DESTRUCTIVE)
@echo "$(YELLOW)Cleaning environment (removing volumes)...$(NC)"
@./scripts/stop-dev.sh --volumes
docker-clean-all: ## Remove everything including images (DESTRUCTIVE)
@echo "$(YELLOW)Complete cleanup (removing everything)...$(NC)"
@./scripts/stop-dev.sh --clean-all
docker-restart: ## Restart all Docker services
@echo "$(BLUE)Restarting services...$(NC)"
@docker-compose restart
docker-rebuild: ## Rebuild and restart Docker environment
@echo "$(BLUE)Rebuilding environment...$(NC)"
@./scripts/start-dev.sh --rebuild -d
docker-logs: ## Show logs from all services
@docker-compose logs -f
docker-logs-rabbitmq: ## Show RabbitMQ logs
@docker-compose logs -f rabbitmq
docker-logs-postgres: ## Show PostgreSQL logs
@docker-compose logs -f postgres
docker-logs-redis: ## Show Redis logs
@docker-compose logs -f redis
docker-ps: ## Show status of all containers
@docker-compose ps
health: ## Run health check on all services
@./scripts/health-check.sh
##@ Setup & Configuration
setup: ## Run all setup scripts
@echo "$(BLUE)Running setup scripts...$(NC)"
@./scripts/setup-rabbitmq.sh
@./scripts/setup-database.sh
setup-rabbitmq: ## Initialize RabbitMQ exchanges and queues
@echo "$(BLUE)Setting up RabbitMQ...$(NC)"
@./scripts/setup-rabbitmq.sh
setup-database: ## Initialize PostgreSQL database
@echo "$(BLUE)Setting up database...$(NC)"
@./scripts/setup-database.sh
env: ## Create .env file from template
@if [ ! -f .env ]; then \
cp .env.example .env; \
echo "$(GREEN).env file created from template$(NC)"; \
else \
echo "$(YELLOW).env file already exists$(NC)"; \
fi
##@ Database Operations
db-connect: ## Connect to PostgreSQL database
@docker exec -it ai-agent-postgres psql -U aiagent -d ai_orchestrator
db-backup: ## Backup PostgreSQL database
@mkdir -p backups
@docker exec ai-agent-postgres pg_dump -U aiagent ai_orchestrator > backups/backup_$$(date +%Y%m%d_%H%M%S).sql
@echo "$(GREEN)Database backed up to backups/$(NC)"
db-restore: ## Restore PostgreSQL database (requires BACKUP_FILE=path/to/backup.sql)
@if [ -z "$(BACKUP_FILE)" ]; then \
echo "$(YELLOW)Usage: make db-restore BACKUP_FILE=path/to/backup.sql$(NC)"; \
exit 1; \
fi
@docker exec -i ai-agent-postgres psql -U aiagent -d ai_orchestrator < $(BACKUP_FILE)
@echo "$(GREEN)Database restored$(NC)"
db-reset: ## Reset database (DESTRUCTIVE)
@echo "$(YELLOW)Resetting database...$(NC)"
@docker-compose stop postgres
@docker volume rm ai-agent-postgres-data || true
@docker-compose up -d postgres
@sleep 5
@./scripts/setup-database.sh
##@ RabbitMQ Operations
rabbitmq-cli: ## Access RabbitMQ CLI
@docker exec -it ai-agent-rabbitmq rabbitmqctl
rabbitmq-queues: ## List all RabbitMQ queues
@docker exec ai-agent-rabbitmq rabbitmqctl list_queues
rabbitmq-exchanges: ## List all RabbitMQ exchanges
@docker exec ai-agent-rabbitmq rabbitmqctl list_exchanges
rabbitmq-connections: ## List all RabbitMQ connections
@docker exec ai-agent-rabbitmq rabbitmqctl list_connections
rabbitmq-purge-all: ## Purge all messages from all queues (DESTRUCTIVE)
@echo "$(YELLOW)Purging all queues...$(NC)"
@docker exec ai-agent-rabbitmq rabbitmqctl purge_queue agent.tasks.high || true
@docker exec ai-agent-rabbitmq rabbitmqctl purge_queue agent.tasks.normal || true
@docker exec ai-agent-rabbitmq rabbitmqctl purge_queue agent.tasks.low || true
@docker exec ai-agent-rabbitmq rabbitmqctl purge_queue agent.results || true
@docker exec ai-agent-rabbitmq rabbitmqctl purge_queue agent.brainstorm.responses || true
@docker exec ai-agent-rabbitmq rabbitmqctl purge_queue agent.status.updates || true
@echo "$(GREEN)All queues purged$(NC)"
rabbitmq-reset: ## Reset RabbitMQ (DESTRUCTIVE)
@echo "$(YELLOW)Resetting RabbitMQ...$(NC)"
@docker-compose stop rabbitmq
@docker volume rm ai-agent-rabbitmq-data || true
@docker volume rm ai-agent-rabbitmq-logs || true
@docker-compose up -d rabbitmq
@sleep 10
@./scripts/setup-rabbitmq.sh
##@ Redis Operations
redis-cli: ## Access Redis CLI
@docker exec -it ai-agent-redis redis-cli -a redis123
redis-monitor: ## Monitor Redis commands in real-time
@docker exec ai-agent-redis redis-cli -a redis123 MONITOR
redis-info: ## Show Redis information
@docker exec ai-agent-redis redis-cli -a redis123 INFO
redis-keys: ## List all Redis keys
@docker exec ai-agent-redis redis-cli -a redis123 KEYS '*'
redis-flush: ## Flush all Redis data (DESTRUCTIVE)
@echo "$(YELLOW)Flushing Redis...$(NC)"
@docker exec ai-agent-redis redis-cli -a redis123 FLUSHALL
@echo "$(GREEN)Redis flushed$(NC)"
redis-reset: ## Reset Redis (DESTRUCTIVE)
@echo "$(YELLOW)Resetting Redis...$(NC)"
@docker-compose stop redis
@docker volume rm ai-agent-redis-data || true
@docker-compose up -d redis
@echo "$(GREEN)Redis reset$(NC)"
##@ Application
install: ## Install Node.js dependencies
@npm install
test: ## Run all tests
@npm test
test-unit: ## Run unit tests
@npm run test:unit
test-integration: ## Run integration tests
@npm run test:integration
test-e2e: ## Run end-to-end tests
@npm run test:e2e
start: ## Start the orchestrator
@npm start
monitor: ## Start the monitoring dashboard
@npm run monitor
##@ URLs & Access
urls: ## Display all service URLs
@echo "$(BLUE)=====================================$(NC)"
@echo "$(BLUE) Service URLs $(NC)"
@echo "$(BLUE)=====================================$(NC)"
@echo ""
@echo "$(GREEN)RabbitMQ Management:$(NC) http://localhost:15672"
@echo " Username: admin"
@echo " Password: admin123"
@echo ""
@echo "$(GREEN)PostgreSQL:$(NC) postgresql://localhost:5432/ai_orchestrator"
@echo " Username: aiagent"
@echo " Password: aiagent123"
@echo ""
@echo "$(GREEN)Redis:$(NC) redis://localhost:6379"
@echo " Password: redis123"
@echo ""
@echo "$(GREEN)Adminer (DB UI):$(NC) http://localhost:8080"
@echo "$(GREEN)PgAdmin:$(NC) http://localhost:5050"
@echo "$(GREEN)Redis Commander:$(NC) http://localhost:8081"
@echo ""
open-rabbitmq: ## Open RabbitMQ Management UI in browser
@open http://localhost:15672 2>/dev/null || xdg-open http://localhost:15672 2>/dev/null || echo "Open http://localhost:15672"
open-adminer: ## Open Adminer in browser
@open http://localhost:8080 2>/dev/null || xdg-open http://localhost:8080 2>/dev/null || echo "Open http://localhost:8080"
open-pgadmin: ## Open PgAdmin in browser
@open http://localhost:5050 2>/dev/null || xdg-open http://localhost:5050 2>/dev/null || echo "Open http://localhost:5050"
open-redis: ## Open Redis Commander in browser
@open http://localhost:8081 2>/dev/null || xdg-open http://localhost:8081 2>/dev/null || echo "Open http://localhost:8081"
##@ RAMAS Multi-Agent Orchestration (PATTERN-C-003 v6)
ramas-check: ## Check RabbitMQ + Redis connectivity
@echo "$(BLUE)Checking RAMAS connectivity...$(NC)"
@source .venv-ramas/bin/activate && python scripts/ramas/python/quick_connect.py
ramas-launch: ## Launch 3 iTerm2 windows (Team Leader + 2 Workers)
@echo "$(BLUE)Launching RAMAS demo windows...$(NC)"
@source .venv-ramas/bin/activate && python scripts/ramas/python/launch_windows.py
ramas-shutdown: ## Gracefully shutdown demo
@echo "$(YELLOW)Shutting down RAMAS demo...$(NC)"
@source .venv-ramas/bin/activate && python scripts/ramas/python/shutdown_demo.py
ramas-sessions: ## List active RAMAS sessions
@source .venv-ramas/bin/activate && python scripts/ramas/python/session_manager_cli.py list
ramas-inbox: ## Inspect agent inboxes
@source .venv-ramas/bin/activate && python scripts/ramas/python/inbox_inspector.py list
ramas-monitor: ## Monitor Claude Code session logs
@source .venv-ramas/bin/activate && python scripts/ramas/python/monitor_claude_sessions.py
ramas-demo: ## Run full demo with orchestration (single command)
@echo "$(BLUE)Starting full RAMAS demo...$(NC)"
@source .venv-ramas/bin/activate && python scripts/ramas/python/demo_runner.py
ramas-demo-step: ## Run full demo with pauses between steps
@source .venv-ramas/bin/activate && python scripts/ramas/python/demo_runner.py --step-by-step
ramas-full: ## Complete setup: Docker check + connectivity + launch
@make docker-ps
@echo "$(BLUE)Waiting for services...$(NC)"
@sleep 3
@make ramas-check
@make ramas-launch
ramas-stop: ## Stop specific agent with ESC keystroke (AGENT=worker-002)
@if [ -z "$(AGENT)" ]; then \
echo "$(YELLOW)Usage: make ramas-stop AGENT=worker-002$(NC)"; \
echo "$(YELLOW) make ramas-stop-all (to stop all agents)$(NC)"; \
exit 1; \
fi
@echo "$(YELLOW)Stopping $(AGENT) with ESC...$(NC)"
@source .venv-ramas/bin/activate && python scripts/ramas/python/stop_agent.py $(AGENT)
ramas-stop-all: ## Stop ALL agents with ESC keystroke
@echo "$(YELLOW)Stopping all agents with ESC...$(NC)"
@source .venv-ramas/bin/activate && python scripts/ramas/python/stop_agent.py --all
ramas-send: ## Send message to agent (AGENT=worker-001 MSG="hello")
@if [ -z "$(AGENT)" ] || [ -z "$(MSG)" ]; then \
echo "$(YELLOW)Usage: make ramas-send AGENT=worker-001 MSG=\"your message\"$(NC)"; \
exit 1; \
fi
@echo "$(BLUE)Sending to $(AGENT): $(MSG)$(NC)"
@source .venv-ramas/bin/activate && python scripts/ramas/python/send_to_claude.py $(AGENT) "$(MSG)"
ramas-clean: ## Clean RAMAS temp files (inboxes, registry, logs)
@echo "$(YELLOW)Cleaning RAMAS temp files...$(NC)"
@mv /tmp/ramas-session-inboxes ~/.Trash/ 2>/dev/null || true
@mv /tmp/ramas-session-registry.json ~/.Trash/ 2>/dev/null || true
@mv /tmp/ramas-windows.json ~/.Trash/ 2>/dev/null || true
@mv /tmp/ramas-daemon.log ~/.Trash/ 2>/dev/null || true
@echo "$(GREEN)RAMAS temp files cleaned (moved to Trash)$(NC)"
##@ Help
help: ## Display this help
@echo "$(BLUE)AI Agent Orchestrator - Makefile Commands$(NC)"
@echo ""
@awk 'BEGIN {FS = ":.*##"; printf ""} /^[a-zA-Z_-]+:.*?##/ { printf " $(YELLOW)%-25s$(NC) %s\n", $$1, $$2 } /^##@/ { printf "\n$(BLUE)%s$(NC)\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
@echo ""
@echo "$(BLUE)Quick Start:$(NC)"
@echo " 1. make env # Create .env file"
@echo " 2. make docker-up # Start all services"
@echo " 3. make health # Verify everything is running"
@echo " 4. make urls # View all service URLs"
@echo ""