agent-starter-pack 0.7.1__py3-none-any.whl → 0.9.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 (64) hide show
  1. {agent_starter_pack-0.7.1.dist-info → agent_starter_pack-0.9.0.dist-info}/METADATA +7 -6
  2. {agent_starter_pack-0.7.1.dist-info → agent_starter_pack-0.9.0.dist-info}/RECORD +63 -59
  3. agents/README.md +7 -0
  4. agents/adk_base/{template/.templateconfig.yaml → .template/templateconfig.yaml} +3 -1
  5. agents/adk_base/notebooks/adk_app_testing.ipynb +8 -6
  6. agents/adk_gemini_fullstack/{template/.templateconfig.yaml → .template/templateconfig.yaml} +3 -2
  7. agents/adk_gemini_fullstack/notebooks/adk_app_testing.ipynb +8 -6
  8. agents/agentic_rag/{template/.templateconfig.yaml → .template/templateconfig.yaml} +2 -1
  9. agents/agentic_rag/notebooks/adk_app_testing.ipynb +8 -6
  10. agents/crewai_coding_crew/{template/.templateconfig.yaml → .template/templateconfig.yaml} +1 -1
  11. llm.txt +7 -0
  12. src/base_template/Makefile +5 -1
  13. src/base_template/README.md +2 -2
  14. src/base_template/deployment/cd/deploy-to-prod.yaml +1 -16
  15. src/base_template/deployment/cd/staging.yaml +4 -19
  16. src/base_template/deployment/terraform/apis.tf +2 -2
  17. src/base_template/deployment/terraform/build_triggers.tf +5 -5
  18. src/base_template/deployment/terraform/dev/apis.tf +8 -1
  19. src/base_template/deployment/terraform/dev/variables.tf +3 -1
  20. src/base_template/deployment/terraform/iam.tf +8 -8
  21. src/base_template/deployment/terraform/locals.tf +9 -2
  22. src/base_template/deployment/terraform/log_sinks.tf +2 -2
  23. src/base_template/deployment/terraform/service_accounts.tf +3 -3
  24. src/base_template/deployment/terraform/storage.tf +7 -7
  25. src/base_template/deployment/terraform/variables.tf +3 -0
  26. src/base_template/pyproject.toml +4 -3
  27. src/cli/commands/create.py +191 -41
  28. src/cli/commands/list.py +158 -0
  29. src/cli/commands/setup_cicd.py +2 -2
  30. src/cli/main.py +2 -0
  31. src/cli/utils/cicd.py +2 -2
  32. src/cli/utils/remote_template.py +254 -0
  33. src/cli/utils/template.py +134 -25
  34. src/deployment_targets/agent_engine/app/agent_engine_app.py +7 -7
  35. src/deployment_targets/agent_engine/tests/load_test/README.md +1 -6
  36. src/deployment_targets/agent_engine/tests/load_test/load_test.py +13 -3
  37. src/deployment_targets/cloud_run/Dockerfile +3 -0
  38. src/deployment_targets/cloud_run/app/server.py +18 -0
  39. src/deployment_targets/cloud_run/deployment/terraform/dev/service.tf +231 -0
  40. src/deployment_targets/cloud_run/deployment/terraform/service.tf +360 -0
  41. src/deployment_targets/cloud_run/tests/integration/test_server_e2e.py +8 -5
  42. src/deployment_targets/cloud_run/tests/load_test/README.md +2 -2
  43. src/deployment_targets/cloud_run/tests/load_test/load_test.py +21 -17
  44. src/frontends/adk_gemini_fullstack/frontend/src/App.tsx +2 -3
  45. src/resources/docs/adk-cheatsheet.md +1 -1
  46. src/resources/locks/uv-adk_base-agent_engine.lock +873 -236
  47. src/resources/locks/uv-adk_base-cloud_run.lock +1169 -283
  48. src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock +873 -236
  49. src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock +1169 -283
  50. src/resources/locks/uv-agentic_rag-agent_engine.lock +508 -373
  51. src/resources/locks/uv-agentic_rag-cloud_run.lock +668 -469
  52. src/resources/locks/uv-crewai_coding_crew-agent_engine.lock +582 -587
  53. src/resources/locks/uv-crewai_coding_crew-cloud_run.lock +791 -733
  54. src/resources/locks/uv-langgraph_base_react-agent_engine.lock +587 -478
  55. src/resources/locks/uv-langgraph_base_react-cloud_run.lock +799 -627
  56. src/resources/locks/uv-live_api-cloud_run.lock +803 -603
  57. src/resources/setup_cicd/github.tf +2 -2
  58. src/utils/lock_utils.py +1 -1
  59. src/deployment_targets/cloud_run/uv.lock +0 -6952
  60. {agent_starter_pack-0.7.1.dist-info → agent_starter_pack-0.9.0.dist-info}/WHEEL +0 -0
  61. {agent_starter_pack-0.7.1.dist-info → agent_starter_pack-0.9.0.dist-info}/entry_points.txt +0 -0
  62. {agent_starter_pack-0.7.1.dist-info → agent_starter_pack-0.9.0.dist-info}/licenses/LICENSE +0 -0
  63. /agents/langgraph_base_react/{template/.templateconfig.yaml → .template/templateconfig.yaml} +0 -0
  64. /agents/live_api/{template/.templateconfig.yaml → .template/templateconfig.yaml} +0 -0
@@ -1,17 +1,17 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-starter-pack
3
- Version: 0.7.1
3
+ Version: 0.9.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
7
7
  License-File: LICENSE
8
8
  Requires-Python: >=3.10
9
9
  Requires-Dist: backoff>=2.2.1
10
- Requires-Dist: click~=8.1.7
11
- Requires-Dist: cookiecutter~=2.5.0
10
+ Requires-Dist: click>=8.1.7
11
+ Requires-Dist: cookiecutter~=2.6.0
12
12
  Requires-Dist: google-cloud-aiplatform>=1.87.0
13
- Requires-Dist: pyyaml~=6.0.1
14
- Requires-Dist: rich~=13.7.0
13
+ Requires-Dist: pyyaml>=6.0.1
14
+ Requires-Dist: rich>=13.7.0
15
15
  Provides-Extra: jupyter
16
16
  Requires-Dist: ipykernel>=6.29.5; extra == 'jupyter'
17
17
  Requires-Dist: jupyter; extra == 'jupyter'
@@ -103,7 +103,8 @@ Looking to explore more ADK examples? Check out the [ADK Samples Repository](htt
103
103
  The `agent-starter-pack` offers two key features to accelerate and simplify the development of your agent:
104
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
105
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).
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.
106
+ - **[Remote Templates](docs/guide/remote-templating.md)**: Create and share your own agent starter packs templates from any Git repository.
107
+ - **🤖 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.
107
108
 
108
109
  ## High-Level Architecture
109
110
 
@@ -1,86 +1,89 @@
1
+ agents/README.md,sha256=L8__lIXXjxLTZbkCmTC4taTFUMRVrO3QI2mCKZTdhJM,462
1
2
  agents/adk_base/README.md,sha256=eLf-F9Z4u_mQOchAnUaSrOAHXRSx8wUQN29kkwz1SF4,894
3
+ agents/adk_base/.template/templateconfig.yaml,sha256=CUhOW807Ap2XDk3ZRK-OWP4-tD5fUUr8Nvv4yrOfjJk,923
2
4
  agents/adk_base/app/agent.py,sha256=6Q6QegQDxEaAck989DPIb3ArHMZtw_YJBqhHFqg-UjQ,2182
