agent-starter-pack 0.7.1__py3-none-any.whl → 0.8.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 (57) hide show
  1. {agent_starter_pack-0.7.1.dist-info → agent_starter_pack-0.8.0.dist-info}/METADATA +5 -5
  2. {agent_starter_pack-0.7.1.dist-info → agent_starter_pack-0.8.0.dist-info}/RECORD +56 -54
  3. agents/README.md +7 -0
  4. agents/adk_base/notebooks/adk_app_testing.ipynb +8 -6
  5. agents/adk_base/template/.templateconfig.yaml +3 -1
  6. agents/adk_gemini_fullstack/notebooks/adk_app_testing.ipynb +8 -6
  7. agents/adk_gemini_fullstack/template/.templateconfig.yaml +2 -1
  8. agents/agentic_rag/notebooks/adk_app_testing.ipynb +8 -6
  9. agents/agentic_rag/template/.templateconfig.yaml +2 -1
  10. agents/crewai_coding_crew/template/.templateconfig.yaml +1 -1
  11. llm.txt +7 -0
  12. src/base_template/README.md +2 -2
  13. src/base_template/deployment/cd/deploy-to-prod.yaml +1 -16
  14. src/base_template/deployment/cd/staging.yaml +4 -19
  15. src/base_template/deployment/terraform/apis.tf +2 -2
  16. src/base_template/deployment/terraform/build_triggers.tf +5 -5
  17. src/base_template/deployment/terraform/dev/apis.tf +8 -1
  18. src/base_template/deployment/terraform/dev/variables.tf +3 -1
  19. src/base_template/deployment/terraform/iam.tf +8 -8
  20. src/base_template/deployment/terraform/locals.tf +9 -2
  21. src/base_template/deployment/terraform/log_sinks.tf +2 -2
  22. src/base_template/deployment/terraform/service_accounts.tf +3 -3
  23. src/base_template/deployment/terraform/storage.tf +7 -7
  24. src/base_template/deployment/terraform/variables.tf +3 -0
  25. src/base_template/pyproject.toml +4 -3
  26. src/cli/commands/create.py +38 -0
  27. src/cli/commands/setup_cicd.py +2 -2
  28. src/cli/utils/cicd.py +2 -2
  29. src/cli/utils/template.py +34 -0
  30. src/deployment_targets/agent_engine/app/agent_engine_app.py +7 -7
  31. src/deployment_targets/agent_engine/tests/load_test/README.md +1 -6
  32. src/deployment_targets/agent_engine/tests/load_test/load_test.py +13 -3
  33. src/deployment_targets/cloud_run/Dockerfile +3 -0
  34. src/deployment_targets/cloud_run/app/server.py +18 -0
  35. src/deployment_targets/cloud_run/deployment/terraform/dev/service.tf +231 -0
  36. src/deployment_targets/cloud_run/deployment/terraform/service.tf +360 -0
  37. src/deployment_targets/cloud_run/tests/integration/test_server_e2e.py +8 -5
  38. src/deployment_targets/cloud_run/tests/load_test/README.md +2 -2
  39. src/deployment_targets/cloud_run/tests/load_test/load_test.py +21 -17
  40. src/frontends/adk_gemini_fullstack/frontend/src/App.tsx +2 -3
  41. src/resources/docs/adk-cheatsheet.md +1 -1
  42. src/resources/locks/uv-adk_base-agent_engine.lock +805 -200
  43. src/resources/locks/uv-adk_base-cloud_run.lock +1085 -234
  44. src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock +805 -200
  45. src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock +1085 -234
  46. src/resources/locks/uv-agentic_rag-agent_engine.lock +386 -283
  47. src/resources/locks/uv-agentic_rag-cloud_run.lock +513 -349
  48. src/resources/locks/uv-crewai_coding_crew-agent_engine.lock +492 -497
  49. src/resources/locks/uv-crewai_coding_crew-cloud_run.lock +671 -613
  50. src/resources/locks/uv-langgraph_base_react-agent_engine.lock +500 -391
  51. src/resources/locks/uv-langgraph_base_react-cloud_run.lock +682 -510
  52. src/resources/locks/uv-live_api-cloud_run.lock +686 -486
  53. src/resources/setup_cicd/github.tf +2 -2
  54. src/deployment_targets/cloud_run/uv.lock +0 -6952
  55. {agent_starter_pack-0.7.1.dist-info → agent_starter_pack-0.8.0.dist-info}/WHEEL +0 -0
  56. {agent_starter_pack-0.7.1.dist-info → agent_starter_pack-0.8.0.dist-info}/entry_points.txt +0 -0
  57. {agent_starter_pack-0.7.1.dist-info → agent_starter_pack-0.8.0.dist-info}/licenses/LICENSE +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.8.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'
