agent-starter-pack 0.7.0__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.
- {agent_starter_pack-0.7.0.dist-info → agent_starter_pack-0.8.0.dist-info}/METADATA +5 -5
- {agent_starter_pack-0.7.0.dist-info → agent_starter_pack-0.8.0.dist-info}/RECORD +57 -55
- agents/README.md +7 -0
- agents/adk_base/notebooks/adk_app_testing.ipynb +8 -6
- agents/adk_base/template/.templateconfig.yaml +3 -1
- agents/adk_gemini_fullstack/notebooks/adk_app_testing.ipynb +8 -6
- agents/adk_gemini_fullstack/template/.templateconfig.yaml +2 -1
- agents/agentic_rag/notebooks/adk_app_testing.ipynb +8 -6
- agents/agentic_rag/template/.templateconfig.yaml +2 -1
- agents/crewai_coding_crew/template/.templateconfig.yaml +1 -1
- llm.txt +22 -9
- src/base_template/.gitignore +0 -1
- src/base_template/README.md +5 -2
- src/base_template/deployment/cd/deploy-to-prod.yaml +1 -16
- src/base_template/deployment/cd/staging.yaml +4 -19
- src/base_template/deployment/terraform/apis.tf +2 -2
- src/base_template/deployment/terraform/build_triggers.tf +5 -5
- src/base_template/deployment/terraform/dev/apis.tf +8 -1
- src/base_template/deployment/terraform/dev/variables.tf +3 -1
- src/base_template/deployment/terraform/iam.tf +8 -8
- src/base_template/deployment/terraform/locals.tf +9 -2
- src/base_template/deployment/terraform/log_sinks.tf +2 -2
- src/base_template/deployment/terraform/service_accounts.tf +3 -3
- src/base_template/deployment/terraform/storage.tf +7 -7
- src/base_template/deployment/terraform/variables.tf +3 -0
- src/base_template/pyproject.toml +4 -3
- src/cli/commands/create.py +38 -0
- src/cli/commands/setup_cicd.py +2 -2
- src/cli/utils/cicd.py +6 -3
- src/cli/utils/template.py +34 -9
- src/deployment_targets/agent_engine/app/agent_engine_app.py +7 -7
- src/deployment_targets/agent_engine/tests/load_test/README.md +1 -6
- src/deployment_targets/agent_engine/tests/load_test/load_test.py +13 -3
- src/deployment_targets/cloud_run/Dockerfile +3 -0
- src/deployment_targets/cloud_run/app/server.py +18 -0
- src/deployment_targets/cloud_run/deployment/terraform/dev/service.tf +231 -0
- src/deployment_targets/cloud_run/deployment/terraform/service.tf +360 -0
- src/deployment_targets/cloud_run/tests/integration/test_server_e2e.py +8 -5
- src/deployment_targets/cloud_run/tests/load_test/README.md +2 -2
- src/deployment_targets/cloud_run/tests/load_test/load_test.py +21 -17
- src/frontends/adk_gemini_fullstack/frontend/src/App.tsx +2 -3
- src/resources/docs/adk-cheatsheet.md +1 -1
- src/resources/locks/uv-adk_base-agent_engine.lock +805 -200
- src/resources/locks/uv-adk_base-cloud_run.lock +1085 -234
- src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock +805 -200
- src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock +1085 -234
- src/resources/locks/uv-agentic_rag-agent_engine.lock +386 -283
- src/resources/locks/uv-agentic_rag-cloud_run.lock +513 -349
- src/resources/locks/uv-crewai_coding_crew-agent_engine.lock +492 -497
- src/resources/locks/uv-crewai_coding_crew-cloud_run.lock +671 -613
- src/resources/locks/uv-langgraph_base_react-agent_engine.lock +500 -391
- src/resources/locks/uv-langgraph_base_react-cloud_run.lock +682 -510
- src/resources/locks/uv-live_api-cloud_run.lock +686 -486
- src/resources/setup_cicd/github.tf +2 -2
- src/deployment_targets/cloud_run/uv.lock +0 -6952
- {agent_starter_pack-0.7.0.dist-info → agent_starter_pack-0.8.0.dist-info}/WHEEL +0 -0
- {agent_starter_pack-0.7.0.dist-info → agent_starter_pack-0.8.0.dist-info}/entry_points.txt +0 -0
- {agent_starter_pack-0.7.0.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.
|
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
|
11
|
-
Requires-Dist: cookiecutter~=2.
|
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
|
14
|
-
Requires-Dist: rich
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
44
|
-
src/base_template/.gitignore,sha256=
|
44
|
+
llm.txt,sha256=DZaO2YqDmvigYzqIvMsNPYilmbNqZfJL9hTicZHpvZc,13561
|
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=
|
48
|
-
src/base_template/pyproject.toml,sha256=
|
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=
|
55
|
-
src/base_template/deployment/cd/staging.yaml,sha256=
|
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=
|
58
|
-
src/base_template/deployment/terraform/build_triggers.tf,sha256=
|
59
|
-
src/base_template/deployment/terraform/iam.tf,sha256
|
60
|
-
src/base_template/deployment/terraform/locals.tf,sha256=
|
61
|
-
src/base_template/deployment/terraform/log_sinks.tf,sha256=
|
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=
|
64
|
-
src/base_template/deployment/terraform/storage.tf,sha256=
|
65
|
-
src/base_template/deployment/terraform/variables.tf,sha256=
|
66
|
-
src/base_template/deployment/terraform/dev/apis.tf,sha256=
|
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=
|
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=
|
77
|
-
src/cli/commands/setup_cicd.py,sha256=
|
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=
|
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=
|
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=
|
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=
|
97
|
-
src/deployment_targets/agent_engine/tests/load_test/load_test.py,sha256=
|
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=
|
100
|
-
src/deployment_targets/cloud_run/
|
101
|
-
src/deployment_targets/cloud_run/
|
102
|
-
src/deployment_targets/cloud_run/
|
103
|
-
src/deployment_targets/cloud_run/tests/
|
104
|
-
src/deployment_targets/cloud_run/tests/load_test/
|
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=
|
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=
|
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=
|
184
|
-
src/resources/locks/uv-adk_base-cloud_run.lock,sha256=
|
185
|
-
src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock,sha256=
|
186
|
-
src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock,sha256=
|
187
|
-
src/resources/locks/uv-agentic_rag-agent_engine.lock,sha256=
|
188
|
-
src/resources/locks/uv-agentic_rag-cloud_run.lock,sha256=
|
189
|
-
src/resources/locks/uv-crewai_coding_crew-agent_engine.lock,sha256=
|
190
|
-
src/resources/locks/uv-crewai_coding_crew-cloud_run.lock,sha256=
|
191
|
-
src/resources/locks/uv-langgraph_base_react-agent_engine.lock,sha256=
|
192
|
-
src/resources/locks/uv-langgraph_base_react-cloud_run.lock,sha256=
|
193
|
-
src/resources/locks/uv-live_api-cloud_run.lock,sha256=
|
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=
|
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.
|
201
|
-
agent_starter_pack-0.
|
202
|
-
agent_starter_pack-0.
|
203
|
-
agent_starter_pack-0.
|
204
|
-
agent_starter_pack-0.
|
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
|
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
|
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.
|
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
|
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
|
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.
|
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
|
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
|
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.
|
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",
|
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.
|
@@ -204,21 +211,27 @@ uvx agent-starter-pack setup-cicd [OPTIONS]
|
|
204
211
|
```
|
205
212
|
**Prerequisites:** Run from the project root. `uv`, `gh` CLI, `gcloud` CLI, and `terraform` must be installed and authenticated. Requires `Owner` role on the GCP projects.
|
206
213
|
|
207
|
-
**
|
208
|
-
* `--staging-project
|
209
|
-
* `--
|
210
|
-
* `--
|
214
|
+
**Automated CI/CD Setup Options:**
|
215
|
+
* `--staging-project`: (REQUIRED) The Google Cloud Project ID for your staging environment.
|
216
|
+
* `--prod-project`: (REQUIRED) The Google Cloud Project ID for your production environment.
|
217
|
+
* `--repository-name`: (REQUIRED) The name for the new GitHub repository that will be created.
|
218
|
+
* `--repository-owner`: (REQUIRED) Your GitHub username or organization where the repo will be created.
|
219
|
+
* `--git-provider`: (REQUIRED) The Git provider to use (github, gitlab, etc.). Only "github" is supported.
|
220
|
+
* `--auto-approve`: Skips all interactive confirmation prompts.
|
221
|
+
|
211
222
|
|
212
223
|
**Automated Example:**
|
213
224
|
```bash
|
214
225
|
uvx agent-starter-pack setup-cicd \
|
215
|
-
--staging-project
|
216
|
-
--prod-project
|
217
|
-
--repository-name
|
218
|
-
--repository-owner
|
226
|
+
--staging-project the-user-staging-project \
|
227
|
+
--prod-project the-user-prod-project \
|
228
|
+
--repository-name the-user-repo-name \
|
229
|
+
--repository-owner the-username \
|
230
|
+
--git-provider github \
|
219
231
|
--auto-approve
|
220
232
|
```
|
221
|
-
|
233
|
+
* Note: As a coding agent, you must run this command non-interactively. Before executing, you must ask the user to provide the following required flags: `--staging-project`, `--prod-project`, `--repository-name`, `--repository-owner`, and `--git-provider`. Once you have these values, you can construct and run the command with the `--auto-approve` flag.
|
234
|
+
* Note: If the user tells that `setup-cicd` is not a viable option or it wants to use a different git provider, you must not use this command. Instead, you should look at the `deployment/README.md` to get instructions on how to manually deploy the agent.
|
222
235
|
---
|
223
236
|
### Section 6: Operational Guidelines for Coding Agents
|
224
237
|
|
src/base_template/.gitignore
CHANGED
src/base_template/README.md
CHANGED
@@ -21,6 +21,7 @@ This project is organized as follows:
|
|
21
21
|
├── notebooks/ # Jupyter notebooks for prototyping and evaluation
|
22
22
|
├── tests/ # Unit, integration, and load tests
|
23
23
|
├── Makefile # Makefile for common commands
|
24
|
+
├── GEMINI.md # AI-assisted development guide
|
24
25
|
└── pyproject.toml # Project dependencies and configuration
|
25
26
|
```
|
26
27
|
|
@@ -53,7 +54,7 @@ make install && make playground
|
|
53
54
|
{%- endif %}
|
54
55
|
{%- if cookiecutter.deployment_target == 'cloud_run' %}
|
55
56
|
| `make playground` | Launch local development environment with backend and frontend{%- if "adk" in cookiecutter.tags %} - leveraging `adk web` command. {%- endif %}|
|
56
|
-
| `make backend` | Deploy agent to Cloud Run |
|
57
|
+
| `make backend` | Deploy agent to Cloud Run (use `IAP=true` to enable Identity-Aware Proxy) |
|
57
58
|
| `make local-backend` | Launch local development server |
|
58
59
|
{%- if cookiecutter.deployment_target == 'cloud_run' %}
|
59
60
|
{%- if cookiecutter.agent_name == 'live_api' %}
|
@@ -66,7 +67,7 @@ make install && make playground
|
|
66
67
|
{%- endif %}
|
67
68
|
| `make test` | Run unit and integration tests |
|
68
69
|
| `make lint` | Run code quality checks (codespell, ruff, mypy) |
|
69
|
-
| `make setup-dev-env` | Set up development environment resources using Terraform
|
70
|
+
| `make setup-dev-env` | Set up development environment resources using Terraform |
|
70
71
|
{%- if cookiecutter.data_ingestion %}
|
71
72
|
| `make data-ingestion`| Run data ingestion pipeline in the Dev environment |
|
72
73
|
{%- endif %}
|
@@ -160,6 +161,8 @@ This template follows a "bring your own agent" approach - you focus on your busi
|
|
160
161
|
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.
|
161
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.
|
162
163
|
5. **Monitor:** Track performance and gather insights using Cloud Logging, Tracing, and the Looker Studio dashboard to iterate on your application.
|
164
|
+
|
165
|
+
The project includes a `GEMINI.md` file that provides context for AI tools like Gemini CLI when asking questions about your template.
|
163
166
|
{% endif %}
|
164
167
|
|
165
168
|
## Deployment
|
@@ -55,22 +55,7 @@ steps:
|
|
55
55
|
- "$_REGION"
|
56
56
|
- "--project"
|
57
57
|
- $_PROD_PROJECT_ID
|
58
|
-
|
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
|
-
|
157
|
-
|
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" "
|
22
|
+
resource "google_project_service" "deploy_project_services" {
|
23
23
|
for_each = {
|
24
|
-
for pair in setproduct(keys(local.deploy_project_ids), local.
|
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]
|