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.
Files changed (28) hide show
  1. {agent_starter_pack-0.14.1.dist-info → agent_starter_pack-0.15.0.dist-info}/METADATA +2 -2
  2. {agent_starter_pack-0.14.1.dist-info → agent_starter_pack-0.15.0.dist-info}/RECORD +28 -28
  3. agents/adk_base/notebooks/adk_app_testing.ipynb +36 -18
  4. agents/agentic_rag/notebooks/adk_app_testing.ipynb +36 -18
  5. src/base_template/Makefile +1 -1
  6. src/base_template/deployment/terraform/vars/env.tfvars +3 -4
  7. src/base_template/pyproject.toml +4 -4
  8. src/cli/commands/create.py +34 -11
  9. src/cli/utils/gcp.py +19 -0
  10. src/cli/utils/remote_template.py +144 -1
  11. src/cli/utils/template.py +12 -0
  12. src/deployment_targets/agent_engine/tests/integration/test_agent_engine_app.py +6 -3
  13. src/deployment_targets/agent_engine/tests/load_test/load_test.py +12 -3
  14. src/deployment_targets/agent_engine/{{cookiecutter.agent_directory}}/agent_engine_app.py +45 -38
  15. src/deployment_targets/cloud_run/deployment/terraform/dev/service.tf +12 -0
  16. src/deployment_targets/cloud_run/deployment/terraform/service.tf +24 -0
  17. src/resources/locks/uv-adk_base-agent_engine.lock +1738 -1703
  18. src/resources/locks/uv-adk_base-cloud_run.lock +2295 -2253
  19. src/resources/locks/uv-agentic_rag-agent_engine.lock +1971 -1914
  20. src/resources/locks/uv-agentic_rag-cloud_run.lock +2605 -2537
  21. src/resources/locks/uv-crewai_coding_crew-agent_engine.lock +2839 -2807
  22. src/resources/locks/uv-crewai_coding_crew-cloud_run.lock +3755 -3714
  23. src/resources/locks/uv-langgraph_base_react-agent_engine.lock +2441 -2396
  24. src/resources/locks/uv-langgraph_base_react-cloud_run.lock +3243 -3185
  25. src/resources/locks/uv-live_api-cloud_run.lock +2950 -2902
  26. {agent_starter_pack-0.14.1.dist-info → agent_starter_pack-0.15.0.dist-info}/WHEEL +0 -0
  27. {agent_starter_pack-0.14.1.dist-info → agent_starter_pack-0.15.0.dist-info}/entry_points.txt +0 -0
  28. {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.14.1
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~=2.6.0
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=WFyizTOhbIgTPgQ115WTQaH9qNkozTESsNmxLYUb3JY,10003
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=WFyizTOhbIgTPgQ115WTQaH9qNkozTESsNmxLYUb3JY,10003
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=DyOZKzcP4i6oBHx_snqlsOK99JuKWjlPVAy9Tgfc_wg,7824
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=dTyxaWetB-XCKQEDV3lXxAUxtBEpustNdlAEcT8ZZpo,2932
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=Jyc36pt-0xNMwQsoXucad0QAWFMeGe67fdimCKXx-tw,1411
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=tkHpnVrhy2ApJCwL4bg2uYgfSwciPQvdurTwSANLSsE,46071
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=umhHu4P4oIDpK0Hsg8IATji9SpONlBA9bBbhrjzQYyc,8513
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=BYdV9Bgj54UUgOTnxlkOr8xA9ZgqKSEE-lWnmpJ05UY,18529
85
- src/cli/utils/template.py,sha256=bS6qS2O9lQiy2pogoLtc0M9RYjSkAbbsCkilQXUiaaE,50179
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=k6AbIMb6_6drv1HXhiVatpPzqspjLSahfRLkZmWqHlI,6065
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=USzS89bQ4qHVoQynDRSRShKzeXf1MJ0MBV4FpV40vrI,4249
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=91idmH-p7B7Gk8iMZoUeutndUqBhXt3apxUrTE64VlM,12797
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=w3iEnyScbO0sjLPQEYfs3GmPpHTUMGeG1ghi09wSY24,10322
103
- src/deployment_targets/cloud_run/deployment/terraform/dev/service.tf,sha256=VegAzMcl2ohxMvtq6bcSXfCHYzQW68usyA839oULpgk,6581
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=FgXP88OzdexXt3jNqKbvDY_VG1BAY7u6ZyiraYf9-sA,486366
160
- src/resources/locks/uv-adk_base-cloud_run.lock,sha256=sdEGVQiDKgADi8EUkXpOYH6GTOzWhNGcr9M6b92Gn7A,641473
161
- src/resources/locks/uv-agentic_rag-agent_engine.lock,sha256=kDZMz25UZEQKnCajutUKLf1s8jKSAqb0NmcOOP-mUaw,544707
162
- src/resources/locks/uv-agentic_rag-cloud_run.lock,sha256=Faiov78Du4un0CSh4OnFys0Q-wl2VckgV-_zoVt_niI,719763
163
- src/resources/locks/uv-crewai_coding_crew-agent_engine.lock,sha256=UI2cw-Lav3hZWeH5kumhlXzb6gJzpftxZxkd2hufbHs,813131
164
- src/resources/locks/uv-crewai_coding_crew-cloud_run.lock,sha256=MfqIFeE_ZzjhOEeLTjY1i29r2KdALtFr3M8jfkWDZkg,1067371
165
- src/resources/locks/uv-langgraph_base_react-agent_engine.lock,sha256=DiqTTPk5M83BlSRiPdx34wgvyRilC_CygLHH8fQ27ws,693379
166
- src/resources/locks/uv-langgraph_base_react-cloud_run.lock,sha256=Oy7HVtZWBKJnBI6GerofAy2rwSeoC8h3K44fPrBFqng,914585
167
- src/resources/locks/uv-live_api-cloud_run.lock,sha256=AMgJt_aeoXU3LDvZv4iph9XCVsihdHqp9XzXwcNyl3k,835168
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.14.1.dist-info/METADATA,sha256=A_fmmd_c4apfEJTNZNqaprVhNyrtYFJXqAANPk0kIHA,11475
172
- agent_starter_pack-0.14.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
173
- agent_starter_pack-0.14.1.dist-info/entry_points.txt,sha256=U7uCxR7YulIhZ0L8R8Hui0Bsy6J7oyESBeDYJYMrQjA,56
174
- agent_starter_pack-0.14.1.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
175
- agent_starter_pack-0.14.1.dist-info/RECORD,,
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": 1,
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.agent_engines"
50
+ "import vertexai"
51
51
  ]
52
52
  },
53
53
  {
54
54
  "cell_type": "markdown",
55
55
  "metadata": {},
56
56
  "source": [
57
- "## If you are using Agent Engine\n",
58
- "See more documentation at [Agent Engine Overview](https://cloud.google.com/vertex-ai/generative-ai/docs/agent-engine/overview)"
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
- "### Remote Testing"
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": "code",
70
- "execution_count": 4,
83
+ "cell_type": "markdown",
71
84
  "metadata": {},
72
- "outputs": [],
73
85
  "source": [
74
- "# Replace with your Agent Engine ID\n",
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": 5,
91
+ "execution_count": null,
81
92
  "metadata": {},
82
93
  "outputs": [],
83
94
  "source": [
84
- "remote_agent_engine = vertexai.agent_engines.get(AGENT_ENGINE_ID)"
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.stream_query(message=\"hi!\", user_id=\"test\"):\n",
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": 2,
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.stream_query(message=\"hi!\", user_id=\"test\"):\n",
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": 20,
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": "Python 3",
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.2"
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": 1,
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.agent_engines"
50
+ "import vertexai"
51
51
  ]
52
52
  },
53
53
  {
54
54
  "cell_type": "markdown",
55
55
  "metadata": {},
56
56
  "source": [
57
- "## If you are using Agent Engine\n",
58
- "See more documentation at [Agent Engine Overview](https://cloud.google.com/vertex-ai/generative-ai/docs/agent-engine/overview)"
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
- "### Remote Testing"
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": "code",
70
- "execution_count": 4,
83
+ "cell_type": "markdown",
71
84
  "metadata": {},
72
- "outputs": [],
73
85
  "source": [
74
- "# Replace with your Agent Engine ID\n",
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": 5,
91
+ "execution_count": null,
81
92
  "metadata": {},
82
93
  "outputs": [],
83
94
  "source": [
84
- "remote_agent_engine = vertexai.agent_engines.get(AGENT_ENGINE_ID)"
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.stream_query(message=\"hi!\", user_id=\"test\"):\n",
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": 2,
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.stream_query(message=\"hi!\", user_id=\"test\"):\n",
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": 20,
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": "Python 3",
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.2"
371
+ "version": "3.12.9"
354
372
  }
355
373
  },
356
374
  "nbformat": 4,
@@ -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{%- if cookiecutter.agent_garden %},deployed-with=agent-garden{%- endif %}" \
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 %}
@@ -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~=3.11.4",
17
+ "google-cloud-logging>=3.12.0",
18
18
  {%- if cookiecutter.deployment_target == 'cloud_run' %}
19
- "google-cloud-aiplatform[evaluation]~=1.106.0",
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.106.0"
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"]
@@ -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
- console.print(f"Using local template: {local_path}")
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