@@ -1,23 +1,24 @@
1
+ agents/README.md,sha256=L8__lIXXjxLTZbkCmTC4taTFUMRVrO3QI2mCKZTdhJM,462
1
2
  agents/adk_base/README.md,sha256=eLf-F9Z4u_mQOchAnUaSrOAHXRSx8wUQN29kkwz1SF4,894
2
3
  agents/adk_base/app/agent.py,sha256=6Q6QegQDxEaAck989DPIb3ArHMZtw_YJBqhHFqg-UjQ,2182
3
- agents/adk_base/notebooks/adk_app_testing.ipynb,sha256=kWYd-ButNGemupiPDIzhlQO0elxWCwiea0nhmnsW8cg,9619
4
+ agents/adk_base/notebooks/adk_app_testing.ipynb,sha256=wgFzBo7hX393NVzy3ZfZHncs1ptiQbM_8he3XxJu4yM,9763
4
5
  agents/adk_base/notebooks/evaluating_adk_agent.ipynb,sha256=OMTiT3gAFWPvE9pPL8z7tsDwOU-l8wem5wH-OXPPlvk,56805
5
- agents/adk_base/template/.templateconfig.yaml,sha256=EWfw7zqlQsxKrmMdiqwSemIhx3ke6i6a5mqZ3z94KDI,893
6
+ agents/adk_base/template/.templateconfig.yaml,sha256=VsyR_CmcOhFA3cLYiq-vLlvAxfM468hGGseIqWHKe-E,923
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
8
9
  agents/adk_gemini_fullstack/app/agent.py,sha256=NXOkYFxDccJaSq55CTS-UYY8z5-WgBZqexII0Ybzk9c,22662
9
10
  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
11
+ agents/adk_gemini_fullstack/notebooks/adk_app_testing.ipynb,sha256=wgFzBo7hX393NVzy3ZfZHncs1ptiQbM_8he3XxJu4yM,9763
11
12
  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
+ agents/adk_gemini_fullstack/template/.templateconfig.yaml,sha256=MjLSQvi1Uq2No_pA9VfmiJfcTmJhRev3z8ByjLfcP6I,1683
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
15
16
  agents/agentic_rag/app/agent.py,sha256=tKtzez7vGu6JgMWmZN7QrKkyLBvHu1ondAuICjKoC-g,3983
16
17
  agents/agentic_rag/app/retrievers.py,sha256=qfxwSEixMddvAu4FvUTZAFh1Gdp3RPY65s0Wp6gEFVk,4561
17
18
  agents/agentic_rag/app/templates.py,sha256=8N_uRchwiN7hlH9Y8rdJ1CAtOhpHUWZkXZZ7IU-YJJk,867
18
- agents/agentic_rag/notebooks/adk_app_testing.ipynb,sha256=kWYd-ButNGemupiPDIzhlQO0elxWCwiea0nhmnsW8cg,9619
19
+ agents/agentic_rag/notebooks/adk_app_testing.ipynb,sha256=wgFzBo7hX393NVzy3ZfZHncs1ptiQbM_8he3XxJu4yM,9763
19
20
  agents/agentic_rag/notebooks/evaluating_adk_agent.ipynb,sha256=OMTiT3gAFWPvE9pPL8z7tsDwOU-l8wem5wH-OXPPlvk,56805