3
- agents/adk_base/notebooks/adk_app_testing.ipynb,sha256=kWYd-ButNGemupiPDIzhlQO0elxWCwiea0nhmnsW8cg,9619
5
+ agents/adk_base/notebooks/adk_app_testing.ipynb,sha256=wgFzBo7hX393NVzy3ZfZHncs1ptiQbM_8he3XxJu4yM,9763
4
6
  agents/adk_base/notebooks/evaluating_adk_agent.ipynb,sha256=OMTiT3gAFWPvE9pPL8z7tsDwOU-l8wem5wH-OXPPlvk,56805
5
- agents/adk_base/template/.templateconfig.yaml,sha256=EWfw7zqlQsxKrmMdiqwSemIhx3ke6i6a5mqZ3z94KDI,893
6
7
  agents/adk_base/tests/integration/test_agent.py,sha256=VypgpEWrQegJBgc58V-BlIsbqh-Hii-hwmkwcz5feFw,1969
7
8
  agents/adk_gemini_fullstack/README.md,sha256=yQFFcESALj5Q6eweyIyPx__U74obUM88aCBJYNV2UWs,1674
9
+ agents/adk_gemini_fullstack/.template/templateconfig.yaml,sha256=gU0EeLdr2INQDZKeypofUoZw-lcwq3qV6E8AVeowTQg,1716
8
10
  agents/adk_gemini_fullstack/app/agent.py,sha256=NXOkYFxDccJaSq55CTS-UYY8z5-WgBZqexII0Ybzk9c,22662
9
11
  agents/adk_gemini_fullstack/app/config.py,sha256=x--axECPKWW3oLANKz2_4zzHEBIU7if8iYNZRjlTNV0,1563
10
- agents/adk_gemini_fullstack/notebooks/adk_app_testing.ipynb,sha256=kWYd-ButNGemupiPDIzhlQO0elxWCwiea0nhmnsW8cg,9619
12
+ agents/adk_gemini_fullstack/notebooks/adk_app_testing.ipynb,sha256=wgFzBo7hX393NVzy3ZfZHncs1ptiQbM_8he3XxJu4yM,9763
11
13
  agents/adk_gemini_fullstack/notebooks/evaluating_adk_agent.ipynb,sha256=OMTiT3gAFWPvE9pPL8z7tsDwOU-l8wem5wH-OXPPlvk,56805
12
- agents/adk_gemini_fullstack/template/.templateconfig.yaml,sha256=yRLZdEON4faicYe9hklktxv06OCx1sdP9ihuniKuPfU,1658
13
14
  agents/adk_gemini_fullstack/tests/integration/test_agent.py,sha256=VypgpEWrQegJBgc58V-BlIsbqh-Hii-hwmkwcz5feFw,1969
14
15
  agents/agentic_rag/README.md,sha256=mxMLkq6tAghFaDmc2sc2sEQ5vn9kGWdiRxfTykwpLz0,2268
16
+ agents/agentic_rag/.template/templateconfig.yaml,sha256=VC0Ss-QmLjROtSy3Dx_BSDV5xSgvr-yI1doBkKXBjc4,1248
15
17
  agents/agentic_rag/app/agent.py,sha256=tKtzez7vGu6JgMWmZN7QrKkyLBvHu1ondAuICjKoC-g,3983
16
18
  agents/agentic_rag/app/retrievers.py,sha256=qfxwSEixMddvAu4FvUTZAFh1Gdp3RPY65s0Wp6gEFVk,4561
17
19
  agents/agentic_rag/app/templates.py,sha256=8N_uRchwiN7hlH9Y8rdJ1CAtOhpHUWZkXZZ7IU-YJJk,867
18
- agents/agentic_rag/notebooks/adk_app_testing.ipynb,sha256=kWYd-ButNGemupiPDIzhlQO0elxWCwiea0nhmnsW8cg,9619
20
+ agents/agentic_rag/notebooks/adk_app_testing.ipynb,sha256=wgFzBo7hX393NVzy3ZfZHncs1ptiQbM_8he3XxJu4yM,9763
19
21
  agents/agentic_rag/notebooks/evaluating_adk_agent.ipynb,sha256=OMTiT3gAFWPvE9pPL8z7tsDwOU-l8wem5wH-OXPPlvk,56805
20
- agents/agentic_rag/template/.templateconfig.yaml,sha256=xZlSDarlNwppW6gjHXdxQMbUZAVpXwHPalVTS4Zbln8,1223
21
22
  agents/agentic_rag/tests/integration/test_agent.py,sha256=mxsKFyZrwXzIvAoxlqZv2JndM3VTVTKcugRYdF3APr4,2112
22
23
  agents/crewai_coding_crew/README.md,sha256=4No7sfHQVHELARGiT3fWANJzDR0NP48ow4ct3FoPwlA,1672
24
+ agents/crewai_coding_crew/.template/templateconfig.yaml,sha256=q2KH2Hkq7MkGkVup9pIj2E3tosy7paQW2WiEHA2Qw_Y,1051
23
25
  agents/crewai_coding_crew/app/agent.py,sha256=yd-P2Jzx3Do4FQuhwDsok-YRNYFi9Vl8OTqSlbdn4Sw,3260
24
26
  agents/crewai_coding_crew/app/crew/crew.py,sha256=pqeeJ4txP-gcVT3PKEAw2zZ4x8g4cDlnFFbf0_zZRr4,2000
25
27
  agents/crewai_coding_crew/app/crew/config/agents.yaml,sha256=Cn9zTcP3C-8MvlV19cYdlxR0iIs2_FOy2gKOJLUpNRo,1154
26
28
  agents/crewai_coding_crew/app/crew/config/tasks.yaml,sha256=SSFuiSQPhi4dM0V5HdNuMqtN7JJr5RUCMhhBzUkPBpc,1511
27
29
  agents/crewai_coding_crew/notebooks/evaluating_crewai_agent.ipynb,sha256=ifTn4RfrJeYQ8ell9n6VE65ZEfcnKGkMLFG8RBlPK70,57974
28
30
  agents/crewai_coding_crew/notebooks/evaluating_langgraph_agent.ipynb,sha256=PlW41fL-ji9NKkimW6u25YRLGWN2pgoX2G8w5nzIEPE,58737
29
- agents/crewai_coding_crew/template/.templateconfig.yaml,sha256=4SLcpHgDcf_6mjJCxPVciQ002QVz09V04uvbtMLZs4A,1051
30
31
  agents/crewai_coding_crew/tests/integration/test_agent.py,sha256=0uvfmM3FSdESIU7ICb2oqABsQqylQU2PE3UBwbpif-A,1629
31
32
  agents/langgraph_base_react/README.md,sha256=KZQ0e8q9CqnIEiItH9Tc2Ceb2mC3sBcyQUo-ZAmO-zs,482
33
+ agents/langgraph_base_react/.template/templateconfig.yaml,sha256=jHh3WDNT70KMbA2zy3Da_J_jIWeGfeiqIKfUs5B8OBk,1049
32
34
  agents/langgraph_base_react/app/agent.py,sha256=yzCc5JaOJgItoBiZOzHPiSy9aD2HGeGI_pH7nrysSmg,2505
33
35
  agents/langgraph_base_react/notebooks/evaluating_langgraph_agent.ipynb,sha256=PlW41fL-ji9NKkimW6u25YRLGWN2pgoX2G8w5nzIEPE,58737
34
- agents/langgraph_base_react/template/.templateconfig.yaml,sha256=jHh3WDNT70KMbA2zy3Da_J_jIWeGfeiqIKfUs5B8OBk,1049
35
36
  agents/langgraph_base_react/tests/integration/test_agent.py,sha256=wg2Y8V4l7dh7rhWy7Z8zioDW5ILRsz7RZJ-mz0AhK3U,1619
36
37
  agents/live_api/README.md,sha256=c3lu5WguOUBc5hO_UtNZfVhfYxvSzMXuGFICn9M38mU,2897
