agent-starter-pack 0.14.1__py3-none-any.whl → 0.15.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.14.1.dist-info → agent_starter_pack-0.15.0.dist-info}/METADATA +2 -2
- {agent_starter_pack-0.14.1.dist-info → agent_starter_pack-0.15.0.dist-info}/RECORD +28 -28
- agents/adk_base/notebooks/adk_app_testing.ipynb +36 -18
- agents/agentic_rag/notebooks/adk_app_testing.ipynb +36 -18
- src/base_template/Makefile +1 -1
- src/base_template/deployment/terraform/vars/env.tfvars +3 -4
- src/base_template/pyproject.toml +4 -4
- src/cli/commands/create.py +34 -11
- src/cli/utils/gcp.py +19 -0
- src/cli/utils/remote_template.py +144 -1
- src/cli/utils/template.py +12 -0
- src/deployment_targets/agent_engine/tests/integration/test_agent_engine_app.py +6 -3
- src/deployment_targets/agent_engine/tests/load_test/load_test.py +12 -3
- src/deployment_targets/agent_engine/{{cookiecutter.agent_directory}}/agent_engine_app.py +45 -38
- src/deployment_targets/cloud_run/deployment/terraform/dev/service.tf +12 -0
- src/deployment_targets/cloud_run/deployment/terraform/service.tf +24 -0
- src/resources/locks/uv-adk_base-agent_engine.lock +1738 -1703
- src/resources/locks/uv-adk_base-cloud_run.lock +2295 -2253
- src/resources/locks/uv-agentic_rag-agent_engine.lock +1971 -1914
- src/resources/locks/uv-agentic_rag-cloud_run.lock +2605 -2537
- src/resources/locks/uv-crewai_coding_crew-agent_engine.lock +2839 -2807
- src/resources/locks/uv-crewai_coding_crew-cloud_run.lock +3755 -3714
- src/resources/locks/uv-langgraph_base_react-agent_engine.lock +2441 -2396
- src/resources/locks/uv-langgraph_base_react-cloud_run.lock +3243 -3185
- src/resources/locks/uv-live_api-cloud_run.lock +2950 -2902
- {agent_starter_pack-0.14.1.dist-info → agent_starter_pack-0.15.0.dist-info}/WHEEL +0 -0
- {agent_starter_pack-0.14.1.dist-info → agent_starter_pack-0.15.0.dist-info}/entry_points.txt +0 -0
- {agent_starter_pack-0.14.1.dist-info → agent_starter_pack-0.15.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: agent-starter-pack
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.15.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
|
@@ -8,7 +8,7 @@ License-File: LICENSE
|
|
8
8
|
Requires-Python: >=3.10
|
9
9
|
Requires-Dist: backoff>=2.2.1
|
10
10
|
Requires-Dist: click>=8.1.7
|
11
|
-
Requires-Dist: cookiecutter
|
11
|
+
Requires-Dist: cookiecutter<3.0.0,>=2.6.0
|
12
12
|
Requires-Dist: google-cloud-aiplatform>=1.87.0
|
13
13
|
Requires-Dist: pyyaml>=6.0.1
|
14
14
|
Requires-Dist: rich>=13.7.0
|
@@ -3,7 +3,7 @@ agents/adk_base/README.md,sha256=eLf-F9Z4u_mQOchAnUaSrOAHXRSx8wUQN29kkwz1SF4,894
|
|
3
3
|
agents/adk_base/.template/templateconfig.yaml,sha256=8mQ_IIgC0h4eiTUM7FEIPSxwI73aenspcHsnqUb4AfY,923
|
4
4
|
agents/adk_base/app/__init__.py,sha256=wT1TtenBOdA4LTtf6mQjvAT5aRR1N2PCx_A-MrDLGsg,631
|
5
5
|
agents/adk_base/app/agent.py,sha256=6Q6QegQDxEaAck989DPIb3ArHMZtw_YJBqhHFqg-UjQ,2182
|
6
|
-
agents/adk_base/notebooks/adk_app_testing.ipynb,sha256=
|
6
|
+
agents/adk_base/notebooks/adk_app_testing.ipynb,sha256=81L1kbeUlkC3DpTY9nGyB8h5ezCdEeNCVHkBPyG0fgc,10497
|
7
7
|
agents/adk_base/notebooks/evaluating_adk_agent.ipynb,sha256=SdZC1htgXtXw3oyi8d70dNVpDgUmV9T5hqiwGxM9plk,57034
|
8
8
|
agents/adk_base/tests/integration/test_agent.py,sha256=_zb3GMWMtMRq2rOyYC-uL1eNhpg2XBkm8Noj0O_UOng,1998
|
9
9
|
agents/agentic_rag/README.md,sha256=cPeY_XGt79ava22PIM0x92oi67R-TnlEKBQGpK1MOkA,2262
|
@@ -12,7 +12,7 @@ agents/agentic_rag/app/__init__.py,sha256=wT1TtenBOdA4LTtf6mQjvAT5aRR1N2PCx_A-Mr
|
|
12
12
|
agents/agentic_rag/app/agent.py,sha256=joSAfrVcS9eRtOT3MXPSoiwElpwVq-hjpCHkqTj6vuM,4041
|
13
13
|
agents/agentic_rag/app/retrievers.py,sha256=qfxwSEixMddvAu4FvUTZAFh1Gdp3RPY65s0Wp6gEFVk,4561
|
14
14
|
agents/agentic_rag/app/templates.py,sha256=8N_uRchwiN7hlH9Y8rdJ1CAtOhpHUWZkXZZ7IU-YJJk,867
|
15
|
-
agents/agentic_rag/notebooks/adk_app_testing.ipynb,sha256=
|
15
|
+
agents/agentic_rag/notebooks/adk_app_testing.ipynb,sha256=81L1kbeUlkC3DpTY9nGyB8h5ezCdEeNCVHkBPyG0fgc,10497
|
16
16
|
agents/agentic_rag/notebooks/evaluating_adk_agent.ipynb,sha256=SdZC1htgXtXw3oyi8d70dNVpDgUmV9T5hqiwGxM9plk,57034
|
17
17
|
agents/agentic_rag/tests/integration/test_agent.py,sha256=YcwOZXa9uJqcqZN8UPikNm_dlSh9XduEfcuQa0wkby8,2170
|
18
18
|
agents/crewai_coding_crew/README.md,sha256=4No7sfHQVHELARGiT3fWANJzDR0NP48ow4ct3FoPwlA,1672
|
@@ -38,9 +38,9 @@ agents/live_api/tests/unit/test_server.py,sha256=_tf9nHkb7aOe3lZRlyp7cVklOTOYTuX
|
|
38
38
|
llm.txt,sha256=3beEnDz6DIQT345TibJCi60Mw8xh2PaY-lFc-EJpR8s,15380
|
39
39
|
src/base_template/.gitignore,sha256=Fq0w34x4sfbwP4RqDqh6hdHNYRUEsFNI-9XONzLWBIs,2580
|
40
40
|
src/base_template/GEMINI.md,sha256=WzscHWlQeYkKORZ-453P8KM9IHuj1kAxW-69c7Ytuwk,133
|
41
|
-
src/base_template/Makefile,sha256=
|
41
|
+
src/base_template/Makefile,sha256=1UKB6rlIbGStc-hUfnwKanOtxhz-vzaKxrCxTlPilqs,8087
|
42
42
|
src/base_template/README.md,sha256=_TjEIWOK75GfaG3qfaOQdfC9J5AlPo_dckRY7e84dlM,10184
|
43
|
-
src/base_template/pyproject.toml,sha256=
|
43
|
+
src/base_template/pyproject.toml,sha256=HsLasS9vm6PZi7BiGrHe0tgBnwvgafa4eIj4k1P3DCU,2940
|
44
44
|
src/base_template/deployment/README.md,sha256=gZJvSWdQh_Mi-bZ3dmuPv7fMezIw04fgN5tq7KgglPw,692
|
45
45
|
src/base_template/deployment/terraform/apis.tf,sha256=KX8Oe2gjT-gh9Bkntz9yIAyRjPc1gZvwOhroJ6NZVp4,1513
|
46
46
|
src/base_template/deployment/terraform/github.tf,sha256=KhfNBAzeUH9jDr8FOw_DiypesA5AEC8IZT1PRqntSt8,10838
|
@@ -60,7 +60,7 @@ src/base_template/deployment/terraform/dev/providers.tf,sha256=1S9jCh48d6ailVZ1e
|
|
60
60
|
src/base_template/deployment/terraform/dev/storage.tf,sha256=1mgLs21SUhfcoRICqd7BqUlEVAVGeN3kMsQ4UAQLOh8,4654
|
61
61
|
src/base_template/deployment/terraform/dev/variables.tf,sha256=l95zljQbchR6b--wJGJJcCAu89FqsR3UqAiCz_bH7to,4089
|
62
62
|
src/base_template/deployment/terraform/dev/vars/env.tfvars,sha256=LoQMjh1AAMR-MGfaSCsVMjdoYTk2T4oS4D9vMH54CdQ,714
|
63
|
-
src/base_template/deployment/terraform/vars/env.tfvars,sha256=
|
63
|
+
src/base_template/deployment/terraform/vars/env.tfvars,sha256=YcVMXSDXZWYZg1ZxkdNWMRPG0p4bCz8HE9EQyNKeWLs,1394
|
64
64
|
src/base_template/tests/unit/test_dummy.py,sha256=2exfCH8qhkZrLWvK04ZxNTO9MV3fdTbZkJN3uK6zvok,850
|
65
65
|
src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/deploy-to-prod.yaml,sha256=79RK2xyUTfkAzRyDiZH-1tePdcoeMwTczeVozppD1ao,5768
|
66
66
|
src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/pr_checks.yaml,sha256=urlWV4ncjKm-M1Wwg5nlw9E9LGob40rWO7fEOxyxE4U,2010
|
@@ -72,17 +72,17 @@ src/base_template/{{cookiecutter.agent_directory}}/utils/gcs.py,sha256=jKblaWOGQ
|
|
72
72
|
src/base_template/{{cookiecutter.agent_directory}}/utils/tracing.py,sha256=2rv1Ukh2jTBENDwoghCItJ28l-Sjz9gMlzdojlVgJa4,6052
|
73
73
|
src/base_template/{{cookiecutter.agent_directory}}/utils/typing.py,sha256=DP5OZC3IGvqA1XbvWt8kI3gyAK3ZjzUSL5Ca17wNeLI,4249
|
74
74
|
src/cli/main.py,sha256=Dya7Sw3ozMTaGDcwMh_-W7udkGZHGzgAj8aBdSZaZxI,1832
|
75
|
-
src/cli/commands/create.py,sha256=
|
75
|
+
src/cli/commands/create.py,sha256=R1KKf419Wd2QMi98LrVgm68OyaHKFd0rtm5P3_SIZhI,46779
|
76
76
|
src/cli/commands/enhance.py,sha256=6_daqd0te1vj0eMrsyQwr9psr0d1PKU1UEVya8KOcy8,19472
|
77
77
|
src/cli/commands/list.py,sha256=ZGol9eYB9Yon7JysMUCtpEOwdXzrApdTHzErx6KvT04,6856
|
78
78
|
src/cli/commands/setup_cicd.py,sha256=3BtHChOPvp0I-4tlPqwz5hZFm13gtw9gvlWQwF-F7oE,32492
|
79
79
|
src/cli/utils/__init__.py,sha256=_cTmsXGPqOtK0q8UW5164QTltbJRJFR_Efxq_BRL1-o,1311
|
80
80
|
src/cli/utils/cicd.py,sha256=l9hPdqFXo5SxdtOG1yEoQdmRff5vNcqf0sqxBTtPQig,30704
|
81
81
|
src/cli/utils/datastores.py,sha256=gv1V6eDcOEKx4MRNG5C3Y-VfixYq1AzQuaYMLp8QRNo,1058
|
82
|
-
src/cli/utils/gcp.py,sha256=
|
82
|
+
src/cli/utils/gcp.py,sha256=_Eq2bsNVS_Npj6ZPzjZA1J6SCu2srGUgsrgu1mIhKh0,9261
|
83
83
|
src/cli/utils/logging.py,sha256=61ulUY1hUrpxHDFi0szqsjPlrpxdBvwzfYEEV0o97GA,3530
|
84
|
-
src/cli/utils/remote_template.py,sha256=
|
85
|
-
src/cli/utils/template.py,sha256=
|
84
|
+
src/cli/utils/remote_template.py,sha256=ITN1a5GQmVIb1dHpExPLTz1k5c9j7M6fF-HXUDCl6i8,23967
|
85
|
+
src/cli/utils/template.py,sha256=wvd-bLus_Z_SNFh_F9A5eqGWKGe74ZkbpQOlMrrp5Ek,50876
|
86
86
|
src/cli/utils/version.py,sha256=F4udQmzniPStqWZFIgnv3Qg3l9non4mfy2An-Oveqmc,2916
|
87
87
|
src/data_ingestion/README.md,sha256=LNxSQoJW9JozK-TbyGQLj5L_MGWNwrfLk6V6RmQ2oBQ,4032
|
88
88
|
src/data_ingestion/pyproject.toml,sha256=-1Mf2QB8K70ICQV5UPZDpf-fN3UwEQLVzQyxfakCSTY,445
|
@@ -93,14 +93,14 @@ src/data_ingestion/data_ingestion_pipeline/components/ingest_data.py,sha256=QbPm
|
|
93
93
|
src/data_ingestion/data_ingestion_pipeline/components/process_data.py,sha256=8vubxkykRpx-d89H1XYGO3yXz4hxhihhGDgDR3s-XZ4,22045
|
94
94
|
src/deployment_targets/agent_engine/deployment_metadata.json,sha256=G_t_n-UNrFsBgH1Xrw5-ZqYzUGwZ4X6ipsIm_yiSq-w,72
|
95
95
|
src/deployment_targets/agent_engine/notebooks/intro_agent_engine.ipynb,sha256=RE6Gp-bu4bHtNBngfkt_CF5emy5YcOWQ5rMYW_Cv8_w,48809
|
96
|
-
src/deployment_targets/agent_engine/tests/integration/test_agent_engine_app.py,sha256=
|
96
|
+
src/deployment_targets/agent_engine/tests/integration/test_agent_engine_app.py,sha256=W2ej8qR1gzPCqVa_aQ-ue4XBGYKaWdtgpIbyOTpy-uo,6154
|
97
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=
|
98
|
+
src/deployment_targets/agent_engine/tests/load_test/load_test.py,sha256=VbQjm8uR8JsdJe3upO1eUIz5SZR7IQsHYyJy88cAjy0,4516
|
99
99
|
src/deployment_targets/agent_engine/tests/load_test/.results/.placeholder,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
100
|
-
src/deployment_targets/agent_engine/{{cookiecutter.agent_directory}}/agent_engine_app.py,sha256=
|
100
|
+
src/deployment_targets/agent_engine/{{cookiecutter.agent_directory}}/agent_engine_app.py,sha256=G2X3hY5i1MqFxL6rQpxITZYaLT_mGHIfVh_FiKiziFY,12718
|
101
101
|
src/deployment_targets/cloud_run/Dockerfile,sha256=rSpmFK7uJhZYwYMtxH8W7mywcCPvaoFn7gL_mXRYuF8,1449
|
102
|
-
src/deployment_targets/cloud_run/deployment/terraform/service.tf,sha256=
|
103
|
-
src/deployment_targets/cloud_run/deployment/terraform/dev/service.tf,sha256=
|
102
|
+
src/deployment_targets/cloud_run/deployment/terraform/service.tf,sha256=09F6jkkMtoQlbQNdzJl8OZs-ZlfmzZmgCaUFvniJnlQ,11146
|
103
|
+
src/deployment_targets/cloud_run/deployment/terraform/dev/service.tf,sha256=l6fG-kMyYOOrRwnsUys_Vq46-76bMiRyXzHYkVD2XFM,6993
|
104
104
|
src/deployment_targets/cloud_run/tests/integration/test_server_e2e.py,sha256=85tA1gtbu_Z2CJqzOHgvDS-lvQFbYUMW8_mfqEc1_8I,9325
|
105
105
|
src/deployment_targets/cloud_run/tests/load_test/README.md,sha256=clrCwgwUDr_AsivG0oLeNImTK4uke9EAWkrpS2nhIX0,2769
|
106
106
|
src/deployment_targets/cloud_run/tests/load_test/load_test.py,sha256=kK3KaCdBFHKlni3ZVY2u4h_ugNla4o6pbhGRZlQ-haI,4270
|
@@ -156,20 +156,20 @@ src/resources/docs/adk-cheatsheet.md,sha256=9VZpM5bG3pJq4PbNfym7LOLzgeLZfqkAGA0Y
|
|
156
156
|
src/resources/idx/idx-template.json,sha256=07OQZCPp45Iqor2O7Tm1e1Gmsdd-AmmUofSvA7y-oRs,793
|
157
157
|
src/resources/idx/idx-template.nix,sha256=sesHGev_PYtVDg0J5tHkg0OO7IR1Bz2iAtl_if3Ar3M,892
|
158
158
|
src/resources/idx/.idx/dev.nix,sha256=XQ4T1xt5I-8SVwnI37v56RFFlxa58Ko-a9G2-oelYAI,1602
|
159
|
-
src/resources/locks/uv-adk_base-agent_engine.lock,sha256=
|
160
|
-
src/resources/locks/uv-adk_base-cloud_run.lock,sha256=
|
161
|
-
src/resources/locks/uv-agentic_rag-agent_engine.lock,sha256=
|
162
|
-
src/resources/locks/uv-agentic_rag-cloud_run.lock,sha256=
|
163
|
-
src/resources/locks/uv-crewai_coding_crew-agent_engine.lock,sha256=
|
164
|
-
src/resources/locks/uv-crewai_coding_crew-cloud_run.lock,sha256=
|
165
|
-
src/resources/locks/uv-langgraph_base_react-agent_engine.lock,sha256=
|
166
|
-
src/resources/locks/uv-langgraph_base_react-cloud_run.lock,sha256=
|
167
|
-
src/resources/locks/uv-live_api-cloud_run.lock,sha256=
|
159
|
+
src/resources/locks/uv-adk_base-agent_engine.lock,sha256=qFMwabOGCC6xVimE1UxtFuSO-fDyG6Bb1tGFSHTve0k,560006
|
160
|
+
src/resources/locks/uv-adk_base-cloud_run.lock,sha256=QaNqo7hkJtAI1fEQe3px8kPadYCAM6PTV2w0GPgCtj8,740330
|
161
|
+
src/resources/locks/uv-agentic_rag-agent_engine.lock,sha256=hysVuh-LMUV0zeEjOy4qN2pwxj6y2TvmudEcLe02hJI,629087
|
162
|
+
src/resources/locks/uv-agentic_rag-cloud_run.lock,sha256=dK3burkuPD-WbUQ-eb6AVnodYdtIHeEZtettbm5KsXc,833605
|
163
|
+
src/resources/locks/uv-crewai_coding_crew-agent_engine.lock,sha256=GWlR1nTnoFnM3djQ2HJBfPpZVINX8mrM3-sBglONZHo,932027
|
164
|
+
src/resources/locks/uv-crewai_coding_crew-cloud_run.lock,sha256=ZmU5X8qsSFRdIMS1Wjq-QL48EqtEehUhS1RdNINZ4iw,1226879
|
165
|
+
src/resources/locks/uv-langgraph_base_react-agent_engine.lock,sha256=PPQjq6WOwuKDYo2TtGfFr9HmrOkAXEeKzDGnfhZ3QGY,797526
|
166
|
+
src/resources/locks/uv-langgraph_base_react-cloud_run.lock,sha256=E3qF-qnLPNfHTH_VajbD1V0nWDB_ePeGUo3fT-J11pY,1055674
|
167
|
+
src/resources/locks/uv-live_api-cloud_run.lock,sha256=GDYYBrnGgZWBsCZm8dtP3iBNToyT1Wkn7cLeDg1zdkc,962006
|
168
168
|
src/utils/generate_locks.py,sha256=6V1B8V2BEuevWnXUsxZVTrLjXwFRII8UfsIGrQqZxVs,4320
|
169
169
|
src/utils/lock_utils.py,sha256=IFOMUWtb-ypm2Y8w8J5y2oI_-MaPuwPF_JOAAlnNudA,2275
|
170
170
|
src/utils/watch_and_rebuild.py,sha256=vP4yIiA7E_lj5sfQdJUl8TXas6V7msDg8XWUutAC05Q,6679
|
171
|
-
agent_starter_pack-0.
|
172
|
-
agent_starter_pack-0.
|
173
|
-
agent_starter_pack-0.
|
174
|
-
agent_starter_pack-0.
|
175
|
-
agent_starter_pack-0.
|
171
|
+
agent_starter_pack-0.15.0.dist-info/METADATA,sha256=LAo7WXIjqDm1zmuvIexkEmVLkD4D56UqBdY3HkSSADE,11482
|
172
|
+
agent_starter_pack-0.15.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
173
|
+
agent_starter_pack-0.15.0.dist-info/entry_points.txt,sha256=U7uCxR7YulIhZ0L8R8Hui0Bsy6J7oyESBeDYJYMrQjA,56
|
174
|
+
agent_starter_pack-0.15.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
175
|
+
agent_starter_pack-0.15.0.dist-info/RECORD,,
|
@@ -40,48 +40,64 @@
|
|
40
40
|
},
|
41
41
|
{
|
42
42
|
"cell_type": "code",
|
43
|
-
"execution_count":
|
43
|
+
"execution_count": null,
|
44
44
|
"metadata": {},
|
45
45
|
"outputs": [],
|
46
46
|
"source": [
|
47
47
|
"import json\n",
|
48
48
|
"\n",
|
49
49
|
"import requests\n",
|
50
|
-
"import vertexai
|
50
|
+
"import vertexai"
|
51
51
|
]
|
52
52
|
},
|
53
53
|
{
|
54
54
|
"cell_type": "markdown",
|
55
55
|
"metadata": {},
|
56
56
|
"source": [
|
57
|
-
"
|
58
|
-
|
57
|
+
"### Initialize Vertex AI Client"
|
58
|
+
]
|
59
|
+
},
|
60
|
+
{
|
61
|
+
"cell_type": "code",
|
62
|
+
"execution_count": null,
|
63
|
+
"metadata": {},
|
64
|
+
"outputs": [],
|
65
|
+
"source": [
|
66
|
+
"# Initialize the Vertex AI client\n",
|
67
|
+
"LOCATION = \"us-central1\"\n",
|
68
|
+
"\n",
|
69
|
+
"client = vertexai.Client(\n",
|
70
|
+
" location=LOCATION,\n",
|
71
|
+
")"
|
59
72
|
]
|
60
73
|
},
|
61
74
|
{
|
62
75
|
"cell_type": "markdown",
|
63
76
|
"metadata": {},
|
64
77
|
"source": [
|
65
|
-
"
|
78
|
+
"## If you are using Agent Engine\n",
|
79
|
+
"See more documentation at [Agent Engine Overview](https://cloud.google.com/vertex-ai/generative-ai/docs/agent-engine/overview)"
|
66
80
|
]
|
67
81
|
},
|
68
82
|
{
|
69
|
-
"cell_type": "
|
70
|
-
"execution_count": 4,
|
83
|
+
"cell_type": "markdown",
|
71
84
|
"metadata": {},
|
72
|
-
"outputs": [],
|
73
85
|
"source": [
|
74
|
-
"
|
75
|
-
"AGENT_ENGINE_ID = \"projects/PROJECT_ID/locations/us-central1/reasoningEngines/ENGINE_ID\""
|
86
|
+
"### Remote Testing"
|
76
87
|
]
|
77
88
|
},
|
78
89
|
{
|
79
90
|
"cell_type": "code",
|
80
|
-
"execution_count":
|
91
|
+
"execution_count": null,
|
81
92
|
"metadata": {},
|
82
93
|
"outputs": [],
|
83
94
|
"source": [
|
84
|
-
"
|
95
|
+
"# Replace PROJECT_ID and ENGINE_ID with your values\n",
|
96
|
+
"AGENT_ENGINE_ID = \"projects/PROJECT_ID/locations/us-central1/reasoningEngines/ENGINE_ID\"\n",
|
97
|
+
"\n",
|
98
|
+
"# Get the existing agent engine\n",
|
99
|
+
"remote_agent_engine = client.agent_engines.get(name=AGENT_ENGINE_ID)\n",
|
100
|
+
"print(f\"Retrieved agent engine: {remote_agent_engine.api_resource.name}\")"
|
85
101
|
]
|
86
102
|
},
|
87
103
|
{
|
@@ -90,7 +106,9 @@
|
|
90
106
|
"metadata": {},
|
91
107
|
"outputs": [],
|
92
108
|
"source": [
|
93
|
-
"for event in remote_agent_engine.
|
109
|
+
"async for event in remote_agent_engine.async_stream_query(\n",
|
110
|
+
" message=\"hi!\", user_id=\"test\"\n",
|
111
|
+
"):\n",
|
94
112
|
" print(event)"
|
95
113
|
]
|
96
114
|
},
|
@@ -126,7 +144,7 @@
|
|
126
144
|
},
|
127
145
|
{
|
128
146
|
"cell_type": "code",
|
129
|
-
"execution_count":
|
147
|
+
"execution_count": null,
|
130
148
|
"metadata": {},
|
131
149
|
"outputs": [],
|
132
150
|
"source": [
|
@@ -153,7 +171,7 @@
|
|
153
171
|
"metadata": {},
|
154
172
|
"outputs": [],
|
155
173
|
"source": [
|
156
|
-
"for event in agent_engine.
|
174
|
+
"async for event in agent_engine.async_stream_query(message=\"hi!\", user_id=\"test\"):\n",
|
157
175
|
" print(event)"
|
158
176
|
]
|
159
177
|
},
|
@@ -180,7 +198,7 @@
|
|
180
198
|
},
|
181
199
|
{
|
182
200
|
"cell_type": "code",
|
183
|
-
"execution_count":
|
201
|
+
"execution_count": null,
|
184
202
|
"metadata": {},
|
185
203
|
"outputs": [],
|
186
204
|
"source": [
|
@@ -336,7 +354,7 @@
|
|
336
354
|
],
|
337
355
|
"metadata": {
|
338
356
|
"kernelspec": {
|
339
|
-
"display_name": "
|
357
|
+
"display_name": "myagent-1757939450",
|
340
358
|
"language": "python",
|
341
359
|
"name": "python3"
|
342
360
|
},
|
@@ -350,7 +368,7 @@
|
|
350
368
|
"name": "python",
|
351
369
|
"nbconvert_exporter": "python",
|
352
370
|
"pygments_lexer": "ipython3",
|
353
|
-
"version": "3.12.
|
371
|
+
"version": "3.12.9"
|
354
372
|
}
|
355
373
|
},
|
356
374
|
"nbformat": 4,
|
@@ -40,48 +40,64 @@
|
|
40
40
|
},
|
41
41
|
{
|
42
42
|
"cell_type": "code",
|
43
|
-
"execution_count":
|
43
|
+
"execution_count": null,
|
44
44
|
"metadata": {},
|
45
45
|
"outputs": [],
|
46
46
|
"source": [
|
47
47
|
"import json\n",
|
48
48
|
"\n",
|
49
49
|
"import requests\n",
|
50
|
-
"import vertexai
|
50
|
+
"import vertexai"
|
51
51
|
]
|
52
52
|
},
|
53
53
|
{
|
54
54
|
"cell_type": "markdown",
|
55
55
|
"metadata": {},
|
56
56
|
"source": [
|
57
|
-
"
|
58
|
-
|
57
|
+
"### Initialize Vertex AI Client"
|
58
|
+
]
|
59
|
+
},
|
60
|
+
{
|
61
|
+
"cell_type": "code",
|
62
|
+
"execution_count": null,
|
63
|
+
"metadata": {},
|
64
|
+
"outputs": [],
|
65
|
+
"source": [
|
66
|
+
"# Initialize the Vertex AI client\n",
|
67
|
+
"LOCATION = \"us-central1\"\n",
|
68
|
+
"\n",
|
69
|
+
"client = vertexai.Client(\n",
|
70
|
+
" location=LOCATION,\n",
|
71
|
+
")"
|
59
72
|
]
|
60
73
|
},
|
61
74
|
{
|
62
75
|
"cell_type": "markdown",
|
63
76
|
"metadata": {},
|
64
77
|
"source": [
|
65
|
-
"
|
78
|
+
"## If you are using Agent Engine\n",
|
79
|
+
"See more documentation at [Agent Engine Overview](https://cloud.google.com/vertex-ai/generative-ai/docs/agent-engine/overview)"
|
66
80
|
]
|
67
81
|
},
|
68
82
|
{
|
69
|
-
"cell_type": "
|
70
|
-
"execution_count": 4,
|
83
|
+
"cell_type": "markdown",
|
71
84
|
"metadata": {},
|
72
|
-
"outputs": [],
|
73
85
|
"source": [
|
74
|
-
"
|
75
|
-
"AGENT_ENGINE_ID = \"projects/PROJECT_ID/locations/us-central1/reasoningEngines/ENGINE_ID\""
|
86
|
+
"### Remote Testing"
|
76
87
|
]
|
77
88
|
},
|
78
89
|
{
|
79
90
|
"cell_type": "code",
|
80
|
-
"execution_count":
|
91
|
+
"execution_count": null,
|
81
92
|
"metadata": {},
|
82
93
|
"outputs": [],
|
83
94
|
"source": [
|
84
|
-
"
|
95
|
+
"# Replace PROJECT_ID and ENGINE_ID with your values\n",
|
96
|
+
"AGENT_ENGINE_ID = \"projects/PROJECT_ID/locations/us-central1/reasoningEngines/ENGINE_ID\"\n",
|
97
|
+
"\n",
|
98
|
+
"# Get the existing agent engine\n",
|
99
|
+
"remote_agent_engine = client.agent_engines.get(name=AGENT_ENGINE_ID)\n",
|
100
|
+
"print(f\"Retrieved agent engine: {remote_agent_engine.api_resource.name}\")"
|
85
101
|
]
|
86
102
|
},
|
87
103
|
{
|
@@ -90,7 +106,9 @@
|
|
90
106
|
"metadata": {},
|
91
107
|
"outputs": [],
|
92
108
|
"source": [
|
93
|
-
"for event in remote_agent_engine.
|
109
|
+
"async for event in remote_agent_engine.async_stream_query(\n",
|
110
|
+
" message=\"hi!\", user_id=\"test\"\n",
|
111
|
+
"):\n",
|
94
112
|
" print(event)"
|
95
113
|
]
|
96
114
|
},
|
@@ -126,7 +144,7 @@
|
|
126
144
|
},
|
127
145
|
{
|
128
146
|
"cell_type": "code",
|
129
|
-
"execution_count":
|
147
|
+
"execution_count": null,
|
130
148
|
"metadata": {},
|
131
149
|
"outputs": [],
|
132
150
|
"source": [
|
@@ -153,7 +171,7 @@
|
|
153
171
|
"metadata": {},
|
154
172
|
"outputs": [],
|
155
173
|
"source": [
|
156
|
-
"for event in agent_engine.
|
174
|
+
"async for event in agent_engine.async_stream_query(message=\"hi!\", user_id=\"test\"):\n",
|
157
175
|
" print(event)"
|
158
176
|
]
|
159
177
|
},
|
@@ -180,7 +198,7 @@
|
|
180
198
|
},
|
181
199
|
{
|
182
200
|
"cell_type": "code",
|
183
|
-
"execution_count":
|
201
|
+
"execution_count": null,
|
184
202
|
"metadata": {},
|
185
203
|
"outputs": [],
|
186
204
|
"source": [
|
@@ -336,7 +354,7 @@
|
|
336
354
|
],
|
337
355
|
"metadata": {
|
338
356
|
"kernelspec": {
|
339
|
-
"display_name": "
|
357
|
+
"display_name": "myagent-1757939450",
|
340
358
|
"language": "python",
|
341
359
|
"name": "python3"
|
342
360
|
},
|
@@ -350,7 +368,7 @@
|
|
350
368
|
"name": "python",
|
351
369
|
"nbconvert_exporter": "python",
|
352
370
|
"pygments_lexer": "ipython3",
|
353
|
-
"version": "3.12.
|
371
|
+
"version": "3.12.9"
|
354
372
|
}
|
355
373
|
},
|
356
374
|
"nbformat": 4,
|
src/base_template/Makefile
CHANGED
@@ -76,7 +76,7 @@ backend:
|
|
76
76
|
--region "us-central1" \
|
77
77
|
--no-allow-unauthenticated \
|
78
78
|
--no-cpu-throttling \
|
79
|
-
--labels "created-by=adk{
|
79
|
+
--labels "{% if "adk" in cookiecutter.tags %}created-by=adk{% if cookiecutter.agent_garden %},{% endif %}{% endif %}{% if cookiecutter.agent_garden %}deployed-with=agent-garden{% if cookiecutter.agent_sample_id %},vertex-agent-sample-id={{cookiecutter.agent_sample_id}},vertex-agent-sample-publisher={{cookiecutter.agent_sample_publisher}}{% endif %}{% endif %}" \
|
80
80
|
--set-env-vars \
|
81
81
|
"COMMIT_SHA=$(shell git rev-parse HEAD){%- if cookiecutter.data_ingestion %}{%- if cookiecutter.datastore_type == "vertex_ai_search" %},DATA_STORE_ID={{cookiecutter.project_name}}-datastore,DATA_STORE_REGION=us{%- elif cookiecutter.datastore_type == "vertex_ai_vector_search" %},VECTOR_SEARCH_INDEX={{cookiecutter.project_name}}-vector-search,VECTOR_SEARCH_INDEX_ENDPOINT={{cookiecutter.project_name}}-vector-search-endpoint,VECTOR_SEARCH_BUCKET=$$PROJECT_ID-{{cookiecutter.project_name}}-vs{%- endif %}{%- endif %}" \
|
82
82
|
$(if $(IAP),--iap) \
|
@@ -13,8 +13,11 @@ cicd_runner_project_id = "your-cicd-project-id"
|
|
13
13
|
{%- if cookiecutter.cicd_runner == "google_cloud_build" %}
|
14
14
|
# Name of the host connection you created in Cloud Build
|
15
15
|
host_connection_name = "git-{{cookiecutter.project_name}}"
|
16
|
+
github_pat_secret_id = "your-github_pat_secret_id"
|
16
17
|
{%- endif %}
|
17
18
|
|
19
|
+
repository_owner = "Your GitHub organization or username."
|
20
|
+
|
18
21
|
# Name of the repository you added to Cloud Build
|
19
22
|
repository_name = "{{cookiecutter.project_name}}"
|
20
23
|
|
@@ -34,7 +37,3 @@ vector_search_min_replica_count = 1
|
|
34
37
|
vector_search_max_replica_count = 1
|
35
38
|
{%- endif %}
|
36
39
|
{%- endif %}
|
37
|
-
{%- if cookiecutter.cicd_runner == "github_actions" %}
|
38
|
-
|
39
|
-
repository_owner = "Your GitHub organization or username."
|
40
|
-
{%- endif %}
|
src/base_template/pyproject.toml
CHANGED
@@ -14,14 +14,14 @@ dependencies = [
|
|
14
14
|
"langchain-core~=0.3.9",
|
15
15
|
"traceloop-sdk~=0.38.7",
|
16
16
|
{%- endif %}
|
17
|
-
"google-cloud-logging
|
17
|
+
"google-cloud-logging>=3.12.0",
|
18
18
|
{%- if cookiecutter.deployment_target == 'cloud_run' %}
|
19
|
-
"google-cloud-aiplatform[evaluation]~=1.
|
19
|
+
"google-cloud-aiplatform[evaluation]~=1.113.0",
|
20
20
|
"fastapi~=0.115.8",
|
21
21
|
"uvicorn~=0.34.0",
|
22
22
|
"psycopg2-binary>=2.9.10",
|
23
23
|
{%- elif cookiecutter.deployment_target == 'agent_engine' %}
|
24
|
-
"google-cloud-aiplatform[evaluation,agent-engines]~=1.
|
24
|
+
"google-cloud-aiplatform[evaluation,agent-engines]~=1.113.0"
|
25
25
|
{%- endif %}
|
26
26
|
]
|
27
27
|
{% if cookiecutter.deployment_target == 'cloud_run' %}
|
@@ -72,7 +72,7 @@ select = [
|
|
72
72
|
"UP", # pyupgrade
|
73
73
|
"RUF", # ruff specific rules
|
74
74
|
]
|
75
|
-
ignore = ["E501", "C901"] # ignore line too long, too complex
|
75
|
+
ignore = ["E501", "C901", "B006"] # ignore line too long, too complex
|
76
76
|
|
77
77
|
[tool.ruff.lint.isort]
|
78
78
|
known-first-party = ["{{cookiecutter.agent_directory}}", "frontend"]
|
src/cli/commands/create.py
CHANGED
@@ -226,6 +226,20 @@ def normalize_project_name(project_name: str) -> str:
|
|
226
226
|
help="Template files directly into the current directory instead of creating a new project directory",
|
227
227
|
default=False,
|
228
228
|
)
|
229
|
+
@click.option(
|
230
|
+
"--skip-welcome",
|
231
|
+
is_flag=True,
|
232
|
+
hidden=True,
|
233
|
+
help="Skip the welcome banner",
|
234
|
+
default=False,
|
235
|
+
)
|
236
|
+
@click.option(
|
237
|
+
"--locked",
|
238
|
+
is_flag=True,
|
239
|
+
hidden=True,
|
240
|
+
help="Internal flag for version-locked remote templates",
|
241
|
+
default=False,
|
242
|
+
)
|
229
243
|
@shared_template_options
|
230
244
|
@handle_cli_error
|
231
245
|
def create(
|
@@ -247,6 +261,7 @@ def create(
|
|
247
261
|
agent_garden: bool = False,
|
248
262
|
base_template: str | None = None,
|
249
263
|
skip_welcome: bool = False,
|
264
|
+
locked: bool = False,
|
250
265
|
cli_overrides: dict | None = None,
|
251
266
|
) -> None:
|
252
267
|
"""Create GCP-based AI agent projects from templates."""
|
@@ -337,8 +352,22 @@ def create(
|
|
337
352
|
ignore=get_standard_ignore_patterns(),
|
338
353
|
)
|
339
354
|
|
355
|
+
# Check for version lock and execute nested command if found
|
356
|
+
from ..utils.remote_template import check_and_execute_with_version_lock
|
357
|
+
|
358
|
+
if check_and_execute_with_version_lock(
|
359
|
+
template_source_path, agent, locked
|
360
|
+
):
|
361
|
+
# If we executed with locked version, cleanup and exit
|
362
|
+
shutil.rmtree(temp_dir, ignore_errors=True)
|
363
|
+
return
|
364
|
+
|
340
365
|
selected_agent = f"local_{template_source_path.name}"
|
341
|
-
|
366
|
+
if locked:
|
367
|
+
# In locked mode, show a nicer message
|
368
|
+
console.print("✅ Using version-locked template", style="green")
|
369
|
+
else:
|
370
|
+
console.print(f"Using local template: {local_path}")
|
342
371
|
logging.debug(
|
343
372
|
f"Copied local template to temporary dir: {template_source_path}"
|
344
373
|
)
|
@@ -354,7 +383,7 @@ def create(
|
|
354
383
|
else:
|
355
384
|
console.print(f"Fetching remote template: {agent}")
|
356
385
|
template_source_path, temp_dir_path = fetch_remote_template(
|
357
|
-
remote_spec
|
386
|
+
remote_spec, agent, locked
|
358
387
|
)
|
359
388
|
temp_dir_to_clean = str(temp_dir_path)
|
360
389
|
selected_agent = f"remote_{hash(agent)}" # Generate unique name for remote template
|
@@ -416,7 +445,7 @@ def create(
|
|
416
445
|
else:
|
417
446
|
console.print(f"Fetching remote template: {agent}")
|
418
447
|
template_source_path, temp_dir_path = fetch_remote_template(
|
419
|
-
remote_spec
|
448
|
+
remote_spec, agent, locked
|
420
449
|
)
|
421
450
|
temp_dir_to_clean = str(temp_dir_path)
|
422
451
|
final_agent = f"remote_{hash(agent)}" # Generate unique name for remote template
|
@@ -638,14 +667,7 @@ def create(
|
|
638
667
|
except Exception as e:
|
639
668
|
if debug:
|
640
669
|
logging.warning(f"GCP environment setup failed: {e}")
|
641
|
-
console.print(
|
642
|
-
f"> Warning: GCP environment setup failed: {e}", style="yellow"
|
643
|
-
)
|
644
|
-
console.print(
|
645
|
-
"> Please check your authentication settings and permissions. "
|
646
|
-
"> Visit https://cloud.google.com/vertex-ai/docs/authentication for help.",
|
647
|
-
style="yellow",
|
648
|
-
)
|
670
|
+
console.print(f"> ⚠️ {e}", style="bold yellow")
|
649
671
|
console.print(
|
650
672
|
"> Continuing with template processing...", style="yellow"
|
651
673
|
)
|
@@ -690,6 +712,7 @@ def create(
|
|
690
712
|
in_folder=in_folder,
|
691
713
|
cli_overrides=final_cli_overrides,
|
692
714
|
agent_garden=agent_garden,
|
715
|
+
remote_spec=remote_spec,
|
693
716
|
)
|
694
717
|
|
695
718
|
# Replace region in all files if a different region was specified
|
src/cli/utils/gcp.py
CHANGED
@@ -13,9 +13,13 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
15
|
# ruff: noqa: E722
|
16
|
+
import os
|
16
17
|
import subprocess
|
17
18
|
import time
|
18
19
|
|
20
|
+
# Suppress gRPC verbose logging
|
21
|
+
os.environ["GRPC_VERBOSITY"] = "NONE"
|
22
|
+
|
19
23
|
import google.auth
|
20
24
|
from google.api_core.client_options import ClientOptions
|
21
25
|
from google.api_core.exceptions import PermissionDenied
|
@@ -34,6 +38,12 @@ from src.cli.utils.version import PACKAGE_NAME, get_current_version
|
|
34
38
|
|
35
39
|
console = Console()
|
36
40
|
|
41
|
+
_AUTH_ERROR_MESSAGE = (
|
42
|
+
"Looks like you are not authenticated with Google Cloud.\n"
|
43
|
+
"Please run: `gcloud auth login --update-adc`\n"
|
44
|
+
"Then set your project: `gcloud config set project YOUR_PROJECT_ID`"
|
45
|
+
)
|
46
|
+
|
37
47
|
|
38
48
|
def enable_vertex_ai_api(
|
39
49
|
project_id: str, auto_approve: bool = False, context: str | None = None
|
@@ -240,5 +250,14 @@ def verify_credentials() -> dict:
|
|
240
250
|
account = "Unknown account"
|
241
251
|
|
242
252
|
return {"project": project, "account": account}
|
253
|
+
except google.auth.exceptions.DefaultCredentialsError as e:
|
254
|
+
# Authentication error - provide friendly message
|
255
|
+
raise Exception(_AUTH_ERROR_MESSAGE) from e
|
243
256
|
except Exception as e:
|
257
|
+
# Check if the error message indicates authentication issues
|
258
|
+
error_str = str(e).lower()
|
259
|
+
if any(
|
260
|
+
keyword in error_str for keyword in ["credential", "auth", "login", "token"]
|
261
|
+
):
|
262
|
+
raise Exception(_AUTH_ERROR_MESSAGE) from e
|
244
263
|
raise Exception(f"Failed to verify GCP credentials: {e!s}") from e
|