20
- agents/agentic_rag/template/.templateconfig.yaml,sha256=xZlSDarlNwppW6gjHXdxQMbUZAVpXwHPalVTS4Zbln8,1223
21
+ agents/agentic_rag/template/.templateconfig.yaml,sha256=PMb7H913ZxGOhGzt4RPc2-QyzrOrycboh0ZZIHyk8Wg,1248
21
22
  agents/agentic_rag/tests/integration/test_agent.py,sha256=mxsKFyZrwXzIvAoxlqZv2JndM3VTVTKcugRYdF3APr4,2112
22
23
  agents/crewai_coding_crew/README.md,sha256=4No7sfHQVHELARGiT3fWANJzDR0NP48ow4ct3FoPwlA,1672
23
24
  agents/crewai_coding_crew/app/agent.py,sha256=yd-P2Jzx3Do4FQuhwDsok-YRNYFi9Vl8OTqSlbdn4Sw,3260
@@ -26,7 +27,7 @@ agents/crewai_coding_crew/app/crew/config/agents.yaml,sha256=Cn9zTcP3C-8MvlV19cY
26
27
  agents/crewai_coding_crew/app/crew/config/tasks.yaml,sha256=SSFuiSQPhi4dM0V5HdNuMqtN7JJr5RUCMhhBzUkPBpc,1511
27
28
  agents/crewai_coding_crew/notebooks/evaluating_crewai_agent.ipynb,sha256=ifTn4RfrJeYQ8ell9n6VE65ZEfcnKGkMLFG8RBlPK70,57974
28
29
  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
+ agents/crewai_coding_crew/template/.templateconfig.yaml,sha256=q2KH2Hkq7MkGkVup9pIj2E3tosy7paQW2WiEHA2Qw_Y,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
32
33
  agents/langgraph_base_react/app/agent.py,sha256=yzCc5JaOJgItoBiZOzHPiSy9aD2HGeGI_pH7nrysSmg,2505
@@ -40,47 +41,47 @@ agents/live_api/template/.templateconfig.yaml,sha256=DD_hihMsuqmd5VWS18vVGZ3ZGVV
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
47
  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
48
+ src/base_template/README.md,sha256=xAz5JXSnhCjXtvw5wSl6AVn6DJBlQIhSl4exyO5N4nc,10929
49
+ src/base_template/pyproject.toml,sha256=ltiZufJ8BFbsRoWs2EcldWLzFd41du1YdAhldecwUfw,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
76
  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
77
+ src/cli/commands/create.py,sha256=PRqIu4fxgN3KCpzbiMC0jcghpsgt1LatShfvs2qP2xw,26396
78
+ src/cli/commands/setup_cicd.py,sha256=1ZvgTD-Z2bZk6pWuinz4IP2G1Eb8H1MibRLPS-mZ6Ng,31721
78
79
  src/cli/utils/__init__.py,sha256=_cTmsXGPqOtK0q8UW5164QTltbJRJFR_Efxq_BRL1-o,1311
79
- src/cli/utils/cicd.py,sha256=YTEuyNCdiCHSsNK_EdU-bdlt8mzIOb4_NCAP2FLrvu8,26197
80
+ src/cli/utils/cicd.py,sha256=VSkJTL7OBnXQ6Zbb2gzgw5gLWpwUjfr9XthqTpJ2Oj8,26197
80
81
  src/cli/utils/datastores.py,sha256=gv1V6eDcOEKx4MRNG5C3Y-VfixYq1AzQuaYMLp8QRNo,1058
81
82
  src/cli/utils/gcp.py,sha256=cnuCyN144eiyYc9aJNEK9JnyWN66rdevugoMdDYC1UU,4032
82
83
  src/cli/utils/logging.py,sha256=0lHe4EPi1A8sOx9xkA7gS4UNl0GsIyp2ahydkkuCzLY,1570
83
- src/cli/utils/template.py,sha256=FsWs9fd96Qi1S6Pi4LQ4eMZeYTKPAcASsJ1BejywQT4,29300
84
+ src/cli/utils/template.py,sha256=VYg59SwfgYmvcq09mD7xz-wTj2LodPBH2bjlEesu8ag,30482
84
85
  src/cli/utils/version.py,sha256=F4udQmzniPStqWZFIgnv3Qg3l9non4mfy2An-Oveqmc,2916