38
+ agents/live_api/.template/templateconfig.yaml,sha256=DD_hihMsuqmd5VWS18vVGZ3ZGVVpFWVXJ2dU07eKb6k,964
37
39
  agents/live_api/app/agent.py,sha256=dYE2qd64OhL-fOgwzrjqN50LYXAgJ1TWbx6ohqtV5Rc,2434
38
40
  agents/live_api/app/server.py,sha256=ZXriNDl_zo7WDRBke85lyzMsy66qGzPaRXY1FMy4Fdw,7793
39
- agents/live_api/template/.templateconfig.yaml,sha256=DD_hihMsuqmd5VWS18vVGZ3ZGVVpFWVXJ2dU07eKb6k,964
40
41
  agents/live_api/tests/integration/test_server_e2e.py,sha256=D2VETDIyTD2fQyQ6DXwLr-POSYyVzzzcpIFLt5Ppyx4,8398
41
42
  agents/live_api/tests/load_test/load_test.py,sha256=HHZyfC4gqiQtZVF_CbbxENGgWQccMLpwMv0IdoQ6cbQ,1275
42
43
  agents/live_api/tests/unit/test_server.py,sha256=_TjlgQgNkjerIaBGnu8P8_KB8ZlSolDcivALpUOn_Rw,4786
43
- llm.txt,sha256=695MseB6y34Cr3n6du3G2SdwKKa48JGq9KNMp0APHW4,13148
44
+ llm.txt,sha256=DZaO2YqDmvigYzqIvMsNPYilmbNqZfJL9hTicZHpvZc,13561
44
45
  src/base_template/.gitignore,sha256=Fq0w34x4sfbwP4RqDqh6hdHNYRUEsFNI-9XONzLWBIs,2580
45
46
  src/base_template/GEMINI.md,sha256=WzscHWlQeYkKORZ-453P8KM9IHuj1kAxW-69c7Ytuwk,133
46
- src/base_template/Makefile,sha256=037wvhexHIZyWW451D4vkvNnldTznxDFZ0sleUvl8jU,6115
47
- src/base_template/README.md,sha256=GrXssaJK-5Dm3C7-S_mvyPiiYEzQwRTbhbKYg1-Jdxw,10892
48
- src/base_template/pyproject.toml,sha256=B7pnk8dhEWLEqPYQ0wqbbRGAVPZSjnPPP1imoFnilJw,2840
47
+ src/base_template/Makefile,sha256=MEsMvBosWrSVgUPRucTjsxYovl41rQc3d8Vw8dxdPoA,6128
48
+ src/base_template/README.md,sha256=xAz5JXSnhCjXtvw5wSl6AVn6DJBlQIhSl4exyO5N4nc,10929
49
+ src/base_template/pyproject.toml,sha256=TEu9_gZT9tRuV6x8CcVIpC4Lcetbr0mHMPcJAab0aq4,2874
49
50
  src/base_template/app/__init__.py,sha256=UyAgc2l8nkVIUPUzL9hKR7EgzCsc2jSYcOcjHNNmpMU,59
50
51
  src/base_template/app/utils/gcs.py,sha256=jKblaWOGQEigw3esaawcfX178shhZi2Fyk0fJSA4T68,1501
51
52
  src/base_template/app/utils/tracing.py,sha256=2rv1Ukh2jTBENDwoghCItJ28l-Sjz9gMlzdojlVgJa4,6052
52
53
  src/base_template/app/utils/typing.py,sha256=DP5OZC3IGvqA1XbvWt8kI3gyAK3ZjzUSL5Ca17wNeLI,4249
53
54
  src/base_template/deployment/README.md,sha256=qWTCWyEj1bZuny3XyCelXPgljh6yu_GDwfPNUeFoXBY,5245
54
- src/base_template/deployment/cd/deploy-to-prod.yaml,sha256=3NslaDpk4dHNDC594Dsc7Ggboh_4jRixhZ5SYbBCdyM,4376
55
- src/base_template/deployment/cd/staging.yaml,sha256=Fy_Qw2lvA35BQUeSjPsWWfYgOmtvSZSkS38RgT9dZmQ,8004
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
56
57
  src/base_template/deployment/ci/pr_checks.yaml,sha256=VFdF6q_-zETCMlJkJ0znW8T7gCYE59BZNliNPz2Bh18,1517
57
- src/base_template/deployment/terraform/apis.tf,sha256=98vqe53RLtFwnQq_9N1widR8J0c1SGqwhCXp_GohITA,1497
58
- src/base_template/deployment/terraform/build_triggers.tf,sha256=_XDFj6kPd21NmEKKRjpqYIa48P8VHCMVG_6thLqrS0Y,6363
59
- src/base_template/deployment/terraform/iam.tf,sha256=-KrOngRch4gKnPkZy0ybQQq0RW5-TI80tJ-VJLg-AdA,5597
60
- src/base_template/deployment/terraform/locals.tf,sha256=mrmOigExLk5g734-2VodDj8qQUTBq20e7FgQD0KUF8E,1390
61
- src/base_template/deployment/terraform/log_sinks.tf,sha256=PP_n3Jr-_EhMy6shVUrx7ztdQic5W3mKPjC0zQSvAjA,2955
58
+ src/base_template/deployment/terraform/apis.tf,sha256=KX8Oe2gjT-gh9Bkntz9yIAyRjPc1gZvwOhroJ6NZVp4,1513
59
+ src/base_template/deployment/terraform/build_triggers.tf,sha256=kPLPRzgXrW3cBocWq-kPMxtfCcBo1yBLblSAxNvajrQ,6365
60
+ src/base_template/deployment/terraform/iam.tf,sha256=IdZju8WsfjT_-CswYSGuAHjE8JsWArsAi2TbqTnphEU,5661
61
+ src/base_template/deployment/terraform/locals.tf,sha256=nvjlavqWRL6e-iIqfIRvsai5JY9l6KhRGcwJQFRdu_U,1653
62
+ src/base_template/deployment/terraform/log_sinks.tf,sha256=eAGh_dCjOKUQjylkqp1fNM9cfE4QB9HSEovjD6_G9Lg,2971
62
63
  src/base_template/deployment/terraform/providers.tf,sha256=LFjFQm8XbhWfQRwBUwhTjHLDWUbHW-IlFg71E0zFHIg,1080
63
- src/base_template/deployment/terraform/service_accounts.tf,sha256=av5UohEL5JmTw4FUMg7DVYjg_8Kg1u9yYUTD3QlGEmo,1689
64
- src/base_template/deployment/terraform/storage.tf,sha256=v1Vo3SS9yUJOJ8QDVyo0sj_YFY-lElRvdsUrxbIzyuI,8639
65
- src/base_template/deployment/terraform/variables.tf,sha256=w_GD6rLPKVeUESi91dEfBZvPccyDM_uNSAOYdYHaYbs,5851
66
- src/base_template/deployment/terraform/dev/apis.tf,sha256=kUXkyN-fB8SKssVBxWKZvtHHFGcz09L4Rz9fPQNPSB8,1337
64
+ src/base_template/deployment/terraform/service_accounts.tf,sha256=KsM9g0dlXmO6-Hokzz09HP1oO3crc8uLJj_Z45d8fe0,1713
65
+ 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
67
+ src/base_template/deployment/terraform/dev/apis.tf,sha256=R5fyLQGHsZy7JyDdFpuNzUBute6Rn9xR32zIMjkGxzc,1592
67
68
  src/base_template/deployment/terraform/dev/iam.tf,sha256=ZHFs4TMvq6mqD90n8ecXndzW3pyu4EbZO4iJis88BH0,3394
68
69
  src/base_template/deployment/terraform/dev/log_sinks.tf,sha256=uVdMtDdd8MnxtKhqzVaYqadE11P3r4fs2IdgNecxM4I,2671
