.PHONY: infra infra-down devnats demo e2e gateway dispatcher mcp-go mcp-py mcp-py-setup web desktop tidy

infra:        ## 启动基础设施 (NATS / Postgres / Redis / Milvus / Neo4j)
	docker compose up -d

infra-down:
	docker compose down

devnats:      ## 启动内嵌 JetStream NATS（无 Docker 本地联调）
	cd sundynix-shared && go run ./cmd/devnats

demo:         ## 一键演示 Gateway→NATS→Dispatcher 任务流（无需 Docker）
	bash scripts/demo.sh

e2e:          ## 跑共享 bus 的端到端测试（内嵌 NATS）：任务流 / 工具调用 / Token 流
	cd sundynix-shared && go test ./bus/ -run 'TestTaskRoundTrip|TestToolCallRoundTrip|TestTokenStreamRoundTrip' -v

gateway:
	cd sundynix-gateway && go run ./cmd/server

dispatcher:
	cd sundynix-dispatcher && go run ./cmd/dispatcher

mcp-go:
	cd sundynix-mcp-go && go run ./cmd/server

mcp-py-setup: ## 创建 venv 并安装 mcp-py 依赖（首次运行 mcp-py 前执行）
	cd sundynix-mcp-py && python3 -m venv .venv && .venv/bin/pip install -q -e .

mcp-py:       ## 运行 Python 算法型 MCP 工具服务（缺 venv 则自动 setup）
	cd sundynix-mcp-py && [ -x .venv/bin/python ] || $(MAKE) mcp-py-setup
	cd sundynix-mcp-py && .venv/bin/python -m sundynix_mcp_py.main

web:          ## 仅前端 dev（Vite，连本地 Gateway:8080；先 npm install）
	cd sundynix-desktop/frontend && npm install && npm run dev

desktop:
	cd sundynix-desktop && wails dev

tidy:
	cd sundynix-gateway    && go mod tidy
	cd sundynix-dispatcher && go mod tidy
	cd sundynix-mcp-go     && go mod tidy
