agent-starter-pack 0.6.3__tar.gz → 0.7.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/.cloudbuild/cd/test_e2e.yaml +1 -1
  2. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/.cloudbuild/ci/lint.yaml +1 -1
  3. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/.cloudbuild/ci/lint_templated_agents.yaml +1 -1
  4. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/.cloudbuild/ci/test.yaml +1 -1
  5. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/.cloudbuild/ci/test_templated_agents.yaml +1 -1
  6. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/PKG-INFO +16 -12
  7. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/README.md +15 -11
  8. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/adk_base/app/agent.py +1 -1
  9. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/adk_base/template/.templateconfig.yaml +1 -1
  10. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/adk_gemini_fullstack/README.md +1 -4
  11. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/adk_gemini_fullstack/app/agent.py +62 -8
  12. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/adk_gemini_fullstack/template/.templateconfig.yaml +1 -1
  13. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/agentic_rag/app/agent.py +1 -1
  14. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/agentic_rag/template/.templateconfig.yaml +1 -1
  15. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/crewai_coding_crew/app/agent.py +1 -1
  16. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/langgraph_base_react/app/agent.py +1 -1
  17. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/live_api/app/agent.py +8 -4
  18. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/docs/.vitepress/config.js +1 -0
  19. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/docs/agents/overview.md +11 -0
  20. agent_starter_pack-0.7.0/docs/guide/deploy-ui.md +91 -0
  21. agent_starter_pack-0.7.0/docs/guide/development-guide.md +139 -0
  22. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/docs/guide/getting-started.md +27 -24
  23. agent_starter_pack-0.7.0/docs/images/adk_gemini_fullstack.gif +0 -0
  24. agent_starter_pack-0.7.0/llm.txt +290 -0
  25. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/pyproject.toml +2 -2
  26. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/.gitignore +2 -1
  27. agent_starter_pack-0.7.0/src/base_template/GEMINI.md +5 -0
  28. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/Makefile +21 -6
  29. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/deployment/cd/deploy-to-prod.yaml +3 -3
  30. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/deployment/cd/staging.yaml +4 -4
  31. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/deployment/ci/pr_checks.yaml +1 -1
  32. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/pyproject.toml +2 -2
  33. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/cli/utils/template.py +22 -9
  34. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/data_ingestion/uv.lock +97 -0
  35. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/adk_gemini_fullstack/frontend/package-lock.json +276 -0
  36. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/adk_gemini_fullstack/frontend/package.json +1 -0
  37. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/adk_gemini_fullstack/frontend/src/components/ChatMessagesView.tsx +5 -4
  38. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/adk_gemini_fullstack/frontend/vite.config.ts +4 -0
  39. agent_starter_pack-0.7.0/src/resources/docs/adk-cheatsheet.md +1224 -0
  40. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/resources/locks/uv-adk_base-agent_engine.lock +96 -60
  41. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/resources/locks/uv-adk_base-cloud_run.lock +137 -82
  42. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock +96 -60
  43. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock +137 -82
  44. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/resources/locks/uv-agentic_rag-agent_engine.lock +173 -142
  45. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/resources/locks/uv-agentic_rag-cloud_run.lock +246 -200
  46. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/resources/locks/uv-crewai_coding_crew-agent_engine.lock +493 -248
  47. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/resources/locks/uv-crewai_coding_crew-cloud_run.lock +585 -306
  48. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/resources/locks/uv-langgraph_base_react-agent_engine.lock +185 -154
  49. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/resources/locks/uv-langgraph_base_react-cloud_run.lock +258 -212
  50. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/resources/locks/uv-live_api-cloud_run.lock +228 -182
  51. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/uv.lock +1 -1
  52. agent_starter_pack-0.6.3/docs/guide/development-guide.md +0 -96
  53. agent_starter_pack-0.6.3/docs/images/adk_gemini_fullstack_preview.png +0 -0
  54. agent_starter_pack-0.6.3/src/frontends/adk_gemini_fullstack/frontend/public/vite.svg +0 -1
  55. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/.cloudbuild/ci/build_use_wheel.yaml +0 -0
  56. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/.cloudbuild/terraform/apis.tf +0 -0
  57. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/.cloudbuild/terraform/build_triggers.tf +0 -0
  58. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/.cloudbuild/terraform/service_account.tf +0 -0
  59. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/.cloudbuild/terraform/storage.tf +0 -0
  60. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/.cloudbuild/terraform/variables.tf +0 -0
  61. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/.github/workflows/docs.yml +0 -0
  62. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/.gitignore +0 -0
  63. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/CODE_OF_CONDUCT.md +0 -0
  64. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/CONTRIBUTING.md +0 -0
  65. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/LICENSE +0 -0
  66. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/Makefile +0 -0
  67. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/adk_base/README.md +0 -0
  68. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/adk_base/notebooks/adk_app_testing.ipynb +0 -0
  69. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/adk_base/notebooks/evaluating_adk_agent.ipynb +0 -0
  70. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/adk_base/tests/integration/test_agent.py +0 -0
  71. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/adk_gemini_fullstack/app/config.py +0 -0
  72. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/adk_gemini_fullstack/notebooks/adk_app_testing.ipynb +0 -0
  73. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/adk_gemini_fullstack/notebooks/evaluating_adk_agent.ipynb +0 -0
  74. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/adk_gemini_fullstack/tests/integration/test_agent.py +0 -0
  75. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/agentic_rag/README.md +0 -0
  76. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/agentic_rag/app/retrievers.py +0 -0
  77. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/agentic_rag/app/templates.py +0 -0
  78. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/agentic_rag/notebooks/adk_app_testing.ipynb +0 -0
  79. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/agentic_rag/notebooks/evaluating_adk_agent.ipynb +0 -0
  80. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/agentic_rag/tests/integration/test_agent.py +0 -0
  81. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/crewai_coding_crew/README.md +0 -0
  82. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/crewai_coding_crew/app/crew/config/agents.yaml +0 -0
  83. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/crewai_coding_crew/app/crew/config/tasks.yaml +0 -0
  84. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/crewai_coding_crew/app/crew/crew.py +0 -0
  85. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/crewai_coding_crew/notebooks/evaluating_crewai_agent.ipynb +0 -0
  86. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/crewai_coding_crew/notebooks/evaluating_langgraph_agent.ipynb +0 -0
  87. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/crewai_coding_crew/template/.templateconfig.yaml +0 -0
  88. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/crewai_coding_crew/tests/integration/test_agent.py +0 -0
  89. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/langgraph_base_react/README.md +0 -0
  90. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/langgraph_base_react/notebooks/evaluating_langgraph_agent.ipynb +0 -0
  91. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/langgraph_base_react/template/.templateconfig.yaml +0 -0
  92. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/langgraph_base_react/tests/integration/test_agent.py +0 -0
  93. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/live_api/README.md +0 -0
  94. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/live_api/app/server.py +0 -0
  95. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/live_api/template/.templateconfig.yaml +0 -0
  96. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/live_api/tests/integration/test_server_e2e.py +0 -0
  97. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/live_api/tests/load_test/load_test.py +0 -0
  98. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/agents/live_api/tests/unit/test_server.py +0 -0
  99. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/docs/cli/create.md +0 -0
  100. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/docs/cli/index.md +0 -0
  101. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/docs/cli/setup_cicd.md +0 -0
  102. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/docs/guide/data-ingestion.md +0 -0
  103. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/docs/guide/deployment.md +0 -0
  104. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/docs/guide/installation.md +0 -0
  105. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/docs/guide/observability.md +0 -0
  106. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/docs/guide/troubleshooting.md +0 -0
  107. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/docs/guide/video-tutorials.md +0 -0
  108. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/docs/guide/why_starter_pack.md +0 -0
  109. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/docs/images/adk_gemini_fullstack_architecture.png +0 -0
  110. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/docs/images/adk_logo.png +0 -0
  111. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/docs/images/agent_starter_pack_screenshot.png +0 -0
  112. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/docs/images/ags_high_level_architecture.png +0 -0
  113. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/docs/images/icon.png +0 -0
  114. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/docs/images/logo.png +0 -0
  115. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/docs/images/prototype_to_prod.png +0 -0
  116. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/docs/images/why_sp_edited.png +0 -0
  117. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/docs/images/why_starter_pack.png +0 -0
  118. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/docs/index.md +0 -0
  119. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/docs/package-lock.json +0 -0
  120. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/docs/package.json +0 -0
  121. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/README.md +0 -0
  122. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/app/__init__.py +0 -0
  123. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/app/utils/gcs.py +0 -0
  124. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/app/utils/tracing.py +0 -0
  125. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/app/utils/typing.py +0 -0
  126. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/deployment/README.md +0 -0
  127. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/deployment/terraform/apis.tf +0 -0
  128. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/deployment/terraform/build_triggers.tf +0 -0
  129. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/deployment/terraform/dev/apis.tf +0 -0
  130. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/deployment/terraform/dev/iam.tf +0 -0
  131. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/deployment/terraform/dev/log_sinks.tf +0 -0
  132. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/deployment/terraform/dev/providers.tf +0 -0
  133. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/deployment/terraform/dev/storage.tf +0 -0
  134. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/deployment/terraform/dev/variables.tf +0 -0
  135. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/deployment/terraform/dev/vars/env.tfvars +0 -0
  136. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/deployment/terraform/iam.tf +0 -0
  137. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/deployment/terraform/locals.tf +0 -0
  138. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/deployment/terraform/log_sinks.tf +0 -0
  139. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/deployment/terraform/providers.tf +0 -0
  140. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/deployment/terraform/service_accounts.tf +0 -0
  141. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/deployment/terraform/storage.tf +0 -0
  142. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/deployment/terraform/variables.tf +0 -0
  143. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/deployment/terraform/vars/env.tfvars +0 -0
  144. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/base_template/tests/unit/test_dummy.py +0 -0
  145. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/cli/commands/create.py +0 -0
  146. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/cli/commands/setup_cicd.py +0 -0
  147. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/cli/main.py +0 -0
  148. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/cli/utils/__init__.py +0 -0
  149. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/cli/utils/cicd.py +0 -0
  150. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/cli/utils/datastores.py +0 -0
  151. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/cli/utils/gcp.py +0 -0
  152. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/cli/utils/logging.py +0 -0
  153. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/cli/utils/version.py +0 -0
  154. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/data_ingestion/README.md +0 -0
  155. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/data_ingestion/data_ingestion_pipeline/components/ingest_data.py +0 -0
  156. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/data_ingestion/data_ingestion_pipeline/components/process_data.py +0 -0
  157. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/data_ingestion/data_ingestion_pipeline/pipeline.py +0 -0
  158. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/data_ingestion/data_ingestion_pipeline/submit_pipeline.py +0 -0
  159. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/data_ingestion/pyproject.toml +0 -0
  160. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/deployment_targets/agent_engine/app/agent_engine_app.py +0 -0
  161. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/deployment_targets/agent_engine/deployment_metadata.json +0 -0
  162. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/deployment_targets/agent_engine/notebooks/intro_agent_engine.ipynb +0 -0
  163. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/deployment_targets/agent_engine/tests/integration/test_agent_engine_app.py +0 -0
  164. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/deployment_targets/agent_engine/tests/load_test/.results/.placeholder +0 -0
  165. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/deployment_targets/agent_engine/tests/load_test/README.md +0 -0
  166. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/deployment_targets/agent_engine/tests/load_test/load_test.py +0 -0
  167. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/deployment_targets/cloud_run/Dockerfile +0 -0
  168. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/deployment_targets/cloud_run/app/server.py +0 -0
  169. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/deployment_targets/cloud_run/tests/integration/test_server_e2e.py +0 -0
  170. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/deployment_targets/cloud_run/tests/load_test/.results/.placeholder +0 -0
  171. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/deployment_targets/cloud_run/tests/load_test/README.md +0 -0
  172. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/deployment_targets/cloud_run/tests/load_test/load_test.py +0 -0
  173. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/deployment_targets/cloud_run/uv.lock +0 -0
  174. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/adk_gemini_fullstack/frontend/components.json +0 -0
  175. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/adk_gemini_fullstack/frontend/eslint.config.js +0 -0
  176. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/adk_gemini_fullstack/frontend/index.html +0 -0
  177. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/adk_gemini_fullstack/frontend/src/App.tsx +0 -0
  178. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/adk_gemini_fullstack/frontend/src/components/ActivityTimeline.tsx +0 -0
  179. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/adk_gemini_fullstack/frontend/src/components/InputForm.tsx +0 -0
  180. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/adk_gemini_fullstack/frontend/src/components/WelcomeScreen.tsx +0 -0
  181. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/adk_gemini_fullstack/frontend/src/components/ui/badge.tsx +0 -0
  182. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/adk_gemini_fullstack/frontend/src/components/ui/button.tsx +0 -0
  183. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/adk_gemini_fullstack/frontend/src/components/ui/card.tsx +0 -0
  184. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/adk_gemini_fullstack/frontend/src/components/ui/input.tsx +0 -0
  185. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/adk_gemini_fullstack/frontend/src/components/ui/scroll-area.tsx +0 -0
  186. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/adk_gemini_fullstack/frontend/src/components/ui/select.tsx +0 -0
  187. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/adk_gemini_fullstack/frontend/src/components/ui/tabs.tsx +0 -0
  188. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/adk_gemini_fullstack/frontend/src/components/ui/textarea.tsx +0 -0
  189. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/adk_gemini_fullstack/frontend/src/global.css +0 -0
  190. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/adk_gemini_fullstack/frontend/src/main.tsx +0 -0
  191. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/adk_gemini_fullstack/frontend/src/utils.ts +0 -0
  192. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/adk_gemini_fullstack/frontend/src/vite-env.d.ts +0 -0
  193. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/adk_gemini_fullstack/frontend/tsconfig.json +0 -0
  194. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/adk_gemini_fullstack/frontend/tsconfig.node.json +0 -0
  195. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/package-lock.json +0 -0
  196. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/package.json +0 -0
  197. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/public/favicon.ico +0 -0
  198. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/public/index.html +0 -0
  199. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/public/robots.txt +0 -0
  200. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/App.scss +0 -0
  201. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/App.test.tsx +0 -0
  202. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/App.tsx +0 -0
  203. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/components/audio-pulse/AudioPulse.tsx +0 -0
  204. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/components/audio-pulse/audio-pulse.scss +0 -0
  205. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/components/control-tray/ControlTray.tsx +0 -0
  206. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/components/control-tray/control-tray.scss +0 -0
  207. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/components/logger/Logger.tsx +0 -0
  208. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/components/logger/logger.scss +0 -0
  209. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/components/logger/mock-logs.ts +0 -0
  210. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/components/side-panel/SidePanel.tsx +0 -0
  211. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/components/side-panel/side-panel.scss +0 -0
  212. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/contexts/LiveAPIContext.tsx +0 -0
  213. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/hooks/use-live-api.ts +0 -0
  214. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/hooks/use-media-stream-mux.ts +0 -0
  215. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/hooks/use-screen-capture.ts +0 -0
  216. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/hooks/use-webcam.ts +0 -0
  217. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/index.css +0 -0
  218. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/index.tsx +0 -0
  219. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/multimodal-live-types.ts +0 -0
  220. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/react-app-env.d.ts +0 -0
  221. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/reportWebVitals.ts +0 -0
  222. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/setupTests.ts +0 -0
  223. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/utils/audio-recorder.ts +0 -0
  224. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/utils/audio-streamer.ts +0 -0
  225. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/utils/audioworklet-registry.ts +0 -0
  226. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/utils/multimodal-live-client.ts +0 -0
  227. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/utils/store-logger.ts +0 -0
  228. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/utils/utils.ts +0 -0
  229. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/utils/worklets/audio-processing.ts +0 -0
  230. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/src/utils/worklets/vol-meter.ts +0 -0
  231. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/live_api_react/frontend/tsconfig.json +0 -0
  232. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/streamlit/frontend/side_bar.py +0 -0
  233. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/streamlit/frontend/streamlit_app.py +0 -0
  234. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/streamlit/frontend/style/app_markdown.py +0 -0
  235. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/streamlit/frontend/utils/chat_utils.py +0 -0
  236. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/streamlit/frontend/utils/local_chat_history.py +0 -0
  237. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/streamlit/frontend/utils/message_editing.py +0 -0
  238. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/streamlit/frontend/utils/multimodal_utils.py +0 -0
  239. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/streamlit/frontend/utils/stream_handler.py +0 -0
  240. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/frontends/streamlit/frontend/utils/title_summary.py +0 -0
  241. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/resources/containers/data_processing/Dockerfile +0 -0
  242. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/resources/containers/e2e-tests/Dockerfile +0 -0
  243. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/resources/idx/.idx/dev.nix +0 -0
  244. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/resources/idx/idx-template.json +0 -0
  245. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/resources/idx/idx-template.nix +0 -0
  246. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/resources/setup_cicd/cicd_variables.tf +0 -0
  247. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/resources/setup_cicd/github.tf +0 -0
  248. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/resources/setup_cicd/providers.tf +0 -0
  249. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/utils/generate_locks.py +0 -0
  250. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/utils/lock_utils.py +0 -0
  251. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/src/utils/watch_and_rebuild.py +0 -0
  252. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/tests/__init__.py +0 -0
  253. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/tests/cicd/example.env +0 -0
  254. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/tests/cicd/test_e2e_deployment.py +0 -0
  255. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/tests/cli/commands/test_create.py +0 -0
  256. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/tests/cli/commands/test_setup_cicd.py +0 -0
  257. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/tests/cli/utils/test_cicd.py +0 -0
  258. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/tests/integration/test_template_linting.py +0 -0
  259. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/tests/integration/test_templated_patterns.py +0 -0
  260. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/tests/test_frontend/test_side_bar.py +0 -0
  261. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/tests/test_frontend/test_streamlit_app.py +0 -0
  262. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/tests/test_frontend/test_utils/test_chat_utils.py +0 -0
  263. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/tests/test_frontend/test_utils/test_local_chat_history.py +0 -0
  264. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/tests/test_frontend/test_utils/test_message_editing.py +0 -0
  265. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/tests/test_frontend/test_utils/test_multimodal_utils.py +0 -0
  266. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/tests/test_frontend/test_utils/test_stream_handler.py +0 -0
  267. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/tests/utils/__init__.py +0 -0
  268. {agent_starter_pack-0.6.3 → agent_starter_pack-0.7.0}/tests/utils/get_agents.py +0 -0