69
70
  src/base_template/deployment/terraform/dev/providers.tf,sha256=1S9jCh48d6ailVZ1e14EHsUUDSp7DyGZGExJwViFCkM,900
70
71
  src/base_template/deployment/terraform/dev/storage.tf,sha256=1mgLs21SUhfcoRICqd7BqUlEVAVGeN3kMsQ4UAQLOh8,4654
71
- src/base_template/deployment/terraform/dev/variables.tf,sha256=U3UbpWysuSDEZkd94rAN_-XYwoOJXKuMNx3zyE7ULJM,4190
72
+ src/base_template/deployment/terraform/dev/variables.tf,sha256=7uQeqzN6IR14h1iThXf-3M1pbWKpKxCddDs78r49yuo,4324
72
73
  src/base_template/deployment/terraform/dev/vars/env.tfvars,sha256=LoQMjh1AAMR-MGfaSCsVMjdoYTk2T4oS4D9vMH54CdQ,714
73
74
  src/base_template/deployment/terraform/vars/env.tfvars,sha256=Nze8q1x2Aj6ZUeWC2hDeZWqNUkLp13DgzA_LFmmOzCo,1216
74
75
  src/base_template/tests/unit/test_dummy.py,sha256=2exfCH8qhkZrLWvK04ZxNTO9MV3fdTbZkJN3uK6zvok,850
75
- src/cli/main.py,sha256=pMsSlNwkrFqHUHHA5U-WMZ4QRquaI_F7OXQt6yxuugE,1688
76
- src/cli/commands/create.py,sha256=DuUtLsX4ltRhIgInjkLJ1ixIkfqgT9wBuI807M_KLIs,24766
77
- src/cli/commands/setup_cicd.py,sha256=Lr0wLeKlRxROsRVFLAI3ygfIh_sTavvgQckDkzFEKMQ,31705
76
+ src/cli/main.py,sha256=fyJKjU1gvRQmuqS-J6sExvqXo0-z7n6Bce8PSbDPa6E,1769
77
+ src/cli/commands/create.py,sha256=yIHngbbeUBvLKWg6IkH87yFwf-IJqdzbebkdqpwEFRQ,31818
78
+ src/cli/commands/list.py,sha256=50sxEcYY5T4Q34Uj7J5h8A9Tq5Zw8GQhkqunBdzzD0U,5288
79
+ src/cli/commands/setup_cicd.py,sha256=1ZvgTD-Z2bZk6pWuinz4IP2G1Eb8H1MibRLPS-mZ6Ng,31721
78
80
  src/cli/utils/__init__.py,sha256=_cTmsXGPqOtK0q8UW5164QTltbJRJFR_Efxq_BRL1-o,1311
79
- src/cli/utils/cicd.py,sha256=YTEuyNCdiCHSsNK_EdU-bdlt8mzIOb4_NCAP2FLrvu8,26197
81
+ src/cli/utils/cicd.py,sha256=VSkJTL7OBnXQ6Zbb2gzgw5gLWpwUjfr9XthqTpJ2Oj8,26197
80
82
  src/cli/utils/datastores.py,sha256=gv1V6eDcOEKx4MRNG5C3Y-VfixYq1AzQuaYMLp8QRNo,1058
81
83
  src/cli/utils/gcp.py,sha256=cnuCyN144eiyYc9aJNEK9JnyWN66rdevugoMdDYC1UU,4032
82
84
  src/cli/utils/logging.py,sha256=0lHe4EPi1A8sOx9xkA7gS4UNl0GsIyp2ahydkkuCzLY,1570
83
- src/cli/utils/template.py,sha256=FsWs9fd96Qi1S6Pi4LQ4eMZeYTKPAcASsJ1BejywQT4,29300
85
+ src/cli/utils/remote_template.py,sha256=LA2gAo1i_PCMMB6gqWPOH-WWR8MFyr9CrK9_-f1jVIY,7895
86
+ src/cli/utils/template.py,sha256=GpUWMQ7hfO5nkACRQ3_aFbn5yT2MjO58nr9Hs0Fp8kM,33700
84
87
  src/cli/utils/version.py,sha256=F4udQmzniPStqWZFIgnv3Qg3l9non4mfy2An-Oveqmc,2916
85
88
  src/data_ingestion/README.md,sha256=LNxSQoJW9JozK-TbyGQLj5L_MGWNwrfLk6V6RmQ2oBQ,4032
86
89
  src/data_ingestion/pyproject.toml,sha256=-1Mf2QB8K70ICQV5UPZDpf-fN3UwEQLVzQyxfakCSTY,445
@@ -90,18 +93,19 @@ src/data_ingestion/data_ingestion_pipeline/submit_pipeline.py,sha256=tWGqL0zUB3V
90
93
  src/data_ingestion/data_ingestion_pipeline/components/ingest_data.py,sha256=QbPmk6V7JPGo5Yc1BhL-1W_t9CXEN0iY5NKaGWlfSbM,10667
91
94
  src/data_ingestion/data_ingestion_pipeline/components/process_data.py,sha256=8vubxkykRpx-d89H1XYGO3yXz4hxhihhGDgDR3s-XZ4,22045
92
95
  src/deployment_targets/agent_engine/deployment_metadata.json,sha256=G_t_n-UNrFsBgH1Xrw5-ZqYzUGwZ4X6ipsIm_yiSq-w,72
93
- src/deployment_targets/agent_engine/app/agent_engine_app.py,sha256=Wpke3ClK5HHbPvIPrGfFf6MV30YQaSykxTX-RUOeDm8,12270
96
+ src/deployment_targets/agent_engine/app/agent_engine_app.py,sha256=aPXSg4K-Vo3z9qMPa0mYT5kB2Py1JhJfW2D0kOxdjjg,12229
94
97
  src/deployment_targets/agent_engine/notebooks/intro_agent_engine.ipynb,sha256=RE6Gp-bu4bHtNBngfkt_CF5emy5YcOWQ5rMYW_Cv8_w,48809
95
98
  src/deployment_targets/agent_engine/tests/integration/test_agent_engine_app.py,sha256=3mEHdnenqT1RrQpndnQWZSMnn8kSLH85rPDhbxH6_lk,5978
96
- src/deployment_targets/agent_engine/tests/load_test/README.md,sha256=qaVE9qR0MvZcaABwf4GS6cAxi7un5ql_vh-zbgh3LmA,1443
97
- src/deployment_targets/agent_engine/tests/load_test/load_test.py,sha256=FFCo_LjIZyETb61Eo53qxmg4U7qjT__BPWCYiwBQbhU,3764
99
+ src/deployment_targets/agent_engine/tests/load_test/README.md,sha256=aQP7nDAqd2jKBET4noI39HC9PVHpgpned7cxucWpVJo,1302
100
+ src/deployment_targets/agent_engine/tests/load_test/load_test.py,sha256=USzS89bQ4qHVoQynDRSRShKzeXf1MJ0MBV4FpV40vrI,4249
98
101
  src/deployment_targets/agent_engine/tests/load_test/.results/.placeholder,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
