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.
- {agent_starter_pack-0.7.1.dist-info → agent_starter_pack-0.8.0.dist-info}/METADATA +5 -5
- {agent_starter_pack-0.7.1.dist-info → agent_starter_pack-0.8.0.dist-info}/RECORD +56 -54
- 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 +7 -0
- src/base_template/README.md +2 -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 +2 -2
- src/cli/utils/template.py +34 -0
- 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.1.dist-info → agent_starter_pack-0.8.0.dist-info}/WHEEL +0 -0
- {agent_starter_pack-0.7.1.dist-info → agent_starter_pack-0.8.0.dist-info}/entry_points.txt +0 -0
- {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.
|
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
|
+
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=
|
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.
|
src/base_template/README.md
CHANGED
@@ -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
|
-
|
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]
|
@@ -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.
|
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 =
|
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.
|
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 =
|
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.
|
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" {
|