@@ -20,7 +20,7 @@ steps:
20
20
  args:
21
21
  - "-c"
22
22
  - |
23
- uv sync --dev --frozen
23
+ uv sync --dev --locked
24
24
 
25
25
  # Run unit tests using pytest
26
26
  - name: "europe-west4-docker.pkg.dev/production-ai-template/starter-pack/e2e-tests"
@@ -20,7 +20,7 @@ steps:
20
20
  args:
21
21
  - "-c"
22
22
  - |
23
- uv sync --dev --extra lint --frozen
23
+ uv sync --dev --extra lint --locked
24
24
 
25
25
  # Run unit tests using pytest
26
26
  - name: "europe-west4-docker.pkg.dev/production-ai-template/starter-pack/e2e-tests"
@@ -20,7 +20,7 @@ steps:
20
20
  args:
21
21
  - "-c"
22
22
  - |
23
- uv sync --frozen
23
+ uv sync --locked
24
24
 
25
25
  # Run unit tests using pytest
26
26
  - name: "europe-west4-docker.pkg.dev/production-ai-template/starter-pack/e2e-tests"
@@ -20,7 +20,7 @@ steps:
20
20
  args:
21
21
  - "-c"
22
22
  - |
23
- uv sync --dev --frozen
23
+ uv sync --dev --locked
24
24
 