99
- src/deployment_targets/cloud_run/Dockerfile,sha256=vedZX0JJW2bymESqB-0LumnkKyr7hcog8NlR0DX8Q74,843
100
- src/deployment_targets/cloud_run/uv.lock,sha256=2RYrR89xDS1FHVb-g2JGZq8zZ-rzbm_jRvehVCYuXRQ,887957
101
- src/deployment_targets/cloud_run/app/server.py,sha256=qgsMzGE5LmAJm7lVs8t_bT1Ddd1YcD1TSWQ46pnlz00,5270
102
- src/deployment_targets/cloud_run/tests/integration/test_server_e2e.py,sha256=vR9cdRxBz3XbXBzMMB6rZAQ_7QKtLICM-CJPl86juJs,7784
103
- src/deployment_targets/cloud_run/tests/load_test/README.md,sha256=HgWizsGHyh_2i0xOG2-1IN_Eav3GiGNKwZVOffilo2I,2806
104
- src/deployment_targets/cloud_run/tests/load_test/load_test.py,sha256=cOlGaNxx6X3C-eWD0LulXyggqTrTeWZPjnsVn7FtZIs,4082
102
+ 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/tests/load_test/load_test.py,sha256=eVhqX8GtiDsIuZxMJAF2ivXML0xHDWDbriYsHZjAQZE,4212
105
109
  src/deployment_targets/cloud_run/tests/load_test/.results/.placeholder,sha256=ZbWpSgDo8bT33PstD_73aQSeN_0oo0F104NMUGuZ8lE,14903
106
110
  src/frontends/adk_gemini_fullstack/frontend/components.json,sha256=OUAALKbVpmIHQ16HcK1BgLBbVf_rV7s08PuGqgCFJ-o,423
107
111
  src/frontends/adk_gemini_fullstack/frontend/eslint.config.js,sha256=3ADH23ANA4NNBKFy6nCVk65e8bx1DrVd_FIaYNnhuqA,734
@@ -111,7 +115,7 @@ src/frontends/adk_gemini_fullstack/frontend/package.json,sha256=bUzgvwGx8oVL2wHY
111
115
  src/frontends/adk_gemini_fullstack/frontend/tsconfig.json,sha256=LtqiCB6w68AjbIegDnbXa1YXKM_RQZZVVkAjfUNxyBo,753
112
116
  src/frontends/adk_gemini_fullstack/frontend/tsconfig.node.json,sha256=1BewvjsiZMJqSGXTqe94jo5yKdpi7yqI7UGoHgTv9mg,593
113
117
  src/frontends/adk_gemini_fullstack/frontend/vite.config.ts,sha256=nmeV8oQoQe7SxIVNalYeR8Dw9LOQrcxTWyBUYxLr_Ns,1359
114
- src/frontends/adk_gemini_fullstack/frontend/src/App.tsx,sha256=X624JJ2LaDm1ztjb23r15f2fRzilVp6CNpw80HtuCAg,21473
118
+ src/frontends/adk_gemini_fullstack/frontend/src/App.tsx,sha256=N50ox6esJyvNifWXxCQUXulXhfQD643qGSXdfiIh6zk,21411
115
119
  src/frontends/adk_gemini_fullstack/frontend/src/global.css,sha256=uNpkk45y9XVsmQs84D0KHN8B2i55ElSFZxHu6zml5E8,5037
116
120
  src/frontends/adk_gemini_fullstack/frontend/src/main.tsx,sha256=WYYxbfb0WHrY1BW7KB-pCxb3jslb1UeCDa26l9Ve0SQ,328
117
121
  src/frontends/adk_gemini_fullstack/frontend/src/utils.ts,sha256=Utm02hSGixxQ_T4hqlZqpdc8BuK1B2Mgk5X0vNK3V_4,170
@@ -176,29 +180,29 @@ src/frontends/streamlit/frontend/utils/stream_handler.py,sha256=-XVRfLH6ck1KP6NS
176
180
  src/frontends/streamlit/frontend/utils/title_summary.py,sha256=B0cadS_KPW-tsbABauI4J681aqjEtuKFDa25e9R1WKc,3030
177
181
  src/resources/containers/data_processing/Dockerfile,sha256=VoB9d5yZiiWnqRfWrIq0gGNMzZg-eVy733OgP72ZgO0,950
178
182
  src/resources/containers/e2e-tests/Dockerfile,sha256=Q_aTyX_iaFY8j06XZkpMuggJnNO5daiLmmrvqaZHMxw,1611
179
- src/resources/docs/adk-cheatsheet.md,sha256=SHtckZqDg60Bz_Id7qc2TY6ftz_X2bh88RQi4gCYb4E,58717
183
+ src/resources/docs/adk-cheatsheet.md,sha256=KTCdM7hOvsv1-GgwEBMMU6kLk3WHQ69RAs6VWltNaDA,58722
180
184
  src/resources/idx/idx-template.json,sha256=07OQZCPp45Iqor2O7Tm1e1Gmsdd-AmmUofSvA7y-oRs,793
181
185
  src/resources/idx/idx-template.nix,sha256=sesHGev_PYtVDg0J5tHkg0OO7IR1Bz2iAtl_if3Ar3M,892
182
186
  src/resources/idx/.idx/dev.nix,sha256=XQ4T1xt5I-8SVwnI37v56RFFlxa58Ko-a9G2-oelYAI,1602
183
- src/resources/locks/uv-adk_base-agent_engine.lock,sha256=0OrJhKC_JVKgX-S9fFxRujnKEvmOEpd8vCyfkesqLAs,359057
184
- src/resources/locks/uv-adk_base-cloud_run.lock,sha256=itu4YI-tXc1hN7ncu0_uK2qbEhFY3Wu2tO4GoysGfSA,444902
185
- src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock,sha256=0OrJhKC_JVKgX-S9fFxRujnKEvmOEpd8vCyfkesqLAs,359057
186
- src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock,sha256=itu4YI-tXc1hN7ncu0_uK2qbEhFY3Wu2tO4GoysGfSA,444902
187
- src/resources/locks/uv-agentic_rag-agent_engine.lock,sha256=TAMmD1WW_Ge35kKaY4w1FdN3aEih7_kRSWc7kXQobOA,523699
188
- src/resources/locks/uv-agentic_rag-cloud_run.lock,sha256=5IM5puIbWmY4a3PGTcaIiG-Iu6E-QillJh5b105pDL4,681704
189
- src/resources/locks/uv-crewai_coding_crew-agent_engine.lock,sha256=jZVg40hOaiMhCF4dB6BMpQ8WanHPhGFYVRMqPX_Hg8I,813314
190
- src/resources/locks/uv-crewai_coding_crew-cloud_run.lock,sha256=QX5ZQX9c7s9FnPyCXfVdBFDfz8rsQ___iDcZvuukZ34,1045488
191
- src/resources/locks/uv-langgraph_base_react-agent_engine.lock,sha256=D3N9GNNKiX8pK2Yivw6f77oID4wRAs1MhUIoSXGv-3g,671381
192
- src/resources/locks/uv-langgraph_base_react-cloud_run.lock,sha256=dATDd1pQguY0Mo_2MCKn24cRzk7ZtAK0DG7_08RkLNY,873288
193
- src/resources/locks/uv-live_api-cloud_run.lock,sha256=aFvPKu0r23qSH2V9_1rTUuJNBG9UseDLnT6QM_g3nfo,795390
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
194
198
  src/resources/setup_cicd/cicd_variables.tf,sha256=PMflYe1TzQi63LORHkmeCktTYzXFplJgxffNH4DtuAQ,1244
195
- src/resources/setup_cicd/github.tf,sha256=scTBgeZlCM74N-pzhVKsnTN0PX9a5GboNl1HN3-LlCM,2791
199
+ src/resources/setup_cicd/github.tf,sha256=V2XZ7bKdJ9fzibsjIrI-loHQ1eQbfjNWVPLDPIAUeTA,2807
196
200
  src/resources/setup_cicd/providers.tf,sha256=Km4z6IJt7x7PLaa0kyZbBrO2m3lpuIJZFD5jB7QBfF0,1122
197
201
  src/utils/generate_locks.py,sha256=6V1B8V2BEuevWnXUsxZVTrLjXwFRII8UfsIGrQqZxVs,4320