85
86
  src/data_ingestion/README.md,sha256=LNxSQoJW9JozK-TbyGQLj5L_MGWNwrfLk6V6RmQ2oBQ,4032
86
87
  src/data_ingestion/pyproject.toml,sha256=-1Mf2QB8K70ICQV5UPZDpf-fN3UwEQLVzQyxfakCSTY,445
@@ -90,18 +91,19 @@ src/data_ingestion/data_ingestion_pipeline/submit_pipeline.py,sha256=tWGqL0zUB3V
90
91
  src/data_ingestion/data_ingestion_pipeline/components/ingest_data.py,sha256=QbPmk6V7JPGo5Yc1BhL-1W_t9CXEN0iY5NKaGWlfSbM,10667
91
92
  src/data_ingestion/data_ingestion_pipeline/components/process_data.py,sha256=8vubxkykRpx-d89H1XYGO3yXz4hxhihhGDgDR3s-XZ4,22045
92
93
  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
94
+ src/deployment_targets/agent_engine/app/agent_engine_app.py,sha256=aPXSg4K-Vo3z9qMPa0mYT5kB2Py1JhJfW2D0kOxdjjg,12229
94
95
  src/deployment_targets/agent_engine/notebooks/intro_agent_engine.ipynb,sha256=RE6Gp-bu4bHtNBngfkt_CF5emy5YcOWQ5rMYW_Cv8_w,48809
95
96
  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
97
+ src/deployment_targets/agent_engine/tests/load_test/README.md,sha256=aQP7nDAqd2jKBET4noI39HC9PVHpgpned7cxucWpVJo,1302
98
+ src/deployment_targets/agent_engine/tests/load_test/load_test.py,sha256=USzS89bQ4qHVoQynDRSRShKzeXf1MJ0MBV4FpV40vrI,4249
98
99
  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
100
+ src/deployment_targets/cloud_run/Dockerfile,sha256=CuhR3MuaRO2R7XrKPgNc5Oi7pv5JpJqgR8Nid0Tnsag,891
101
+ src/deployment_targets/cloud_run/app/server.py,sha256=dITsPFLccQxAXCSeAVNcAS9muBcnzEax6QRNINYhnp8,5879
102
+ src/deployment_targets/cloud_run/deployment/terraform/service.tf,sha256=T3qVGn_c1oR5dS4XvDYxylK3FPC9FuYIx51kTE2c3xA,10299
103
+ src/deployment_targets/cloud_run/deployment/terraform/dev/service.tf,sha256=C4Yy8Q_HKaCrgCo-JV8CgyTpznPKApUJnhzG7kk8u_A,6548
104
+ src/deployment_targets/cloud_run/tests/integration/test_server_e2e.py,sha256=CZpnpGcCvU4yI0NYGBq1Xfa-NpqTkPuWG7s8FuCEf7I,7896
105
+ src/deployment_targets/cloud_run/tests/load_test/README.md,sha256=pfBZOSem-zs1-3D0dD_Gmf70ueW6GNf0sevsrZdAOz8,2808
106
+ src/deployment_targets/cloud_run/tests/load_test/load_test.py,sha256=eVhqX8GtiDsIuZxMJAF2ivXML0xHDWDbriYsHZjAQZE,4212
105
107
  src/deployment_targets/cloud_run/tests/load_test/.results/.placeholder,sha256=ZbWpSgDo8bT33PstD_73aQSeN_0oo0F104NMUGuZ8lE,14903
106
108
  src/frontends/adk_gemini_fullstack/frontend/components.json,sha256=OUAALKbVpmIHQ16HcK1BgLBbVf_rV7s08PuGqgCFJ-o,423
107
109
  src/frontends/adk_gemini_fullstack/frontend/eslint.config.js,sha256=3ADH23ANA4NNBKFy6nCVk65e8bx1DrVd_FIaYNnhuqA,734
@@ -111,7 +113,7 @@ src/frontends/adk_gemini_fullstack/frontend/package.json,sha256=bUzgvwGx8oVL2wHY
111
113
  src/frontends/adk_gemini_fullstack/frontend/tsconfig.json,sha256=LtqiCB6w68AjbIegDnbXa1YXKM_RQZZVVkAjfUNxyBo,753