25
25
  # Run unit tests using pytest
26
26
  - name: "europe-west4-docker.pkg.dev/production-ai-template/starter-pack/e2e-tests"
@@ -20,7 +20,7 @@ steps:
20
20
  args:
21
21
  - "-c"
22
22
  - |
23
- uv sync --frozen
23
+ uv sync --locked
24
24
 
25
25
  # Run unit tests using pytest
26
26
  - name: "europe-west4-docker.pkg.dev/production-ai-template/starter-pack/e2e-tests"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-starter-pack
3
- Version: 0.6.3
3
+ Version: 0.7.0
4
4
  Summary: CLI to bootstrap production-ready Google Cloud GenAI agent projects from templates.
5
5
  Author-email: Google LLC <agent-starter-pack@google.com>
6
6
  License: Apache-2.0
@@ -46,7 +46,7 @@ It accelerates development by providing a holistic, production-ready solution, a
46
46
 
47
47
  | ⚡️ Launch | 🧪 Experiment | ✅ Deploy | 🛠️ Customize |
48
48
  |---|---|---|---|
49
- | [Pre-built agent templates](./agents/) (ReAct, RAG, multi-agent, Live API). | [Vertex AI evaluation](https://cloud.google.com/vertex-ai/generative-ai/docs/models/evaluation-overview) and an interactive playground. | Production-ready infra with [monitoring, observability](https://googlecloudplatform.github.io/agent-starter-pack/guide/observability), and [CI/CD](https://googlecloudplatform.github.io/agent-starter-pack/guide/deployment) on [Cloud Run](https://cloud.google.com/run) or [Agent Engine](https://cloud.google.com/vertex-ai/generative-ai/docs/agent-engine/overview). | Extend and customize templates according to your needs. |
49
+ | [Pre-built agent templates](./agents/) (ReAct, RAG, multi-agent, Live API). | [Vertex AI evaluation](https://cloud.google.com/vertex-ai/generative-ai/docs/models/evaluation-overview) and an interactive playground. | Production-ready infra with [monitoring, observability](https://googlecloudplatform.github.io/agent-starter-pack/guide/observability), and [CI/CD](https://googlecloudplatform.github.io/agent-starter-pack/guide/deployment) on [Cloud Run](https://cloud.google.com/run) or [Agent Engine](https://cloud.google.com/vertex-ai/generative-ai/docs/agent-engine/overview). | Extend and customize templates according to your needs. 🆕 Now integrating with [Gemini CLI](https://github.com/google-gemini/gemini-cli) |
50
50
 
51
51
  ---
52
52
 
@@ -59,30 +59,34 @@ Ready to build your AI agent? Simply run this command:
59
59
  python -m venv .venv && source .venv/bin/activate
60
60
 
61
61
  # Install the agent starter pack
62
- pip install agent-starter-pack
62
+ pip install --upgrade agent-starter-pack
63
63
 
64
64
  # Create a new agent project
65
65
  agent-starter-pack create my-awesome-agent
66
66
  ```
67
67
 
68
- **That's it!** You now have a fully functional agent project—complete with backend, frontend, and deployment infrastructure—ready for you to explore and customize.
69
- See [Installation Guide](https://googlecloudplatform.github.io/agent-starter-pack/guide/installation) for more options, or try with zero setup in [Firebase Studio](https://studio.firebase.google.com/new?template=https%3A%2F%2Fgithub.com%2FGoogleCloudPlatform%2Fagent-starter-pack%2Ftree%2Fmain%2Fsrc%2Fresources%2Fidx) or [Cloud Shell](https://shell.cloud.google.com/cloudshell/editor?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Feliasecchig%2Fasp-open-in-cloud-shell&cloudshell_print=open-in-cs).
70
-
71
- ---
72
-
73
- 🆕 The starter pack offers full support for Agent Engine, a new fully managed solution to deploy agents. Simply run this command to get started:
68
+ <details>
69
+ <summary> Alternative: Using uv</summary>
74
70
 
71
+ If you have [`uv`](https://github.com/astral-sh/uv) installed, you can create and set up your project with a single command:
75
72
  ```bash
76
- agent-starter-pack create my-agent -d agent_engine -a adk_base
73
+ uvx agent-starter-pack create my-fullstack-agent
77
74
  ```
75
+ This command handles creating the project without needing to pre-install the package into a virtual environment.
76
+ </details>
78
77
 
79
- *See the [full list of options](https://googlecloudplatform.github.io/agent-starter-pack/cli/create) for details.*
78
+ **That's it!** You now have a fully functional agent project—complete with backend, frontend, and deployment infrastructure—ready for you to explore and customize.
79
+
80
+ See [Installation Guide](https://googlecloudplatform.github.io/agent-starter-pack/guide/installation) for more options, or try with zero setup in [Firebase Studio](https://studio.firebase.google.com/new?template=https%3A%2F%2Fgithub.com%2FGoogleCloudPlatform%2Fagent-starter-pack%2Ftree%2Fmain%2Fsrc%2Fresources%2Fidx) or [Cloud Shell](https://shell.cloud.google.com/cloudshell/editor?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Feliasecchig%2Fasp-open-in-cloud-shell&cloudshell_print=open-in-cs).
81
+
82
+ ---
80
83
 
81
84
  ## 🤖 Agents
82
85
 
83
86
  | Agent Name | Description |
84
87
  |-----------------------------|-----------------------------------------------------------------------------------------------------------------------------------|
85
88
  | `adk_base` | A base ReAct agent implemented using Google's [Agent Development Kit](https://github.com/google/adk-python) |
89
+ | `adk_gemini_fullstack` | A production-ready fullstack research agent with Gemini that demonstrates complex agentic workflows, modular agent design, and Human-in-the-Loop steps. [ADK Samples](https://github.com/google/adk-samples/tree/main/python/agents/gemini-fullstack) |
86
90
  | `agentic_rag` | A RAG agent for document retrieval and Q&A. Supporting [Vertex AI Search](https://cloud.google.com/generative-ai-app-builder/docs/enterprise-search-introduction) and [Vector Search](https://cloud.google.com/vertex-ai/docs/vector-search/overview). |
87
91
  | `langgraph_base_react` | An agent implementing a base ReAct agent using LangGraph |
88
92
  | `crewai_coding_crew` | A multi-agent system implemented with CrewAI created to support coding activities |
@@ -99,7 +103,7 @@ Looking to explore more ADK examples? Check out the [ADK Samples Repository](htt
99
103
  The `agent-starter-pack` offers two key features to accelerate and simplify the development of your agent:
100
104
  - **🔄 [CI/CD Automation (Experimental)](https://googlecloudplatform.github.io/agent-starter-pack/cli/setup_cicd)** - One command to set up a complete GitHub + Cloud Build pipeline for all environments
101
105
  - **📥 [Data Pipeline for RAG with Terraform/CI-CD](https://googlecloudplatform.github.io/agent-starter-pack/guide/data-ingestion)** - Seamlessly integrate a data pipeline to process embeddings for RAG into your agent system. Supporting [Vertex AI Search](https://cloud.google.com/generative-ai-app-builder/docs/enterprise-search-introduction) and [Vector Search](https://cloud.google.com/vertex-ai/docs/vector-search/overview).
102
-
106
+ * **🤖 Gemini CLI Integration** - Use the [Gemini CLI](https://github.com/google-gemini/gemini-cli) and the included `GEMINI.md` context file to ask questions about your template, agent architecture, and the path to production. Get instant guidance and code examples directly in your terminal.
103
107
 
104
108
  ## High-Level Architecture
105
109
 
@@ -21,7 +21,7 @@ It accelerates development by providing a holistic, production-ready solution, a
21
21
 
22
22
  | ⚡️ Launch | 🧪 Experiment | ✅ Deploy | 🛠️ Customize |
23
23
  |---|---|---|---|
24
- | [Pre-built agent templates](./agents/) (ReAct, RAG, multi-agent, Live API). | [Vertex AI evaluation](https://cloud.google.com/vertex-ai/generative-ai/docs/models/evaluation-overview) and an interactive playground. | Production-ready infra with [monitoring, observability](https://googlecloudplatform.github.io/agent-starter-pack/guide/observability), and [CI/CD](https://googlecloudplatform.github.io/agent-starter-pack/guide/deployment) on [Cloud Run](https://cloud.google.com/run) or [Agent Engine](https://cloud.google.com/vertex-ai/generative-ai/docs/agent-engine/overview). | Extend and customize templates according to your needs. |
24
+ | [Pre-built agent templates](./agents/) (ReAct, RAG, multi-agent, Live API). | [Vertex AI evaluation](https://cloud.google.com/vertex-ai/generative-ai/docs/models/evaluation-overview) and an interactive playground. | Production-ready infra with [monitoring, observability](https://googlecloudplatform.github.io/agent-starter-pack/guide/observability), and [CI/CD](https://googlecloudplatform.github.io/agent-starter-pack/guide/deployment) on [Cloud Run](https://cloud.google.com/run) or [Agent Engine](https://cloud.google.com/vertex-ai/generative-ai/docs/agent-engine/overview). | Extend and customize templates according to your needs. 🆕 Now integrating with [Gemini CLI](https://github.com/google-gemini/gemini-cli) |
25
25
 
26
26
  ---
27
27
 
@@ -34,30 +34,34 @@ Ready to build your AI agent? Simply run this command:
34
34
  python -m venv .venv && source .venv/bin/activate
35
35
 
36
36
  # Install the agent starter pack
37
- pip install agent-starter-pack
37
+ pip install --upgrade agent-starter-pack
38
38
 
39
39
  # Create a new agent project
40
40
  agent-starter-pack create my-awesome-agent
41
41
  ```
42
42
 
43
- **That's it!** You now have a fully functional agent project—complete with backend, frontend, and deployment infrastructure—ready for you to explore and customize.
44
- See [Installation Guide](https://googlecloudplatform.github.io/agent-starter-pack/guide/installation) for more options, or try with zero setup in [Firebase Studio](https://studio.firebase.google.com/new?template=https%3A%2F%2Fgithub.com%2FGoogleCloudPlatform%2Fagent-starter-pack%2Ftree%2Fmain%2Fsrc%2Fresources%2Fidx) or [Cloud Shell](https://shell.cloud.google.com/cloudshell/editor?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Feliasecchig%2Fasp-open-in-cloud-shell&cloudshell_print=open-in-cs).
45
-
46
- ---
47
-
48
- 🆕 The starter pack offers full support for Agent Engine, a new fully managed solution to deploy agents. Simply run this command to get started:
43
+ <details>
44
+ <summary> Alternative: Using uv</summary>
49
45
 
46
+ If you have [`uv`](https://github.com/astral-sh/uv) installed, you can create and set up your project with a single command:
50
47
  ```bash
51
- agent-starter-pack create my-agent -d agent_engine -a adk_base
48
+ uvx agent-starter-pack create my-fullstack-agent
52
49
  ```
50
+ This command handles creating the project without needing to pre-install the package into a virtual environment.
51
+ </details>
53
52
 
54
- *See the [full list of options](https://googlecloudplatform.github.io/agent-starter-pack/cli/create) for details.*
53
+ **That's it!** You now have a fully functional agent project—complete with backend, frontend, and deployment infrastructure—ready for you to explore and customize.
54
+
55
+ See [Installation Guide](https://googlecloudplatform.github.io/agent-starter-pack/guide/installation) for more options, or try with zero setup in [Firebase Studio](https://studio.firebase.google.com/new?template=https%3A%2F%2Fgithub.com%2FGoogleCloudPlatform%2Fagent-starter-pack%2Ftree%2Fmain%2Fsrc%2Fresources%2Fidx) or [Cloud Shell](https://shell.cloud.google.com/cloudshell/editor?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Feliasecchig%2Fasp-open-in-cloud-shell&cloudshell_print=open-in-cs).
56
+
57
+ ---
55
58
 
56
59
  ## 🤖 Agents
57
60
 
58
61
  | Agent Name | Description |
59
62
  |-----------------------------|-----------------------------------------------------------------------------------------------------------------------------------|
60
63
  | `adk_base` | A base ReAct agent implemented using Google's [Agent Development Kit](https://github.com/google/adk-python) |
64
+ | `adk_gemini_fullstack` | A production-ready fullstack research agent with Gemini that demonstrates complex agentic workflows, modular agent design, and Human-in-the-Loop steps. [ADK Samples](https://github.com/google/adk-samples/tree/main/python/agents/gemini-fullstack) |
61
65
  | `agentic_rag` | A RAG agent for document retrieval and Q&A. Supporting [Vertex AI Search](https://cloud.google.com/generative-ai-app-builder/docs/enterprise-search-introduction) and [Vector Search](https://cloud.google.com/vertex-ai/docs/vector-search/overview). |
62
66
  | `langgraph_base_react` | An agent implementing a base ReAct agent using LangGraph |
63
67
  | `crewai_coding_crew` | A multi-agent system implemented with CrewAI created to support coding activities |
@@ -74,7 +78,7 @@ Looking to explore more ADK examples? Check out the [ADK Samples Repository](htt
74
78
  The `agent-starter-pack` offers two key features to accelerate and simplify the development of your agent:
75
79
  - **🔄 [CI/CD Automation (Experimental)](https://googlecloudplatform.github.io/agent-starter-pack/cli/setup_cicd)** - One command to set up a complete GitHub + Cloud Build pipeline for all environments
76
80
  - **📥 [Data Pipeline for RAG with Terraform/CI-CD](https://googlecloudplatform.github.io/agent-starter-pack/guide/data-ingestion)** - Seamlessly integrate a data pipeline to process embeddings for RAG into your agent system. Supporting [Vertex AI Search](https://cloud.google.com/generative-ai-app-builder/docs/enterprise-search-introduction) and [Vector Search](https://cloud.google.com/vertex-ai/docs/vector-search/overview).
77
-
81
+ * **🤖 Gemini CLI Integration** - Use the [Gemini CLI](https://github.com/google-gemini/gemini-cli) and the included `GEMINI.md` context file to ask questions about your template, agent architecture, and the path to production. Get instant guidance and code examples directly in your terminal.
78
82
 
79
83
  ## High-Level Architecture
80
84
 
@@ -60,7 +60,7 @@ def get_current_time(query: str) -> str:
60
60
 
61
61
  root_agent = Agent(
62
62
  name="root_agent",
63
- model="gemini-2.0-flash",
63
+ model="gemini-2.5-flash",
64
64
  instruction="You are a helpful AI assistant designed to provide accurate and useful information.",
65
65
  tools=[get_weather, get_current_time],
66
66
  )
@@ -17,6 +17,6 @@ example_question: "What's the weather in San Francisco?"
17
17
  settings:
18
18
  requires_data_ingestion: false
19
19
  deployment_targets: ["agent_engine", "cloud_run"]
20
- extra_dependencies: ["google-adk~=1.4.1"]
20
+ extra_dependencies: ["google-adk~=1.4.2"]
21
21
  tags: ["adk"]
22
22
  frontend_type: "None"
@@ -1,6 +1,6 @@
1
1
  # Gemini Fullstack Agent Development Kit (ADK) Quickstart
2
2
 
3
- > 🔍 **Sample Agent**: This agent is part of the [ADK Samples](https://github.com/google/adk-samples) collection, showcasing agent implementations using the Agent Development Kit.
3
+ > 🔍 **Sample Agent**: This agent is part of the [ADK Samples](https://github.com/google/adk-samples/tree/main/python/agents/gemini-fullstack) collection, showcasing agent implementations using the Agent Development Kit.
4
4
 
5
5
  The **Gemini Fullstack Agent Development Kit (ADK) Quickstart** is a production-ready blueprint for building a sophisticated, fullstack research agent with Gemini. It's built to demonstrate how the ADK helps structure complex agentic workflows, build modular agents, and incorporate critical Human-in-the-Loop (HITL) steps.
6
6
 
@@ -25,6 +25,3 @@ The **Gemini Fullstack Agent Development Kit (ADK) Quickstart** is a production-
25
25
  </tr>
26
26
  </tbody>
27
27
  </table>
28
-
29
- Here's a screenshot of the application in action:
30
- <img src="../../docs/images/adk_gemini_fullstack_preview.png" alt="Gemini Fullstack ADK Preview">
@@ -182,12 +182,33 @@ class EscalationChecker(BaseAgent):
182
182
  plan_generator = LlmAgent(
183
183
  model=config.worker_model,
184
184
  name="plan_generator",
185
- description="Generates a 4-5 line action-oriented research plan, using minimal search only for topic clarification.",
185
+ description="Generates or refine the existing 5 line action-oriented research plan, using minimal search only for topic clarification.",
186
186
  instruction=f"""
187
- You are a research strategist. Your job is to create a high-level RESEARCH PLAN, not a summary.
188
- **RULE: Your output MUST be a bulleted list of 4-5 action-oriented research goals or key questions.**
189
- - A good goal starts with a verb like "Analyze," "Identify," "Investigate."
187
+ You are a research strategist. Your job is to create a high-level RESEARCH PLAN, not a summary. If there is already a RESEARCH PLAN in the session state,
188
+ improve upon it based on the user feedback.
189
+
190
+ RESEARCH PLAN(SO FAR):
191
+ {{ research_plan? }}
192
+
193
+ **GENERAL INSTRUCTION: CLASSIFY TASK TYPES**
194
+ Your plan must clearly classify each goal for downstream execution. Each bullet point should start with a task type prefix:
195
+ - **`[RESEARCH]`**: For goals that primarily involve information gathering, investigation, analysis, or data collection (these require search tool usage by a researcher).
196
+ - **`[DELIVERABLE]`**: For goals that involve synthesizing collected information, creating structured outputs (e.g., tables, charts, summaries, reports), or compiling final output artifacts (these are executed AFTER research tasks, often without further search).
197
+
198
+ **INITIAL RULE: Your initial output MUST start with a bulleted list of 5 action-oriented research goals or key questions, followed by any *inherently implied* deliverables.**
199
+ - All initial 5 goals will be classified as `[RESEARCH]` tasks.
200
+ - A good goal for `[RESEARCH]` starts with a verb like "Analyze," "Identify," "Investigate."
190
201
  - A bad output is a statement of fact like "The event was in April 2024."
202
+ - **Proactive Implied Deliverables (Initial):** If any of your initial 5 `[RESEARCH]` goals inherently imply a standard output or deliverable (e.g., a comparative analysis suggesting a comparison table, or a comprehensive review suggesting a summary document), you MUST add these as additional, distinct goals immediately after the initial 5. Phrase these as *synthesis or output creation actions* (e.g., "Create a summary," "Develop a comparison," "Compile a report") and prefix them with `[DELIVERABLE][IMPLIED]`.
203
+
204
+ **REFINEMENT RULE**:
205
+ - **Integrate Feedback & Mark Changes:** When incorporating user feedback, make targeted modifications to existing bullet points. Add `[MODIFIED]` to the existing task type and status prefix (e.g., `[RESEARCH][MODIFIED]`). If the feedback introduces new goals:
206
+ - If it's an information gathering task, prefix it with `[RESEARCH][NEW]`.
207
+ - If it's a synthesis or output creation task, prefix it with `[DELIVERABLE][NEW]`.
208
+ - **Proactive Implied Deliverables (Refinement):** Beyond explicit user feedback, if the nature of an existing `[RESEARCH]` goal (e.g., requiring a structured comparison, deep dive analysis, or broad synthesis) or a `[DELIVERABLE]` goal inherently implies an additional, standard output or synthesis step (e.g., a detailed report following a summary, or a visual representation of complex data), proactively add this as a new goal. Phrase these as *synthesis or output creation actions* and prefix them with `[DELIVERABLE][IMPLIED]`.
209
+ - **Maintain Order:** Strictly maintain the original sequential order of existing bullet points. New bullets, whether `[NEW]` or `[IMPLIED]`, should generally be appended to the list, unless the user explicitly instructs a specific insertion point.
210
+ - **Flexible Length:** The refined plan is no longer constrained by the initial 5-bullet limit and may comprise more goals as needed to fully address the feedback and implied deliverables.
211
+
191
212
  **TOOL USE IS STRICTLY LIMITED:**
192
213
  Your goal is to create a generic, high-quality plan *without searching*.
193
214
  Only use `google_search` if a topic is ambiguous or time-sensitive and you absolutely cannot create a plan without a key piece of identifying information.
@@ -204,6 +225,7 @@ section_planner = LlmAgent(
204
225
  description="Breaks down the research plan into a structured markdown outline of report sections.",
205
226
  instruction="""
206
227
  You are an expert report architect. Using the research topic and the plan from the 'research_plan' state key, design a logical structure for the final report.
228
+ Note: Ignore all the tag nanes ([MODIFIED], [NEW], [RESEARCH], [DELIVERABLE]) in the research plan.
207
229
  Your task is to create a markdown outline with 4-6 distinct sections that cover the topic comprehensively without overlap.
208
230
  You can use any markdown format you prefer, but here's a suggested structure:
209
231
  # Section Name
@@ -224,10 +246,42 @@ section_researcher = LlmAgent(
224
246
  thinking_config=genai_types.ThinkingConfig(include_thoughts=True)
225
247
  ),
226
248
  instruction="""
227
- You are a diligent and exhaustive researcher. Your task is to perform the initial, broad information gathering for a report.
228
- You will be provided with a list of sections in the 'report_sections' state key.
229
- For each section where 'research' is marked as 'true', generate a comprehensive list of 4-5 targeted search queries to cover the topic from multiple angles.
230
- Execute all of these queries using the 'google_search' tool and synthesize the results into a detailed summary for that section.
249
+ You are a highly capable and diligent research and synthesis agent. Your comprehensive task is to execute a provided research plan with **absolute fidelity**, first by gathering necessary information, and then by synthesizing that information into specified outputs.
250
+
251
+ You will be provided with a sequential list of research plan goals, stored in the `research_plan` state key. Each goal will be clearly prefixed with its primary task type: `[RESEARCH]` or `[DELIVERABLE]`.
252
+
253
+ Your execution process must strictly adhere to these two distinct and sequential phases:
254
+
255
+ ---
256
+
257
+ **Phase 1: Information Gathering (`[RESEARCH]` Tasks)**
258
+
259
+ * **Execution Directive:** You **MUST** systematically process every goal prefixed with `[RESEARCH]` before proceeding to Phase 2.
260
+ * For each `[RESEARCH]` goal:
261
+ * **Query Generation:** Formulate a comprehensive set of 4-5 targeted search queries. These queries must be expertly designed to broadly cover the specific intent of the `[RESEARCH]` goal from multiple angles.
262
+ * **Execution:** Utilize the `google_search` tool to execute **all** generated queries for the current `[RESEARCH]` goal.
263
+ * **Summarization:** Synthesize the search results into a detailed, coherent summary that directly addresses the objective of the `[RESEARCH]` goal.
264
+ * **Internal Storage:** Store this summary, clearly tagged or indexed by its corresponding `[RESEARCH]` goal, for later and exclusive use in Phase 2. You **MUST NOT** lose or discard any generated summaries.
265
+
266
+ ---
267
+
268
+ **Phase 2: Synthesis and Output Creation (`[DELIVERABLE]` Tasks)**
269
+
270
+ * **Execution Prerequisite:** This phase **MUST ONLY COMMENCE** once **ALL** `[RESEARCH]` goals from Phase 1 have been fully completed and their summaries are internally stored.
271
+ * **Execution Directive:** You **MUST** systematically process **every** goal prefixed with `[DELIVERABLE]`. For each `[DELIVERABLE]` goal, your directive is to **PRODUCE** the artifact as explicitly described.
272
+ * For each `[DELIVERABLE]` goal:
273
+ * **Instruction Interpretation:** You will interpret the goal's text (following the `[DELIVERABLE]` tag) as a **direct and non-negotiable instruction** to generate a specific output artifact.
274
+ * *If the instruction details a table (e.g., "Create a Detailed Comparison Table in Markdown format"), your output for this step **MUST** be a properly formatted Markdown table utilizing columns and rows as implied by the instruction and the prepared data.*
275
+ * *If the instruction states to prepare a summary, report, or any other structured output, your output for this step **MUST** be that precise artifact.*
276
+ * **Data Consolidation:** Access and utilize **ONLY** the summaries generated during Phase 1 (`[RESEARCH]` tasks`) to fulfill the requirements of the current `[DELIVERABLE]` goal. You **MUST NOT** perform new searches.
277
+ * **Output Generation:** Based on the specific instruction of the `[DELIVERABLE]` goal:
278
+ * Carefully extract, organize, and synthesize the relevant information from your previously gathered summaries.
279
+ * Must always produce the specified output artifact (e.g., a concise summary, a structured comparison table, a comprehensive report, a visual representation, etc.) with accuracy and completeness.
280
+ * **Output Accumulation:** Maintain and accumulate **all** the generated `[DELIVERABLE]` artifacts. These are your final outputs.
281
+
282
+ ---
283
+
284
+ **Final Output:** Your final output will comprise the complete set of processed summaries from `[RESEARCH]` tasks AND all the generated artifacts from `[DELIVERABLE]` tasks, presented clearly and distinctly.
231
285
  """,
232
286
  tools=[google_search],
233
287
  output_key="section_research_findings",
@@ -17,7 +17,7 @@ example_question: "A report on the latest Google I/O event"
17
17
  settings:
18
18
  requires_data_ingestion: false
19
19
  deployment_targets: ["agent_engine", "cloud_run"]
20
- extra_dependencies: ["google-adk~=1.4.1"]
20
+ extra_dependencies: ["google-adk~=1.4.2"]
21
21
  tags: ["adk"]
22
22
  frontend_type: "adk_gemini_fullstack"
23
23
  commands:
@@ -26,7 +26,7 @@ from app.templates import format_docs
26
26
  EMBEDDING_MODEL = "text-embedding-005"
27
27
  LLM_LOCATION = "global"
28
28
  LOCATION = "us-central1"
29
- LLM = "gemini-2.0-flash-001"
29
+ LLM = "gemini-2.5-flash"
30
30
 
31
31
  credentials, project_id = google.auth.default()
32
32
  os.environ.setdefault("GOOGLE_CLOUD_PROJECT", project_id)
@@ -18,7 +18,7 @@ settings:
18
18
  requires_data_ingestion: true
19
19
  deployment_targets: ["agent_engine", "cloud_run"]
20
20
  extra_dependencies: [
21
- "google-adk~=1.4.1",
21
+ "google-adk~=1.4.2",
22
22
  "langchain-google-vertexai~=2.0.7",
23
23
  "langchain~=0.3.24",
24
24
  "langchain-core~=0.3.55",
@@ -23,7 +23,7 @@ from langgraph.prebuilt import ToolNode
23
23
  from .crew.crew import DevCrew
24
24
 
25
25
  LOCATION = "global"
26
- LLM = "gemini-2.0-flash-001"
26
+ LLM = "gemini-2.5-flash"
27
27
 
28
28
 
29
29
  @tool
@@ -21,7 +21,7 @@ from langgraph.graph import END, MessagesState, StateGraph
21
21
  from langgraph.prebuilt import ToolNode
22
22
 
23
23
  LOCATION = "global"
24
- LLM = "gemini-2.0-flash-001"
24
+ LLM = "gemini-2.5-flash"
25
25
 
26
26
 
27
27
  # 1. Define tools
@@ -22,7 +22,7 @@ from google.genai import types
22
22
  # Constants
23
23
  VERTEXAI = os.getenv("VERTEXAI", "true").lower() == "true"
24
24
  LOCATION = "us-central1"
25
- MODEL_ID = "gemini-2.0-flash-live-preview-04-09"
25
+ MODEL_ID = "gemini-live-2.5-flash-preview-native-audio"
26
26
 
27
27
  # Initialize Google Cloud clients
28
28
  credentials, project_id = google.auth.default()
@@ -56,13 +56,17 @@ tool_functions = {"get_weather": get_weather}
56
56
  live_connect_config = types.LiveConnectConfig(
57
57
  response_modalities=[types.Modality.AUDIO],
58
58
  tools=list(tool_functions.values()),
59
- # Change to desired language code (e.g., "es-ES" for Spanish, "fr-FR" for French)
60
- speech_config=types.SpeechConfig(language_code="en-US"),
61
59
  system_instruction=types.Content(
62
60
  parts=[
63
61
  types.Part(
64
- text="""You are a helpful AI assistant designed to provide accurate and useful information."""
62
+ text="""You are a helpful AI assistant designed to provide accurate and useful information. You are able to accommodate different languages and tones of voice."""
65
63
  )
66
64
  ]
67
65
  ),
66
+ speech_config=types.SpeechConfig(
67
+ voice_config=types.VoiceConfig(
68
+ prebuilt_voice_config=types.PrebuiltVoiceConfig(voice_name="Kore")
69
+ )
70
+ ),
71
+ enable_affective_dialog=True,
68
72
  )
@@ -39,6 +39,7 @@ export default defineConfig({
39
39
  { text: 'Deployment', link: '/guide/deployment' },
40
40
  { text: 'Data Ingestion', link: '/guide/data-ingestion' },
41
41
  { text: 'Observability', link: '/guide/observability' },
42
+ { text: 'Deploy UI', link: '/guide/deploy-ui' },
42
43
  { text: 'Troubleshooting', link: '/guide/troubleshooting' }
43
44
  ]
44
45
  },
@@ -8,6 +8,7 @@ The Agent Starter Pack follows a "bring your own agent" approach. It provides se
8
8
  | Agent Name | Description | Use Case |
9
9
  |------------|-------------|----------|
10
10
  | `adk_base` | A base ReAct agent implemented using Google's [Agent Development Kit](https://github.com/google/adk-python) | General purpose conversational agent |
11
+ | `adk_gemini_fullstack` | A production-ready fullstack research agent with Gemini | Complex research and information synthesis |
11
12
  | `agentic_rag` | A RAG agent for document retrieval and Q&A | Document search and question answering |
12
13
  | `langgraph_base_react` | A base ReAct agent using LangGraph | Graph based conversational agent |
13
14
  | `crewai_coding_crew` | A multi-agent system implemented with CrewAI | Collaborative coding assistance |
@@ -33,6 +34,16 @@ This template provides a minimal example of a ReAct agent built using Google's [
33
34
  * Building general-purpose conversational agents.
34
35
  * Learning the ADK framework and ReAct pattern.
35
36
 
37
+ ### ADK Gemini Fullstack (`adk_gemini_fullstack`)
38
+
39
+ > 🔍 **Sample Agent**: This agent is part of the [ADK Samples](https://github.com/google/adk-samples/tree/main/python/agents/gemini-fullstack) collection, showcasing agent implementations using the Agent Development Kit.
40
+
41
+ This template provides a production-ready blueprint for building a sophisticated, fullstack research agent with Gemini. It demonstrates how the ADK helps structure complex agentic workflows, build modular agents, and incorporate critical Human-in-the-Loop (HITL) steps. Key features include:
42
+
43
+ * A complete React frontend and ADK-powered FastAPI backend
44
+ * Advanced agentic workflow where the agent strategizes a multi-step plan, reflects on findings to identify gaps, and synthesizes a final, comprehensive report.
45
+ * Iterative and Human-in-the-Loop research that involves the user for plan approval, then autonomously loops through searching and refining results.
46
+
36
47
  ### Agentic RAG (`agentic_rag`)
37
48
 
38
49
  Built on the ADK, this template implements [Retrieval-Augmented Generation (RAG)](https://cloud.google.com/use-cases/retrieval-augmented-generation?hl=en) with a production-ready data ingestion pipeline for document-based question answering. It allows you to ingest, process, and embed custom data to enhance response relevance. Features include:
@@ -0,0 +1,91 @@
1
+ # Deploying with a User Interface
2
+
3
+ This guide covers strategies for deploying agent applications with UIs to Google Cloud, focusing on approaches for development, testing, and demos.
4
+
5
+ ### 1. Deployment Strategies
6
+
7
+ When deploying an application with both a backend and a frontend UI, two primary strategies exist.
8
+
9
+ #### A. Unified Deployment
10
+ * **Description**: The backend and frontend are packaged and served from a single, unified service.
11
+ * **Best For**: This approach is simpler and well-suited for **development and testing purposes**.
12
+ * **Technology**: Google Cloud Run supports this model and can secure it with a single [Identity-Aware Proxy (IAP)](https://cloud.google.com/run/docs/securing/identity-aware-proxy-cloud-run) endpoint.
13
+
14
+ #### B. Decoupled Deployment
15
+ * **Description**: The backend and frontend run as separate, independent services.
16
+ * **Best For**: This is a more robust, **production-oriented** architecture.
17
+ * **When to Use**: It becomes necessary if your backend technology is not suited for serving web frontends (e.g., if you are using a dedicated `Agent Engine`). In this case, the frontend is deployed separately to another Cloud Run service or to Cloud Storage.
18
+
19
+ ::: tip Note
20
+ This guide focuses on the **Unified Deployment** strategy using Google Cloud Run, which is ideal for rapid development and internal testing.
21
+ :::
22
+
23
+ ### 2. Deploy to Cloud Run with IAP
24
+
25
+ The deployment method depends on whether you are using a framework's built-in UI or a custom one.
26
+
27
+ #### A. Scenario 1: Built-In Framework UI
28
+ Many agent frameworks (like ADK) include a built-in web UI or "playground" ([`adk-web`](https://github.com/google/adk-web)) that is served alongside the backend API by default. This is useful for quickly exposing the service to other developers or testers.
29
+
30
+ **i. Deploy the Service:**
31
+ Navigate to your project's root directory and run the pre-configured `make` command:
32
+ ```bash
33
+ make backend IAP=true
34
+ ```
35
+ This single command typically handles building the container, pushing it to a registry, deploying it to Cloud Run, and configuring IAP.
36
+
37
+ #### B. Scenario 2: Custom Frontend
38
+ If you have a separate, custom frontend (e.g., a React app for a `gemini_fullstack` agent or `live_api`) and want to deploy it with the backend for testing, the process requires a custom container configuration.
39
+
40
+ **Strategy**: For development, modify the `Dockerfile` to build and run both the frontend's development server and the backend's API server within a single container.
41
+
42
+ > **Important:** This approach, especially running a frontend dev server like `npm run dev`, is intended **for development and testing purposes only**. For production, you should build static frontend assets and serve them efficiently.
43
+
44
+ **i. Configure the Dockerfile:**
45
+ Create or modify your `Dockerfile` to install both Python and Node.js dependencies and to launch both services concurrently.
46
+
47
+ ::: details Example Dockerfile for combined backend and frontend
48
+ ```dockerfile
49
+ FROM python:3.11-slim
50
+
51
+ # Install Node.js and npm
52
+ RUN apt-get update && apt-get install -y \
53
+ nodejs \
54
+ npm \
55
+ curl \
56
+ && apt-get clean \
57
+ && rm -rf /var/lib/apt/lists/*
58
+
59
+ RUN pip install --no-cache-dir uv==0.6.12
60
+
61
+ WORKDIR /code
62
+
63
+ # Copy backend files
64
+ COPY ./pyproject.toml ./README.md ./uv.lock* ./
65
+ COPY ./app ./app
66
+
67
+ # Copy frontend files
68
+ COPY ./frontend ./frontend
69
+
70
+ # Install dependencies
71
+ RUN uv sync --frozen && npm --prefix frontend install
72
+
73
+ EXPOSE 8000 5173
74
+
75
+ # Start both backend and frontend in parallel
76
+ CMD ["sh", "-c", "ALLOW_ORIGINS='*' uv run uvicorn app.server:app --host 0.0.0.0 --port 8000 & npm --prefix frontend run dev -- --host 0.0.0.0 & wait"]
77
+ ```
78
+ :::
79
+
80
+
81
+ **ii. 🚀 Deploy the Combined Service:**
82
+ When deploying, you must instruct Cloud Run to direct traffic to the **frontend's port**. Pass the `PORT` variable to your `make` command. If your frontend runs on port `5173`, as in the example:
83
+ ```bash
84
+ make backend IAP=true PORT=5173
85
+ ```
86
+ This ensures the public, IAP-protected URL serves your user interface.
87
+
88
+ ### 3. Manage User Access
89
+ Once deployed, your Cloud Run service is protected by IAP, but no users are authorized to access it yet. You must grant the "httpsResourceAccessor" role to the appropriate users or Google Groups.
90
+
91
+ ➡️ Follow the official Google Cloud documentation to manage access for your service: [Manage user or group access](https://cloud.google.com/run/docs/securing/identity-aware-proxy-cloud-run#manage_user_or_group_access).