198
- src/utils/lock_utils.py,sha256=RSE6n3hBkH64xNm3Q5wrR0Pqbeo-oc7xaTOhA9yzHjk,2275
202
+ src/utils/lock_utils.py,sha256=IFOMUWtb-ypm2Y8w8J5y2oI_-MaPuwPF_JOAAlnNudA,2275
199
203
  src/utils/watch_and_rebuild.py,sha256=vP4yIiA7E_lj5sfQdJUl8TXas6V7msDg8XWUutAC05Q,6679
200
- agent_starter_pack-0.7.1.dist-info/METADATA,sha256=aXLTLLtk8pTjy7V52_Cw0_VOcqTd7H4ETnluJyMW4DM,11146
201
- agent_starter_pack-0.7.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
202
- agent_starter_pack-0.7.1.dist-info/entry_points.txt,sha256=U7uCxR7YulIhZ0L8R8Hui0Bsy6J7oyESBeDYJYMrQjA,56
203
- agent_starter_pack-0.7.1.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
204
- agent_starter_pack-0.7.1.dist-info/RECORD,,
204
+ agent_starter_pack-0.9.0.dist-info/METADATA,sha256=tm8hhXSmxExEPbCj30Q1GlG9U0W5xiLP84JTavvezJI,11286
205
+ agent_starter_pack-0.9.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
206
+ agent_starter_pack-0.9.0.dist-info/entry_points.txt,sha256=U7uCxR7YulIhZ0L8R8Hui0Bsy6J7oyESBeDYJYMrQjA,56
207
+ agent_starter_pack-0.9.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
208
+ agent_starter_pack-0.9.0.dist-info/RECORD,,
agents/README.md ADDED
@@ -0,0 +1,7 @@
1
+ # Agent Templates
2
+
3
+ This directory contains template implementations for various agents designed to work with the Agent Starter Pack templating system.
4
+ Feel free to browse through these folders to preview what each template offers.
5
+ Direct cloning of this repository isn't necessary to utilize these templates.
6
+
7
+ For setup instructions and getting started, please refer to the main [README](/README.md) which explains how to install and use the Agent Starter Pack.
@@ -16,7 +16,9 @@ description: "A base ReAct agent built with Google's Agent Development Kit (ADK)
16
16
  example_question: "What's the weather in San Francisco?"
17
17
  settings:
18
18
  requires_data_ingestion: false
19
+ requires_session: true
19
20
  deployment_targets: ["agent_engine", "cloud_run"]
20
- extra_dependencies: ["google-adk~=1.4.2"]
21
+ extra_dependencies: ["google-adk~=1.6.0"]
21
22
  tags: ["adk"]
22
23
  frontend_type: "None"
24
+
@@ -207,14 +207,15 @@
207
207
  "outputs": [],
208
208
  "source": [
209
209
  "user_id = \"test_user_123\"\n",
210
- "session_id = \"test_session_456\"\n",
211
210
  "session_data = {\"state\": {\"preferred_language\": \"English\", \"visit_count\": 1}}\n",
212
211
  "\n",
213
- "session_url = f\"{SERVICE_URL}/apps/app/users/{user_id}/sessions/{session_id}\"\n",
212
+ "session_url = f\"{SERVICE_URL}/apps/app/users/{user_id}/sessions\"\n",
214
213
  "headers = {\"Content-Type\": \"application/json\", \"Authorization\": f\"Bearer {ID_TOKEN}\"}\n",
215
214
  "\n",
216
215
  "session_response = requests.post(session_url, headers=headers, json=session_data)\n",
217
- "print(f\"Session creation status code: {session_response.status_code}\")"
216
+ "print(f\"Session creation status code: {session_response.status_code}\")\n",
217
+ "print(f\"Session creation response: {session_response.json()}\")\n",
218
+ "session_id = session_response.json()[\"id\"]"
218
219
  ]
219
220
  },
220
221
  {
@@ -279,14 +280,15 @@
279
280
  "outputs": [],
280
281
  "source": [
281
282
  "user_id = \"test_user_123\"\n",
282
- "session_id = \"test_session_456\"\n",
283
283
  "session_data = {\"state\": {\"preferred_language\": \"English\", \"visit_count\": 1}}\n",
284
284
  "\n",
285
- "session_url = f\"http://127.0.0.1:8000/apps/app/users/{user_id}/sessions/{session_id}\"\n",
285
+ "session_url = f\"http://127.0.0.1:8000/apps/app/users/{user_id}/sessions\"\n",
286
286
  "headers = {\"Content-Type\": \"application/json\"}\n",
287
287
  "\n",
288
288
  "session_response = requests.post(session_url, headers=headers, json=session_data)\n",
289
- "print(f\"Session creation status code: {session_response.status_code}\")"
289
+ "print(f\"Session creation status code: {session_response.status_code}\")\n",
290
+ "print(f\"Session creation response: {session_response.json()}\")\n",
291
+ "session_id = session_response.json()[\"id\"]"
290
292
  ]
291
293
  },
292
294
  {
@@ -16,13 +16,14 @@ description: "A production-ready fullstack research agent that uses Gemini to st
16
16
  example_question: "A report on the latest Google I/O event"
17
17
  settings:
18
18
  requires_data_ingestion: false
19
+ requires_session: true
19
20
  deployment_targets: ["agent_engine", "cloud_run"]
20
- extra_dependencies: ["google-adk~=1.4.2"]
21
+ extra_dependencies: ["google-adk~=1.6.0"]
21
22
  tags: ["adk"]
22
23
  frontend_type: "adk_gemini_fullstack"
23
24
  commands:
24
25
  override:
25
- install: "npm --prefix frontend install"
26
+ install: "uv sync --dev --extra jupyter && npm --prefix frontend install"
26
27
  extra:
27
28
  dev:
28
29
  command: 'make dev-backend & make dev-frontend'
@@ -207,14 +207,15 @@
207
207
  "outputs": [],
208
208
  "source": [
209
209
  "user_id = \"test_user_123\"\n",
210
- "session_id = \"test_session_456\"\n",
211
210
  "session_data = {\"state\": {\"preferred_language\": \"English\", \"visit_count\": 1}}\n",
212
211
  "\n",
213
- "session_url = f\"{SERVICE_URL}/apps/app/users/{user_id}/sessions/{session_id}\"\n",
212
+ "session_url = f\"{SERVICE_URL}/apps/app/users/{user_id}/sessions\"\n",
214
213
  "headers = {\"Content-Type\": \"application/json\", \"Authorization\": f\"Bearer {ID_TOKEN}\"}\n",
215
214
  "\n",
216
215
  "session_response = requests.post(session_url, headers=headers, json=session_data)\n",
217
- "print(f\"Session creation status code: {session_response.status_code}\")"
216
+ "print(f\"Session creation status code: {session_response.status_code}\")\n",
217
+ "print(f\"Session creation response: {session_response.json()}\")\n",
218
+ "session_id = session_response.json()[\"id\"]"
218
219
  ]
219
220
  },
220
221
  {
@@ -279,14 +280,15 @@
279
280
  "outputs": [],
280
281
  "source": [
281
282
  "user_id = \"test_user_123\"\n",
282
- "session_id = \"test_session_456\"\n",
283
283
  "session_data = {\"state\": {\"preferred_language\": \"English\", \"visit_count\": 1}}\n",
284
284
  "\n",
285
- "session_url = f\"http://127.0.0.1:8000/apps/app/users/{user_id}/sessions/{session_id}\"\n",
285
+ "session_url = f\"http://127.0.0.1:8000/apps/app/users/{user_id}/sessions\"\n",
286
286
  "headers = {\"Content-Type\": \"application/json\"}\n",
287
287
  "\n",
288
288
  "session_response = requests.post(session_url, headers=headers, json=session_data)\n",
289
- "print(f\"Session creation status code: {session_response.status_code}\")"
289
+ "print(f\"Session creation status code: {session_response.status_code}\")\n",
290
+ "print(f\"Session creation response: {session_response.json()}\")\n",
291
+ "session_id = session_response.json()[\"id\"]"
290
292
  ]
291
293
  },
