agent-starter-pack 0.8.0__tar.gz → 0.9.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/.claude/settings.local.json +3 -1
- agent_starter_pack-0.9.0/.cloudbuild/ci/test_remote_template.yaml +36 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/.cloudbuild/terraform/build_triggers.tf +34 -14
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/.gitignore +1 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/PKG-INFO +3 -2
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/README.md +2 -1
- agent_starter_pack-0.8.0/agents/adk_base/template/.templateconfig.yaml → agent_starter_pack-0.9.0/agents/adk_base/.template/templateconfig.yaml +1 -1
- agent_starter_pack-0.8.0/agents/adk_gemini_fullstack/template/.templateconfig.yaml → agent_starter_pack-0.9.0/agents/adk_gemini_fullstack/.template/templateconfig.yaml +2 -2
- agent_starter_pack-0.8.0/agents/agentic_rag/template/.templateconfig.yaml → agent_starter_pack-0.9.0/agents/agentic_rag/.template/templateconfig.yaml +1 -1
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/docs/.vitepress/config.js +7 -0
- agent_starter_pack-0.9.0/docs/guide/remote-templating.md +211 -0
- agent_starter_pack-0.9.0/docs/guide/template-config-reference.md +72 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/docs/index.md +4 -1
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/pyproject.toml +2 -2
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/Makefile +5 -1
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/pyproject.toml +2 -2
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/cli/commands/create.py +155 -43
- agent_starter_pack-0.9.0/src/cli/commands/list.py +158 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/cli/main.py +2 -0
- agent_starter_pack-0.9.0/src/cli/utils/remote_template.py +254 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/cli/utils/template.py +100 -25
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/resources/locks/uv-adk_base-agent_engine.lock +151 -119
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/resources/locks/uv-adk_base-cloud_run.lock +181 -146
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock +151 -119
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock +181 -146
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/resources/locks/uv-agentic_rag-agent_engine.lock +154 -122
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/resources/locks/uv-agentic_rag-cloud_run.lock +184 -149
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/resources/locks/uv-crewai_coding_crew-agent_engine.lock +130 -130
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/resources/locks/uv-crewai_coding_crew-cloud_run.lock +160 -160
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/resources/locks/uv-langgraph_base_react-agent_engine.lock +109 -109
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/resources/locks/uv-langgraph_base_react-cloud_run.lock +139 -139
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/resources/locks/uv-live_api-cloud_run.lock +136 -136
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/utils/lock_utils.py +1 -1
- agent_starter_pack-0.9.0/tests/cli/commands/test_create_local.py +78 -0
- agent_starter_pack-0.9.0/tests/cli/commands/test_list.py +40 -0
- agent_starter_pack-0.9.0/tests/cli/utils/test_remote_template.py +464 -0
- agent_starter_pack-0.9.0/tests/integration/test_remote_templating.py +103 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/tests/integration/test_template_linting.py +1 -46
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/tests/integration/test_templated_patterns.py +1 -54
- agent_starter_pack-0.9.0/tests/integration/utils.py +73 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/uv.lock +1 -1
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/.cloudbuild/cd/test_e2e.yaml +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/.cloudbuild/ci/build_use_wheel.yaml +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/.cloudbuild/ci/lint.yaml +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/.cloudbuild/ci/lint_templated_agents.yaml +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/.cloudbuild/ci/test.yaml +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/.cloudbuild/ci/test_templated_agents.yaml +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/.cloudbuild/terraform/apis.tf +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/.cloudbuild/terraform/service_account.tf +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/.cloudbuild/terraform/storage.tf +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/.cloudbuild/terraform/variables.tf +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/.github/workflows/docs.yml +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/CODE_OF_CONDUCT.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/CONTRIBUTING.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/LICENSE +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/Makefile +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/README.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/adk_base/README.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/adk_base/app/agent.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/adk_base/notebooks/adk_app_testing.ipynb +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/adk_base/notebooks/evaluating_adk_agent.ipynb +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/adk_base/tests/integration/test_agent.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/adk_gemini_fullstack/README.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/adk_gemini_fullstack/app/agent.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/adk_gemini_fullstack/app/config.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/adk_gemini_fullstack/notebooks/adk_app_testing.ipynb +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/adk_gemini_fullstack/notebooks/evaluating_adk_agent.ipynb +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/adk_gemini_fullstack/tests/integration/test_agent.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/agentic_rag/README.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/agentic_rag/app/agent.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/agentic_rag/app/retrievers.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/agentic_rag/app/templates.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/agentic_rag/notebooks/adk_app_testing.ipynb +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/agentic_rag/notebooks/evaluating_adk_agent.ipynb +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/agentic_rag/tests/integration/test_agent.py +0 -0
- /agent_starter_pack-0.8.0/agents/crewai_coding_crew/template/.templateconfig.yaml → /agent_starter_pack-0.9.0/agents/crewai_coding_crew/.template/templateconfig.yaml +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/crewai_coding_crew/README.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/crewai_coding_crew/app/agent.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/crewai_coding_crew/app/crew/config/agents.yaml +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/crewai_coding_crew/app/crew/config/tasks.yaml +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/crewai_coding_crew/app/crew/crew.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/crewai_coding_crew/notebooks/evaluating_crewai_agent.ipynb +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/crewai_coding_crew/notebooks/evaluating_langgraph_agent.ipynb +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/crewai_coding_crew/tests/integration/test_agent.py +0 -0
- /agent_starter_pack-0.8.0/agents/langgraph_base_react/template/.templateconfig.yaml → /agent_starter_pack-0.9.0/agents/langgraph_base_react/.template/templateconfig.yaml +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/langgraph_base_react/README.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/langgraph_base_react/app/agent.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/langgraph_base_react/notebooks/evaluating_langgraph_agent.ipynb +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/langgraph_base_react/tests/integration/test_agent.py +0 -0
- /agent_starter_pack-0.8.0/agents/live_api/template/.templateconfig.yaml → /agent_starter_pack-0.9.0/agents/live_api/.template/templateconfig.yaml +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/live_api/README.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/live_api/app/agent.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/live_api/app/server.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/live_api/tests/integration/test_server_e2e.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/live_api/tests/load_test/load_test.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/agents/live_api/tests/unit/test_server.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/docs/agents/overview.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/docs/cli/create.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/docs/cli/index.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/docs/cli/setup_cicd.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/docs/guide/data-ingestion.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/docs/guide/deploy-ui.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/docs/guide/deployment.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/docs/guide/development-guide.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/docs/guide/getting-started.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/docs/guide/installation.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/docs/guide/observability.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/docs/guide/troubleshooting.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/docs/guide/video-tutorials.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/docs/guide/why_starter_pack.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/docs/images/adk_gemini_fullstack.gif +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/docs/images/adk_gemini_fullstack_architecture.png +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/docs/images/adk_logo.png +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/docs/images/agent_starter_pack_screenshot.png +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/docs/images/ags_high_level_architecture.png +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/docs/images/icon.png +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/docs/images/logo.png +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/docs/images/prototype_to_prod.png +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/docs/images/why_sp_edited.png +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/docs/images/why_starter_pack.png +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/docs/package-lock.json +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/docs/package.json +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/llm.txt +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/.gitignore +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/GEMINI.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/README.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/app/__init__.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/app/utils/gcs.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/app/utils/tracing.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/app/utils/typing.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/deployment/README.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/deployment/cd/deploy-to-prod.yaml +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/deployment/cd/staging.yaml +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/deployment/ci/pr_checks.yaml +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/deployment/terraform/apis.tf +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/deployment/terraform/build_triggers.tf +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/deployment/terraform/dev/apis.tf +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/deployment/terraform/dev/iam.tf +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/deployment/terraform/dev/log_sinks.tf +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/deployment/terraform/dev/providers.tf +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/deployment/terraform/dev/storage.tf +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/deployment/terraform/dev/variables.tf +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/deployment/terraform/dev/vars/env.tfvars +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/deployment/terraform/iam.tf +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/deployment/terraform/locals.tf +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/deployment/terraform/log_sinks.tf +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/deployment/terraform/providers.tf +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/deployment/terraform/service_accounts.tf +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/deployment/terraform/storage.tf +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/deployment/terraform/variables.tf +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/deployment/terraform/vars/env.tfvars +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/base_template/tests/unit/test_dummy.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/cli/commands/setup_cicd.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/cli/utils/__init__.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/cli/utils/cicd.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/cli/utils/datastores.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/cli/utils/gcp.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/cli/utils/logging.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/cli/utils/version.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/data_ingestion/README.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/data_ingestion/data_ingestion_pipeline/components/ingest_data.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/data_ingestion/data_ingestion_pipeline/components/process_data.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/data_ingestion/data_ingestion_pipeline/pipeline.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/data_ingestion/data_ingestion_pipeline/submit_pipeline.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/data_ingestion/pyproject.toml +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/data_ingestion/uv.lock +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/deployment_targets/agent_engine/app/agent_engine_app.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/deployment_targets/agent_engine/deployment_metadata.json +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/deployment_targets/agent_engine/notebooks/intro_agent_engine.ipynb +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/deployment_targets/agent_engine/tests/integration/test_agent_engine_app.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/deployment_targets/agent_engine/tests/load_test/.results/.placeholder +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/deployment_targets/agent_engine/tests/load_test/README.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/deployment_targets/agent_engine/tests/load_test/load_test.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/deployment_targets/cloud_run/Dockerfile +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/deployment_targets/cloud_run/app/server.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/deployment_targets/cloud_run/deployment/terraform/dev/service.tf +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/deployment_targets/cloud_run/deployment/terraform/service.tf +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/deployment_targets/cloud_run/tests/integration/test_server_e2e.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/deployment_targets/cloud_run/tests/load_test/.results/.placeholder +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/deployment_targets/cloud_run/tests/load_test/README.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/deployment_targets/cloud_run/tests/load_test/load_test.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/adk_gemini_fullstack/frontend/components.json +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/adk_gemini_fullstack/frontend/eslint.config.js +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/adk_gemini_fullstack/frontend/index.html +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/adk_gemini_fullstack/frontend/package-lock.json +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/adk_gemini_fullstack/frontend/package.json +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/adk_gemini_fullstack/frontend/src/App.tsx +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/adk_gemini_fullstack/frontend/src/components/ActivityTimeline.tsx +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/adk_gemini_fullstack/frontend/src/components/ChatMessagesView.tsx +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/adk_gemini_fullstack/frontend/src/components/InputForm.tsx +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/adk_gemini_fullstack/frontend/src/components/WelcomeScreen.tsx +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/adk_gemini_fullstack/frontend/src/components/ui/badge.tsx +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/adk_gemini_fullstack/frontend/src/components/ui/button.tsx +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/adk_gemini_fullstack/frontend/src/components/ui/card.tsx +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/adk_gemini_fullstack/frontend/src/components/ui/input.tsx +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/adk_gemini_fullstack/frontend/src/components/ui/scroll-area.tsx +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/adk_gemini_fullstack/frontend/src/components/ui/select.tsx +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/adk_gemini_fullstack/frontend/src/components/ui/tabs.tsx +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/adk_gemini_fullstack/frontend/src/components/ui/textarea.tsx +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/adk_gemini_fullstack/frontend/src/global.css +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/adk_gemini_fullstack/frontend/src/main.tsx +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/adk_gemini_fullstack/frontend/src/utils.ts +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/adk_gemini_fullstack/frontend/src/vite-env.d.ts +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/adk_gemini_fullstack/frontend/tsconfig.json +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/adk_gemini_fullstack/frontend/tsconfig.node.json +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/adk_gemini_fullstack/frontend/vite.config.ts +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/package-lock.json +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/package.json +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/public/favicon.ico +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/public/index.html +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/public/robots.txt +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/App.scss +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/App.test.tsx +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/App.tsx +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/components/audio-pulse/AudioPulse.tsx +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/components/audio-pulse/audio-pulse.scss +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/components/control-tray/ControlTray.tsx +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/components/control-tray/control-tray.scss +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/components/logger/Logger.tsx +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/components/logger/logger.scss +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/components/logger/mock-logs.ts +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/components/side-panel/SidePanel.tsx +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/components/side-panel/side-panel.scss +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/contexts/LiveAPIContext.tsx +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/hooks/use-live-api.ts +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/hooks/use-media-stream-mux.ts +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/hooks/use-screen-capture.ts +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/hooks/use-webcam.ts +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/index.css +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/index.tsx +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/multimodal-live-types.ts +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/react-app-env.d.ts +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/reportWebVitals.ts +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/setupTests.ts +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/utils/audio-recorder.ts +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/utils/audio-streamer.ts +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/utils/audioworklet-registry.ts +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/utils/multimodal-live-client.ts +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/utils/store-logger.ts +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/utils/utils.ts +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/utils/worklets/audio-processing.ts +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/src/utils/worklets/vol-meter.ts +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/live_api_react/frontend/tsconfig.json +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/streamlit/frontend/side_bar.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/streamlit/frontend/streamlit_app.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/streamlit/frontend/style/app_markdown.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/streamlit/frontend/utils/chat_utils.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/streamlit/frontend/utils/local_chat_history.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/streamlit/frontend/utils/message_editing.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/streamlit/frontend/utils/multimodal_utils.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/streamlit/frontend/utils/stream_handler.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/frontends/streamlit/frontend/utils/title_summary.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/resources/containers/data_processing/Dockerfile +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/resources/containers/e2e-tests/Dockerfile +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/resources/docs/adk-cheatsheet.md +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/resources/idx/.idx/dev.nix +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/resources/idx/idx-template.json +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/resources/idx/idx-template.nix +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/resources/setup_cicd/cicd_variables.tf +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/resources/setup_cicd/github.tf +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/resources/setup_cicd/providers.tf +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/utils/generate_locks.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/src/utils/watch_and_rebuild.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/tests/__init__.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/tests/cicd/example.env +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/tests/cicd/test_e2e_deployment.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/tests/cli/commands/test_create.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/tests/cli/commands/test_setup_cicd.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/tests/cli/utils/test_cicd.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/tests/test_frontend/test_side_bar.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/tests/test_frontend/test_streamlit_app.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/tests/test_frontend/test_utils/test_chat_utils.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/tests/test_frontend/test_utils/test_local_chat_history.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/tests/test_frontend/test_utils/test_message_editing.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/tests/test_frontend/test_utils/test_multimodal_utils.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/tests/test_frontend/test_utils/test_stream_handler.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/tests/utils/__init__.py +0 -0
- {agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/tests/utils/get_agents.py +0 -0
@@ -0,0 +1,36 @@
|
|
1
|
+
# Copyright 2025 Google LLC
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
steps:
|
16
|
+
# Sync dependencies
|
17
|
+
- name: "europe-west4-docker.pkg.dev/production-ai-template/starter-pack/e2e-tests"
|
18
|
+
id: install-dependencies
|
19
|
+
entrypoint: /bin/bash
|
20
|
+
args:
|
21
|
+
- "-c"
|
22
|
+
- |
|
23
|
+
uv sync --locked
|
24
|
+
|
25
|
+
# Run unit tests using pytest
|
26
|
+
- name: "europe-west4-docker.pkg.dev/production-ai-template/starter-pack/e2e-tests"
|
27
|
+
id: test-templated-agents
|
28
|
+
entrypoint: /bin/bash
|
29
|
+
args:
|
30
|
+
- "-c"
|
31
|
+
- |
|
32
|
+
uv run pytest tests/integration/test_remote_templating.py
|
33
|
+
|
34
|
+
logsBucket: gs://${PROJECT_ID}-logs-data/build-logs
|
35
|
+
options:
|
36
|
+
defaultLogsBucketBehavior: REGIONAL_USER_OWNED_BUCKET
|
{agent_starter_pack-0.8.0 → agent_starter_pack-0.9.0}/.cloudbuild/terraform/build_triggers.tf
RENAMED
@@ -84,21 +84,13 @@ locals {
|
|
84
84
|
name = "live_api-cloud_run"
|
85
85
|
value = "live_api,cloud_run"
|
86
86
|
},
|
87
|
-
{
|
88
|
-
name = "adk_gemini_fullstack-agent_engine"
|
89
|
-
value = "adk_gemini_fullstack,agent_engine"
|
90
|
-
},
|
91
|
-
{
|
92
|
-
name = "adk_gemini_fullstack-cloud_run"
|
93
|
-
value = "adk_gemini_fullstack,cloud_run"
|
94
|
-
},
|
95
87
|
{
|
96
88
|
name = "adk_base-cloud_run-alloydb"
|
97
89
|
value = "adk_base,cloud_run,--session-type,alloydb"
|
98
90
|
},
|
99
91
|
]
|
100
92
|
|
101
|
-
|
93
|
+
agent_testing_included_files = { for combo in local.agent_testing_combinations :
|
102
94
|
combo.name => [
|
103
95
|
# Only include files for the specific agent being tested
|
104
96
|
"agents/${split(",", combo.value)[0]}/**",
|
@@ -138,10 +130,6 @@ locals {
|
|
138
130
|
name = "live_api-cloud_run"
|
139
131
|
value = "live_api,cloud_run"
|
140
132
|
},
|
141
|
-
{
|
142
|
-
name = "adk_gemini_fullstack-agent_engine"
|
143
|
-
value = "adk_gemini_fullstack,agent_engine"
|
144
|
-
},
|
145
133
|
{
|
146
134
|
name = "adk_base-cloud_run-alloydb"
|
147
135
|
value = "adk_base,cloud_run,--session-type,alloydb"
|
@@ -154,7 +142,17 @@ locals {
|
|
154
142
|
}
|
155
143
|
|
156
144
|
e2e_agent_deployment_included_files = { for combo in local.agent_testing_combinations :
|
157
|
-
combo.name => [
|
145
|
+
combo.name => combo.name == "adk_base-cloud_run-alloydb" ? [
|
146
|
+
"src/deployment_targets/cloud_run/**",
|
147
|
+
"pyproject.toml",
|
148
|
+
] : substr(combo.name, 0, 11) == "agentic_rag" ? [
|
149
|
+
"agents/agentic_rag/**",
|
150
|
+
"src/data_ingestion/**",
|
151
|
+
"pyproject.toml",
|
152
|
+
] : substr(combo.name, 0, 8) == "live_api" ? [
|
153
|
+
"agents/live_api/**",
|
154
|
+
"pyproject.toml",
|
155
|
+
] : [
|
158
156
|
# Only include files for the specific agent being tested
|
159
157
|
"agents/${split(",", combo.value)[0]}/**",
|
160
158
|
# Common files that affect all agents
|
@@ -321,3 +319,25 @@ resource "google_cloudbuild_trigger" "main_e2e_deployment_test" {
|
|
321
319
|
_E2E_PROD_PROJECT = var.e2e_test_project_mapping.prod
|
322
320
|
}
|
323
321
|
}
|
322
|
+
|
323
|
+
# f. Create Remote Template Test trigger for PR requests
|
324
|
+
resource "google_cloudbuild_trigger" "pr_test_remote_template" {
|
325
|
+
name = "pr-test-remote-template"
|
326
|
+
project = var.cicd_runner_project_id
|
327
|
+
location = var.region
|
328
|
+
description = "Trigger for PR checks on remote templating"
|
329
|
+
service_account = resource.google_service_account.cicd_runner_sa.id
|
330
|
+
|
331
|
+
repository_event_config {
|
332
|
+
repository = local.repository_path
|
333
|
+
pull_request {
|
334
|
+
branch = "main"
|
335
|
+
comment_control = "COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY"
|
336
|
+
}
|
337
|
+
}
|
338
|
+
|
339
|
+
filename = ".cloudbuild/ci/test_remote_template.yaml"
|
340
|
+
included_files = local.common_included_files
|
341
|
+
ignored_files = local.common_ignored_files
|
342
|
+
include_build_logs = "INCLUDE_BUILD_LOGS_WITH_STATUS"
|
343
|
+
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: agent-starter-pack
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.9.0
|
4
4
|
Summary: CLI to bootstrap production-ready Google Cloud GenAI agent projects from templates.
|
5
5
|
Author-email: Google LLC <agent-starter-pack@google.com>
|
6
6
|
License: Apache-2.0
|
@@ -103,7 +103,8 @@ Looking to explore more ADK examples? Check out the [ADK Samples Repository](htt
|
|
103
103
|
The `agent-starter-pack` offers two key features to accelerate and simplify the development of your agent:
|
104
104
|
- **🔄 [CI/CD Automation (Experimental)](https://googlecloudplatform.github.io/agent-starter-pack/cli/setup_cicd)** - One command to set up a complete GitHub + Cloud Build pipeline for all environments
|
105
105
|
- **📥 [Data Pipeline for RAG with Terraform/CI-CD](https://googlecloudplatform.github.io/agent-starter-pack/guide/data-ingestion)** - Seamlessly integrate a data pipeline to process embeddings for RAG into your agent system. Supporting [Vertex AI Search](https://cloud.google.com/generative-ai-app-builder/docs/enterprise-search-introduction) and [Vector Search](https://cloud.google.com/vertex-ai/docs/vector-search/overview).
|
106
|
-
|
106
|
+
- **[Remote Templates](docs/guide/remote-templating.md)**: Create and share your own agent starter packs templates from any Git repository.
|
107
|
+
- **🤖 Gemini CLI Integration** - Use the [Gemini CLI](https://github.com/google-gemini/gemini-cli) and the included `GEMINI.md` context file to ask questions about your template, agent architecture, and the path to production. Get instant guidance and code examples directly in your terminal.
|
107
108
|
|
108
109
|
## High-Level Architecture
|
109
110
|
|
@@ -78,7 +78,8 @@ Looking to explore more ADK examples? Check out the [ADK Samples Repository](htt
|
|
78
78
|
The `agent-starter-pack` offers two key features to accelerate and simplify the development of your agent:
|
79
79
|
- **🔄 [CI/CD Automation (Experimental)](https://googlecloudplatform.github.io/agent-starter-pack/cli/setup_cicd)** - One command to set up a complete GitHub + Cloud Build pipeline for all environments
|
80
80
|
- **📥 [Data Pipeline for RAG with Terraform/CI-CD](https://googlecloudplatform.github.io/agent-starter-pack/guide/data-ingestion)** - Seamlessly integrate a data pipeline to process embeddings for RAG into your agent system. Supporting [Vertex AI Search](https://cloud.google.com/generative-ai-app-builder/docs/enterprise-search-introduction) and [Vector Search](https://cloud.google.com/vertex-ai/docs/vector-search/overview).
|
81
|
-
|
81
|
+
- **[Remote Templates](docs/guide/remote-templating.md)**: Create and share your own agent starter packs templates from any Git repository.
|
82
|
+
- **🤖 Gemini CLI Integration** - Use the [Gemini CLI](https://github.com/google-gemini/gemini-cli) and the included `GEMINI.md` context file to ask questions about your template, agent architecture, and the path to production. Get instant guidance and code examples directly in your terminal.
|
82
83
|
|
83
84
|
## High-Level Architecture
|
84
85
|
|
@@ -18,12 +18,12 @@ settings:
|
|
18
18
|
requires_data_ingestion: false
|
19
19
|
requires_session: true
|
20
20
|
deployment_targets: ["agent_engine", "cloud_run"]
|
21
|
-
extra_dependencies: ["google-adk~=1.
|
21
|
+
extra_dependencies: ["google-adk~=1.6.0"]
|
22
22
|
tags: ["adk"]
|
23
23
|
frontend_type: "adk_gemini_fullstack"
|
24
24
|
commands:
|
25
25
|
override:
|
26
|
-
install: "npm --prefix frontend install"
|
26
|
+
install: "uv sync --dev --extra jupyter && npm --prefix frontend install"
|
27
27
|
extra:
|
28
28
|
dev:
|
29
29
|
command: 'make dev-backend & make dev-frontend'
|
@@ -43,6 +43,13 @@ export default defineConfig({
|
|
43
43
|
{ text: 'Troubleshooting', link: '/guide/troubleshooting' }
|
44
44
|
]
|
45
45
|
},
|
46
|
+
{
|
47
|
+
text: 'Authoring Templates',
|
48
|
+
items: [
|
49
|
+
{ text: 'Remote Templating', link: '/guide/remote-templating' },
|
50
|
+
{ text: 'Template Config Reference', link: '/guide/template-config-reference' }
|
51
|
+
]
|
52
|
+
},
|
46
53
|
{
|
47
54
|
text: 'Agents',
|
48
55
|
items: [
|
@@ -0,0 +1,211 @@
|
|
1
|
+
# Remote Templates
|
2
|
+
|
3
|
+
With remote templating, you can create and share your own agent starter packs without needing to fork the main repository. A remote template is a Git repository that the `agent-starter-pack` CLI can use as a blueprint to create new agent projects. This allows for easy sharing and reuse of customized agent setups.
|
4
|
+
|
5
|
+
This guide covers how to build, test, and use remote templates.
|
6
|
+
|
7
|
+
## Quickstart: Creating Your First Remote Template
|
8
|
+
|
9
|
+
Let's build a simple remote template that customizes the built-in `adk_base` agent.
|
10
|
+
|
11
|
+
### Step 1: Create the Template Directory Structure
|
12
|
+
|
13
|
+
A remote template is structured just like a standard agent project. The only special part is the `.template/` directory, which holds the configuration.
|
14
|
+
|
15
|
+
Create the following structure on your local machine:
|
16
|
+
|
17
|
+
```
|
18
|
+
my-first-remote-template/
|
19
|
+
├── .template/
|
20
|
+
│ └── templateconfig.yaml # Configuration file
|
21
|
+
├── app/
|
22
|
+
│ └── agent.py # Your custom agent logic
|
23
|
+
└── pyproject.toml # Your custom dependencies
|
24
|
+
```
|
25
|
+
|
26
|
+
### Step 2: Configure the Template
|
27
|
+
|
28
|
+
The `templateconfig.yaml` file is required. It tells the starter pack how to use your template.
|
29
|
+
|
30
|
+
Put the following content in `.template/templateconfig.yaml`:
|
31
|
+
|
32
|
+
```yaml
|
33
|
+
# (Required) The built-in agent to use as a foundation.
|
34
|
+
base_template: "adk_base"
|
35
|
+
|
36
|
+
# (Required) Your template's name and description.
|
37
|
+
name: "My First Remote Template"
|
38
|
+
description: "A simple template that says hello."
|
39
|
+
|
40
|
+
# (Optional) Override settings from the base template.
|
41
|
+
settings:
|
42
|
+
# This template will only support the 'agent_engine' deployment target.
|
43
|
+
deployment_targets: ["agent_engine"]
|
44
|
+
```
|
45
|
+
|
46
|
+
### Step 3: Customize Dependencies and Agent Logic
|
47
|
+
|
48
|
+
First, define any custom dependencies in `pyproject.toml`. For this example, we'll just use the base dependencies but you could add your own here.
|
49
|
+
|
50
|
+
Put the following in `pyproject.toml`:
|
51
|
+
```toml
|
52
|
+
[project]
|
53
|
+
name = "my-first-remote-template"
|
54
|
+
version = "0.1.0"
|
55
|
+
dependencies = [
|
56
|
+
"google-adk",
|
57
|
+
]
|
58
|
+
```
|
59
|
+
|
60
|
+
Next, we'll override the default `agent.py` to create a simple "hello world" agent.
|
61
|
+
|
62
|
+
Put the following code in `app/agent.py`:
|
63
|
+
|
64
|
+
```python
|
65
|
+
from google.adk.agents import Agent
|
66
|
+
|
67
|
+
def get_greeting(name: str = "World") -> str:
|
68
|
+
"""Returns a friendly greeting from the remote template."""
|
69
|
+
return f"Hello, {name}! This greeting comes from a remote template."
|
70
|
+
|
71
|
+
root_agent = Agent(
|
72
|
+
name="root_agent",
|
73
|
+
model="gemini-2.5-flash",
|
74
|
+
instruction="You are a helpful AI assistant. Use your tools to answer questions.",
|
75
|
+
tools=[get_greeting],
|
76
|
+
)
|
77
|
+
```
|
78
|
+
|
79
|
+
### Step 4: Test Your Template Locally
|
80
|
+
|
81
|
+
Before publishing to Git, you can test your template from your local filesystem using the `local@` prefix.
|
82
|
+
|
83
|
+
Run the `create` command from the directory *outside* of your template folder:
|
84
|
+
|
85
|
+
```bash
|
86
|
+
# Make sure you are in the parent directory of 'my-first-remote-template'
|
87
|
+
uvx agent-starter-pack create my-test-agent -a local@./my-first-remote-template
|
88
|
+
```
|
89
|
+
|
90
|
+
This creates a new project `my-test-agent` using your local template.
|
91
|
+
|
92
|
+
### Step 5: Publish and Use Your Template
|
93
|
+
|
94
|
+
Once you are satisfied, initialize a Git repository, commit your files, and push them to a provider like GitHub. Now, you or anyone else can use your template directly from its Git URL:
|
95
|
+
|
96
|
+
```bash
|
97
|
+
# Replace with your repository URL
|
98
|
+
REPO_URL="https://github.com/your-username/my-first-remote-template"
|
99
|
+
|
100
|
+
uvx agent-starter-pack create my-remote-agent -a $REPO_URL
|
101
|
+
```
|
102
|
+
|
103
|
+
## Template Structure
|
104
|
+
|
105
|
+
A remote template repository mirrors the structure of a standard agent. The templating engine copies the entire contents of your repository and overlays them onto the base agent.
|
106
|
+
|
107
|
+
- **Your Agent Files (`app/`, `tests/`, etc.)**: These should be at the root of your repository. They will overwrite the corresponding files from the `base_template`.
|
108
|
+
- **`.template/` directory**: This special directory is **only** for the `templateconfig.yaml` file. It is read by the CLI for configuration but is not copied into the final project.
|
109
|
+
- **Dependencies (`pyproject.toml`, `uv.lock`)**: These must be at the root of your repository.
|
110
|
+
|
111
|
+
**Example Structure:**
|
112
|
+
```
|
113
|
+
my-awesome-template/
|
114
|
+
├── .template/
|
115
|
+
│ └── templateconfig.yaml # (Required) Configuration only.
|
116
|
+
├── pyproject.toml # (Required) Custom Python dependencies.
|
117
|
+
├── uv.lock # (Recommended) Locked Python dependencies.
|
118
|
+
├── app/
|
119
|
+
│ └── agent.py # Your custom agent logic.
|
120
|
+
└── README.md # Your repository's README.
|
121
|
+
```
|
122
|
+
|
123
|
+
## How File Merging Works
|
124
|
+
|
125
|
+
Files are copied and overlaid in the following order, with later steps overwriting earlier ones if files have the same name and path:
|
126
|
+
|
127
|
+
1. **[Base Project Files](https://github.com/GoogleCloudPlatform/agent-starter-pack/tree/main/src/base_template)**: The foundational files from the starter pack.
|
128
|
+
2. **[Deployment Target Files](https://github.com/GoogleCloudPlatform/agent-starter-pack/tree/main/src/deployment_targets)**: Files for the chosen deployment target (e.g., `cloud_run`).
|
129
|
+
3. **[Frontend Files](https://github.com/GoogleCloudPlatform/agent-starter-pack/tree/main/src/frontends)** (Optional): If a `frontend_type` is specified, its files are copied.
|
130
|
+
4. **[Base Agent Files](https://github.com/GoogleCloudPlatform/agent-starter-pack/tree/main/agents)**: The application logic from the `base_template` you specified (e.g., files from `agents/adk_base/`).
|
131
|
+
5. **Remote Template Files**: **(Highest Precedence)** All files from the root of your remote repository (except for the `.template` directory itself).
|
132
|
+
|
133
|
+
## Managing Dependencies
|
134
|
+
|
135
|
+
You have full control over the Python dependencies. Both `pyproject.toml` and `uv.lock` must be at the **root** of your remote template repository.
|
136
|
+
* **`pyproject.toml`**: Required file that replaces the base template's version. Must include all dependencies for your agent.
|
137
|
+
|
138
|
+
* **`uv.lock`**: Strongly recommended to ensure reproducibility.
|
139
|
+
* If present, guarantees exact dependency versions.
|
140
|
+
* If missing, falls back to base template's lock file. A new lock file will be generatede by the user when performing installation.
|
141
|
+
|
142
|
+
**Best Practice:** Always run `uv lock` after changing dependencies and commit the resulting lock file.
|
143
|
+
|
144
|
+
## Makefile Behavior
|
145
|
+
|
146
|
+
You cannot replace the `Makefile` from the `base_template`. However, you can add new commands or override existing ones via the `settings.commands` section in your `templateconfig.yaml`.
|
147
|
+
|
148
|
+
**Example:**
|
149
|
+
```yaml
|
150
|
+
settings:
|
151
|
+
commands:
|
152
|
+
override:
|
153
|
+
# Replaces the default 'make install' command
|
154
|
+
install: "uv sync --dev --extra jupyter"
|
155
|
+
extra:
|
156
|
+
# Adds 'make custom-lint'
|
157
|
+
custom-lint:
|
158
|
+
command: "ruff check ."
|
159
|
+
description: "Run a custom lint check."
|
160
|
+
```
|
161
|
+
|
162
|
+
## Configuration Reference
|
163
|
+
|
164
|
+
The `templateconfig.yaml` file is the control center for defining an agent's properties, for both built-in and remote templates. For a complete breakdown of all available fields and their options, see the [Template Config Reference](./template-config-reference.md).
|
165
|
+
|
166
|
+
## Usage Reference
|
167
|
+
|
168
|
+
### Creating a Project from a Template
|
169
|
+
|
170
|
+
Use the `create` command with the `--agent` (`-a`) flag.
|
171
|
+
|
172
|
+
* **Full GitHub URL:**
|
173
|
+
```bash
|
174
|
+
uvx agent-starter-pack create my-agent -a https://github.com/my-org/my-repo/tree/main/path-to-template
|
175
|
+
```
|
176
|
+
|
177
|
+
* **Shorthand URL (GitHub, GitLab, Bitbucket):**
|
178
|
+
```bash
|
179
|
+
# Specify a branch/tag with @
|
180
|
+
uvx agent-starter-pack create my-agent -a github.com/my-org/my-repo/path-to-template@develop
|
181
|
+
```
|
182
|
+
|
183
|
+
* **ADK Samples Shortcut:** A convenient alias for official Google agent examples. It allows you to create projects from the [google/adk-samples](https://github.com/google/adk-samples) repository without needing to type the full URL.
|
184
|
+
```bash
|
185
|
+
# Creates a project from the 'gemini-fullstack' template in adk-samples
|
186
|
+
uvx agent-starter-pack create my-agent -a adk@gemini-fullstack
|
187
|
+
```
|
188
|
+
|
189
|
+
* **Local Testing:**
|
190
|
+
```bash
|
191
|
+
uvx agent-starter-pack create my-test-project -a local@./path/to/your/template
|
192
|
+
```
|
193
|
+
|
194
|
+
### Listing Available Agents
|
195
|
+
|
196
|
+
The `list` command helps you discover templates.
|
197
|
+
|
198
|
+
* **List Built-in Agents:**
|
199
|
+
```bash
|
200
|
+
uvx agent-starter-pack list
|
201
|
+
```
|
202
|
+
|
203
|
+
* **List Agents in a Remote Repository:**
|
204
|
+
```bash
|
205
|
+
uvx agent-starter-pack list --source https://github.com/my-org/my-repo
|
206
|
+
```
|
207
|
+
|
208
|
+
* **List Official ADK Samples:**
|
209
|
+
```bash
|
210
|
+
uvx agent-starter-pack list --adk
|
211
|
+
```
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# `templateconfig.yaml` Reference
|
2
|
+
|
3
|
+
This document provides a detailed reference for all the available fields in the `templateconfig.yaml` file. This file is used to configure both the built-in agents provided by the starter pack and your own remote templates.
|
4
|
+
|
5
|
+
## Top-Level Fields
|
6
|
+
|
7
|
+
| Field | Type | Required | Description |
|
8
|
+
| ------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------- |
|
9
|
+
| `base_template` | string | Yes | The name of the built-in agent that the remote template will inherit from (e.g., `adk_base`, `agentic_rag`). |
|
10
|
+
| `name` | string | Yes | The display name of your template, shown in the `list` command. |
|
11
|
+
| `description` | string | Yes | A brief description of your template, also shown in the `list` command. |
|
12
|
+
| `example_question` | string | No | An example question or prompt that will be included in the generated project's `README.md`. |
|
13
|
+
| `settings` | object | No | A nested object containing detailed configuration for the template. See `settings` section below. |
|
14
|
+
|
15
|
+
## The `settings` Object
|
16
|
+
|
17
|
+
This object contains fields that control the generated project's features and behavior.
|
18
|
+
|
19
|
+
| Field | Type | Description |
|
20
|
+
| --------------------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
|
21
|
+
| `deployment_targets` | list(string) | A list of deployment targets your template supports. Options: `agent_engine`, `cloud_run`. |
|
22
|
+
| `tags` | list(string) | A list of tags for categorization. The `adk` tag enables special integrations with the Agent Development Kit. |
|
23
|
+
| `frontend_type` | string | Specifies the frontend to use. Examples: `streamlit`, `live_api_react`. Defaults to `streamlit`. |
|
24
|
+
| `requires_data_ingestion` | boolean | If `true`, the user will be prompted to configure a datastore. |
|
25
|
+
| `requires_session` | boolean | If `true`, the user will be prompted to choose a session storage type (e.g., `alloydb`) when using the `cloud_run` target. |
|
26
|
+
| `extra_dependencies` | list(string) | **Note:** This field is ignored by remote templates. It is used internally by the starter pack's built-in templates. Your `pyproject.toml` is the single source of truth for dependencies. |
|
27
|
+
| `commands` | object | Allows for customizing the `Makefile` in the generated project. See `commands` section below. |
|
28
|
+
|
29
|
+
## The `commands` Object
|
30
|
+
|
31
|
+
This object allows you to add new `make` commands or override existing ones.
|
32
|
+
|
33
|
+
### `override`
|
34
|
+
Use this to change the behavior of a default command.
|
35
|
+
|
36
|
+
```yaml
|
37
|
+
settings:
|
38
|
+
commands:
|
39
|
+
override:
|
40
|
+
# Replaces the default 'make install' command
|
41
|
+
install: "uv sync --dev --extra jupyter && npm --prefix frontend install"
|
42
|
+
```
|
43
|
+
|
44
|
+
### `extra`
|
45
|
+
Use this to add new commands to the `Makefile`.
|
46
|
+
|
47
|
+
- **Simple Command**:
|
48
|
+
```yaml
|
49
|
+
settings:
|
50
|
+
commands:
|
51
|
+
extra:
|
52
|
+
# Adds 'make custom-lint'
|
53
|
+
custom-lint:
|
54
|
+
command: "ruff check ."
|
55
|
+
description: "Run a custom lint check."
|
56
|
+
```
|
57
|
+
|
58
|
+
- **Deployment-Specific Command**:
|
59
|
+
You can provide different versions of a command based on the chosen `deployment_target`.
|
60
|
+
|
61
|
+
```yaml
|
62
|
+
settings:
|
63
|
+
commands:
|
64
|
+
extra:
|
65
|
+
dev-backend:
|
66
|
+
command:
|
67
|
+
# Command for 'make dev-backend' if target is 'agent_engine'
|
68
|
+
agent_engine: 'uv run adk api_server app --allow_origins="*"'
|
69
|
+
# Command for 'make dev-backend' if target is 'cloud_run'
|
70
|
+
cloud_run: 'ALLOW_ORIGINS="*" uv run uvicorn app.server:app --host 0.0.0.0 --port 8000 --reload'
|
71
|
+
description: "Start the backend development server."
|
72
|
+
```
|
@@ -32,7 +32,10 @@ features:
|
|
32
32
|
details: Ship reliable agents with production-ready infra (Cloud Run / Agent Engine) featuring monitoring, observability, and CI/CD.
|
33
33
|
- icon: 🛠️
|
34
34
|
title: Customize & Extend
|
35
|
-
details: Adapt and enhance templates
|
35
|
+
details: Adapt and enhance templates for your specific use case, or create your own.
|
36
|
+
- icon: 🌐
|
37
|
+
title: Remote Templates
|
38
|
+
details: Create and share your own agent templates for easy reuse and distribution.
|
36
39
|
---
|
37
40
|
|
38
41
|
::: tip ⭐ Like Agent Starter Pack?
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[project]
|
2
2
|
name = "agent-starter-pack"
|
3
|
-
version = "0.
|
3
|
+
version = "0.9.0"
|
4
4
|
description = "CLI to bootstrap production-ready Google Cloud GenAI agent projects from templates."
|
5
5
|
authors = [
|
6
6
|
{ name = "Google LLC", email = "agent-starter-pack@google.com" },
|
@@ -63,7 +63,7 @@ lint = [
|
|
63
63
|
[tool.pytest.ini_options]
|
64
64
|
pythonpath = [".", "src/frontends/streamlit", "src", "agents/agentic_rag"]
|
65
65
|
testpaths = ["tests"]
|
66
|
-
addopts = "-s -v --ignore=tests/integration
|
66
|
+
addopts = "-s -v --ignore=tests/integration"
|
67
67
|
log_cli = true
|
68
68
|
log_cli_level = "INFO"
|
69
69
|
log_cli_format = "%(asctime)s - %(levelname)s - %(message)s"
|
@@ -1,8 +1,12 @@
|
|
1
1
|
# Install dependencies using uv package manager
|
2
2
|
install:
|
3
3
|
@command -v uv >/dev/null 2>&1 || { echo "uv is not installed. Installing uv..."; curl -LsSf https://astral.sh/uv/0.6.12/install.sh | sh; source $HOME/.local/bin/env; }
|
4
|
+
{%- if cookiecutter.settings.get("commands", {}).get("override", {}).get("install") %}
|
5
|
+
{{cookiecutter.settings.get("commands", {}).get("override", {}).get("install")}}
|
6
|
+
{%- else %}
|
4
7
|
uv sync --dev{% if cookiecutter.agent_name != 'live_api' and "adk" not in cookiecutter.tags %} --extra streamlit{%- endif %} --extra jupyter{% if cookiecutter.agent_name == 'live_api' %} && npm --prefix frontend install{%- endif %}
|
5
|
-
{%-
|
8
|
+
{%- endif %}
|
9
|
+
|
6
10
|
{%- if cookiecutter.settings.get("commands", {}).get("extra", {}) %}
|
7
11
|
{%- for cmd_name, cmd_value in cookiecutter.settings.get("commands", {}).get("extra", {}).items() %}
|
8
12
|
|
@@ -16,12 +16,12 @@ dependencies = [
|
|
16
16
|
{%- endif %}
|
17
17
|
"google-cloud-logging~=3.11.4",
|
18
18
|
{%- if cookiecutter.deployment_target == 'cloud_run' %}
|
19
|
-
"google-cloud-aiplatform[evaluation]~=1.
|
19
|
+
"google-cloud-aiplatform[evaluation]~=1.103.0",
|
20
20
|
"fastapi~=0.115.8",
|
21
21
|
"uvicorn~=0.34.0",
|
22
22
|
"psycopg2-binary>=2.9.10",
|
23
23
|
{%- elif cookiecutter.deployment_target == 'agent_engine' %}
|
24
|
-
"google-cloud-aiplatform[evaluation,agent-engines]~=1.
|
24
|
+
"google-cloud-aiplatform[evaluation,agent-engines]~=1.103.0"
|
25
25
|
{%- endif %}
|
26
26
|
]
|
27
27
|
{% if cookiecutter.deployment_target == 'cloud_run' %}
|