agent-starter-pack 0.0.3b0__tar.gz → 0.0.5b0__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.

Potentially problematic release.


This version of agent-starter-pack might be problematic. Click here for more details.

Files changed (195) hide show
  1. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/PKG-INFO +1 -1
  2. agent_starter_pack-0.0.5b0/agents/agentic_rag_vertexai_search/template/.templateconfig.yaml +28 -0
  3. agent_starter_pack-0.0.5b0/agents/crewai_coding_crew/template/.templateconfig.yaml +26 -0
  4. agent_starter_pack-0.0.5b0/agents/langgraph_base_react/template/.templateconfig.yaml +27 -0
  5. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/agents/multimodal_live_api/README.md +18 -2
  6. agent_starter_pack-0.0.5b0/agents/multimodal_live_api/template/.templateconfig.yaml +29 -0
  7. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/pyproject.toml +1 -1
  8. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/cli/commands/create.py +156 -163
  9. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/cli/utils/gcp.py +7 -8
  10. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/tests/cli/commands/test_create.py +48 -58
  11. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/uv.lock +3 -1
  12. agent_starter_pack-0.0.3b0/agents/agentic_rag_vertexai_search/template/.templateconfig.yaml +0 -14
  13. agent_starter_pack-0.0.3b0/agents/crewai_coding_crew/template/.templateconfig.yaml +0 -12
  14. agent_starter_pack-0.0.3b0/agents/langgraph_base_react/template/.templateconfig.yaml +0 -13
  15. agent_starter_pack-0.0.3b0/agents/multimodal_live_api/template/.templateconfig.yaml +0 -15
  16. agent_starter_pack-0.0.3b0/src/deployment_targets/agent_engine/tests/load_test/.results/report.html +0 -264
  17. agent_starter_pack-0.0.3b0/src/deployment_targets/agent_engine/tests/load_test/.results/results_exceptions.csv +0 -1
  18. agent_starter_pack-0.0.3b0/src/deployment_targets/agent_engine/tests/load_test/.results/results_failures.csv +0 -1
  19. agent_starter_pack-0.0.3b0/src/deployment_targets/agent_engine/tests/load_test/.results/results_stats.csv +0 -3
  20. agent_starter_pack-0.0.3b0/src/deployment_targets/agent_engine/tests/load_test/.results/results_stats_history.csv +0 -22
  21. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/.gitignore +0 -0
  22. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/CODE_OF_CONDUCT.md +0 -0
  23. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/CONTRIBUTING.md +0 -0
  24. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/LICENSE +0 -0
  25. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/Makefile +0 -0
  26. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/README.md +0 -0
  27. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/agents/agentic_rag_vertexai_search/README.md +0 -0
  28. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/agents/agentic_rag_vertexai_search/app/agent.py +0 -0
  29. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/agents/agentic_rag_vertexai_search/app/retrievers.py +0 -0
  30. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/agents/agentic_rag_vertexai_search/app/templates.py +0 -0
  31. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/agents/agentic_rag_vertexai_search/notebooks/evaluating_langgraph_agent.ipynb +0 -0
  32. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/agents/agentic_rag_vertexai_search/tests/integration/test_agent.py +0 -0
  33. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/agents/crewai_coding_crew/README.md +0 -0
  34. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/agents/crewai_coding_crew/app/agent.py +0 -0
  35. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/agents/crewai_coding_crew/app/crew/config/agents.yaml +0 -0
  36. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/agents/crewai_coding_crew/app/crew/config/tasks.yaml +0 -0
  37. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/agents/crewai_coding_crew/app/crew/crew.py +0 -0
  38. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/agents/crewai_coding_crew/notebooks/evaluating_crewai_agent.ipynb +0 -0
  39. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/agents/crewai_coding_crew/notebooks/evaluating_langgraph_agent.ipynb +0 -0
  40. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/agents/crewai_coding_crew/tests/integration/test_agent.py +0 -0
  41. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/agents/langgraph_base_react/README.md +0 -0
  42. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/agents/langgraph_base_react/app/agent.py +0 -0
  43. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/agents/langgraph_base_react/notebooks/evaluating_langgraph_agent.ipynb +0 -0
  44. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/agents/langgraph_base_react/tests/integration/test_agent.py +0 -0
  45. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/agents/multimodal_live_api/app/agent.py +0 -0
  46. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/agents/multimodal_live_api/app/server.py +0 -0
  47. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/agents/multimodal_live_api/app/templates.py +0 -0
  48. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/agents/multimodal_live_api/app/vector_store.py +0 -0
  49. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/agents/multimodal_live_api/tests/integration/test_server_e2e.py +0 -0
  50. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/agents/multimodal_live_api/tests/load_test/load_test.py +0 -0
  51. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/agents/multimodal_live_api/tests/unit/test_server.py +0 -0
  52. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/docs/README.md +0 -0
  53. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/docs/cli/README.md +0 -0
  54. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/docs/cli/create.md +0 -0
  55. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/docs/cli/setup_cicd.md +0 -0
  56. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/docs/data-ingestion.md +0 -0
  57. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/docs/deployment.md +0 -0
  58. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/docs/images/ags_banner.png +0 -0
  59. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/docs/images/ags_high_level_architecture.png +0 -0
  60. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/docs/observability.md +0 -0
  61. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/docs/why_starter_pack.md +0 -0
  62. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/base_template/.gitignore +0 -0
  63. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/base_template/Makefile +0 -0
  64. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/base_template/README.md +0 -0
  65. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/base_template/app/utils/tracing.py +0 -0
  66. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/base_template/app/utils/typing.py +0 -0
  67. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/base_template/deployment/README.md +0 -0
  68. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/base_template/deployment/cd/deploy-to-prod.yaml +0 -0
  69. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/base_template/deployment/cd/staging.yaml +0 -0
  70. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/base_template/deployment/ci/pr_checks.yaml +0 -0
  71. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/base_template/deployment/terraform/apis.tf +0 -0
  72. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/base_template/deployment/terraform/build_triggers.tf +0 -0
  73. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/base_template/deployment/terraform/dev/apis.tf +0 -0
  74. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/base_template/deployment/terraform/dev/iam.tf +0 -0
  75. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/base_template/deployment/terraform/dev/log_sinks.tf +0 -0
  76. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/base_template/deployment/terraform/dev/providers.tf +0 -0
  77. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/base_template/deployment/terraform/dev/storage.tf +0 -0
  78. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/base_template/deployment/terraform/dev/variables.tf +0 -0
  79. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/base_template/deployment/terraform/dev/vars/env.tfvars +0 -0
  80. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/base_template/deployment/terraform/iam.tf +0 -0
  81. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/base_template/deployment/terraform/locals.tf +0 -0
  82. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/base_template/deployment/terraform/log_sinks.tf +0 -0
  83. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/base_template/deployment/terraform/providers.tf +0 -0
  84. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/base_template/deployment/terraform/service_accounts.tf +0 -0
  85. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/base_template/deployment/terraform/storage.tf +0 -0
  86. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/base_template/deployment/terraform/variables.tf +0 -0
  87. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/base_template/deployment/terraform/vars/env.tfvars +0 -0
  88. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/base_template/pyproject.toml +0 -0
  89. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/base_template/tests/unit/test_utils/test_tracing_exporter.py +0 -0
  90. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/cli/commands/setup_cicd.py +0 -0
  91. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/cli/main.py +0 -0
  92. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/cli/utils/__init__.py +0 -0
  93. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/cli/utils/cicd.py +0 -0
  94. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/cli/utils/logging.py +0 -0
  95. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/cli/utils/template.py +0 -0
  96. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/data_ingestion/README.md +0 -0
  97. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/data_ingestion/data_ingestion_pipeline/components/ingest_data.py +0 -0
  98. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/data_ingestion/data_ingestion_pipeline/components/process_data.py +0 -0
  99. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/data_ingestion/data_ingestion_pipeline/pipeline.py +0 -0
  100. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/data_ingestion/data_ingestion_pipeline/submit_pipeline.py +0 -0
  101. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/data_ingestion/pyproject.toml +0 -0
  102. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/data_ingestion/uv.lock +0 -0
  103. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/deployment_targets/agent_engine/app/agent_engine_app.py +0 -0
  104. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/deployment_targets/agent_engine/app/utils/gcs.py +0 -0
  105. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/deployment_targets/agent_engine/deployment_metadata.json +0 -0
  106. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/deployment_targets/agent_engine/notebooks/intro_reasoning_engine.ipynb +0 -0
  107. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/deployment_targets/agent_engine/tests/integration/test_agent_engine_app.py +0 -0
  108. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/deployment_targets/agent_engine/tests/load_test/.results/.placeholder +0 -0
  109. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/deployment_targets/agent_engine/tests/load_test/README.md +0 -0
  110. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/deployment_targets/agent_engine/tests/load_test/load_test.py +0 -0
  111. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/deployment_targets/agent_engine/tests/unit/test_dummy.py +0 -0
  112. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/deployment_targets/cloud_run/Dockerfile +0 -0
  113. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/deployment_targets/cloud_run/app/server.py +0 -0
  114. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/deployment_targets/cloud_run/deployment/terraform/artifact_registry.tf +0 -0
  115. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/deployment_targets/cloud_run/deployment/terraform/dev/service_accounts.tf +0 -0
  116. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/deployment_targets/cloud_run/tests/integration/test_server_e2e.py +0 -0
  117. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/deployment_targets/cloud_run/tests/load_test/.results/.placeholder +0 -0
  118. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/deployment_targets/cloud_run/tests/load_test/README.md +0 -0
  119. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/deployment_targets/cloud_run/tests/load_test/load_test.py +0 -0
  120. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/deployment_targets/cloud_run/tests/unit/test_server.py +0 -0
  121. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/deployment_targets/cloud_run/uv.lock +0 -0
  122. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/package-lock.json +0 -0
  123. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/package.json +0 -0
  124. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/public/favicon.ico +0 -0
  125. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/public/index.html +0 -0
  126. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/public/robots.txt +0 -0
  127. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/App.scss +0 -0
  128. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/App.test.tsx +0 -0
  129. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/App.tsx +0 -0
  130. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/components/audio-pulse/AudioPulse.tsx +0 -0
  131. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/components/audio-pulse/audio-pulse.scss +0 -0
  132. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/components/control-tray/ControlTray.tsx +0 -0
  133. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/components/control-tray/control-tray.scss +0 -0
  134. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/components/logger/Logger.tsx +0 -0
  135. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/components/logger/logger.scss +0 -0
  136. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/components/logger/mock-logs.ts +0 -0
  137. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/components/side-panel/SidePanel.tsx +0 -0
  138. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/components/side-panel/side-panel.scss +0 -0
  139. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/contexts/LiveAPIContext.tsx +0 -0
  140. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/hooks/use-live-api.ts +0 -0
  141. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/hooks/use-media-stream-mux.ts +0 -0
  142. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/hooks/use-screen-capture.ts +0 -0
  143. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/hooks/use-webcam.ts +0 -0
  144. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/index.css +0 -0
  145. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/index.tsx +0 -0
  146. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/multimodal-live-types.ts +0 -0
  147. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/react-app-env.d.ts +0 -0
  148. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/reportWebVitals.ts +0 -0
  149. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/setupTests.ts +0 -0
  150. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/utils/audio-recorder.ts +0 -0
  151. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/utils/audio-streamer.ts +0 -0
  152. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/utils/audioworklet-registry.ts +0 -0
  153. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/utils/multimodal-live-client.ts +0 -0
  154. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/utils/store-logger.ts +0 -0
  155. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/utils/utils.ts +0 -0
  156. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/utils/worklets/audio-processing.ts +0 -0
  157. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/src/utils/worklets/vol-meter.ts +0 -0
  158. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/live_api_react/frontend/tsconfig.json +0 -0
  159. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/streamlit/frontend/side_bar.py +0 -0
  160. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/streamlit/frontend/streamlit_app.py +0 -0
  161. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/streamlit/frontend/style/app_markdown.py +0 -0
  162. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/streamlit/frontend/utils/chat_utils.py +0 -0
  163. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/streamlit/frontend/utils/local_chat_history.py +0 -0
  164. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/streamlit/frontend/utils/message_editing.py +0 -0
  165. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/streamlit/frontend/utils/multimodal_utils.py +0 -0
  166. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/streamlit/frontend/utils/stream_handler.py +0 -0
  167. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/frontends/streamlit/frontend/utils/title_summary.py +0 -0
  168. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/resources/containers/data_processing/Dockerfile +0 -0
  169. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/resources/locks/uv-agentic_rag_vertexai_search-agent_engine.lock +0 -0
  170. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/resources/locks/uv-agentic_rag_vertexai_search-cloud_run.lock +0 -0
  171. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/resources/locks/uv-crewai_coding_crew-agent_engine.lock +0 -0
  172. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/resources/locks/uv-crewai_coding_crew-cloud_run.lock +0 -0
  173. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/resources/locks/uv-langgraph_base_react-agent_engine.lock +0 -0
  174. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/resources/locks/uv-langgraph_base_react-cloud_run.lock +0 -0
  175. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/resources/locks/uv-multimodal_live_api-cloud_run.lock +0 -0
  176. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/resources/setup_cicd/cicd_variables.tf +0 -0
  177. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/resources/setup_cicd/github.tf +0 -0
  178. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/resources/setup_cicd/providers.tf +0 -0
  179. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/utils/generate_locks.py +0 -0
  180. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/utils/lock_utils.py +0 -0
  181. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/src/utils/watch_and_rebuild.py +0 -0
  182. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/tests/cicd/example.env +0 -0
  183. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/tests/cicd/test_e2e_deployment.py +0 -0
  184. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/tests/cli/commands/test_setup_cicd.py +0 -0
  185. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/tests/cli/utils/test_cicd.py +0 -0
  186. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/tests/integration/test_io_patterns.py +0 -0
  187. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/tests/integration/test_template_linting.py +0 -0
  188. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/tests/integration/test_templated_patterns.py +0 -0
  189. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/tests/test_frontend/test_side_bar.py +0 -0
  190. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/tests/test_frontend/test_streamlit_app.py +0 -0
  191. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/tests/test_frontend/test_utils/test_chat_utils.py +0 -0
  192. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/tests/test_frontend/test_utils/test_local_chat_history.py +0 -0
  193. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/tests/test_frontend/test_utils/test_message_editing.py +0 -0
  194. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/tests/test_frontend/test_utils/test_multimodal_utils.py +0 -0
  195. {agent_starter_pack-0.0.3b0 → agent_starter_pack-0.0.5b0}/tests/test_frontend/test_utils/test_stream_handler.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-starter-pack