292
294
  {
@@ -16,9 +16,10 @@ description: "ADK RAG agent for document retrieval and Q&A. Includes a data pipe
16
16
  example_question: "How to save a pandas dataframe to CSV?"
17
17
  settings:
18
18
  requires_data_ingestion: true
19
+ requires_session: true
19
20
  deployment_targets: ["agent_engine", "cloud_run"]
20
21
  extra_dependencies: [
21
- "google-adk~=1.4.2",
22
+ "google-adk~=1.6.0",
22
23
  "langchain-google-vertexai~=2.0.7",
23
24
  "langchain~=0.3.24",
24
25
  "langchain-core~=0.3.55",
@@ -207,14 +207,15 @@
207
207
  "outputs": [],
208
208
  "source": [
209
209
  "user_id = \"test_user_123\"\n",
210
- "session_id = \"test_session_456\"\n",
211
210
  "session_data = {\"state\": {\"preferred_language\": \"English\", \"visit_count\": 1}}\n",
212
211
  "\n",
213
- "session_url = f\"{SERVICE_URL}/apps/app/users/{user_id}/sessions/{session_id}\"\n",
212
+ "session_url = f\"{SERVICE_URL}/apps/app/users/{user_id}/sessions\"\n",
214
213
  "headers = {\"Content-Type\": \"application/json\", \"Authorization\": f\"Bearer {ID_TOKEN}\"}\n",
215
214
  "\n",
216
215
  "session_response = requests.post(session_url, headers=headers, json=session_data)\n",
217
- "print(f\"Session creation status code: {session_response.status_code}\")"
216
+ "print(f\"Session creation status code: {session_response.status_code}\")\n",
217
+ "print(f\"Session creation response: {session_response.json()}\")\n",
218
+ "session_id = session_response.json()[\"id\"]"
218
219
  ]
219
220
  },
220
221
  {
@@ -279,14 +280,15 @@
279
280
  "outputs": [],
280
281
  "source": [
281
282
  "user_id = \"test_user_123\"\n",
282
- "session_id = \"test_session_456\"\n",
283
283
  "session_data = {\"state\": {\"preferred_language\": \"English\", \"visit_count\": 1}}\n",
284
284
  "\n",
285
- "session_url = f\"http://127.0.0.1:8000/apps/app/users/{user_id}/sessions/{session_id}\"\n",
285
+ "session_url = f\"http://127.0.0.1:8000/apps/app/users/{user_id}/sessions\"\n",
286
286
  "headers = {\"Content-Type\": \"application/json\"}\n",
287
287
  "\n",
288
288
  "session_response = requests.post(session_url, headers=headers, json=session_data)\n",
289
- "print(f\"Session creation status code: {session_response.status_code}\")"
289
+ "print(f\"Session creation status code: {session_response.status_code}\")\n",
290
+ "print(f\"Session creation response: {session_response.json()}\")\n",
291
+ "session_id = session_response.json()[\"id\"]"
290
292
  ]
291
293
  },
292
294
  {
@@ -22,6 +22,6 @@ settings:
22
22
  "langchain-community~=0.3.17",
23
23
  "langchain-openai~=0.3.5",
24
24
  "langgraph~=0.4.8",
25
- "crewai~=0.119.0"
25
+ "crewai~=0.140.0"
26
26
  ]
27
27
  example_question: "How can I implement a function to sort a list in Python?"
llm.txt CHANGED
@@ -69,6 +69,7 @@ agent-starter-pack create PROJECT_NAME [OPTIONS]
69
69
  * `-d, --deployment-target`: Target deployment environment (`cloud_run` or `agent_engine`).
70
70
  * `-ds, --datastore`: For RAG agents, the datastore (`vertex_ai_search` or `vertex_ai_vector_search`).
71
71
  * `-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`).
72
73
  * `--region`: GCP region (e.g., `us-central1`).
73
74
  * `--auto-approve`: **Skips all interactive prompts (crucial for automation).**
74
75
  * `--debug`: Enables debug logging during creation.
@@ -186,6 +187,12 @@ uvx agent-starter-pack setup-cicd
186
187
  * **Deploying with UI:** `make backend IAP=true`
187
188
  * **Access Control:** After deploying with IAP, grant users the `IAP-secured Web App User` role in IAM to give them access.
188
189
 
190
+ ### Session Management
191
+
192
+ For stateful agents, the starter pack supports persistent sessions.
193
+ * **Cloud Run:** Choose between `in_memory` (for testing) and durable `alloydb` sessions using the `--session-type` flag.
194
+ * **Agent Engine:** Provides session management automatically.
195
+
189
196
  ### Monitoring & Observability
190
197
  * **Technology:** Uses OpenTelemetry to emit events to Google Cloud Trace and Logging.
191
198
  * **Custom Tracer:** A custom tracer in `app/utils/tracing.py` handles large payloads by linking to GCS, overcoming default service limits.
@@ -1,8 +1,12 @@
1
1
  # Install dependencies using uv package manager
2
2
  install:
3
3
  @command -v uv >/dev/null 2>&1 || { echo "uv is not installed. Installing uv..."; curl -LsSf https://astral.sh/uv/0.6.12/install.sh | sh; source $HOME/.local/bin/env; }
4
+ {%- if cookiecutter.settings.get("commands", {}).get("override", {}).get("install") %}
5
+ {{cookiecutter.settings.get("commands", {}).get("override", {}).get("install")}}
6
+ {%- else %}
4
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 %}
5
- {%- if cookiecutter.settings.get("commands", {}).get("override", {}).get("install") %} && {{cookiecutter.settings.get("commands", {}).get("override", {}).get("install")}}{%- endif %}
8
+ {%- endif %}
9
+
6
10
  {%- if cookiecutter.settings.get("commands", {}).get("extra", {}) %}
7
11
  {%- for cmd_name, cmd_value in cookiecutter.settings.get("commands", {}).get("extra", {}).items() %}
8
12
 
@@ -54,7 +54,7 @@ make install && make playground
54
54
  {%- endif %}
55
55
  {%- if cookiecutter.deployment_target == 'cloud_run' %}
56
56
  | `make playground` | Launch local development environment with backend and frontend{%- if "adk" in cookiecutter.tags %} - leveraging `adk web` command. {%- endif %}|
57
- | `make backend` | Deploy agent to Cloud Run |
57
+ | `make backend` | Deploy agent to Cloud Run (use `IAP=true` to enable Identity-Aware Proxy) |
58
58
  | `make local-backend` | Launch local development server |
59
59
  {%- if cookiecutter.deployment_target == 'cloud_run' %}
60
60
  {%- if cookiecutter.agent_name == 'live_api' %}
@@ -67,7 +67,7 @@ make install && make playground
67
67
  {%- endif %}
68
68
  | `make test` | Run unit and integration tests |
69
69
  | `make lint` | Run code quality checks (codespell, ruff, mypy) |
70
- | `make setup-dev-env` | Set up development environment resources using Terraform |
70
+ | `make setup-dev-env` | Set up development environment resources using Terraform |
71
71
  {%- if cookiecutter.data_ingestion %}
72
72
  | `make data-ingestion`| Run data ingestion pipeline in the Dev environment |
73
73
  {%- endif %}
@@ -55,22 +55,7 @@ steps:
55
55
  - "$_REGION"
56
56
  - "--project"
57
57
  - $_PROD_PROJECT_ID
