agent-starter-pack 0.9.2__py3-none-any.whl → 0.10.0__py3-none-any.whl

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 (56) hide show
  1. {agent_starter_pack-0.9.2.dist-info → agent_starter_pack-0.10.0.dist-info}/METADATA +2 -2
  2. {agent_starter_pack-0.9.2.dist-info → agent_starter_pack-0.10.0.dist-info}/RECORD +53 -51
  3. agents/adk_base/.template/templateconfig.yaml +1 -1
  4. agents/adk_gemini_fullstack/.template/templateconfig.yaml +1 -1
  5. agents/agentic_rag/.template/templateconfig.yaml +1 -1
  6. agents/agentic_rag/README.md +1 -1
  7. agents/live_api/tests/integration/test_server_e2e.py +7 -1
  8. llm.txt +3 -2
  9. src/base_template/Makefile +4 -3
  10. src/base_template/README.md +7 -2
  11. src/base_template/deployment/README.md +6 -121
  12. src/base_template/deployment/terraform/github.tf +284 -0
  13. src/base_template/deployment/terraform/providers.tf +5 -0
  14. src/base_template/deployment/terraform/variables.tf +40 -1
  15. src/base_template/deployment/terraform/vars/env.tfvars +7 -1
  16. src/base_template/deployment/terraform/{% if cookiecutter.cicd_runner == 'github_actions' %}wif.tf{% else %}unused_wif.tf{% endif %} +43 -0
  17. src/base_template/deployment/terraform/{build_triggers.tf → {% if cookiecutter.cicd_runner == 'google_cloud_build' %}build_triggers.tf{% else %}unused_build_triggers.tf{% endif %} } +33 -18
  18. src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/deploy-to-prod.yaml +114 -0
  19. src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/pr_checks.yaml +65 -0
  20. src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/staging.yaml +170 -0
  21. src/base_template/{deployment/cd/deploy-to-prod.yaml → {% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/deploy-to-prod.yaml } +7 -7
  22. src/base_template/{deployment/cd/staging.yaml → {% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/staging.yaml } +7 -7
  23. src/cli/commands/create.py +120 -4
  24. src/cli/commands/list.py +1 -1
  25. src/cli/commands/setup_cicd.py +292 -298
  26. src/cli/utils/cicd.py +19 -7
  27. src/cli/utils/remote_template.py +4 -4
  28. src/cli/utils/template.py +67 -19
  29. src/deployment_targets/cloud_run/app/server.py +19 -0
  30. src/deployment_targets/cloud_run/deployment/terraform/dev/service.tf +4 -3
  31. src/deployment_targets/cloud_run/deployment/terraform/service.tf +4 -3
  32. src/deployment_targets/cloud_run/tests/integration/test_server_e2e.py +35 -0
  33. src/deployment_targets/cloud_run/tests/load_test/README.md +1 -1
  34. src/frontends/live_api_react/frontend/package-lock.json +19 -16
  35. src/frontends/streamlit/frontend/side_bar.py +1 -1
  36. src/frontends/streamlit/frontend/utils/chat_utils.py +1 -1
  37. src/frontends/streamlit/frontend/utils/local_chat_history.py +2 -2
  38. src/resources/docs/adk-cheatsheet.md +1 -1
  39. src/resources/locks/uv-adk_base-agent_engine.lock +164 -131
  40. src/resources/locks/uv-adk_base-cloud_run.lock +177 -144
  41. src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock +164 -131
  42. src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock +177 -144
  43. src/resources/locks/uv-agentic_rag-agent_engine.lock +223 -190
  44. src/resources/locks/uv-agentic_rag-cloud_run.lock +251 -218
  45. src/resources/locks/uv-crewai_coding_crew-agent_engine.lock +315 -485
  46. src/resources/locks/uv-crewai_coding_crew-cloud_run.lock +358 -531
  47. src/resources/locks/uv-langgraph_base_react-agent_engine.lock +281 -249
  48. src/resources/locks/uv-langgraph_base_react-cloud_run.lock +323 -290
  49. src/resources/locks/uv-live_api-cloud_run.lock +350 -327
  50. src/resources/setup_cicd/cicd_variables.tf +0 -41
  51. src/resources/setup_cicd/github.tf +0 -87
  52. src/resources/setup_cicd/providers.tf +0 -39
  53. {agent_starter_pack-0.9.2.dist-info → agent_starter_pack-0.10.0.dist-info}/WHEEL +0 -0
  54. {agent_starter_pack-0.9.2.dist-info → agent_starter_pack-0.10.0.dist-info}/entry_points.txt +0 -0
  55. {agent_starter_pack-0.9.2.dist-info → agent_starter_pack-0.10.0.dist-info}/licenses/LICENSE +0 -0
  56. /src/base_template/{deployment/ci → {% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}}/pr_checks.yaml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-starter-pack
3
- Version: 0.9.2
3
+ Version: 0.10.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
@@ -99,7 +99,7 @@ Looking to explore more ADK examples? Check out the [ADK Samples Repository](htt
99
99
  #### Extra Features
100
100
 
101
101
  The `agent-starter-pack` offers two key features to accelerate and simplify the development of your agent:
102
- - **🔄 [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
102
+ - **🔄 [CI/CD Automation](https://googlecloudplatform.github.io/agent-starter-pack/cli/setup_cicd)** - A single command to set up a complete CI/CD pipeline for all environments, supporting both **Google Cloud Build** and **GitHub Actions**.
103
103
  - **📥 [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).
104
104
  - **[Remote Templates](docs/guide/remote-templating.md)**: Create and share your own agent starter packs templates from any Git repository.
105
105
  - **🤖 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.
@@ -1,19 +1,19 @@
1
1
  agents/README.md,sha256=L8__lIXXjxLTZbkCmTC4taTFUMRVrO3QI2mCKZTdhJM,462
2
2
  agents/adk_base/README.md,sha256=eLf-F9Z4u_mQOchAnUaSrOAHXRSx8wUQN29kkwz1SF4,894
3
- agents/adk_base/.template/templateconfig.yaml,sha256=CUhOW807Ap2XDk3ZRK-OWP4-tD5fUUr8Nvv4yrOfjJk,923
3
+ agents/adk_base/.template/templateconfig.yaml,sha256=8mQ_IIgC0h4eiTUM7FEIPSxwI73aenspcHsnqUb4AfY,923
4
4
  agents/adk_base/app/agent.py,sha256=6Q6QegQDxEaAck989DPIb3ArHMZtw_YJBqhHFqg-UjQ,2182
5
5
  agents/adk_base/notebooks/adk_app_testing.ipynb,sha256=wgFzBo7hX393NVzy3ZfZHncs1ptiQbM_8he3XxJu4yM,9763
6
6
  agents/adk_base/notebooks/evaluating_adk_agent.ipynb,sha256=OMTiT3gAFWPvE9pPL8z7tsDwOU-l8wem5wH-OXPPlvk,56805
7
7
  agents/adk_base/tests/integration/test_agent.py,sha256=VypgpEWrQegJBgc58V-BlIsbqh-Hii-hwmkwcz5feFw,1969
8
8
  agents/adk_gemini_fullstack/README.md,sha256=yQFFcESALj5Q6eweyIyPx__U74obUM88aCBJYNV2UWs,1674
9
- agents/adk_gemini_fullstack/.template/templateconfig.yaml,sha256=gU0EeLdr2INQDZKeypofUoZw-lcwq3qV6E8AVeowTQg,1716
9
+ agents/adk_gemini_fullstack/.template/templateconfig.yaml,sha256=2YeSRfcuTHNdYU9smEMn4LPtorBaDUII3qIWRj8nX70,1716
10
10
  agents/adk_gemini_fullstack/app/agent.py,sha256=NXOkYFxDccJaSq55CTS-UYY8z5-WgBZqexII0Ybzk9c,22662
11
11
  agents/adk_gemini_fullstack/app/config.py,sha256=x--axECPKWW3oLANKz2_4zzHEBIU7if8iYNZRjlTNV0,1563
12
12
  agents/adk_gemini_fullstack/notebooks/adk_app_testing.ipynb,sha256=wgFzBo7hX393NVzy3ZfZHncs1ptiQbM_8he3XxJu4yM,9763
13
13
  agents/adk_gemini_fullstack/notebooks/evaluating_adk_agent.ipynb,sha256=OMTiT3gAFWPvE9pPL8z7tsDwOU-l8wem5wH-OXPPlvk,56805
14
14
  agents/adk_gemini_fullstack/tests/integration/test_agent.py,sha256=VypgpEWrQegJBgc58V-BlIsbqh-Hii-hwmkwcz5feFw,1969
15
- agents/agentic_rag/README.md,sha256=mxMLkq6tAghFaDmc2sc2sEQ5vn9kGWdiRxfTykwpLz0,2268
16
- agents/agentic_rag/.template/templateconfig.yaml,sha256=VC0Ss-QmLjROtSy3Dx_BSDV5xSgvr-yI1doBkKXBjc4,1248
15
+ agents/agentic_rag/README.md,sha256=cPeY_XGt79ava22PIM0x92oi67R-TnlEKBQGpK1MOkA,2262
16
+ agents/agentic_rag/.template/templateconfig.yaml,sha256=Gfw3FOjj3XNxoXn6WGwC2PG59f4qB3p2cYTQ49ykvJc,1248
17
17
  agents/agentic_rag/app/agent.py,sha256=tKtzez7vGu6JgMWmZN7QrKkyLBvHu1ondAuICjKoC-g,3983
18
18
  agents/agentic_rag/app/retrievers.py,sha256=qfxwSEixMddvAu4FvUTZAFh1Gdp3RPY65s0Wp6gEFVk,4561
19
19
  agents/agentic_rag/app/templates.py,sha256=8N_uRchwiN7hlH9Y8rdJ1CAtOhpHUWZkXZZ7IU-YJJk,867
@@ -38,32 +38,31 @@ agents/live_api/README.md,sha256=c3lu5WguOUBc5hO_UtNZfVhfYxvSzMXuGFICn9M38mU,289
38
38
  agents/live_api/.template/templateconfig.yaml,sha256=DD_hihMsuqmd5VWS18vVGZ3ZGVVpFWVXJ2dU07eKb6k,964
39
39
  agents/live_api/app/agent.py,sha256=dYE2qd64OhL-fOgwzrjqN50LYXAgJ1TWbx6ohqtV5Rc,2434
40
40
  agents/live_api/app/server.py,sha256=ZXriNDl_zo7WDRBke85lyzMsy66qGzPaRXY1FMy4Fdw,7793
41
- agents/live_api/tests/integration/test_server_e2e.py,sha256=D2VETDIyTD2fQyQ6DXwLr-POSYyVzzzcpIFLt5Ppyx4,8398
41
+ agents/live_api/tests/integration/test_server_e2e.py,sha256=SBowHiVj-_Okbk1dqyITFVIG6yvr5BGNrfxHVpO4TFs,8635
42
42
  agents/live_api/tests/load_test/load_test.py,sha256=HHZyfC4gqiQtZVF_CbbxENGgWQccMLpwMv0IdoQ6cbQ,1275
43
43
  agents/live_api/tests/unit/test_server.py,sha256=_TjlgQgNkjerIaBGnu8P8_KB8ZlSolDcivALpUOn_Rw,4786
44
- llm.txt,sha256=DZaO2YqDmvigYzqIvMsNPYilmbNqZfJL9hTicZHpvZc,13561
44
+ llm.txt,sha256=wvqbxa1A8kVRdQyOX-ZcN2rOp2314Kw1y4TTe9n9usI,13714
45
45
  src/base_template/.gitignore,sha256=Fq0w34x4sfbwP4RqDqh6hdHNYRUEsFNI-9XONzLWBIs,2580
46
46
  src/base_template/GEMINI.md,sha256=WzscHWlQeYkKORZ-453P8KM9IHuj1kAxW-69c7Ytuwk,133
47
- src/base_template/Makefile,sha256=MEsMvBosWrSVgUPRucTjsxYovl41rQc3d8Vw8dxdPoA,6128
48
- src/base_template/README.md,sha256=xAz5JXSnhCjXtvw5wSl6AVn6DJBlQIhSl4exyO5N4nc,10929
47
+ src/base_template/Makefile,sha256=Evt9HcJGBhyoYdVxj5AdfHsQ_vVnbh-g2IlUxM4PFP4,6149
48
+ src/base_template/README.md,sha256=3okWVHq8Mnm9WwaLR88O9pUq3zUO8fmHilK7ulWHrB4,11342
49
49
  src/base_template/pyproject.toml,sha256=TEu9_gZT9tRuV6x8CcVIpC4Lcetbr0mHMPcJAab0aq4,2874
50
50
  src/base_template/app/__init__.py,sha256=UyAgc2l8nkVIUPUzL9hKR7EgzCsc2jSYcOcjHNNmpMU,59
51
51
  src/base_template/app/utils/gcs.py,sha256=jKblaWOGQEigw3esaawcfX178shhZi2Fyk0fJSA4T68,1501
52
52
  src/base_template/app/utils/tracing.py,sha256=2rv1Ukh2jTBENDwoghCItJ28l-Sjz9gMlzdojlVgJa4,6052
53
53
  src/base_template/app/utils/typing.py,sha256=DP5OZC3IGvqA1XbvWt8kI3gyAK3ZjzUSL5Ca17wNeLI,4249
54
- src/base_template/deployment/README.md,sha256=qWTCWyEj1bZuny3XyCelXPgljh6yu_GDwfPNUeFoXBY,5245
55
- src/base_template/deployment/cd/deploy-to-prod.yaml,sha256=NDXSV5MdnTZfGk0Rkrh7_6RRTq6GiSmKyRVnX83OAfI,3601
56
- src/base_template/deployment/cd/staging.yaml,sha256=18plJjSrU73GR1Yncv_i9F0c2VE23ktYuEJpWDPVEQY,7232
57
- src/base_template/deployment/ci/pr_checks.yaml,sha256=VFdF6q_-zETCMlJkJ0znW8T7gCYE59BZNliNPz2Bh18,1517
54
+ src/base_template/deployment/README.md,sha256=gZJvSWdQh_Mi-bZ3dmuPv7fMezIw04fgN5tq7KgglPw,692
58
55
  src/base_template/deployment/terraform/apis.tf,sha256=KX8Oe2gjT-gh9Bkntz9yIAyRjPc1gZvwOhroJ6NZVp4,1513
59
- src/base_template/deployment/terraform/build_triggers.tf,sha256=kPLPRzgXrW3cBocWq-kPMxtfCcBo1yBLblSAxNvajrQ,6365
56
+ src/base_template/deployment/terraform/github.tf,sha256=HqM0gzSvJLoqlfdbBGLqJJ0RjUSRxZm8TgJ_icVH_Tk,10347
60
57
  src/base_template/deployment/terraform/iam.tf,sha256=IdZju8WsfjT_-CswYSGuAHjE8JsWArsAi2TbqTnphEU,5661
61
58
  src/base_template/deployment/terraform/locals.tf,sha256=nvjlavqWRL6e-iIqfIRvsai5JY9l6KhRGcwJQFRdu_U,1653
62
59
  src/base_template/deployment/terraform/log_sinks.tf,sha256=eAGh_dCjOKUQjylkqp1fNM9cfE4QB9HSEovjD6_G9Lg,2971
63
- src/base_template/deployment/terraform/providers.tf,sha256=LFjFQm8XbhWfQRwBUwhTjHLDWUbHW-IlFg71E0zFHIg,1080
60
+ src/base_template/deployment/terraform/providers.tf,sha256=wNWvXJbpvV3njDYO8t4s6DdDkL0dQpWgkPsmJw61ABM,1167
64
61
  src/base_template/deployment/terraform/service_accounts.tf,sha256=KsM9g0dlXmO6-Hokzz09HP1oO3crc8uLJj_Z45d8fe0,1713
65
62
  src/base_template/deployment/terraform/storage.tf,sha256=W0l34U7Ql2wdegfWsWfKzaEooaMaTL2TkU18KM_Vuys,8695
66
- src/base_template/deployment/terraform/variables.tf,sha256=xQLz_jdMvJjmDjEdYuuNOS-Xjf_GMwBbqZ1ig_lmCnE,5962
63
+ src/base_template/deployment/terraform/variables.tf,sha256=fyaif0z9hgmeEd581L6ilU-WZbjAoWynbmh6Bv48zpk,6981
64
+ src/base_template/deployment/terraform/{% if cookiecutter.cicd_runner == 'github_actions' %}wif.tf{% else %}unused_wif.tf{% endif %},sha256=rCupUnvaTVj75ahJOckNuzlQ-xcLTik_HpqXzVEEB5g,2666
65
+ src/base_template/deployment/terraform/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}build_triggers.tf{% else %}unused_build_triggers.tf{% endif %},sha256=i38RbFSr7CrzsvvQzeX5VYHMZ90fzenR_R_I3vRR6QM,6713
67
66
  src/base_template/deployment/terraform/dev/apis.tf,sha256=R5fyLQGHsZy7JyDdFpuNzUBute6Rn9xR32zIMjkGxzc,1592
68
67
  src/base_template/deployment/terraform/dev/iam.tf,sha256=ZHFs4TMvq6mqD90n8ecXndzW3pyu4EbZO4iJis88BH0,3394
69
68
  src/base_template/deployment/terraform/dev/log_sinks.tf,sha256=uVdMtDdd8MnxtKhqzVaYqadE11P3r4fs2IdgNecxM4I,2671
@@ -71,19 +70,25 @@ src/base_template/deployment/terraform/dev/providers.tf,sha256=1S9jCh48d6ailVZ1e
71
70
  src/base_template/deployment/terraform/dev/storage.tf,sha256=1mgLs21SUhfcoRICqd7BqUlEVAVGeN3kMsQ4UAQLOh8,4654
72
71
  src/base_template/deployment/terraform/dev/variables.tf,sha256=7uQeqzN6IR14h1iThXf-3M1pbWKpKxCddDs78r49yuo,4324
73
72
  src/base_template/deployment/terraform/dev/vars/env.tfvars,sha256=LoQMjh1AAMR-MGfaSCsVMjdoYTk2T4oS4D9vMH54CdQ,714
74
- src/base_template/deployment/terraform/vars/env.tfvars,sha256=Nze8q1x2Aj6ZUeWC2hDeZWqNUkLp13DgzA_LFmmOzCo,1216
73
+ src/base_template/deployment/terraform/vars/env.tfvars,sha256=Jyc36pt-0xNMwQsoXucad0QAWFMeGe67fdimCKXx-tw,1411
75
74
  src/base_template/tests/unit/test_dummy.py,sha256=2exfCH8qhkZrLWvK04ZxNTO9MV3fdTbZkJN3uK6zvok,850
75
+ src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/deploy-to-prod.yaml,sha256=nOP8Lr4IEYmcdaWPWeKx9T-HLlbWSx3fxmBgzYjRQM0,5584
76
+ src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/pr_checks.yaml,sha256=vy51dSiRFEFlFq9eEWuUsemG0jXj3VL4lCRMcodPiok,1981
77
+ src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/staging.yaml,sha256=BvZk0rquC0eP49b07kWp0NkwbGLuGlUJLFJL2-A0q1Q,8408
78
+ src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/deploy-to-prod.yaml,sha256=jOgmEj4v0xILIzq4dXqyu07wWZjpBaow2jNJyYdbINU,3651
79
+ src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/pr_checks.yaml,sha256=VFdF6q_-zETCMlJkJ0znW8T7gCYE59BZNliNPz2Bh18,1517
80
+ src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/staging.yaml,sha256=o7EuMwJJkXI3xNtBubvqyVDTVFRFjNYyv5v6aixVoVU,7312
76
81
  src/cli/main.py,sha256=fyJKjU1gvRQmuqS-J6sExvqXo0-z7n6Bce8PSbDPa6E,1769
77
- src/cli/commands/create.py,sha256=rdN_mWiIxwddsbIYVkrQCApK2x9ABQeSXZZoGtcE074,34764
78
- src/cli/commands/list.py,sha256=sMMGJiW_IjRUe-Md1bI_8B9wruYJ87JLSEoJfHaypbg,5038
79
- src/cli/commands/setup_cicd.py,sha256=1ZvgTD-Z2bZk6pWuinz4IP2G1Eb8H1MibRLPS-mZ6Ng,31721
82
+ src/cli/commands/create.py,sha256=EFFDEHBZ_O_g24gwTknpq_92c1OPKG2ECmnOiAS4aoU,39201
83
+ src/cli/commands/list.py,sha256=xlH7w_c_CO2XiFrYyDeBCE_JkUY3f3g4o0HbBIl5fqE,5056
84
+ src/cli/commands/setup_cicd.py,sha256=rNJN8HFWYf8Q6Wr9bLy1KHodiJJCG3T2JGVYIQskJaE,32232
80
85
  src/cli/utils/__init__.py,sha256=_cTmsXGPqOtK0q8UW5164QTltbJRJFR_Efxq_BRL1-o,1311
81
- src/cli/utils/cicd.py,sha256=VSkJTL7OBnXQ6Zbb2gzgw5gLWpwUjfr9XthqTpJ2Oj8,26197
86
+ src/cli/utils/cicd.py,sha256=9s_OcusQznT_pSjFP60BfDBoZ5V6bwPE0QWbWdMaVlY,26515
82
87
  src/cli/utils/datastores.py,sha256=gv1V6eDcOEKx4MRNG5C3Y-VfixYq1AzQuaYMLp8QRNo,1058
83
88
  src/cli/utils/gcp.py,sha256=cnuCyN144eiyYc9aJNEK9JnyWN66rdevugoMdDYC1UU,4032
84
89
  src/cli/utils/logging.py,sha256=0lHe4EPi1A8sOx9xkA7gS4UNl0GsIyp2ahydkkuCzLY,1570
85
- src/cli/utils/remote_template.py,sha256=RYphQS1IZfzzgtgWJOLdgie0S8HtEWjr2wikyI2doTc,10454
86
- src/cli/utils/template.py,sha256=ciElaBHEMBLYIzZJLQwNe_rOc0C_HqJfEGJ6z9p1ep4,34320
90
+ src/cli/utils/remote_template.py,sha256=iJDocC9AiQd0yfqzj6F0pDrt2QHMPKU66FLlWFkNfqM,10526
91
+ src/cli/utils/template.py,sha256=oVRY0qaNynrSadvVDJHrth3m-_yw4uisGhuKEdm9PbM,36059
87
92
  src/cli/utils/version.py,sha256=F4udQmzniPStqWZFIgnv3Qg3l9non4mfy2An-Oveqmc,2916
88
93
  src/data_ingestion/README.md,sha256=LNxSQoJW9JozK-TbyGQLj5L_MGWNwrfLk6V6RmQ2oBQ,4032
89
94
  src/data_ingestion/pyproject.toml,sha256=-1Mf2QB8K70ICQV5UPZDpf-fN3UwEQLVzQyxfakCSTY,445
@@ -100,11 +105,11 @@ src/deployment_targets/agent_engine/tests/load_test/README.md,sha256=aQP7nDAqd2j
100
105
  src/deployment_targets/agent_engine/tests/load_test/load_test.py,sha256=USzS89bQ4qHVoQynDRSRShKzeXf1MJ0MBV4FpV40vrI,4249
101
106
  src/deployment_targets/agent_engine/tests/load_test/.results/.placeholder,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
102
107
  src/deployment_targets/cloud_run/Dockerfile,sha256=CuhR3MuaRO2R7XrKPgNc5Oi7pv5JpJqgR8Nid0Tnsag,891
103
- src/deployment_targets/cloud_run/app/server.py,sha256=dITsPFLccQxAXCSeAVNcAS9muBcnzEax6QRNINYhnp8,5879
104
- src/deployment_targets/cloud_run/deployment/terraform/service.tf,sha256=T3qVGn_c1oR5dS4XvDYxylK3FPC9FuYIx51kTE2c3xA,10299
105
- src/deployment_targets/cloud_run/deployment/terraform/dev/service.tf,sha256=C4Yy8Q_HKaCrgCo-JV8CgyTpznPKApUJnhzG7kk8u_A,6548
106
- src/deployment_targets/cloud_run/tests/integration/test_server_e2e.py,sha256=CZpnpGcCvU4yI0NYGBq1Xfa-NpqTkPuWG7s8FuCEf7I,7896
107
- src/deployment_targets/cloud_run/tests/load_test/README.md,sha256=pfBZOSem-zs1-3D0dD_Gmf70ueW6GNf0sevsrZdAOz8,2808
108
+ src/deployment_targets/cloud_run/app/server.py,sha256=4e4BuTMOneQKxStQOMwBHPXWSKNhVGpVOtgKn2bhoZE,6630
109
+ src/deployment_targets/cloud_run/deployment/terraform/service.tf,sha256=TwprbgxUGBbPLQH8vjTtYoC0F2S8105AC_VsNqNrAvs,10342
110
+ src/deployment_targets/cloud_run/deployment/terraform/dev/service.tf,sha256=3AUsT5d8YaFtRa1Skrq5l8tlGEIb8Kk94TolykqmQxg,6591
111
+ src/deployment_targets/cloud_run/tests/integration/test_server_e2e.py,sha256=6gtRbCxlrsnvHdOFq8c_B_xowo49CJxThUeVjtQdTew,9238
112
+ src/deployment_targets/cloud_run/tests/load_test/README.md,sha256=k-PBN6HE9wgSRFb81sSiXA8h5Li6KYyIUSwDj6yntHU,2740
108
113
  src/deployment_targets/cloud_run/tests/load_test/load_test.py,sha256=eVhqX8GtiDsIuZxMJAF2ivXML0xHDWDbriYsHZjAQZE,4212
109
114
  src/deployment_targets/cloud_run/tests/load_test/.results/.placeholder,sha256=ZbWpSgDo8bT33PstD_73aQSeN_0oo0F104NMUGuZ8lE,14903
110
115
  src/frontends/adk_gemini_fullstack/frontend/components.json,sha256=OUAALKbVpmIHQ16HcK1BgLBbVf_rV7s08PuGqgCFJ-o,423
@@ -132,7 +137,7 @@ src/frontends/adk_gemini_fullstack/frontend/src/components/ui/scroll-area.tsx,sh
132
137
  src/frontends/adk_gemini_fullstack/frontend/src/components/ui/select.tsx,sha256=l1CSyVqn6zCovoC-r4HmmUFMWEMAUTuOEZqBK5dQP0g,6231
133
138
  src/frontends/adk_gemini_fullstack/frontend/src/components/ui/tabs.tsx,sha256=Epvn4JDzNmP9tw9Zik5yzxTvALO4wfP8U2PjyvToglw,1951
134
139
  src/frontends/adk_gemini_fullstack/frontend/src/components/ui/textarea.tsx,sha256=GS4IJIjRF5CzN78SrQlJzapWlknrV673AghYBFvLx_Y,755
135
- src/frontends/live_api_react/frontend/package-lock.json,sha256=cRmNP68qotvdTypAOU-UZi65ZSai4KTwxYvCYep9LQs,734245
140
+ src/frontends/live_api_react/frontend/package-lock.json,sha256=_vWIfornMhB4lrRIwUmy4CqKGINCKjeUuYcTw2Sc_IY,734344
136
141
  src/frontends/live_api_react/frontend/package.json,sha256=OBOzzDiDiESPzmbLDlZ6KM1Trit71vXdP692dI-g9Uo,1381
137
142
  src/frontends/live_api_react/frontend/tsconfig.json,sha256=cyqEhf7-Yydz-PX8_cuF8JpsyC363NDTNkrmCk0sKAo,595
138
143
  src/frontends/live_api_react/frontend/public/favicon.ico,sha256=FY9oTN01RzaJ2lZ1rCjNXsEfT1gWZJA3fPx0QMBlMCU,15086
@@ -169,40 +174,37 @@ src/frontends/live_api_react/frontend/src/utils/store-logger.ts,sha256=YxS0TjiGn
169
174
  src/frontends/live_api_react/frontend/src/utils/utils.ts,sha256=qQIhLzfyCBLecU0ksQCKIbD3cIflb0hxt0SPZGdYFEo,2457
170
175
  src/frontends/live_api_react/frontend/src/utils/worklets/audio-processing.ts,sha256=ULgnXphZUfbHkRhGoPT_670WHjzaXJwWgYU0ISQRSXI,1979
171
176
  src/frontends/live_api_react/frontend/src/utils/worklets/vol-meter.ts,sha256=DEXn9ywn7N_tqKBhQ9eUxvWCWqteyfT-Q0dwjbvjjpY,1780
172
- src/frontends/streamlit/frontend/side_bar.py,sha256=VeyNV2O94uicTajVYS-jMkUAUPMMrQA9o8_lYTurKKc,9025
177
+ src/frontends/streamlit/frontend/side_bar.py,sha256=XKiC8RtJbx5f3d4CKsTvNFKK0X4o6VzTYQCWE4QUNb4,9043
173
178
  src/frontends/streamlit/frontend/streamlit_app.py,sha256=O-mF9-0nSL220mZSohKK6QrdSiaRsUJL1o_XeKdj8zo,9868
174
179
  src/frontends/streamlit/frontend/style/app_markdown.py,sha256=4H9GGlaOIbG_4T4QvHyTMfoeumJze7cZ2VuGIv39wFo,1050
175
- src/frontends/streamlit/frontend/utils/chat_utils.py,sha256=Z0OYQu-14_d9tDmH9Z4Vvi8xpSUEm9vuPZ8wmFgl4sQ,2262
176
- src/frontends/streamlit/frontend/utils/local_chat_history.py,sha256=9wc8L8j4tk10DBPQdV64kdZvqE1fHxC2esK8szid0l8,4741
180
+ src/frontends/streamlit/frontend/utils/chat_utils.py,sha256=YFN9wuHn4GJWNJQxUkq1uFJ3SqIjNZV2nkTDOPDac4o,2280
181
+ src/frontends/streamlit/frontend/utils/local_chat_history.py,sha256=1dcF3aPu6hT8f819-ppkVYUg20mnlUNNOnTpJ5yCcXE,4777
177
182
  src/frontends/streamlit/frontend/utils/message_editing.py,sha256=YWoPe2KeWMuL3YVTm0am6MK3kzjEIYVmdkdwTQpmGdQ,2263
178
183
  src/frontends/streamlit/frontend/utils/multimodal_utils.py,sha256=v6YbCkz_YcnEo-9YvRjwBNt0SzU4M39bYxJGmKk69vE,7313
179
184
  src/frontends/streamlit/frontend/utils/stream_handler.py,sha256=-XVRfLH6ck1KP6NS4vrhcvPyZe6z3NLHliEg17s9jjo,12551
180
185
  src/frontends/streamlit/frontend/utils/title_summary.py,sha256=B0cadS_KPW-tsbABauI4J681aqjEtuKFDa25e9R1WKc,3030
181
186
  src/resources/containers/data_processing/Dockerfile,sha256=VoB9d5yZiiWnqRfWrIq0gGNMzZg-eVy733OgP72ZgO0,950
182
187
  src/resources/containers/e2e-tests/Dockerfile,sha256=yA3HxeX0HNpl8B4oEQUICCVZDCXdRn2Igmii4jt-r7k,1895
183
- src/resources/docs/adk-cheatsheet.md,sha256=KTCdM7hOvsv1-GgwEBMMU6kLk3WHQ69RAs6VWltNaDA,58722
188
+ src/resources/docs/adk-cheatsheet.md,sha256=C3xb_dEWWp7iROLRVb0iTBGmJ9uAbreF1j6VgZoS-TA,58739
184
189
  src/resources/idx/idx-template.json,sha256=07OQZCPp45Iqor2O7Tm1e1Gmsdd-AmmUofSvA7y-oRs,793
185
190
  src/resources/idx/idx-template.nix,sha256=sesHGev_PYtVDg0J5tHkg0OO7IR1Bz2iAtl_if3Ar3M,892
186
191
  src/resources/idx/.idx/dev.nix,sha256=XQ4T1xt5I-8SVwnI37v56RFFlxa58Ko-a9G2-oelYAI,1602
187
- src/resources/locks/uv-adk_base-agent_engine.lock,sha256=hK9YQfIRT6kfSlFUBrhUEXeXZ3IS2muNV8T3lkihQAY,483186
188
- src/resources/locks/uv-adk_base-cloud_run.lock,sha256=6t7zeqDFtMyPFrIiF6Xo1p4POyyYEnc6pyUtkHzf2EA,637362
189
- src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock,sha256=hK9YQfIRT6kfSlFUBrhUEXeXZ3IS2muNV8T3lkihQAY,483186
190
- src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock,sha256=6t7zeqDFtMyPFrIiF6Xo1p4POyyYEnc6pyUtkHzf2EA,637362
191
- src/resources/locks/uv-agentic_rag-agent_engine.lock,sha256=1eA8gC_Y42ooUbJ4JxAG5n2cbHHKUBZe6D4FItc_Mvg,541123
192
- src/resources/locks/uv-agentic_rag-cloud_run.lock,sha256=j8vpv7fa0ndEPYKzG71vkwZmHQ8f5AdtTqb2WwlgzXc,714995
193
- src/resources/locks/uv-crewai_coding_crew-agent_engine.lock,sha256=EagJM13n7X8vqcE3HO7rF-Z2jMEobFlWPZjOqEEW_Fo,813064
194
- src/resources/locks/uv-crewai_coding_crew-cloud_run.lock,sha256=WzCE7940FbtzjVnpy5vPe4Mp7JA9nQvE2ROuWmhEHzc,1060934
195
- src/resources/locks/uv-langgraph_base_react-agent_engine.lock,sha256=b9wpOgH6uqdFTDfCxxfN1dVCH1ZFb_SJhhZh51fkxBE,681721
196
- src/resources/locks/uv-langgraph_base_react-cloud_run.lock,sha256=zmX9dyHsaOt62LoItbhn1h7BiyGqdk-07Mbf8GEvxU0,899355
197
- src/resources/locks/uv-live_api-cloud_run.lock,sha256=JsTYkungSDMWm756YxXmHXJ2LNO9dhS8DEBTJTuIquk,822914
198
- src/resources/setup_cicd/cicd_variables.tf,sha256=PMflYe1TzQi63LORHkmeCktTYzXFplJgxffNH4DtuAQ,1244
199
- src/resources/setup_cicd/github.tf,sha256=V2XZ7bKdJ9fzibsjIrI-loHQ1eQbfjNWVPLDPIAUeTA,2807
200
- src/resources/setup_cicd/providers.tf,sha256=Km4z6IJt7x7PLaa0kyZbBrO2m3lpuIJZFD5jB7QBfF0,1122
192
+ src/resources/locks/uv-adk_base-agent_engine.lock,sha256=CEtUg1T6MD5lcFlrjCVc7GH6EqFFhK_zlg9HAXackd0,485260
193
+ src/resources/locks/uv-adk_base-cloud_run.lock,sha256=bHEgHHev67STvqa8-qiwRMqqXEIsae_yzUwO0PLUhoQ,639696
194
+ src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock,sha256=CEtUg1T6MD5lcFlrjCVc7GH6EqFFhK_zlg9HAXackd0,485260
195
+ src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock,sha256=bHEgHHev67STvqa8-qiwRMqqXEIsae_yzUwO0PLUhoQ,639696
196
+ src/resources/locks/uv-agentic_rag-agent_engine.lock,sha256=mT5kX6pvH3e6IpwAh9PGP1-p0UqeRO8ErjlVZdpAhQw,543152
197
+ src/resources/locks/uv-agentic_rag-cloud_run.lock,sha256=5-VNslpOWkZtDUeHIrT8xDt8egWUWY9m1URvbV7by_o,717269
198
+ src/resources/locks/uv-crewai_coding_crew-agent_engine.lock,sha256=s60k9WkDVfhrnGEZk822Htf0q6_F0UcUiHNc22h0jYo,800736
199
+ src/resources/locks/uv-crewai_coding_crew-cloud_run.lock,sha256=RERjilGiy-u4qfbvWhGF3dM67eV3q_2TgtdCzMi-gxA,1047819
200
+ src/resources/locks/uv-langgraph_base_react-agent_engine.lock,sha256=s8WYziB641WMfPVS-O_DXnOpdcFNRMEIIdF5RM2XUek,683711
201
+ src/resources/locks/uv-langgraph_base_react-cloud_run.lock,sha256=zeCX1ofox1kok8AsNRARfDuDb2kE9Ok9TXyCL1VdUyw,901626
202
+ src/resources/locks/uv-live_api-cloud_run.lock,sha256=w6Zd77jiEPsWLYZcNscE_jFA_eOzYeEa360zRRGI20M,822206
201
203
  src/utils/generate_locks.py,sha256=6V1B8V2BEuevWnXUsxZVTrLjXwFRII8UfsIGrQqZxVs,4320
202
204
  src/utils/lock_utils.py,sha256=IFOMUWtb-ypm2Y8w8J5y2oI_-MaPuwPF_JOAAlnNudA,2275
203
205
  src/utils/watch_and_rebuild.py,sha256=vP4yIiA7E_lj5sfQdJUl8TXas6V7msDg8XWUutAC05Q,6679
204
- agent_starter_pack-0.9.2.dist-info/METADATA,sha256=bC09qQ-oHxiJGHYA-3aa1AaSE42t6IIa_Y2BE3Vd33o,11138
205
- agent_starter_pack-0.9.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
206
- agent_starter_pack-0.9.2.dist-info/entry_points.txt,sha256=U7uCxR7YulIhZ0L8R8Hui0Bsy6J7oyESBeDYJYMrQjA,56
207
- agent_starter_pack-0.9.2.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
208
- agent_starter_pack-0.9.2.dist-info/RECORD,,
206
+ agent_starter_pack-0.10.0.dist-info/METADATA,sha256=EV90lF4GnBQ0AsEv4iU0KbexfsVzF58rxOd52y7ASa4,11178
207
+ agent_starter_pack-0.10.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
208
+ agent_starter_pack-0.10.0.dist-info/entry_points.txt,sha256=U7uCxR7YulIhZ0L8R8Hui0Bsy6J7oyESBeDYJYMrQjA,56
209
+ agent_starter_pack-0.10.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
210
+ agent_starter_pack-0.10.0.dist-info/RECORD,,
@@ -18,7 +18,7 @@ settings:
18
18
  requires_data_ingestion: false
19
19
  requires_session: true
20
20
  deployment_targets: ["agent_engine", "cloud_run"]
21
- extra_dependencies: ["google-adk~=1.6.0"]
21
+ extra_dependencies: ["google-adk~=1.8.0"]
22
22
  tags: ["adk"]
23
23
  frontend_type: "None"
24
24
 
@@ -18,7 +18,7 @@ settings:
18
18
  requires_data_ingestion: false
19
19
  requires_session: true
20
20
  deployment_targets: ["agent_engine", "cloud_run"]
21
- extra_dependencies: ["google-adk~=1.6.0"]
21
+ extra_dependencies: ["google-adk~=1.8.0"]
22
22
  tags: ["adk"]
23
23
  frontend_type: "adk_gemini_fullstack"
24
24
  commands:
@@ -19,7 +19,7 @@ settings:
19
19
  requires_session: true
20
20
  deployment_targets: ["agent_engine", "cloud_run"]
21
21
  extra_dependencies: [
22
- "google-adk~=1.6.0",
22
+ "google-adk~=1.8.0",
23
23
  "langchain-google-vertexai~=2.0.7",
24
24
  "langchain~=0.3.24",
25
25
  "langchain-core~=0.3.55",
@@ -19,5 +19,5 @@ The agent implements the following architecture:
19
19
  - **Automated Data Ingestion Pipeline:** Automates the process of ingesting data from input sources.
20
20
  - **Custom Embeddings:** Generates embeddings using Vertex AI Embeddings and incorporates them into your data for enhanced semantic search.
21
21
  - **Terraform Deployment:** Ingestion pipeline is instantiated with Terraform alongside the rest of the infrastructure of the starter pack.
22
- - **Cloud Build Integration:** Deployment of ingestion pipelines is added to the CD pipelines of the starter pack.
22
+ - **CI/CD Integration:** Deployment of ingestion pipelines is added to the CD pipelines of the starter pack.
23
23
  - **Customizable Code:** Easily adapt and customize the code to fit your specific application needs and data sources.
@@ -66,6 +66,7 @@ def start_server() -> subprocess.Popen[str]:
66
66
  text=True,
67
67
  bufsize=1,
68
68
  env=env,
69
+ encoding="utf-8",
69
70
  )
70
71
 
71
72
  # Start threads to log stdout and stderr in real-time
@@ -107,7 +108,12 @@ def server_fixture(request: Any) -> Iterator[subprocess.Popen[str]]:
107
108
  def stop_server() -> None:
108
109
  logger.info("Stopping server process")
109
110
  server_process.terminate()
110
- server_process.wait()
111
+ try:
112
+ server_process.wait(timeout=5)
113
+ except subprocess.TimeoutExpired:
114
+ logger.warning("Server process did not terminate, killing it")
115
+ server_process.kill()
116
+ server_process.wait()
111
117
  logger.info("Server process stopped")
112
118
 
113
119
  request.addfinalizer(stop_server)
llm.txt CHANGED
@@ -67,9 +67,10 @@ agent-starter-pack create PROJECT_NAME [OPTIONS]
67
67
  **Key Options:**
68
68
  * `-a, --agent`: Agent template (e.g., `adk_base`, `agentic_rag`).
69
69
  * `-d, --deployment-target`: Target deployment environment (`cloud_run` or `agent_engine`).
70
+ * `--cicd-runner`: CI/CD pipeline runner (`google_cloud_build` or `github_actions`).
70
71
  * `-ds, --datastore`: For RAG agents, the datastore (`vertex_ai_search` or `vertex_ai_vector_search`).
71
72
  * `-i, --include-data-ingestion`: Include data ingestion pipeline scaffolding.
72
- * `--session-type`: For agents requiring session management on Cloud Run, specifies the storage type (`in_memory` or `alloydb`).
73
+ * `--session-type`: For agents requiring session management on Cloud Run, specifies the storage type (`in_memory`, `alloydb`, `agent_engine`).
73
74
  * `--region`: GCP region (e.g., `us-central1`).
74
75
  * `--auto-approve`: **Skips all interactive prompts (crucial for automation).**
75
76
  * `--debug`: Enables debug logging during creation.
@@ -165,7 +166,7 @@ Before setting up full CI/CD, you can deploy to a personal cloud dev environment
165
166
  3. **Deploy Backend:** `make backend` (builds and deploys the agent).
166
167
 
167
168
  ### 3. Automated Production-Ready Deployment with CI/CD
168
- For reliable deployments, the `setup-cicd` command streamlines the entire process. It creates a GitHub repo, connects it to Cloud Build, provisions staging/prod infrastructure, and configures deployment triggers.
169
+ For reliable deployments, the `setup-cicd` command streamlines the entire process. It creates a GitHub repo, connects it to your chosen CI/CD runner (Google Cloud Build or GitHub Actions), provisions staging/prod infrastructure, and configures deployment triggers.
169
170
 
170
171
  **Automated CI/CD Setup Example (Recommended):**
171
172
  ```bash
@@ -4,7 +4,7 @@ install:
4
4
  {%- if cookiecutter.settings.get("commands", {}).get("override", {}).get("install") %}
5
5
  {{cookiecutter.settings.get("commands", {}).get("override", {}).get("install")}}
6
6
  {%- else %}
7
- uv sync --dev{% if cookiecutter.agent_name != 'live_api' and "adk" not in cookiecutter.tags %} --extra streamlit{%- endif %} --extra jupyter{% if cookiecutter.agent_name == 'live_api' %} && npm --prefix frontend install{%- endif %}
7
+ uv sync --dev{% if cookiecutter.agent_name != 'live_api' and "adk" not in cookiecutter.tags %} --extra streamlit{%- endif %} --extra jupyter{% if cookiecutter.agent_name == 'live_api' %} && (cd frontend && npm install){%- endif %}
8
8
  {%- endif %}
9
9
 
10
10
  {%- if cookiecutter.settings.get("commands", {}).get("extra", {}) %}
@@ -44,7 +44,7 @@ playground:
44
44
  uv run uvicorn app.server:app --host 0.0.0.0 --port 8000 --reload &
45
45
  {%- endif %}
46
46
  {%- if cookiecutter.agent_name == 'live_api' %}
47
- PORT=8501 npm --prefix frontend start
47
+ (cd frontend && PORT=8501 npm start)
48
48
  {%- else %}
49
49
  {% if cookiecutter.deployment_target == 'agent_engine' %}PYTHONPATH=. {% endif %}uv run streamlit run frontend/streamlit_app.py --browser.serverAddress=localhost --server.enableCORS=false --server.enableXsrfProtection=false
50
50
  {%- endif %}
@@ -64,6 +64,7 @@ backend:
64
64
  --project $$PROJECT_ID \
65
65
  --region "us-central1" \
66
66
  --no-allow-unauthenticated \
67
+ --no-cpu-throttling \
67
68
  --labels "created-by=adk" \
68
69
  --set-env-vars \
69
70
  "COMMIT_SHA=$(shell git rev-parse HEAD){%- if cookiecutter.data_ingestion %}{%- if cookiecutter.datastore_type == "vertex_ai_search" %},DATA_STORE_ID={{cookiecutter.project_name}}-datastore,DATA_STORE_REGION=us{%- elif cookiecutter.datastore_type == "vertex_ai_vector_search" %},VECTOR_SEARCH_INDEX={{cookiecutter.project_name}}-vector-search,VECTOR_SEARCH_INDEX_ENDPOINT={{cookiecutter.project_name}}-vector-search-endpoint,VECTOR_SEARCH_BUCKET=$$PROJECT_ID-{{cookiecutter.project_name}}-vs{%- endif %}{%- endif %}" \
@@ -85,7 +86,7 @@ local-backend:
85
86
 
86
87
  # Start the frontend UI for development
87
88
  ui:
88
- PORT=8501 npm --prefix frontend start
89
+ (cd frontend && PORT=8501 npm start)
89
90
  {%- endif %}
90
91
  {%- endif %}
91
92
 
@@ -17,6 +17,11 @@ This project is organized as follows:
17
17
  │ ├── agent_engine_app.py # Agent Engine application logic
18
18
  {%- endif %}
19
19
  │ └── utils/ # Utility functions and helpers
20
+ {%- if cookiecutter.cicd_runner == 'google_cloud_build' %}
21
+ ├── .cloudbuild/ # CI/CD pipeline configurations for Google Cloud Build
22
+ {%- elif cookiecutter.cicd_runner == 'github_actions' %}
23
+ ├── .github/ # CI/CD pipeline configurations for GitHub Actions
24
+ {%- endif %}
20
25
  ├── deployment/ # Infrastructure and deployment scripts
21
26
  ├── notebooks/ # Jupyter notebooks for prototyping and evaluation
22
27
  ├── tests/ # Unit, integration, and load tests
@@ -159,7 +164,7 @@ This template follows a "bring your own agent" approach - you focus on your busi
159
164
  1. **Prototype:** Build your Generative AI Agent using the intro notebooks in `notebooks/` for guidance. Use Vertex AI Evaluation to assess performance.
160
165
  2. **Integrate:** Import your agent into the app by editing `app/agent.py`.
161
166
  3. **Test:** Explore your agent functionality using the Streamlit playground with `make playground`. The playground offers features like chat history, user feedback, and various input types, and automatically reloads your agent on code changes.
162
- 4. **Deploy:** Set up and initiate the CI/CD pipelines, customizing tests as necessary. Refer to the [deployment section](#deployment) for comprehensive instructions. For streamlined infrastructure deployment, simply run `uvx agent-starter-pack setup-cicd`. Check out the [`agent-starter-pack setup-cicd` CLI command](https://googlecloudplatform.github.io/agent-starter-pack/cli/setup_cicd.html). Currently only supporting Github.
167
+ 4. **Deploy:** Set up and initiate the CI/CD pipelines, customizing tests as necessary. Refer to the [deployment section](#deployment) for comprehensive instructions. For streamlined infrastructure deployment, simply run `uvx agent-starter-pack setup-cicd`. Check out the [`agent-starter-pack setup-cicd` CLI command](https://googlecloudplatform.github.io/agent-starter-pack/cli/setup_cicd.html). Currently supports GitHub with both Google Cloud Build and GitHub Actions as CI/CD runners.
163
168
  5. **Monitor:** Track performance and gather insights using Cloud Logging, Tracing, and the Looker Studio dashboard to iterate on your application.
164
169
 
165
170
  The project includes a `GEMINI.md` file that provides context for AI tools like Gemini CLI when asking questions about your template.
@@ -167,7 +172,7 @@ The project includes a `GEMINI.md` file that provides context for AI tools like
167
172
 
168
173
  ## Deployment
169
174
 
170
- > **Note:** For a streamlined one-command deployment of the entire CI/CD pipeline and infrastructure using Terraform, you can use the [`agent-starter-pack setup-cicd` CLI command](https://googlecloudplatform.github.io/agent-starter-pack/cli/setup_cicd.html). Currently only supporting Github.
175
+ > **Note:** For a streamlined one-command deployment of the entire CI/CD pipeline and infrastructure using Terraform, you can use the [`agent-starter-pack setup-cicd` CLI command](https://googlecloudplatform.github.io/agent-starter-pack/cli/setup_cicd.html). Currently supports GitHub with both Google Cloud Build and GitHub Actions as CI/CD runners.
171
176
 
172
177
  ### Dev Environment
173
178
 
@@ -1,126 +1,11 @@
1
- # Deployment README.md
1
+ # Deployment
2
2
 
3
- This folder contains the infrastructure-as-code and CI/CD pipeline configurations for deploying a conversational Generative AI application on Google Cloud.
3
+ This directory contains the Terraform configurations for provisioning the necessary Google Cloud infrastructure for your agent.
4
4
 
5
- The application leverages [**Terraform**](http://terraform.io) to define and provision the underlying infrastructure, while [**Cloud Build**](https://cloud.google.com/build/) orchestrates the continuous integration and continuous deployment (CI/CD) pipeline.
5
+ The recommended way to deploy the infrastructure and set up the CI/CD pipeline is by using the `agent-starter-pack setup-cicd` command from the root of your project.
6
6
 
7
- ## Deployment Workflow
7
+ However, for a more hands-on approach, you can always apply the Terraform configurations manually for a do-it-yourself setup.
8
8
 
9
- ![Deployment Workflow](https://storage.googleapis.com/github-repo/generative-ai/sample-apps/e2e-gen-ai-app-starter-pack/deployment_workflow.png)
9
+ For detailed information on the deployment process, infrastructure, and CI/CD pipelines, please refer to the official documentation:
10
10
 
11
- **Description:**
12
-
13
- 1. CI Pipeline (`deployment/ci/pr_checks.yaml`):
14
-
15
- - Triggered on pull request creation/update
16
- - Runs unit and integration tests
17
-
18
- 2. CD Pipeline (`deployment/cd/staging.yaml`):
19
-
20
- - Triggered on merge to `main` branch
21
- - Builds and pushes application to Artifact Registry
22
- - Deploys to staging environment
23
- - Performs load testing
24
-
25
- 3. Production Deployment (`deployment/cd/deploy-to-prod.yaml`):
26
- - Triggered after successful staging deployment
27
- - Requires manual approval
28
- - Deploys to production environment
29
-
30
- ## Setup
31
-
32
- > **Note:** For a streamlined one-command deployment of the entire CI/CD pipeline and infrastructure using Terraform, you can use the [`uvx agent-starter-pack setup-cicd` CLI command](https://googlecloudplatform.github.io/agent-starter-pack/cli/setup_cicd.html). Currently only supporting Github.
33
-
34
- **Prerequisites:**
35
-
36
- 1. A set of Google Cloud projects:
37
- - Staging project
38
- - Production project
39
- - CI/CD project (can be the same as staging or production)
40
- 2. Terraform installed on your local machine
41
- 3. Enable required APIs in the CI/CD project. This will be required for the Terraform deployment:
42
-
43
- ```bash
44
- gcloud config set project $YOUR_CI_CD_PROJECT_ID
45
- gcloud services enable serviceusage.googleapis.com cloudresourcemanager.googleapis.com cloudbuild.googleapis.com secretmanager.googleapis.com
46
- ```
47
-
48
- ## Step-by-Step Guide
49
-
50
- 1. **Create a Git Repository using your favorite Git provider (GitHub, GitLab, Bitbucket, etc.)**
51
-
52
- 2. **Connect Your Repository to Cloud Build**
53
- For detailed instructions, visit: [Cloud Build Repository Setup](https://cloud.google.com/build/docs/repositories#whats_next).<br>
54
-
55
- ![Alt text](https://storage.googleapis.com/github-repo/generative-ai/sample-apps/e2e-gen-ai-app-starter-pack/connection_cb.gif)
56
-
57
- 3. **Configure Terraform Variables**
58
-
59
- - Edit [`deployment/terraform/vars/env.tfvars`](../terraform/vars/env.tfvars) with your Google Cloud settings.
60
-
61
- | Variable | Description | Required |
62
- | ---------------------- | --------------------------------------------------------------- | :------: |
63
- | project_name | Project name used as a base for resource naming | Yes |
64
- | prod_project_id | **Production** Google Cloud Project ID for resource deployment. | Yes |
65
- | staging_project_id | **Staging** Google Cloud Project ID for resource deployment. | Yes |
66
- | cicd_runner_project_id | Google Cloud Project ID where CI/CD pipelines will execute. | Yes |
67
- | region | Google Cloud region for resource deployment. | Yes |
68
- | host_connection_name | Name of the host connection you created in Cloud Build | Yes |
69
- | repository_name | Name of the repository you added to Cloud Build | Yes |
70
-
71
- Other optional variables may include: telemetry and feedback log filters, service account roles, and for projects requiring data ingestion: pipeline cron schedule, pipeline roles, and datastore-specific configurations.
72
-
73
- 4. **Deploy Infrastructure with Terraform**
74
-
75
- - Open a terminal and navigate to the Terraform directory:
76
-
77
- ```bash
78
- cd deployment/terraform
79
- ```
80
-
81
- - Initialize Terraform:
82
-
83
- ```bash
84
- terraform init
85
- ```
86
-
87
- - Apply the Terraform configuration:
88
-
89
- ```bash
90
- terraform apply --var-file vars/env.tfvars
91
- ```
92
-
93
- - Type 'yes' when prompted to confirm
94
-
95
- After completing these steps, your infrastructure will be set up and ready for deployment!
96
-
97
- ## Dev Deployment
98
-
99
- For End-to-end testing of the application, including tracing and feedback sinking to BigQuery, without the need to trigger a CI/CD pipeline.
100
-
101
- First, enable required Google Cloud APIs:
102
-
103
- ```bash
104
- gcloud config set project <your-dev-project-id>
105
- gcloud services enable serviceusage.googleapis.com cloudresourcemanager.googleapis.com
106
- ```
107
-
108
- After you edited the relative [`env.tfvars` file](../terraform/dev/vars/env.tfvars), follow the following instructions:
109
-
110
- ```bash
111
- cd deployment/terraform/dev
112
- terraform init
113
- terraform apply --var-file vars/env.tfvars
114
- ```
115
-
116
- Then deploy the application using the following command (from the root of the repository):
117
-
118
- ```bash
119
- make backend
120
- ```
121
-
122
- ### End-to-end Demo video
123
-
124
- <a href="https://storage.googleapis.com/github-repo/generative-ai/sample-apps/e2e-gen-ai-app-starter-pack/template_deployment_demo.mp4">
125
- <img src="https://storage.googleapis.com/github-repo/generative-ai/sample-apps/e2e-gen-ai-app-starter-pack/preview_video.png" alt="Watch the video" width="300"/>
126
- </a>
11
+ **[Agent Starter Pack Deployment Guide](https://googlecloudplatform.github.io/agent-starter-pack/guide/deployment.html)**