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.
Files changed (281) hide show
  1. agent_starter_pack-0.9.2/.cloudbuild/ci/test_makefile.yaml +36 -0
  2. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.cloudbuild/terraform/build_triggers.tf +32 -0
  3. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/PKG-INFO +4 -6
  4. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/guide/remote-templating.md +18 -27
  5. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/guide/template-config-reference.md +1 -46
  6. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/pyproject.toml +6 -6
  7. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/cli/commands/create.py +104 -38
  8. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/cli/commands/list.py +3 -9
  9. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/cli/utils/remote_template.py +81 -14
  10. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/cli/utils/template.py +12 -0
  11. agent_starter_pack-0.9.2/src/resources/containers/e2e-tests/Dockerfile +41 -0
  12. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/cli/commands/test_create.py +13 -1
  13. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/cli/commands/test_create_local.py +9 -3
  14. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/cli/utils/test_remote_template.py +212 -43
  15. agent_starter_pack-0.9.2/tests/integration/test_makefile_usability.py +199 -0
  16. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/integration/test_template_linting.py +10 -0
  17. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/uv.lock +14 -14
  18. agent_starter_pack-0.9.0/src/resources/containers/e2e-tests/Dockerfile +0 -19
  19. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.claude/settings.local.json +0 -0
  20. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.cloudbuild/cd/test_e2e.yaml +0 -0
  21. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.cloudbuild/ci/build_use_wheel.yaml +0 -0
  22. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.cloudbuild/ci/lint.yaml +0 -0
  23. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.cloudbuild/ci/lint_templated_agents.yaml +0 -0
  24. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.cloudbuild/ci/test.yaml +0 -0
  25. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.cloudbuild/ci/test_remote_template.yaml +0 -0
  26. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.cloudbuild/ci/test_templated_agents.yaml +0 -0
  27. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.cloudbuild/terraform/apis.tf +0 -0
  28. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.cloudbuild/terraform/service_account.tf +0 -0
  29. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.cloudbuild/terraform/storage.tf +0 -0
  30. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.cloudbuild/terraform/variables.tf +0 -0
  31. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.github/workflows/docs.yml +0 -0
  32. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/.gitignore +0 -0
  33. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/CODE_OF_CONDUCT.md +0 -0
  34. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/CONTRIBUTING.md +0 -0
  35. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/LICENSE +0 -0
  36. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/Makefile +0 -0
  37. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/README.md +0 -0
  38. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/README.md +0 -0
  39. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/adk_base/.template/templateconfig.yaml +0 -0
  40. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/adk_base/README.md +0 -0
  41. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/adk_base/app/agent.py +0 -0
  42. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/adk_base/notebooks/adk_app_testing.ipynb +0 -0
  43. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/adk_base/notebooks/evaluating_adk_agent.ipynb +0 -0
  44. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/adk_base/tests/integration/test_agent.py +0 -0
  45. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/adk_gemini_fullstack/.template/templateconfig.yaml +0 -0
  46. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/adk_gemini_fullstack/README.md +0 -0
  47. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/adk_gemini_fullstack/app/agent.py +0 -0
  48. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/adk_gemini_fullstack/app/config.py +0 -0
  49. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/adk_gemini_fullstack/notebooks/adk_app_testing.ipynb +0 -0
  50. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/adk_gemini_fullstack/notebooks/evaluating_adk_agent.ipynb +0 -0
  51. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/adk_gemini_fullstack/tests/integration/test_agent.py +0 -0
  52. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/agentic_rag/.template/templateconfig.yaml +0 -0
  53. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/agentic_rag/README.md +0 -0
  54. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/agentic_rag/app/agent.py +0 -0
  55. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/agentic_rag/app/retrievers.py +0 -0
  56. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/agentic_rag/app/templates.py +0 -0
  57. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/agentic_rag/notebooks/adk_app_testing.ipynb +0 -0
  58. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/agentic_rag/notebooks/evaluating_adk_agent.ipynb +0 -0
  59. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/agentic_rag/tests/integration/test_agent.py +0 -0
  60. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/crewai_coding_crew/.template/templateconfig.yaml +0 -0
  61. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/crewai_coding_crew/README.md +0 -0
  62. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/crewai_coding_crew/app/agent.py +0 -0
  63. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/crewai_coding_crew/app/crew/config/agents.yaml +0 -0
  64. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/crewai_coding_crew/app/crew/config/tasks.yaml +0 -0
  65. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/crewai_coding_crew/app/crew/crew.py +0 -0
  66. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/crewai_coding_crew/notebooks/evaluating_crewai_agent.ipynb +0 -0
  67. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/crewai_coding_crew/notebooks/evaluating_langgraph_agent.ipynb +0 -0
  68. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/crewai_coding_crew/tests/integration/test_agent.py +0 -0
  69. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/langgraph_base_react/.template/templateconfig.yaml +0 -0
  70. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/langgraph_base_react/README.md +0 -0
  71. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/langgraph_base_react/app/agent.py +0 -0
  72. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/langgraph_base_react/notebooks/evaluating_langgraph_agent.ipynb +0 -0
  73. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/langgraph_base_react/tests/integration/test_agent.py +0 -0
  74. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/live_api/.template/templateconfig.yaml +0 -0
  75. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/live_api/README.md +0 -0
  76. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/live_api/app/agent.py +0 -0
  77. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/live_api/app/server.py +0 -0
  78. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/live_api/tests/integration/test_server_e2e.py +0 -0
  79. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/live_api/tests/load_test/load_test.py +0 -0
  80. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/agents/live_api/tests/unit/test_server.py +0 -0
  81. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/.vitepress/config.js +0 -0
  82. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/agents/overview.md +0 -0
  83. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/cli/create.md +0 -0
  84. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/cli/index.md +0 -0
  85. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/cli/setup_cicd.md +0 -0
  86. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/guide/data-ingestion.md +0 -0
  87. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/guide/deploy-ui.md +0 -0
  88. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/guide/deployment.md +0 -0
  89. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/guide/development-guide.md +0 -0
  90. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/guide/getting-started.md +0 -0
  91. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/guide/installation.md +0 -0
  92. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/guide/observability.md +0 -0
  93. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/guide/troubleshooting.md +0 -0
  94. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/guide/video-tutorials.md +0 -0
  95. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/guide/why_starter_pack.md +0 -0
  96. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/images/adk_gemini_fullstack.gif +0 -0
  97. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/images/adk_gemini_fullstack_architecture.png +0 -0
  98. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/images/adk_logo.png +0 -0
  99. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/images/agent_starter_pack_screenshot.png +0 -0
  100. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/images/ags_high_level_architecture.png +0 -0
  101. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/images/icon.png +0 -0
  102. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/images/logo.png +0 -0
  103. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/images/prototype_to_prod.png +0 -0
  104. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/images/why_sp_edited.png +0 -0
  105. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/images/why_starter_pack.png +0 -0
  106. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/index.md +0 -0
  107. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/package-lock.json +0 -0
  108. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/docs/package.json +0 -0
  109. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/llm.txt +0 -0
  110. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/.gitignore +0 -0
  111. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/GEMINI.md +0 -0
  112. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/Makefile +0 -0
  113. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/README.md +0 -0
  114. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/app/__init__.py +0 -0
  115. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/app/utils/gcs.py +0 -0
  116. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/app/utils/tracing.py +0 -0
  117. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/app/utils/typing.py +0 -0
  118. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/README.md +0 -0
  119. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/cd/deploy-to-prod.yaml +0 -0
  120. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/cd/staging.yaml +0 -0
  121. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/ci/pr_checks.yaml +0 -0
  122. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/apis.tf +0 -0
  123. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/build_triggers.tf +0 -0
  124. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/dev/apis.tf +0 -0
  125. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/dev/iam.tf +0 -0
  126. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/dev/log_sinks.tf +0 -0
  127. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/dev/providers.tf +0 -0
  128. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/dev/storage.tf +0 -0
  129. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/dev/variables.tf +0 -0
  130. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/dev/vars/env.tfvars +0 -0
  131. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/iam.tf +0 -0
  132. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/locals.tf +0 -0
  133. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/log_sinks.tf +0 -0
  134. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/providers.tf +0 -0
  135. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/service_accounts.tf +0 -0
  136. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/storage.tf +0 -0
  137. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/variables.tf +0 -0
  138. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/deployment/terraform/vars/env.tfvars +0 -0
  139. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/pyproject.toml +0 -0
  140. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/base_template/tests/unit/test_dummy.py +0 -0
  141. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/cli/commands/setup_cicd.py +0 -0
  142. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/cli/main.py +0 -0
  143. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/cli/utils/__init__.py +0 -0
  144. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/cli/utils/cicd.py +0 -0
  145. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/cli/utils/datastores.py +0 -0
  146. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/cli/utils/gcp.py +0 -0
  147. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/cli/utils/logging.py +0 -0
  148. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/cli/utils/version.py +0 -0
  149. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/data_ingestion/README.md +0 -0
  150. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/data_ingestion/data_ingestion_pipeline/components/ingest_data.py +0 -0
  151. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/data_ingestion/data_ingestion_pipeline/components/process_data.py +0 -0
  152. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/data_ingestion/data_ingestion_pipeline/pipeline.py +0 -0
  153. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/data_ingestion/data_ingestion_pipeline/submit_pipeline.py +0 -0
  154. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/data_ingestion/pyproject.toml +0 -0
  155. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/data_ingestion/uv.lock +0 -0
  156. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/deployment_targets/agent_engine/app/agent_engine_app.py +0 -0
  157. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/deployment_targets/agent_engine/deployment_metadata.json +0 -0
  158. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/deployment_targets/agent_engine/notebooks/intro_agent_engine.ipynb +0 -0
  159. {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
  160. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/deployment_targets/agent_engine/tests/load_test/.results/.placeholder +0 -0
  161. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/deployment_targets/agent_engine/tests/load_test/README.md +0 -0
  162. {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
  163. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/deployment_targets/cloud_run/Dockerfile +0 -0
  164. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/deployment_targets/cloud_run/app/server.py +0 -0
  165. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/deployment_targets/cloud_run/deployment/terraform/dev/service.tf +0 -0
  166. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/deployment_targets/cloud_run/deployment/terraform/service.tf +0 -0
  167. {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
  168. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/deployment_targets/cloud_run/tests/load_test/.results/.placeholder +0 -0
  169. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/deployment_targets/cloud_run/tests/load_test/README.md +0 -0
  170. {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
  171. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/components.json +0 -0
  172. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/eslint.config.js +0 -0
  173. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/index.html +0 -0
  174. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/package-lock.json +0 -0
  175. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/package.json +0 -0
  176. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/src/App.tsx +0 -0
  177. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/src/components/ActivityTimeline.tsx +0 -0
  178. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/src/components/ChatMessagesView.tsx +0 -0
  179. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/src/components/InputForm.tsx +0 -0
  180. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/src/components/WelcomeScreen.tsx +0 -0
  181. {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
  182. {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
  183. {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
  184. {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
  185. {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
  186. {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
  187. {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
  188. {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
  189. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/src/global.css +0 -0
  190. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/src/main.tsx +0 -0
  191. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/src/utils.ts +0 -0
  192. {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
  193. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/tsconfig.json +0 -0
  194. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/tsconfig.node.json +0 -0
  195. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/adk_gemini_fullstack/frontend/vite.config.ts +0 -0
  196. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/package-lock.json +0 -0
  197. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/package.json +0 -0
  198. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/public/favicon.ico +0 -0
  199. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/public/index.html +0 -0
  200. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/public/robots.txt +0 -0
  201. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/App.scss +0 -0
  202. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/App.test.tsx +0 -0
  203. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/App.tsx +0 -0
  204. {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
  205. {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
  206. {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
  207. {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
  208. {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
  209. {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
  210. {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
  211. {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
  212. {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
  213. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/contexts/LiveAPIContext.tsx +0 -0
  214. {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
  215. {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
  216. {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
  217. {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
  218. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/index.css +0 -0
  219. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/index.tsx +0 -0
  220. {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
  221. {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
  222. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/reportWebVitals.ts +0 -0
  223. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/setupTests.ts +0 -0
  224. {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
  225. {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
  226. {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
  227. {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
  228. {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
  229. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/src/utils/utils.ts +0 -0
  230. {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
  231. {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
  232. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/live_api_react/frontend/tsconfig.json +0 -0
  233. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/streamlit/frontend/side_bar.py +0 -0
  234. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/streamlit/frontend/streamlit_app.py +0 -0
  235. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/streamlit/frontend/style/app_markdown.py +0 -0
  236. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/streamlit/frontend/utils/chat_utils.py +0 -0
  237. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/streamlit/frontend/utils/local_chat_history.py +0 -0
  238. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/streamlit/frontend/utils/message_editing.py +0 -0
  239. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/streamlit/frontend/utils/multimodal_utils.py +0 -0
  240. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/streamlit/frontend/utils/stream_handler.py +0 -0
  241. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/frontends/streamlit/frontend/utils/title_summary.py +0 -0
  242. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/containers/data_processing/Dockerfile +0 -0
  243. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/docs/adk-cheatsheet.md +0 -0
  244. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/idx/.idx/dev.nix +0 -0
  245. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/idx/idx-template.json +0 -0
  246. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/idx/idx-template.nix +0 -0
  247. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/locks/uv-adk_base-agent_engine.lock +0 -0
  248. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/locks/uv-adk_base-cloud_run.lock +0 -0
  249. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock +0 -0
  250. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock +0 -0
  251. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/locks/uv-agentic_rag-agent_engine.lock +0 -0
  252. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/locks/uv-agentic_rag-cloud_run.lock +0 -0
  253. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/locks/uv-crewai_coding_crew-agent_engine.lock +0 -0
  254. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/locks/uv-crewai_coding_crew-cloud_run.lock +0 -0
  255. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/locks/uv-langgraph_base_react-agent_engine.lock +0 -0
  256. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/locks/uv-langgraph_base_react-cloud_run.lock +0 -0
  257. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/locks/uv-live_api-cloud_run.lock +0 -0
  258. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/setup_cicd/cicd_variables.tf +0 -0
  259. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/setup_cicd/github.tf +0 -0
  260. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/resources/setup_cicd/providers.tf +0 -0
  261. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/utils/generate_locks.py +0 -0
  262. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/utils/lock_utils.py +0 -0
  263. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/src/utils/watch_and_rebuild.py +0 -0
  264. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/__init__.py +0 -0
  265. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/cicd/example.env +0 -0
  266. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/cicd/test_e2e_deployment.py +0 -0
  267. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/cli/commands/test_list.py +0 -0
  268. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/cli/commands/test_setup_cicd.py +0 -0
  269. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/cli/utils/test_cicd.py +0 -0
  270. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/integration/test_remote_templating.py +0 -0
  271. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/integration/test_templated_patterns.py +0 -0
  272. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/integration/utils.py +0 -0
  273. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/test_frontend/test_side_bar.py +0 -0
  274. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/test_frontend/test_streamlit_app.py +0 -0
  275. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/test_frontend/test_utils/test_chat_utils.py +0 -0
  276. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/test_frontend/test_utils/test_local_chat_history.py +0 -0
  277. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/test_frontend/test_utils/test_message_editing.py +0 -0
  278. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/test_frontend/test_utils/test_multimodal_utils.py +0 -0
  279. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/test_frontend/test_utils/test_stream_handler.py +0 -0
  280. {agent_starter_pack-0.9.0 → agent_starter_pack-0.9.2}/tests/utils/__init__.py +0 -0
  281. {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
@@ -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.0
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~=2.2.0; extra == 'lint'
20
- Requires-Dist: mypy~=1.15.0; extra == 'lint'
21
- Requires-Dist: ruff>=0.4.6; extra == 'lint'
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
- 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.
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 project. The only special part is the `.template/` directory, which holds the configuration.
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 project `my-test-agent` using your local template.
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 project.
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 Project Files](https://github.com/GoogleCloudPlatform/agent-starter-pack/tree/main/src/base_template)**: The foundational files from the starter pack.
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 generatede by the user when performing installation.
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
- 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`.
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
- **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
- ```
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 a Project from a Template
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 projects from the [google/adk-samples](https://github.com/google/adk-samples) repository without needing to type the full URL.
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 a project from the 'gemini-fullstack' template in adk-samples
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-project -a local@./path/to/your/template
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
+ ```
@@ -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.0"
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>=0.4.6",
57
- "mypy~=1.15.0",
58
- "codespell~=2.2.0",
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 uv, GCP and Vertex AI",
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 ([link=https://goo.gle/agent-starter-pack]Google's Agent Starter Pack [/link])\n",
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
- template_source_path = pathlib.Path(path_str).resolve()
209
- if not template_source_path.is_dir():
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: {template_source_path}"
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: {template_source_path}")
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(remote_spec)
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
- final_agent = (
248
- selected_agent
249
- if selected_agent
250
- else display_agent_selection(deployment_target)
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: {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
- # Pass a flag to indicate this is from explicit CLI flag
311
- datastore = prompt_datastore_selection(final_agent, from_cli_flag=True)
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
- datastore = prompt_datastore_selection(final_agent)
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
- deployment_target
339
- if deployment_target
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 final_deployment in ("cloud_run") and not session_type:
363
- final_session_type = prompt_session_type_selection()
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
- finally:
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
- if config["settings"].get("commands", {}).get("extra", {}).get("dev"):
478
- console.print(
479
- f" [bold bright_green]cd {cd_path} && make install && make dev[/]"
480
- )
481
- else:
482
- console.print(
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
- if scan_from_root:
86
- # For ADK, we want to scan the entire repo. We need to find the
87
- # root of the repo and scan from there.
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