58
- - "--min-instances"
59
- - "1"
60
- - "--no-cpu-throttling"
61
- - "--cpu"
62
- - "4"
63
- - "--memory"
64
- - "4Gi"
65
- - "--concurrency"
66
- - "40"
67
- - "--service-account"
68
- - "${_CLOUD_RUN_APP_SA_EMAIL}"
69
- - "--session-affinity"
70
- - "--labels"
71
- - "created-by=adk"
72
- - "--set-env-vars"
73
- - "COMMIT_SHA=${COMMIT_SHA}{%- if cookiecutter.data_ingestion %}{%- if cookiecutter.datastore_type == "vertex_ai_search" %},DATA_STORE_ID=${_DATA_STORE_ID},DATA_STORE_REGION=${_DATA_STORE_REGION}{%- elif cookiecutter.datastore_type == "vertex_ai_vector_search" %},VECTOR_SEARCH_INDEX=${_VECTOR_SEARCH_INDEX},VECTOR_SEARCH_INDEX_ENDPOINT=${_VECTOR_SEARCH_INDEX_ENDPOINT},VECTOR_SEARCH_BUCKET=${_VECTOR_SEARCH_BUCKET}{%- endif %}{%- endif %}"
58
+
74
59
  {%- elif cookiecutter.deployment_target == 'agent_engine' %}
75
60
  - name: "python:3.11-slim"
76
61
  id: install-dependencies
@@ -46,6 +46,8 @@ steps:
46
46
  "build",
47
47
  "-t",
48
48
  "$_REGION-docker.pkg.dev/$PROJECT_ID/$_ARTIFACT_REGISTRY_REPO_NAME/$_CONTAINER_NAME",
49
+ "--build-arg",
50
+ "COMMIT_SHA=$COMMIT_SHA",
49
51
  ".",
50
52
  ]
51
53
  - name: "gcr.io/cloud-builders/docker"
@@ -69,22 +71,6 @@ steps:
69
71
  - "${_REGION}"
70
72
  - "--project"
71
73
  - "${_STAGING_PROJECT_ID}"
72
- - "--min-instances"
73
- - "1"
74
- - "--no-cpu-throttling"
75
- - "--cpu"
76
- - "4"
77
- - "--memory"
78
- - "4Gi"
79
- - "--concurrency"
80
- - "40"
81
- - "--service-account"
82
- - "${_CLOUD_RUN_APP_SA_EMAIL}"
83
- - "--session-affinity"
84
- - "--labels"
85
- - "created-by=adk"
86
- - "--set-env-vars"
87
- - "COMMIT_SHA=${COMMIT_SHA}{%- if cookiecutter.data_ingestion %}{%- if cookiecutter.datastore_type == "vertex_ai_search" %},DATA_STORE_ID=${_DATA_STORE_ID},DATA_STORE_REGION=${_DATA_STORE_REGION}{%- elif cookiecutter.datastore_type == "vertex_ai_vector_search" %},VECTOR_SEARCH_INDEX=${_VECTOR_SEARCH_INDEX},VECTOR_SEARCH_INDEX_ENDPOINT=${_VECTOR_SEARCH_INDEX_ENDPOINT},VECTOR_SEARCH_BUCKET=${_VECTOR_SEARCH_BUCKET}{%- endif %}{%- endif %}"
88
74
 
89
75
  # Fetch Staging Service URL
90
76
  - name: "gcr.io/cloud-builders/gcloud"
@@ -149,12 +135,11 @@ steps:
149
135
  {%- if cookiecutter.deployment_target == 'cloud_run' %}
150
136
  export _ID_TOKEN=$(cat id_token.txt)
151
137
  export _STAGING_URL=$(cat staging_url.txt)
152
- pip install uv==0.6.12 --user && uv sync --locked
153
138
  {%- elif cookiecutter.deployment_target == 'agent_engine' %}
154
139
  export _AUTH_TOKEN=$(cat auth_token.txt)
155
140
  {%- endif %}
156
- uv add locust==2.32.6
157
- uv run locust -f tests/load_test/load_test.py \
141
+ pip install locust==2.31.1 --user
142
+ locust -f tests/load_test/load_test.py \
158
143
  --headless \
159
144
  {%- if cookiecutter.deployment_target == 'cloud_run' %}
160
145
  -H $$_STAGING_URL \
@@ -19,9 +19,9 @@ resource "google_project_service" "cicd_services" {
19
19
  disable_on_destroy = false
20
20
  }
21
21
 
22
- resource "google_project_service" "shared_services" {
22
+ resource "google_project_service" "deploy_project_services" {
23
23
  for_each = {
24
- for pair in setproduct(keys(local.deploy_project_ids), local.shared_services) :
24
+ for pair in setproduct(keys(local.deploy_project_ids), local.deploy_project_services) :
25
25
  "${pair[0]}_${replace(pair[1], ".", "_")}" => {
26
26
  project = local.deploy_project_ids[pair[0]]
27
27
  service = pair[1]
@@ -39,7 +39,7 @@ resource "google_cloudbuild_trigger" "pr_checks" {
39
39
  {% endif %}
40
40
  ]
41
41
  include_build_logs = "INCLUDE_BUILD_LOGS_WITH_STATUS"
42
- depends_on = [resource.google_project_service.cicd_services, resource.google_project_service.shared_services]
42
+ depends_on = [resource.google_project_service.cicd_services, resource.google_project_service.deploy_project_services]
43
43
  }
44
44
 
45
45
  # b. Create CD pipeline trigger
@@ -85,13 +85,13 @@ resource "google_cloudbuild_trigger" "cd_pipeline" {
85
85
  {% elif cookiecutter.datastore_type == "vertex_ai_vector_search" %}
86
86
  _VECTOR_SEARCH_INDEX = resource.google_vertex_ai_index.vector_search_index_staging.id
87
87
  _VECTOR_SEARCH_INDEX_ENDPOINT = resource.google_vertex_ai_index_endpoint.vector_search_index_endpoint_staging.id
88
- _VECTOR_SEARCH_BUCKET = "gs://${resource.google_storage_bucket.vector_search_data_bucket["staging"].name}"
88
+ _VECTOR_SEARCH_BUCKET = resource.google_storage_bucket.vector_search_data_bucket["staging"].url
89
89
 
90
90
  {% endif %}
91
91
  {% endif %}
92
92
  # Your other CD Pipeline substitutions
93
93
  }
94
- depends_on = [resource.google_project_service.cicd_services, resource.google_project_service.shared_services]
94
+ depends_on = [resource.google_project_service.cicd_services, resource.google_project_service.deploy_project_services]
95
95
 
96
96
  }
97
97
 
@@ -128,11 +128,11 @@ resource "google_cloudbuild_trigger" "deploy_to_prod_pipeline" {
128
128
  {% elif cookiecutter.datastore_type == "vertex_ai_vector_search" %}
129
129
  _VECTOR_SEARCH_INDEX = resource.google_vertex_ai_index.vector_search_index_prod.id
130
130
  _VECTOR_SEARCH_INDEX_ENDPOINT = resource.google_vertex_ai_index_endpoint.vector_search_index_endpoint_prod.id
131
- _VECTOR_SEARCH_BUCKET = "gs://${resource.google_storage_bucket.vector_search_data_bucket["prod"].name}"
131
+ _VECTOR_SEARCH_BUCKET = resource.google_storage_bucket.vector_search_data_bucket["prod"].url
132
132
  {% endif %}
133
133
  {% endif %}
134
134
  # Your other Deploy to Prod Pipeline substitutions
135
135
  }
136
- depends_on = [resource.google_project_service.cicd_services, resource.google_project_service.shared_services]
136
+ depends_on = [resource.google_project_service.cicd_services, resource.google_project_service.deploy_project_services]
137
137
 
138
138
  }