3
- Version: 0.0.3b0
3
+ Version: 0.0.5b0
4
4
  Summary: CLI tool to create GCP-based AI agent projects from templates
5
5
  Author-email: Google LLC <agent-starter-pack@google.com>
6
6
  License: Apache-2.0
@@ -0,0 +1,28 @@
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
+ description: "A RAG agent using Vertex AI Search and LangGraph for document retrieval and Q&A"
16
+ settings:
17
+ requires_data_ingestion: true
18
+ deployment_targets: ["agent_engine", "cloud_run"]
19
+ extra_dependencies: [
20
+ "langchain-google-vertexai~=2.0.7",
21
+ "langchain~=0.3.14",
22
+ "langgraph~=0.2.63",
23
+ "langchain-google-vertexai~=2.0.7",
24
+ "langchain~=0.3.14",
25
+ "langchain-community~=0.3.17",
26
+ "langchain-openai~=0.3.5",
27
+ "langchain-google-community[vertexaisearch]~=2.0.2",
28
+ ]
@@ -0,0 +1,26 @@
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
+ description: "A multi-agent system implemented with CrewAI created to support coding activities"
16
+ settings:
17
+ requires_data_ingestion: false
18
+ deployment_targets: ["agent_engine", "cloud_run"]
19
+ extra_dependencies: [
20
+ "langchain-google-vertexai~=2.0.7",
21
+ "langchain~=0.3.14",
22
+ "langchain-community~=0.3.17",
23
+ "langchain-openai~=0.3.5",
24
+ "langgraph~=0.2.63",
25
+ "crewai~=0.102.0"
26
+ ]
@@ -0,0 +1,27 @@
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
+ description: "A agent implementing a base ReAct agent using LangGraph"
16
+ settings:
17
+ requires_data_ingestion: false
18
+ deployment_targets: ["agent_engine", "cloud_run"]
19
+ extra_dependencies: [
20
+ "langchain-google-vertexai~=2.0.7",
21
+ "langchain~=0.3.14",
22
+ "langgraph~=0.2.63",
23
+ "langchain-google-vertexai~=2.0.7",
24
+ "langchain~=0.3.14",
25
+ "langchain-community~=0.3.17",
26
+ "langchain-openai~=0.3.5",
27
+ ]
@@ -28,16 +28,32 @@ This pattern showcases a real-time conversational RAG agent powered by Google Ge
28
28
 