112
114
  src/frontends/adk_gemini_fullstack/frontend/tsconfig.node.json,sha256=1BewvjsiZMJqSGXTqe94jo5yKdpi7yqI7UGoHgTv9mg,593
113
115
  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
116
+ src/frontends/adk_gemini_fullstack/frontend/src/App.tsx,sha256=N50ox6esJyvNifWXxCQUXulXhfQD643qGSXdfiIh6zk,21411
115
117
  src/frontends/adk_gemini_fullstack/frontend/src/global.css,sha256=uNpkk45y9XVsmQs84D0KHN8B2i55ElSFZxHu6zml5E8,5037
116
118
  src/frontends/adk_gemini_fullstack/frontend/src/main.tsx,sha256=WYYxbfb0WHrY1BW7KB-pCxb3jslb1UeCDa26l9Ve0SQ,328
117
119
  src/frontends/adk_gemini_fullstack/frontend/src/utils.ts,sha256=Utm02hSGixxQ_T4hqlZqpdc8BuK1B2Mgk5X0vNK3V_4,170
@@ -176,29 +178,29 @@ src/frontends/streamlit/frontend/utils/stream_handler.py,sha256=-XVRfLH6ck1KP6NS
176
178
  src/frontends/streamlit/frontend/utils/title_summary.py,sha256=B0cadS_KPW-tsbABauI4J681aqjEtuKFDa25e9R1WKc,3030
177
179
  src/resources/containers/data_processing/Dockerfile,sha256=VoB9d5yZiiWnqRfWrIq0gGNMzZg-eVy733OgP72ZgO0,950
178
180
  src/resources/containers/e2e-tests/Dockerfile,sha256=Q_aTyX_iaFY8j06XZkpMuggJnNO5daiLmmrvqaZHMxw,1611
179
- src/resources/docs/adk-cheatsheet.md,sha256=SHtckZqDg60Bz_Id7qc2TY6ftz_X2bh88RQi4gCYb4E,58717
181
+ src/resources/docs/adk-cheatsheet.md,sha256=KTCdM7hOvsv1-GgwEBMMU6kLk3WHQ69RAs6VWltNaDA,58722
180
182
  src/resources/idx/idx-template.json,sha256=07OQZCPp45Iqor2O7Tm1e1Gmsdd-AmmUofSvA7y-oRs,793
181
183
  src/resources/idx/idx-template.nix,sha256=sesHGev_PYtVDg0J5tHkg0OO7IR1Bz2iAtl_if3Ar3M,892
182
184
  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
185
+ src/resources/locks/uv-adk_base-agent_engine.lock,sha256=At7JUJjTZ7fqapE-yTv6KOnZnmEUFfggc6fR670088M,477091
186
+ src/resources/locks/uv-adk_base-cloud_run.lock,sha256=y9E2KvWDophBoEb3VOlD08g45Xzz91iOfW4kUotKJFM,630449
187
+ src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock,sha256=At7JUJjTZ7fqapE-yTv6KOnZnmEUFfggc6fR670088M,477091
188
+ src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock,sha256=y9E2KvWDophBoEb3VOlD08g45Xzz91iOfW4kUotKJFM,630449
189
+ src/resources/locks/uv-agentic_rag-agent_engine.lock,sha256=BuOCpKLD7hZMAAcoUEn52-q5ZjgfRXjtkgGwa9oFrcw,535028
190
+ src/resources/locks/uv-agentic_rag-cloud_run.lock,sha256=cgWp0MrqkagHZlJpzrl_BR2qXy6LH6R5zat88wY_QqY,708082
191
+ src/resources/locks/uv-crewai_coding_crew-agent_engine.lock,sha256=sjCgdsjhHLT_BymEjHF4e12ptEilMqEgOzK2WifutnQ,813067
192
+ src/resources/locks/uv-crewai_coding_crew-cloud_run.lock,sha256=I7UZ6TRKwBQhQu9gZ7PiNZf0fiu0XeFT6LQ000X2hdw,1060937
193
+ src/resources/locks/uv-langgraph_base_react-agent_engine.lock,sha256=2LK-b_sXcECpCOyB8c8Hg_Tn-oWoPywTjoXtPIkofAo,681742
194
+ src/resources/locks/uv-langgraph_base_react-cloud_run.lock,sha256=890djdH1xysQjvyNYsR2e-gBMqIvY1sSd1nGrIdrwKs,899376
195
+ src/resources/locks/uv-live_api-cloud_run.lock,sha256=pzzQFnkozda6LCKiWgaw933YaQT0nlV8R2RLLnQ4aAI,822935
194
196
  src/resources/setup_cicd/cicd_variables.tf,sha256=PMflYe1TzQi63LORHkmeCktTYzXFplJgxffNH4DtuAQ,1244
