agent-starter-pack 0.9.0__tar.gz → 0.9.2__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.9.2/.cloudbuild/ci/test_makefile.yaml +36 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.cloudbuild/terraform/build_triggers.tf +32 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/PKG-INFO +4 -6
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/guide/remote-templating.md +18 -27
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/guide/template-config-reference.md +1 -46
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/pyproject.toml +6 -6
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/cli/commands/create.py +104 -38
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/cli/commands/list.py +3 -9
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/cli/utils/remote_template.py +81 -14
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/cli/utils/template.py +12 -0
- agent_starter_pack-0.9.2/src/resources/containers/e2e-tests/Dockerfile +41 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/cli/commands/test_create.py +13 -1
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/cli/commands/test_create_local.py +9 -3
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/cli/utils/test_remote_template.py +212 -43
- agent_starter_pack-0.9.2/tests/integration/test_makefile_usability.py +199 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/integration/test_template_linting.py +10 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/uv.lock +14 -14
- agent_starter_pack-0.9.0/src/resources/containers/e2e-tests/Dockerfile +0 -19
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.claude/settings.local.json +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.cloudbuild/cd/test_e2e.yaml +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.cloudbuild/ci/build_use_wheel.yaml +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.cloudbuild/ci/lint.yaml +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.cloudbuild/ci/lint_templated_agents.yaml +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.cloudbuild/ci/test.yaml +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.cloudbuild/ci/test_remote_template.yaml +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.cloudbuild/ci/test_templated_agents.yaml +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.cloudbuild/terraform/apis.tf +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.cloudbuild/terraform/service_account.tf +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.cloudbuild/terraform/storage.tf +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.cloudbuild/terraform/variables.tf +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.github/workflows/docs.yml +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.gitignore +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/CODE_OF_CONDUCT.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/CONTRIBUTING.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/LICENSE +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/Makefile +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/README.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/README.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/adk_base/.template/templateconfig.yaml +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/adk_base/README.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/adk_base/app/agent.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/adk_base/notebooks/adk_app_testing.ipynb +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/adk_base/notebooks/evaluating_adk_agent.ipynb +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/adk_base/tests/integration/test_agent.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/adk_gemini_fullstack/.template/templateconfig.yaml +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/adk_gemini_fullstack/README.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/adk_gemini_fullstack/app/agent.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/adk_gemini_fullstack/app/config.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/adk_gemini_fullstack/notebooks/adk_app_testing.ipynb +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/adk_gemini_fullstack/notebooks/evaluating_adk_agent.ipynb +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/adk_gemini_fullstack/tests/integration/test_agent.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/agentic_rag/.template/templateconfig.yaml +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/agentic_rag/README.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/agentic_rag/app/agent.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/agentic_rag/app/retrievers.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/agentic_rag/app/templates.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/agentic_rag/notebooks/adk_app_testing.ipynb +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/agentic_rag/notebooks/evaluating_adk_agent.ipynb +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/agentic_rag/tests/integration/test_agent.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/crewai_coding_crew/.template/templateconfig.yaml +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/crewai_coding_crew/README.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/crewai_coding_crew/app/agent.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/crewai_coding_crew/app/crew/config/agents.yaml +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/crewai_coding_crew/app/crew/config/tasks.yaml +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/crewai_coding_crew/app/crew/crew.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/crewai_coding_crew/notebooks/evaluating_crewai_agent.ipynb +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/crewai_coding_crew/notebooks/evaluating_langgraph_agent.ipynb +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/crewai_coding_crew/tests/integration/test_agent.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/langgraph_base_react/.template/templateconfig.yaml +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/langgraph_base_react/README.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/langgraph_base_react/app/agent.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/langgraph_base_react/notebooks/evaluating_langgraph_agent.ipynb +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/langgraph_base_react/tests/integration/test_agent.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/live_api/.template/templateconfig.yaml +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/live_api/README.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/live_api/app/agent.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/live_api/app/server.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/live_api/tests/integration/test_server_e2e.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/live_api/tests/load_test/load_test.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/live_api/tests/unit/test_server.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/.vitepress/config.js +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/agents/overview.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/cli/create.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/cli/index.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/cli/setup_cicd.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/guide/data-ingestion.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/guide/deploy-ui.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/guide/deployment.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/guide/development-guide.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/guide/getting-started.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/guide/installation.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/guide/observability.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/guide/troubleshooting.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/guide/video-tutorials.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/guide/why_starter_pack.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/images/adk_gemini_fullstack.gif +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/images/adk_gemini_fullstack_architecture.png +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/images/adk_logo.png +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/images/agent_starter_pack_screenshot.png +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/images/ags_high_level_architecture.png +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/images/icon.png +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/images/logo.png +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/images/prototype_to_prod.png +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/images/why_sp_edited.png +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/images/why_starter_pack.png +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/index.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/package-lock.json +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/package.json +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/llm.txt +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/.gitignore +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/GEMINI.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/Makefile +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/README.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/app/__init__.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/app/utils/gcs.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/app/utils/tracing.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/app/utils/typing.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/README.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/cd/deploy-to-prod.yaml +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/cd/staging.yaml +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/ci/pr_checks.yaml +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/apis.tf +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/build_triggers.tf +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/dev/apis.tf +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/dev/iam.tf +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/dev/log_sinks.tf +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/dev/providers.tf +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/dev/storage.tf +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/dev/variables.tf +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/dev/vars/env.tfvars +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/iam.tf +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/locals.tf +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/log_sinks.tf +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/providers.tf +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/service_accounts.tf +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/storage.tf +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/variables.tf +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/vars/env.tfvars +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/pyproject.toml +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/tests/unit/test_dummy.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/cli/commands/setup_cicd.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/cli/main.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/cli/utils/__init__.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/cli/utils/cicd.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/cli/utils/datastores.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/cli/utils/gcp.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/cli/utils/logging.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/cli/utils/version.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/data_ingestion/README.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/data_ingestion/data_ingestion_pipeline/components/ingest_data.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/data_ingestion/data_ingestion_pipeline/components/process_data.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/data_ingestion/data_ingestion_pipeline/pipeline.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/data_ingestion/data_ingestion_pipeline/submit_pipeline.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/data_ingestion/pyproject.toml +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/data_ingestion/uv.lock +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/deployment_targets/agent_engine/app/agent_engine_app.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/deployment_targets/agent_engine/deployment_metadata.json +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/deployment_targets/agent_engine/notebooks/intro_agent_engine.ipynb +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/deployment_targets/agent_engine/tests/integration/test_agent_engine_app.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/deployment_targets/agent_engine/tests/load_test/.results/.placeholder +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/deployment_targets/agent_engine/tests/load_test/README.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/deployment_targets/agent_engine/tests/load_test/load_test.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/deployment_targets/cloud_run/Dockerfile +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/deployment_targets/cloud_run/app/server.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/deployment_targets/cloud_run/deployment/terraform/dev/service.tf +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/deployment_targets/cloud_run/deployment/terraform/service.tf +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/deployment_targets/cloud_run/tests/integration/test_server_e2e.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/deployment_targets/cloud_run/tests/load_test/.results/.placeholder +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/deployment_targets/cloud_run/tests/load_test/README.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/deployment_targets/cloud_run/tests/load_test/load_test.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/components.json +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/eslint.config.js +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/index.html +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/package-lock.json +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/package.json +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/src/App.tsx +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/src/components/ActivityTimeline.tsx +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/src/components/ChatMessagesView.tsx +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/src/components/InputForm.tsx +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/src/components/WelcomeScreen.tsx +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/src/components/ui/badge.tsx +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/src/components/ui/button.tsx +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/src/components/ui/card.tsx +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/src/components/ui/input.tsx +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/src/components/ui/scroll-area.tsx +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/src/components/ui/select.tsx +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/src/components/ui/tabs.tsx +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/src/components/ui/textarea.tsx +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/src/global.css +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/src/main.tsx +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/src/utils.ts +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/src/vite-env.d.ts +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/tsconfig.json +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/tsconfig.node.json +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/vite.config.ts +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/package-lock.json +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/package.json +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/public/favicon.ico +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/public/index.html +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/public/robots.txt +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/App.scss +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/App.test.tsx +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/App.tsx +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/components/audio-pulse/AudioPulse.tsx +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/components/audio-pulse/audio-pulse.scss +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/components/control-tray/ControlTray.tsx +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/components/control-tray/control-tray.scss +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/components/logger/Logger.tsx +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/components/logger/logger.scss +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/components/logger/mock-logs.ts +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/components/side-panel/SidePanel.tsx +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/components/side-panel/side-panel.scss +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/contexts/LiveAPIContext.tsx +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/hooks/use-live-api.ts +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/hooks/use-media-stream-mux.ts +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/hooks/use-screen-capture.ts +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/hooks/use-webcam.ts +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/index.css +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/index.tsx +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/multimodal-live-types.ts +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/react-app-env.d.ts +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/reportWebVitals.ts +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/setupTests.ts +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/utils/audio-recorder.ts +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/utils/audio-streamer.ts +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/utils/audioworklet-registry.ts +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/utils/multimodal-live-client.ts +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/utils/store-logger.ts +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/utils/utils.ts +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/utils/worklets/audio-processing.ts +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/utils/worklets/vol-meter.ts +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/tsconfig.json +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/streamlit/frontend/side_bar.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/streamlit/frontend/streamlit_app.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/streamlit/frontend/style/app_markdown.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/streamlit/frontend/utils/chat_utils.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/streamlit/frontend/utils/local_chat_history.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/streamlit/frontend/utils/message_editing.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/streamlit/frontend/utils/multimodal_utils.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/streamlit/frontend/utils/stream_handler.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/streamlit/frontend/utils/title_summary.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/containers/data_processing/Dockerfile +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/docs/adk-cheatsheet.md +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/idx/.idx/dev.nix +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/idx/idx-template.json +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/idx/idx-template.nix +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/locks/uv-adk_base-agent_engine.lock +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/locks/uv-adk_base-cloud_run.lock +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/locks/uv-agentic_rag-agent_engine.lock +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/locks/uv-agentic_rag-cloud_run.lock +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/locks/uv-crewai_coding_crew-agent_engine.lock +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/locks/uv-crewai_coding_crew-cloud_run.lock +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/locks/uv-langgraph_base_react-agent_engine.lock +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/locks/uv-langgraph_base_react-cloud_run.lock +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/locks/uv-live_api-cloud_run.lock +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/setup_cicd/cicd_variables.tf +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/setup_cicd/github.tf +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/setup_cicd/providers.tf +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/utils/generate_locks.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/utils/lock_utils.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/utils/watch_and_rebuild.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/__init__.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/cicd/example.env +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/cicd/test_e2e_deployment.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/cli/commands/test_list.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/cli/commands/test_setup_cicd.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/cli/utils/test_cicd.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/integration/test_remote_templating.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/integration/test_templated_patterns.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/integration/utils.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/test_frontend/test_side_bar.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/test_frontend/test_streamlit_app.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/test_frontend/test_utils/test_chat_utils.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/test_frontend/test_utils/test_local_chat_history.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/test_frontend/test_utils/test_message_editing.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/test_frontend/test_utils/test_multimodal_utils.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/test_frontend/test_utils/test_stream_handler.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/utils/__init__.py +0 -0
- {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/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_makefile_usability.py
|
33
|
+
|
34
|
+
logsBucket: gs://${PROJECT_ID}-logs-data/build-logs
|
35
|
+
options:
|
36
|
+
defaultLogsBucketBehavior: REGIONAL_USER_OWNED_BUCKET
|
{agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.cloudbuild/terraform/build_triggers.tf
RENAMED
@@ -46,6 +46,16 @@ locals {
|
|
46
46
|
".cloudbuild/**",
|
47
47
|
]
|
48
48
|
|
49
|
+
makefile_usability_included_files = [
|
50
|
+
"src/cli/**",
|
51
|
+
"src/base_template/**",
|
52
|
+
"src/deployment_targets/**",
|
53
|
+
"tests/integration/test_makefile_usability.py",
|
54
|
+
"pyproject.toml",
|
55
|
+
"uv.lock",
|
56
|
+
".cloudbuild/**",
|
57
|
+
]
|
58
|
+
|
49
59
|
# Define a local variable for agent/deployment combinations
|
50
60
|
agent_testing_combinations = [
|
51
61
|
{
|
@@ -341,3 +351,25 @@ resource "google_cloudbuild_trigger" "pr_test_remote_template" {
|
|
341
351
|
ignored_files = local.common_ignored_files
|
342
352
|
include_build_logs = "INCLUDE_BUILD_LOGS_WITH_STATUS"
|
343
353
|
}
|
354
|
+
|
355
|
+
# g. Create Makefile usability Test trigger for PR requests
|
356
|
+
resource "google_cloudbuild_trigger" "pr_test_makefile" {
|
357
|
+
name = "pr-test-makefile"
|
358
|
+
project = var.cicd_runner_project_id
|
359
|
+
location = var.region
|
360
|
+
description = "Trigger for PR checks on Makefile usability"
|
361
|
+
service_account = resource.google_service_account.cicd_runner_sa.id
|
362
|
+
|
363
|
+
repository_event_config {
|
364
|
+
repository = local.repository_path
|
365
|
+
pull_request {
|
366
|
+
branch = "main"
|
367
|
+
comment_control = "COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY"
|
368
|
+
}
|
369
|
+
}
|
370
|
+
|
371
|
+
filename = ".cloudbuild/ci/test_makefile.yaml"
|
372
|
+
included_files = local.makefile_usability_included_files
|
373
|
+
ignored_files = local.common_ignored_files
|
374
|
+
include_build_logs = "INCLUDE_BUILD_LOGS_WITH_STATUS"
|
375
|
+
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: agent-starter-pack
|
3
|
-
Version: 0.9.
|
3
|
+
Version: 0.9.2
|
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
|
@@ -16,11 +16,9 @@ Provides-Extra: jupyter
|
|
16
16
|
Requires-Dist: ipykernel>=6.29.5; extra == 'jupyter'
|
17
17
|
Requires-Dist: jupyter; extra == 'jupyter'
|
18
18
|
Provides-Extra: lint
|
19
|
-
Requires-Dist: codespell
|
20
|
-
Requires-Dist: mypy
|
21
|
-
Requires-Dist: ruff
|
22
|
-
Requires-Dist: types-pyyaml~=6.0.12.20240917; extra == 'lint'
|
23
|
-
Requires-Dist: types-requests~=2.32.0.20240914; extra == 'lint'
|
19
|
+
Requires-Dist: codespell; extra == 'lint'
|
20
|
+
Requires-Dist: mypy; extra == 'lint'
|
21
|
+
Requires-Dist: ruff; extra == 'lint'
|
24
22
|
Description-Content-Type: text/markdown
|
25
23
|
|
26
24
|
# 🚀 Agent Starter Pack
|
@@ -1,8 +1,6 @@
|
|
1
1
|
# Remote Templates
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
This guide covers how to build, test, and use remote templates.
|
3
|
+
A remote template is a Git repository that the agent-starter-pack CLI uses to generate new **agent codebases**—the local directories containing your agent's code, configuration, and dependencies. It empowers you to create and share your **own production-ready starter packs** by packaging your **custom agent logic, dependencies, and configurations**. This guide covers how to build, test, and use them.
|
6
4
|
|
7
5
|
## Quickstart: Creating Your First Remote Template
|
8
6
|
|
@@ -10,7 +8,7 @@ Let's build a simple remote template that customizes the built-in `adk_base` age
|
|
10
8
|
|
11
9
|
### Step 1: Create the Template Directory Structure
|
12
10
|
|
13
|
-
A remote template is structured just like a standard agent
|
11
|
+
A remote template is structured just like a standard **agent codebase**. The only special part is the `.template/` directory, which holds the configuration.
|
14
12
|
|
15
13
|
Create the following structure on your local machine:
|
16
14
|
|
@@ -87,7 +85,7 @@ Run the `create` command from the directory *outside* of your template folder:
|
|
87
85
|
uvx agent-starter-pack create my-test-agent -a local@./my-first-remote-template
|
88
86
|
```
|
89
87
|
|
90
|
-
This creates a new
|
88
|
+
This creates a new **agent** named `my-test-agent` using your local template.
|
91
89
|
|
92
90
|
### Step 5: Publish and Use Your Template
|
93
91
|
|
@@ -105,7 +103,7 @@ uvx agent-starter-pack create my-remote-agent -a $REPO_URL
|
|
105
103
|
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
104
|
|
107
105
|
- **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
|
106
|
+
- **`.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 generated **agent**.
|
109
107
|
- **Dependencies (`pyproject.toml`, `uv.lock`)**: These must be at the root of your repository.
|
110
108
|
|
111
109
|
**Example Structure:**
|
@@ -124,7 +122,7 @@ my-awesome-template/
|
|
124
122
|
|
125
123
|
Files are copied and overlaid in the following order, with later steps overwriting earlier ones if files have the same name and path:
|
126
124
|
|
127
|
-
1. **[Base
|
125
|
+
1. **[Base Template Files](https://github.com/GoogleCloudPlatform/agent-starter-pack/tree/main/src/base_template)**: The foundational files from the starter pack.
|
128
126
|
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
127
|
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
128
|
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/`).
|
@@ -137,27 +135,20 @@ You have full control over the Python dependencies. Both `pyproject.toml` and `u
|
|
137
135
|
|
138
136
|
* **`uv.lock`**: Strongly recommended to ensure reproducibility.
|
139
137
|
* If present, guarantees exact dependency versions.
|
140
|
-
* If missing, falls back to base template's lock file. A new lock file will be
|
138
|
+
* If missing, falls back to base template's lock file. A new lock file will be generated by the user when performing installation.
|
141
139
|
|
142
140
|
**Best Practice:** Always run `uv lock` after changing dependencies and commit the resulting lock file.
|
143
141
|
|
144
142
|
## Makefile Behavior
|
145
143
|
|
146
|
-
|
144
|
+
If your remote template includes a `Makefile` at the root, it will be used as the primary `Makefile` for the generated project. The system intelligently merges it with the `base_template`'s `Makefile` to ensure that essential commands from the starter pack are not lost.
|
147
145
|
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
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
|
-
```
|
146
|
+
Here's how the merge logic works:
|
147
|
+
- **Your Commands Take Precedence**: If a command exists in both your remote `Makefile` and the base `Makefile`, your version is kept.
|
148
|
+
- **New Commands are Added**: Any commands from your `Makefile` are added.
|
149
|
+
- **Base Commands are Appended**: Any commands that are in the base `Makefile` but not in yours are appended to your `Makefile`, under a clear separator comment.
|
150
|
+
|
151
|
+
This allows you to completely customize the `Makefile` while still inheriting the standard functionality of the starter pack.
|
161
152
|
|
162
153
|
## Configuration Reference
|
163
154
|
|
@@ -165,7 +156,7 @@ The `templateconfig.yaml` file is the control center for defining an agent's pro
|
|
165
156
|
|
166
157
|
## Usage Reference
|
167
158
|
|
168
|
-
### Creating
|
159
|
+
### Creating an Agent from a Template
|
169
160
|
|
170
161
|
Use the `create` command with the `--agent` (`-a`) flag.
|
171
162
|
|
@@ -180,15 +171,15 @@ Use the `create` command with the `--agent` (`-a`) flag.
|
|
180
171
|
uvx agent-starter-pack create my-agent -a github.com/my-org/my-repo/path-to-template@develop
|
181
172
|
```
|
182
173
|
|
183
|
-
* **ADK Samples Shortcut:** A convenient alias for official Google agent examples. It allows you to create
|
174
|
+
* **ADK Samples Shortcut:** A convenient alias for official Google agent examples. It allows you to create **agents** from the [google/adk-samples](https://github.com/google/adk-samples) repository without needing to type the full URL.
|
184
175
|
```bash
|
185
|
-
# Creates
|
176
|
+
# Creates an agent from the 'gemini-fullstack' template in adk-samples
|
186
177
|
uvx agent-starter-pack create my-agent -a adk@gemini-fullstack
|
187
178
|
```
|
188
179
|
|
189
180
|
* **Local Testing:**
|
190
181
|
```bash
|
191
|
-
uvx agent-starter-pack create my-test-
|
182
|
+
uvx agent-starter-pack create my-test-agent -a local@./path/to/your/template
|
192
183
|
```
|
193
184
|
|
194
185
|
### Listing Available Agents
|
@@ -208,4 +199,4 @@ The `list` command helps you discover templates.
|
|
208
199
|
* **List Official ADK Samples:**
|
209
200
|
```bash
|
210
201
|
uvx agent-starter-pack list --adk
|
211
|
-
```
|
202
|
+
```
|
{agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/guide/template-config-reference.md
RENAMED
@@ -23,50 +23,5 @@ This object contains fields that control the generated project's features and be
|
|
23
23
|
| `frontend_type` | string | Specifies the frontend to use. Examples: `streamlit`, `live_api_react`. Defaults to `streamlit`. |
|
24
24
|
| `requires_data_ingestion` | boolean | If `true`, the user will be prompted to configure a datastore. |
|
25
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
|
+
| `interactive_command` | string | The `make` command to run for starting the agent, after the agent code is being created (e.g., `make playground`, `make dev`). Defaults to `playground`. |
|
26
27
|
| `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
|
-
```
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[project]
|
2
2
|
name = "agent-starter-pack"
|
3
|
-
version = "0.9.
|
3
|
+
version = "0.9.2"
|
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" },
|
@@ -43,6 +43,8 @@ dev = [
|
|
43
43
|
"sphinx-rtd-theme~=2.0.0",
|
44
44
|
"streamlit~=1.42.0",
|
45
45
|
"streamlit-feedback~=0.1.4",
|
46
|
+
"types-PyYAML",
|
47
|
+
"types-requests",
|
46
48
|
"watchdog~=6.0.0",
|
47
49
|
]
|
48
50
|
|
@@ -53,11 +55,9 @@ jupyter = [
|
|
53
55
|
]
|
54
56
|
|
55
57
|
lint = [
|
56
|
-
"ruff
|
57
|
-
"mypy
|
58
|
-
"codespell
|
59
|
-
"types-pyyaml~=6.0.12.20240917",
|
60
|
-
"types-requests~=2.32.0.20240914",
|
58
|
+
"ruff",
|
59
|
+
"mypy",
|
60
|
+
"codespell",
|
61
61
|
]
|
62
62
|
|
63
63
|
[tool.pytest.ini_options]
|
@@ -15,14 +15,16 @@
|
|
15
15
|
import logging
|
16
16
|
import os
|
17
17
|
import pathlib
|
18
|
+
import shutil
|
18
19
|
import subprocess
|
20
|
+
import tempfile
|
19
21
|
|
20
22
|
import click
|
21
23
|
from click.core import ParameterSource
|
22
24
|
from rich.console import Console
|
23
25
|
from rich.prompt import IntPrompt, Prompt
|
24
26
|
|
25
|
-
from ..utils.datastores import DATASTORE_TYPES
|
27
|
+
from ..utils.datastores import DATASTORE_TYPES, DATASTORES
|
26
28
|
from ..utils.gcp import verify_credentials, verify_vertex_connection
|
27
29
|
from ..utils.logging import handle_cli_error
|
28
30
|
from ..utils.remote_template import (
|
@@ -34,6 +36,7 @@ from ..utils.remote_template import (
|
|
34
36
|
)
|
35
37
|
from ..utils.template import (
|
36
38
|
get_available_agents,
|
39
|
+
get_deployment_targets,
|
37
40
|
get_template_path,
|
38
41
|
load_template_config,
|
39
42
|
process_template,
|
@@ -128,7 +131,7 @@ def normalize_project_name(project_name: str) -> str:
|
|
128
131
|
@click.option(
|
129
132
|
"--skip-checks",
|
130
133
|
is_flag=True,
|
131
|
-
help="Skip verification checks for
|
134
|
+
help="Skip verification checks for GCP and Vertex AI",
|
132
135
|
default=False,
|
133
136
|
)
|
134
137
|
@handle_cli_error
|
@@ -155,7 +158,7 @@ def create(
|
|
155
158
|
style="bold blue",
|
156
159
|
)
|
157
160
|
console.print(
|
158
|
-
"Powered by
|
161
|
+
"Powered by [link=https://goo.gle/agent-starter-pack]Google Cloud - Agent Starter Pack [/link]\n",
|
159
162
|
)
|
160
163
|
console.print(
|
161
164
|
"This tool will help you create an end-to-end production-ready AI agent in Google Cloud!\n"
|
@@ -201,17 +204,28 @@ def create(
|
|
201
204
|
# Agent selection - handle remote templates
|
202
205
|
selected_agent = None
|
203
206
|
template_source_path = None
|
207
|
+
temp_dir_to_clean = None
|
204
208
|
|
205
209
|
if agent:
|
206
210
|
if agent.startswith("local@"):
|
207
211
|
path_str = agent.split("@", 1)[1]
|
208
|
-
|
209
|
-
if not
|
212
|
+
local_path = pathlib.Path(path_str).resolve()
|
213
|
+
if not local_path.is_dir():
|
210
214
|
raise click.ClickException(
|
211
|
-
f"Local path not found or not a directory: {
|
215
|
+
f"Local path not found or not a directory: {local_path}"
|
212
216
|
)
|
217
|
+
|
218
|
+
# Create a temporary directory and copy the local template to it
|
219
|
+
temp_dir = tempfile.mkdtemp(prefix="asp_local_template_")
|
220
|
+
temp_dir_to_clean = temp_dir
|
221
|
+
template_source_path = pathlib.Path(temp_dir) / local_path.name
|
222
|
+
shutil.copytree(local_path, template_source_path)
|
223
|
+
|
213
224
|
selected_agent = f"local_{template_source_path.name}"
|
214
|
-
console.print(f"Using local template: {
|
225
|
+
console.print(f"Using local template: {local_path}")
|
226
|
+
logging.debug(
|
227
|
+
f"Copied local template to temporary dir: {template_source_path}"
|
228
|
+
)
|
215
229
|
else:
|
216
230
|
# Check if it's a remote template specification
|
217
231
|
remote_spec = parse_agent_spec(agent)
|
@@ -223,7 +237,10 @@ def create(
|
|
223
237
|
)
|
224
238
|
else:
|
225
239
|
console.print(f"Fetching remote template: {agent}")
|
226
|
-
template_source_path = fetch_remote_template(
|
240
|
+
template_source_path, temp_dir_path = fetch_remote_template(
|
241
|
+
remote_spec
|
242
|
+
)
|
243
|
+
temp_dir_to_clean = str(temp_dir_path)
|
227
244
|
selected_agent = f"remote_{hash(agent)}" # Generate unique name for remote template
|
228
245
|
else:
|
229
246
|
# Handle local agent selection
|
@@ -244,13 +261,17 @@ def create(
|
|
244
261
|
f"Invalid agent name or number: {agent}"
|
245
262
|
) from err
|
246
263
|
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
264
|
+
# Agent selection
|
265
|
+
final_agent = selected_agent
|
266
|
+
if not final_agent:
|
267
|
+
if auto_approve:
|
268
|
+
raise click.ClickException(
|
269
|
+
"Error: --agent is required when running with --auto-approve."
|
270
|
+
)
|
271
|
+
final_agent = display_agent_selection(deployment_target)
|
272
|
+
|
252
273
|
if debug:
|
253
|
-
logging.debug(f"Selected agent: {
|
274
|
+
logging.debug(f"Selected agent: {final_agent}")
|
254
275
|
|
255
276
|
# Load template configuration based on whether it's remote or local
|
256
277
|
if template_source_path:
|
@@ -302,14 +323,19 @@ def create(
|
|
302
323
|
config = load_template_config(template_path)
|
303
324
|
# Data ingestion and datastore selection
|
304
325
|
if include_data_ingestion or datastore:
|
305
|
-
# If datastore is specified but include_data_ingestion is not, set it to True
|
306
326
|
include_data_ingestion = True
|
307
|
-
|
308
|
-
# If include_data_ingestion is True but no datastore is specified, prompt for it
|
309
327
|
if not datastore:
|
310
|
-
|
311
|
-
|
312
|
-
|
328
|
+
if auto_approve:
|
329
|
+
# Default to the first available datastore in non-interactive mode
|
330
|
+
datastore = next(iter(DATASTORES.keys()))
|
331
|
+
console.print(
|
332
|
+
f"Info: --datastore not specified. Defaulting to '{datastore}' in auto-approve mode.",
|
333
|
+
style="yellow",
|
334
|
+
)
|
335
|
+
else:
|
336
|
+
datastore = prompt_datastore_selection(
|
337
|
+
final_agent, from_cli_flag=True
|
338
|
+
)
|
313
339
|
if debug:
|
314
340
|
logging.debug(f"Data ingestion enabled: {include_data_ingestion}")
|
315
341
|
logging.debug(f"Selected datastore type: {datastore}")
|
@@ -317,8 +343,15 @@ def create(
|
|
317
343
|
# Check if the agent requires data ingestion
|
318
344
|
if config and config.get("settings", {}).get("requires_data_ingestion"):
|
319
345
|
include_data_ingestion = True
|
320
|
-
|
321
|
-
|
346
|
+
if not datastore:
|
347
|
+
if auto_approve:
|
348
|
+
datastore = next(iter(DATASTORES.keys()))
|
349
|
+
console.print(
|
350
|
+
f"Info: --datastore not specified. Defaulting to '{datastore}' in auto-approve mode.",
|
351
|
+
style="yellow",
|
352
|
+
)
|
353
|
+
else:
|
354
|
+
datastore = prompt_datastore_selection(final_agent)
|
322
355
|
if debug:
|
323
356
|
logging.debug(
|
324
357
|
f"Data ingestion required by agent: {include_data_ingestion}"
|
@@ -334,13 +367,25 @@ def create(
|
|
334
367
|
deployment_agent_name = get_base_template_name(config)
|
335
368
|
remote_config = config
|
336
369
|
|
337
|
-
final_deployment =
|
338
|
-
|
339
|
-
|
340
|
-
else prompt_deployment_target(
|
370
|
+
final_deployment = deployment_target
|
371
|
+
if not final_deployment:
|
372
|
+
available_targets = get_deployment_targets(
|
341
373
|
deployment_agent_name, remote_config=remote_config
|
342
374
|
)
|
343
|
-
|
375
|
+
if auto_approve:
|
376
|
+
if not available_targets:
|
377
|
+
raise click.ClickException(
|
378
|
+
f"Error: No deployment targets available for agent '{deployment_agent_name}'."
|
379
|
+
)
|
380
|
+
final_deployment = available_targets[0]
|
381
|
+
console.print(
|
382
|
+
f"Info: --deployment-target not specified. Defaulting to '{final_deployment}' in auto-approve mode.",
|
383
|
+
style="yellow",
|
384
|
+
)
|
385
|
+
else:
|
386
|
+
final_deployment = prompt_deployment_target(
|
387
|
+
deployment_agent_name, remote_config=remote_config
|
388
|
+
)
|
344
389
|
if debug:
|
345
390
|
logging.debug(f"Selected deployment target: {final_deployment}")
|
346
391
|
|
@@ -359,8 +404,19 @@ def create(
|
|
359
404
|
)
|
360
405
|
return
|
361
406
|
|
362
|
-
if
|
363
|
-
|
407
|
+
if (
|
408
|
+
final_deployment is not None
|
409
|
+
and final_deployment in ("cloud_run")
|
410
|
+
and not session_type
|
411
|
+
):
|
412
|
+
if auto_approve:
|
413
|
+
final_session_type = "in_memory"
|
414
|
+
console.print(
|
415
|
+
"Info: --session-type not specified. Defaulting to 'in_memory' in auto-approve mode.",
|
416
|
+
style="yellow",
|
417
|
+
)
|
418
|
+
else:
|
419
|
+
final_session_type = prompt_session_type_selection()
|
364
420
|
else:
|
365
421
|
# Agents that don't require session management always use in-memory sessions
|
366
422
|
final_session_type = "in_memory"
|
@@ -441,10 +497,22 @@ def create(
|
|
441
497
|
remote_template_path=template_source_path,
|
442
498
|
remote_config=config if template_source_path else None,
|
443
499
|
)
|
444
|
-
|
500
|
+
|
445
501
|
# Replace region in all files if a different region was specified
|
446
502
|
if region != "us-central1":
|
447
503
|
replace_region_in_files(project_path, region, debug=debug)
|
504
|
+
finally:
|
505
|
+
# Clean up the temporary directory if one was created
|
506
|
+
if temp_dir_to_clean:
|
507
|
+
try:
|
508
|
+
shutil.rmtree(temp_dir_to_clean)
|
509
|
+
logging.debug(
|
510
|
+
f"Successfully cleaned up temporary directory: {temp_dir_to_clean}"
|
511
|
+
)
|
512
|
+
except OSError as e:
|
513
|
+
logging.warning(
|
514
|
+
f"Failed to clean up temporary directory {temp_dir_to_clean}: {e}"
|
515
|
+
)
|
448
516
|
|
449
517
|
project_path = destination_dir / project_name
|
450
518
|
cd_path = project_path if output_dir else project_name
|
@@ -474,14 +542,12 @@ def create(
|
|
474
542
|
console.print("\n🚀 To get started, run the following command:")
|
475
543
|
|
476
544
|
# Check if the agent has a 'dev' command in its settings
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
f" [bold bright_green]cd {cd_path} && make install && make playground[/]"
|
484
|
-
)
|
545
|
+
interactive_command = config.get("settings", {}).get(
|
546
|
+
"interactive_command", "playground"
|
547
|
+
)
|
548
|
+
console.print(
|
549
|
+
f" [bold bright_green]cd {cd_path} && make install && make {interactive_command}[/]"
|
550
|
+
)
|
485
551
|
except Exception:
|
486
552
|
if debug:
|
487
553
|
logging.exception(
|
@@ -82,15 +82,9 @@ def list_remote_agents(remote_source: str, scan_from_root: bool = False) -> None
|
|
82
82
|
# specific template directory within the repo.
|
83
83
|
template_dir_path = fetch_remote_template(spec)
|
84
84
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
scan_path = template_dir_path
|
89
|
-
while not (scan_path / ".git").exists() and scan_path.parent != scan_path:
|
90
|
-
scan_path = scan_path.parent
|
91
|
-
else:
|
92
|
-
# For other git repos, respect the path given in the URL.
|
93
|
-
scan_path = template_dir_path
|
85
|
+
# fetch_remote_template always returns a tuple of (repo_path, template_path)
|
86
|
+
repo_path, template_path = template_dir_path
|
87
|
+
scan_path = repo_path if scan_from_root else template_path
|
94
88
|
|
95
89
|
display_agents_from_path(scan_path, remote_source)
|
96
90
|
|