.PHONY: run-stdio run-sse run-dev build test clean lint

# 从项目根 .env 提取 API Key 并设为环境变量
#（@前缀隐藏配方回显，避免在终端暴露命令内容）
_ENV_KEYS = TAVILY_API_KEYS="$$(grep '^TAVILY_API_KEYS=' ../../.env | head -1 | cut -d= -f2-)" \
	BRAVE_API_KEYS="$$(grep '^BRAVE_API_KEYS=' ../../.env | head -1 | cut -d= -f2-)"

# 本地 stdio 模式（用于 Claude Desktop / Cursor 等 MCP Client 子进程集成）
run-stdio:
	@$(_ENV_KEYS) go run ./cmd/server --stdio --config ../../config/mcp/web-search.yaml

# 本地 SSE 模式（Streamable HTTP，灵台注册或远程 MCP Client 直连）
# 端口来自 config/mcp/web-search.yaml → server.port
# --port 未显式传时使用配置中的 port，传则覆盖
run-sse:
	@$(_ENV_KEYS) go run ./cmd/server --config ../../config/mcp/web-search.yaml

# 本地开发：指定端口覆盖配置中的 port
run-dev:
	@$(_ENV_KEYS) go run ./cmd/server --config ../../config/mcp/web-search.yaml --port $(PORT)

# 构建二进制
build:
	go build -o bin/bowen-server ./cmd/server

# 测试
test:
	go test ./... -v -count=1

# 清理
clean:
	rm -rf bin/ tmp/

# Lint
lint:
	golangci-lint run ./...