195
- src/resources/setup_cicd/github.tf,sha256=scTBgeZlCM74N-pzhVKsnTN0PX9a5GboNl1HN3-LlCM,2791
197
+ src/resources/setup_cicd/github.tf,sha256=V2XZ7bKdJ9fzibsjIrI-loHQ1eQbfjNWVPLDPIAUeTA,2807
196
198
  src/resources/setup_cicd/providers.tf,sha256=Km4z6IJt7x7PLaa0kyZbBrO2m3lpuIJZFD5jB7QBfF0,1122
197
199
  src/utils/generate_locks.py,sha256=6V1B8V2BEuevWnXUsxZVTrLjXwFRII8UfsIGrQqZxVs,4320
198
200
  src/utils/lock_utils.py,sha256=RSE6n3hBkH64xNm3Q5wrR0Pqbeo-oc7xaTOhA9yzHjk,2275
199
201
  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,,
202
+ agent_starter_pack-0.8.0.dist-info/METADATA,sha256=nCOvlOlpJzDrhmFh5PCLWyEAso0H8t0s3NkR-l4uSeM,11146
203
+ agent_starter_pack-0.8.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
204
+ agent_starter_pack-0.8.0.dist-info/entry_points.txt,sha256=U7uCxR7YulIhZ0L8R8Hui0Bsy6J7oyESBeDYJYMrQjA,56
205
+ agent_starter_pack-0.8.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
206
+ agent_starter_pack-0.8.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.
@@ -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,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.5.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,8 +16,9 @@ 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.5.0"]
21
22
  tags: ["adk"]
22
23
  frontend_type: "adk_gemini_fullstack"
23
24
  commands:
@@ -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.5.0",
22
23
  "langchain-google-vertexai~=2.0.7",
23
24
  "langchain~=0.3.24",
24
25
  "langchain-core~=0.3.55",
@@ -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.
@@ -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
  }
@@ -24,7 +24,14 @@ locals {
24
24
  "bigquery.googleapis.com",
25
25
  "serviceusage.googleapis.com",
26
26
  "logging.googleapis.com",
27
- "cloudtrace.googleapis.com"
27
+ "cloudtrace.googleapis.com",
28
+ {%- if "adk" in cookiecutter.tags and cookiecutter.session_type == "alloydb" %}
29
+ "compute.googleapis.com",
30
+ "servicenetworking.googleapis.com",
31
+ "alloydb.googleapis.com",
32
+ "secretmanager.googleapis.com",
33
+ "dns.googleapis.com"
34
+ {%- endif %}
28
35
  ]
29
36
  }
30
37
 
@@ -54,6 +54,9 @@ variable "agentengine_sa_roles" {
54
54
  {% endif %}
55
55
  type = list(string)
56
56
  default = [
57
+ {%- if "adk" in cookiecutter.tags and cookiecutter.session_type == "alloydb" %}
58
+ "roles/secretmanager.secretAccessor",
59
+ {%- endif %}
57
60
  "roles/aiplatform.user",
58
61
  "roles/discoveryengine.editor",
59
62
  "roles/logging.logWriter",
@@ -61,7 +64,6 @@ variable "agentengine_sa_roles" {
61
64
  "roles/storage.admin"
62
65
  ]
63
66
  }
64
-
65
67
  {% if cookiecutter.data_ingestion %}
66
68
 
67
69
  variable "pipelines_roles" {