| # ============================================================================== | |
| # Installation & Setup | |
| # ============================================================================== | |
| # Install dependencies using uv package manager | |
| install: | |
| @command -v uv >/dev/null 2>&1 || { echo "uv is not installed. Installing uv..."; curl -LsSf https://astral.sh/uv/0.8.13/install.sh | sh; source $HOME/.local/bin/env; } | |
| uv sync | |
| # ============================================================================== | |
| # Playground Targets | |
| # ============================================================================== | |
| # Launch local dev playground | |
| playground: | |
| @echo "===============================================================================" | |
| @echo "| π Starting your agent playground... |" | |
| @echo "| |" | |
| @echo "| π‘ Try asking: What's the weather in San Francisco? |" | |
| @echo "| |" | |
| @echo "| π IMPORTANT: Select the 'rag_agent' folder to interact with your agent. |" | |
| @echo "===============================================================================" | |
| uv run adk web . --port 8501 --reload_agents | |
| # ============================================================================== | |
| # Backend Deployment Targets | |
| # ============================================================================== | |
| # Deploy the agent remotely | |
| deploy: | |
| # Export dependencies to requirements file using uv export. | |
| (uv export --no-hashes --no-header --no-dev --no-emit-project --no-annotate > rag_agent/app_utils/.requirements.txt 2>/dev/null || \ | |
| uv export --no-hashes --no-header --no-dev --no-emit-project > rag_agent/app_utils/.requirements.txt) && \ | |
| uv run -m rag_agent.app_utils.deploy \ | |
| --source-packages=./rag_agent \ | |
| --display-name="bitcast_agent_focus" \ | |
| --entrypoint-module=rag_agent.agent_engine_app \ | |
| --entrypoint-object=agent_engine \ | |
| --requirements-file=rag_agent/app_utils/.requirements.txt | |
| # Alias for 'make deploy' for backward compatibility | |
| backend: deploy | |
| # ============================================================================== | |
| # Infrastructure Setup | |
| # ============================================================================== | |
| # Set up development environment resources using Terraform | |
| setup-dev-env: | |
| PROJECT_ID=$$(gcloud config get-value project) && \ | |
| (cd deployment/terraform/dev && terraform init && terraform apply --var-file vars/env.tfvars --var dev_project_id=$$PROJECT_ID --auto-approve) | |
| # ============================================================================== | |
| # Testing & Code Quality | |
| # ============================================================================== | |
| # Run unit and integration tests | |
| test: | |
| uv sync --dev | |
| uv run pytest tests/unit && uv run pytest tests/integration | |
| # Run code quality checks (codespell, ruff, mypy) | |
| lint: | |
| uv sync --dev --extra lint | |
| uv run codespell | |
| uv run ruff check . --diff | |
| uv run ruff format . --check --diff | |
| uv run mypy . | |
| # ============================================================================== | |
| # Gemini Enterprise Integration | |
| # ============================================================================== | |
| # Register the deployed agent to Gemini Enterprise | |
| # Usage: make register-gemini-enterprise (interactive - will prompt for required details) | |
| # For non-interactive use, set env vars: ID or GEMINI_ENTERPRISE_APP_ID (full GE resource name) | |
| # Optional env vars: GEMINI_DISPLAY_NAME, GEMINI_DESCRIPTION, GEMINI_TOOL_DESCRIPTION, AGENT_ENGINE_ID | |
| register-gemini-enterprise: | |
| @uvx agent-starter-pack@0.21.0 register-gemini-enterprise |