29
29
  2. **Start the Backend and Frontend:**
30
30
 
31
- Start the backend:
31
+ **Backend:**
32
32
  ```bash
33
33
  make backend
34
34
  ```
35
+
36
+ The backend will be ready when you see `INFO: Application startup complete.` in the console.
37
+
38
+ <details>
39
+ <summary><b>Click here if you want to use AI Studio and API Key instead of Vertex AI:</b></summary>
35
40
 
36
- In a different shell, start the frontend:
37
41
  ```bash
42
+ export VERTEXAI=false
43
+ export GOOGLE_API_KEY=your-google-api-key
44
+ ```
45
+
46
+ </details>
47
+ <br>
48
+
49
+ **Frontend:**
50
+ ```bash
51
+ # In a different shell
38
52
  make ui
39
53
  ```
40
54
 
55
+ This is the suggested mode for development as it allows you to see changes in real-time.
56
+
41
57
  Once both the backend and frontend are running, click the play button in the frontend UI to establish a connection with the backend. You can now interact with the Multimodal Live Agent! You can try asking questions such as "Using the tool you have, define Governance in the context MLOPs" to allow the agent to use the [documentation](https://cloud.google.com/architecture/deploy-operate-generative-ai-applications) it was provided to.
42
58
 
43
59
  ## Additional Resources for Multimodal Live API
@@ -0,0 +1,29 @@
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
+ description: "A real-time multimodal RAG agent powered by Gemini, supporting audio/video/text chat with vector DB-backed responses"
16
+ settings:
17
+ requires_data_ingestion: false
18
+ frontend_type: "live_api_react"
19
+ deployment_targets: ["cloud_run"]
20
+ extra_dependencies: [
21
+ "backoff~=2.2.1",
22
+ "beautifulsoup4~=4.12.3",
23
+ "google-genai~=1.2.0",
24
+ "jinja2~=3.1.4",
25
+ "langchain~=0.3.13",
26
+ "langchain-community~=0.3.13",
27
+ "langchain-google-vertexai~=2.0.9",
28
+ "scikit-learn>=1.0.0,<2.0.0",
29
+ ]
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "agent-starter-pack"
3
- version = "0.0.3b"
3
+ version = "0.0.5b"
4
4
  description = "CLI tool to create GCP-based AI agent projects from templates"
5
5
  authors = [
6
6
  { name = "Google LLC", email = "agent-starter-pack@google.com" },
@@ -13,6 +13,7 @@
13
13
  # limitations under the License.
14
14
 
15
15
  import logging
16
+ import os
16
17
  import pathlib
17
18
  import subprocess
18
19
 
@@ -47,8 +48,6 @@ console = Console()
47
48
  @click.option(
48
49
  "--include-data-ingestion", "-i", is_flag=True, help="Include data pipeline"
49
50
  )
50
- @click.option("--gcp-account", help="GCP service account email")
51
- @click.option("--gcp-project", help="GCP project ID")
52
51
  @click.option("--debug", is_flag=True, help="Enable debug logging")
53
52
  @click.option(
54
53
  "--output-dir",
@@ -77,8 +76,6 @@ def create(
77
76
  agent: str | None,
78
77
  deployment_target: str | None,
79
78
  include_data_ingestion: bool,
80
- gcp_account: str | None,
81
- gcp_project: str | None,
82
79
  debug: bool,
83
80
  output_dir: str | None,
84
81
  auto_approve: bool,
@@ -164,88 +161,23 @@ def create(
164
161
  logging.debug(f"Selected region: {region}")
165
162
 
166
163
  # GCP Setup
167
- with console.status("[bold blue]Setting up GCP environment...", spinner="dots"):
168
- if debug:
169
- logging.debug("Setting up GCP...")
170
-
171
- # Handle GCP credentials
172
- if gcp_account and gcp_project:
173
- try:
174
- subprocess.run(
175
- ["gcloud", "config", "set", "account", gcp_account], check=True
176
- )
177
- subprocess.run(
178
- ["gcloud", "config", "set", "project", gcp_project], check=True
179
- )
180
- subprocess.run(
181
- [
182
- "gcloud",
183
- "auth",
184
- "application-default",
185
- "set-quota-project",
186
- gcp_project,
187
- ],
188
- check=True,
189
- )
190
- except subprocess.CalledProcessError as e:
191
- console.print(f"Error setting GCP credentials: {e!s}", style="bold red")
192
- raise
164
+ logging.debug("Setting up GCP...")
193
165
 
166
+ # Check for uv installation if not skipping checks
194
167
  if not skip_checks:
195
- # Verify GCP credentials
196
- if debug:
197
- logging.debug("Verifying GCP credentials...")
198
- creds_info = verify_credentials()
199
-
200
- if not auto_approve:
201
- change_creds = (
202
- Prompt.ask(
203
- f"\n> You are logged in with account '{creds_info['account']}' "
204
- f"and using project '{creds_info['project']}'. "
205
- "Is this correct?",
206
- choices=["Y", "n"],
207
- default="Y",
208
- ).lower()
209
- == "n"
210
- )
211
-
212
- if change_creds:
213
- handle_credential_change()
214
- else:
215
- console.print(
216
- f"\n> Using account '{creds_info['account']}' "
217
- f"with project '{creds_info['project']}'"
218
- )
219
-
220
- # Check for uv installation
221
- console.print("> Checking for uv installation...")
222
168
  check_and_install_uv()
223
169
 
224
- # Test Vertex AI connection
225
- console.print("> Testing GCP and Vertex AI Connection...")
170
+ # Set up GCP environment
226
171
  try:
227
- verify_vertex_connection(
228
- project_id=creds_info["project"],
229
- location=region,
230
- )
231
- console.print(
232
- f"> ✓ Successfully verified connection to Vertex AI in project {creds_info['project']}"
172
+ setup_gcp_environment(
173
+ auto_approve=auto_approve,
174
+ skip_checks=skip_checks,
175
+ region=region,
176
+ debug=debug,
233
177
  )
234
178
  except Exception as e:
235
- console.print(
236
- f"> Failed to connect to Vertex AI: {e!s}\n"
237
- f"> Please check your authentication settings and permissions. "
238
- f"Visit https://cloud.google.com/vertex-ai/docs/authentication for help.",
239
- style="bold red"
240
- )
241
- else:
242
- if debug:
243
- logging.debug("Skipping verification checks due to --skip-checks flag")
244
- console.print("> Skipping verification checks", style="yellow")
245
- # Set a default creds_info when skipping checks
246
- creds_info = (
247
- {"project": gcp_project} if gcp_project else {"project": "unknown"}
248
- )
179
+ if debug:
180
+ logging.warning(f"GCP environment setup failed: {e}")
249
181
 
250
182
  # Process template
251
183
  template_path = get_template_path(final_agent, debug=debug)
@@ -332,74 +264,172 @@ def display_agent_selection(deployment_target: str | None = None) -> str:
332
264
  return agents[choice]["name"]
333
265
 
334
266
 
335
- def handle_credential_change() -> None:
336
- """Handle the process of changing GCP credentials."""
267
+ def set_gcp_project(project_id: str, set_quota_project: bool = True) -> None:
268
+ """Set the GCP project and optionally the application default quota project.
269
+
270
+ Args:
271
+ project_id: The GCP project ID to set.
272
+ set_quota_project: Whether to set the application default quota project.
273
+ """
337
274
  try:
275
+ subprocess.run(
276
+ ["gcloud", "config", "set", "project", project_id],
277
+ check=True,
278
+ capture_output=True,
279
+ text=True,
280
+ )
281
+ except subprocess.CalledProcessError as e:
282
+ console.print(f"\n> Error setting project to {project_id}:")
283
+ console.print(e.stderr)
284
+ raise
285
+
286
+ if set_quota_project:
287
+ try:
288
+ subprocess.run(
289
+ [
290
+ "gcloud",
291
+ "auth",
292
+ "application-default",
293
+ "set-quota-project",
294
+ project_id,
295
+ ],
296
+ check=True,
297
+ capture_output=True,
298
+ text=True,
299
+ )
300
+ except subprocess.CalledProcessError as e:
301
+ console.print("> Error setting application default quota project:")
302
+ console.print(e.stderr)
303
+ raise
304
+
305
+ console.print(f"> Successfully configured project: {project_id}")
306
+
307
+
308
+ def setup_gcp_environment(
309
+ auto_approve: bool, skip_checks: bool, region: str, debug: bool
310
+ ) -> dict:
311
+ """Set up the GCP environment with proper credentials and project.
312
+
313
+ Args:
314
+ auto_approve: Whether to skip confirmation prompts
315
+ skip_checks: Whether to skip verification checks
316
+ region: GCP region for deployment
317
+ debug: Whether debug logging is enabled
318
+
319
+ Returns:
320
+ Dictionary with credential information
321
+ """
322
+ # Skip all verification if requested
323
+ if skip_checks:
324
+ if debug:
325
+ logging.debug("Skipping verification checks due to --skip-checks flag")
326
+ console.print("> Skipping verification checks", style="yellow")
327
+ return {"project": "unknown"}
328
+
329
+ # Verify current GCP credentials
330
+ if debug:
331
+ logging.debug("Verifying GCP credentials...")
332
+ creds_info = verify_credentials()
333
+
334
+ # Handle credential verification and project selection
335
+ if not auto_approve:
336
+ creds_info = _handle_credential_verification(creds_info)
337
+ else:
338
+ # Even with auto_approve, we should still set the GCP project
339
+ set_gcp_project(creds_info["project"], set_quota_project=True)
340
+
341
+ # Test Vertex AI connection
342
+ _test_vertex_ai_connection(creds_info["project"], region)
343
+
344
+ return creds_info
345
+
346
+
347
+ def _handle_credential_verification(creds_info: dict) -> dict:
348
+ """Handle verification of credentials and project selection.
349
+
350
+ Args:
351
+ creds_info: Current credential information
352
+
353
+ Returns:
354
+ Updated credential information
355
+ """
356
+ # Check if running in Cloud Shell
357
+ if os.environ.get("CLOUD_SHELL") == "true":
358
+ if creds_info["project"] == "":
359
+ console.print("> It looks like you are running in Cloud Shell.")
360
+ console.print(
361
+ "> You need to set up a project ID to continue, but you haven't setup a project yet."
362
+ )
363
+ new_project = Prompt.ask("\n> Enter a project ID")
364
+ creds_info["project"] = new_project
365
+ set_gcp_project(creds_info["project"], set_quota_project=False)
366
+ return creds_info
367
+
368
+ # Ask user if current credentials are correct
369
+ change_creds = (
370
+ Prompt.ask(
371
+ f"\n> You are logged in with account '{creds_info['account']}' "
372
+ f"and using project '{creds_info['project']}'. "
373
+ "Is this correct?",
374
+ choices=["Y", "n"],
375
+ default="Y",
376
+ ).lower()
377
+ == "n"
378
+ )
379
+
380
+ if change_creds:
381
+ # Handle credential change
338
382
  console.print("\n> Initiating new login...")
339
383
  subprocess.run(["gcloud", "auth", "login", "--update-adc"], check=True)
340
384
  console.print("> Login successful. Verifying new credentials...")
341
385
 
342
386
  # Re-verify credentials after login
343
- new_creds_info = verify_credentials()
387
+ creds_info = verify_credentials()
344
388
 
345
389
  # Prompt for project change
346
390
  change_project = (
347
391
  Prompt.ask(
348
- f"\n> You are now logged in with account '{new_creds_info['account']}'. "
349
- f"Current project is '{new_creds_info['project']}'. "
350
- "Do you wish to change the project?",
392
+ f"\n> You are now logged in with account '{creds_info['account']}'. "
393
+ f"Current project is '{creds_info['project']}'. "
394
+ "Is this correct?",
351
395
  choices=["y", "n"],
352
- default="n",
396
+ default="y",
353
397
  ).lower()
354
- == "y"
398
+ == "n"
355
399
  )
356
400
 
357
401
  if change_project:
358
- handle_project_change()
359
-
360
- except subprocess.CalledProcessError as e:
361
- console.print(
362
- "\n> Error during login process. Please try again.", style="bold red"
363
- )
364
- logging.debug(f"Login error: {e!s}")
365
- raise
366
- except Exception as e:
367
- console.print(f"\n> Unexpected error: {e!s}", style="bold red")
368
- logging.debug(f"Unexpected error during login: {e!s}")
369
- raise
402
+ # Prompt for new project ID
403
+ new_project = Prompt.ask("\n> Enter the new project ID")
404
+ creds_info["project"] = new_project
370
405
 
406
+ set_gcp_project(creds_info["project"], set_quota_project=True)
407
+ return creds_info
371
408
 
372
- def handle_project_change() -> None:
373
- """Handle the process of changing GCP project."""
374
- try:
375
- # Prompt for new project ID
376
- new_project = Prompt.ask("\n> Enter the new project ID")
377
409
 
378
- console.print(f"\n> Setting project to {new_project}...")
379
- subprocess.run(["gcloud", "config", "set", "project", new_project], check=True)
410
+ def _test_vertex_ai_connection(project_id: str, region: str) -> None:
411
+ """Test connection to Vertex AI.
380
412
 
381
- console.print("> Setting application default quota project...")
382
- subprocess.run(
383
- ["gcloud", "auth", "application-default", "set-quota-project", new_project],
384
- check=True,
413
+ Args:
414
+ project_id: GCP project ID
415
+ region: GCP region for deployment
416
+ """
417
+ console.print("> Testing GCP and Vertex AI Connection...")
418
+ try:
419
+ verify_vertex_connection(
420
+ project_id=project_id,
421
+ location=region,
385
422
  )
386
-
387
- console.print(f"> Successfully switched to project: {new_project}")
388
-
389
- # Re-verify credentials one final time
390
- final_creds_info = verify_credentials()
391
423
  console.print(
392
- f"\n> Now using account '{final_creds_info['account']}' "
393
- f"with project '{final_creds_info['project']}'"
424
+ f"> Successfully verified connection to Vertex AI in project {project_id}"
394
425
  )
395
-
396
- except subprocess.CalledProcessError as e:
426
+ except Exception as e:
397
427
  console.print(
398
- "\n> Error while changing project. Please verify the project ID and try again.",
428
+ f"> Failed to connect to Vertex AI: {e!s}\n"
429
+ f"> Please check your authentication settings and permissions. "
430
+ f"Visit https://cloud.google.com/vertex-ai/docs/authentication for help.",
399
431
  style="bold red",
400
432
  )
401
- logging.debug(f"Project change error: {e!s}")
402
- raise
403
433
 
404
434
 
405
435
  def replace_region_in_files(
@@ -485,11 +515,11 @@ def replace_region_in_files(
485
515
 
486
516
 
487
517
  def check_and_install_uv() -> None:
488
- """Check if uv is installed and install it if not present."""
518
+ """Check if uv is installed and inform the user if it's not."""
489
519
  try:
490
520
  # Use shell=True for Windows compatibility and add timeout
491
521
  process = subprocess.run(
492
- "uv --version", shell=True, capture_output=True, text=True, timeout=10
522
+ "uv --version", shell=True, capture_output=True, text=True, timeout=5
493
523
  )
494
524
  if process.returncode == 0:
495
525
  logging.debug("uv is already installed")
@@ -502,43 +532,6 @@ def check_and_install_uv() -> None:
502
532
  console.print("> uv is not installed", style="yellow")
503
533
 
504
534
  console.print(
505
- "\n> uv is required for the template to work. You can install it in several ways:"
506
- "\n 1. Automatically install uv now"
507
- "\n 2. Manual installation from: https://docs.astral.sh/uv/getting-started/installation"
508
- "\n This includes other options e.g PyPI (pip/pipx), Homebrew, Docker.."
509
- )
510
-
511
- install_choice = Prompt.ask(
512
- "\n> Would you like to install uv automatically now?",
513
- choices=["y", "n"],
514
- default="y",
535
+ "\n> uv is recommended for managing virtual environments and dependencies."
536
+ "\n> For installation instructions, visit: https://docs.astral.sh/uv/getting-started/installation"
515
537
  )
516
- if install_choice.lower() == "y":
517
- console.print("> Installing uv...", style="yellow")
518
- try:
519
- install_command = "curl -LsSf https://astral.sh/uv/install.sh | sh"
520
- # Add timeout to installation process as well
521
- subprocess.run(
522
- install_command,
523
- shell=True,
524
- check=True,
525
- timeout=60, # Give installation more time
526
- )
527
- console.print("> uv installed successfully!", style="green")
528
- except subprocess.TimeoutExpired:
529
- console.print("> uv installation timed out", style="bold red")
530
- raise
531
- except subprocess.CalledProcessError as e:
532
- console.print("> Failed to install uv", style="bold red")
533
- logging.debug(f"uv installation error: {e!s}")
534
- console.print(
535
- "> Please install uv manually using one of the methods listed above",
536
- style="yellow",
537
- )
538
- raise
539
- else:
540
- console.print(
541
- "> Please install uv manually using one of the methods listed above and try again",
542
- style="yellow",
543
- )
544
- raise click.Abort() from None
@@ -24,7 +24,7 @@ from google.cloud.aiplatform_v1beta1.services.prediction_service import (
24
24
  PredictionServiceClient,
25
25
  )
26
26
  from google.cloud.aiplatform_v1beta1.types.prediction_service import (
27
- GenerateContentRequest,
27
+ CountTokensRequest,
28
28
  )
29
29
 
30
30
 
@@ -43,12 +43,11 @@ def get_client_info() -> ClientInfo:
43
43
  return ClientInfo(client_library_version=version, user_agent=agent)
44
44
 
45
45
 
46
- def get_dummy_request(project_id: str, location: str) -> GenerateContentRequest:
46
+ def get_dummy_request(project_id: str, location: str) -> CountTokensRequest:
47
47
  """Creates a simple test request for Gemini."""
48
- return GenerateContentRequest(
49
- contents=[{"role": "user", "parts": [{"text": "Hi there!"}]}],
50
- generation_config={"candidate_count": 1},
51
- model=f"projects/{project_id}/locations/{location}/publishers/google/models/gemini-2.0-flash-001",
48
+ return CountTokensRequest(
49
+ contents=[{"role": "user", "parts": [{"text": "Hi"}]}],
50
+ endpoint=f"projects/{project_id}/locations/{location}/publishers/google/models/gemini-1.5-flash-002",
52
51
  )
53
52
 
54
53
 
@@ -64,10 +63,10 @@ def verify_vertex_connection(
64
63
  api_endpoint=f"{location}-aiplatform.googleapis.com"
65
64
  ),
66
65
  client_info=get_client_info(),
67
- transport="rest",
66
+ transport=initializer.global_config._api_transport,
68
67
  )
69
68
  request = get_dummy_request(project_id=project_id, location=location)
70
- client.generate_content(request=request)
69
+ client.count_tokens(request=request)
71
70
 
72
71
 
73
72
  def verify_credentials() -> dict[str, str]: