agent-starter-pack 0.10.1__py3-none-any.whl → 0.11.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.10.1.dist-info → agent_starter_pack-0.11.0.dist-info}/METADATA +2 -2
- {agent_starter_pack-0.10.1.dist-info → agent_starter_pack-0.11.0.dist-info}/RECORD +43 -42
- agents/crewai_coding_crew/.template/templateconfig.yaml +2 -2
- agents/crewai_coding_crew/tests/integration/test_agent.py +1 -1
- agents/langgraph_base_react/.template/templateconfig.yaml +1 -1
- agents/langgraph_base_react/tests/integration/test_agent.py +1 -1
- src/base_template/deployment/terraform/dev/iam.tf +12 -11
- src/base_template/deployment/terraform/dev/variables.tf +2 -7
- src/base_template/deployment/terraform/github.tf +14 -0
- src/base_template/deployment/terraform/iam.tf +10 -7
- src/base_template/deployment/terraform/service_accounts.tf +4 -5
- src/base_template/deployment/terraform/variables.tf +2 -7
- src/base_template/deployment/terraform/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}build_triggers.tf{% else %}unused_build_triggers.tf{% endif %} +4 -2
- src/base_template/pyproject.toml +2 -2
- src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/deploy-to-prod.yaml +1 -0
- src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/staging.yaml +1 -0
- src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/deploy-to-prod.yaml +1 -0
- src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/staging.yaml +1 -0
- src/cli/commands/create.py +202 -100
- src/cli/commands/enhance.py +248 -0
- src/cli/commands/list.py +23 -11
- src/cli/main.py +2 -0
- src/cli/utils/logging.py +40 -0
- src/cli/utils/remote_template.py +55 -16
- src/cli/utils/template.py +212 -94
- src/deployment_targets/agent_engine/app/agent_engine_app.py +8 -0
- src/deployment_targets/cloud_run/app/server.py +1 -1
- src/deployment_targets/cloud_run/deployment/terraform/dev/service.tf +1 -1
- src/deployment_targets/cloud_run/deployment/terraform/service.tf +2 -2
- src/resources/locks/uv-adk_base-agent_engine.lock +312 -312
- src/resources/locks/uv-adk_base-cloud_run.lock +403 -404
- src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock +312 -312
- src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock +403 -404
- src/resources/locks/uv-agentic_rag-agent_engine.lock +371 -371
- src/resources/locks/uv-agentic_rag-cloud_run.lock +477 -478
- src/resources/locks/uv-crewai_coding_crew-agent_engine.lock +661 -591
- src/resources/locks/uv-crewai_coding_crew-cloud_run.lock +868 -760
- src/resources/locks/uv-langgraph_base_react-agent_engine.lock +496 -446
- src/resources/locks/uv-langgraph_base_react-cloud_run.lock +639 -565
- src/resources/locks/uv-live_api-cloud_run.lock +584 -510
- {agent_starter_pack-0.10.1.dist-info → agent_starter_pack-0.11.0.dist-info}/WHEEL +0 -0
- {agent_starter_pack-0.10.1.dist-info → agent_starter_pack-0.11.0.dist-info}/entry_points.txt +0 -0
- {agent_starter_pack-0.10.1.dist-info → agent_starter_pack-0.11.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.11.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
|
@@ -39,7 +39,7 @@ Description-Content-Type: text/markdown
|
|
39
39
|
</a> [](https://shell.cloud.google.com/cloudshell/editor?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Feliasecchig%2Fasp-open-in-cloud-shell&cloudshell_print=open-in-cs) 
|
40
40
|
|
41
41
|
|
42
|
-
The `agent-starter-pack` is a collection of production-ready Generative AI Agent templates built for Google Cloud. <br>
|
42
|
+
The `agent-starter-pack` is a Python package that provides a collection of production-ready Generative AI Agent templates built for Google Cloud. <br>
|
43
43
|
It accelerates development by providing a holistic, production-ready solution, addressing common challenges (Deployment & Operations, Evaluation, Customization, Observability) in building and deploying GenAI agents.
|
44
44
|
|
45
45
|
| ⚡️ Launch | 🧪 Experiment | ✅ Deploy | 🛠️ Customize |
|
@@ -21,19 +21,19 @@ agents/agentic_rag/notebooks/adk_app_testing.ipynb,sha256=wgFzBo7hX393NVzy3ZfZHn
|
|
21
21
|
agents/agentic_rag/notebooks/evaluating_adk_agent.ipynb,sha256=OMTiT3gAFWPvE9pPL8z7tsDwOU-l8wem5wH-OXPPlvk,56805
|
22
22
|
agents/agentic_rag/tests/integration/test_agent.py,sha256=mxsKFyZrwXzIvAoxlqZv2JndM3VTVTKcugRYdF3APr4,2112
|
23
23
|
agents/crewai_coding_crew/README.md,sha256=4No7sfHQVHELARGiT3fWANJzDR0NP48ow4ct3FoPwlA,1672
|
24
|
-
agents/crewai_coding_crew/.template/templateconfig.yaml,sha256=
|
24
|
+
agents/crewai_coding_crew/.template/templateconfig.yaml,sha256=WjsvXcih4zqrhV0pX_3eH7PZIf3H1KHdcUAaD2n5I6U,1051
|
25
25
|
agents/crewai_coding_crew/app/agent.py,sha256=yd-P2Jzx3Do4FQuhwDsok-YRNYFi9Vl8OTqSlbdn4Sw,3260
|
26
26
|
agents/crewai_coding_crew/app/crew/crew.py,sha256=pqeeJ4txP-gcVT3PKEAw2zZ4x8g4cDlnFFbf0_zZRr4,2000
|
27
27
|
agents/crewai_coding_crew/app/crew/config/agents.yaml,sha256=Cn9zTcP3C-8MvlV19cYdlxR0iIs2_FOy2gKOJLUpNRo,1154
|
28
28
|
agents/crewai_coding_crew/app/crew/config/tasks.yaml,sha256=SSFuiSQPhi4dM0V5HdNuMqtN7JJr5RUCMhhBzUkPBpc,1511
|
29
29
|
agents/crewai_coding_crew/notebooks/evaluating_crewai_agent.ipynb,sha256=ifTn4RfrJeYQ8ell9n6VE65ZEfcnKGkMLFG8RBlPK70,57974
|
30
30
|
agents/crewai_coding_crew/notebooks/evaluating_langgraph_agent.ipynb,sha256=PlW41fL-ji9NKkimW6u25YRLGWN2pgoX2G8w5nzIEPE,58737
|
31
|
-
agents/crewai_coding_crew/tests/integration/test_agent.py,sha256=
|
31
|
+
agents/crewai_coding_crew/tests/integration/test_agent.py,sha256=hg6kqtVPtyCLmQkNr45JPM91VwmScco7-f_mXq_YBJw,1611
|
32
32
|
agents/langgraph_base_react/README.md,sha256=KZQ0e8q9CqnIEiItH9Tc2Ceb2mC3sBcyQUo-ZAmO-zs,482
|
33
|
-
agents/langgraph_base_react/.template/templateconfig.yaml,sha256=
|
33
|
+
agents/langgraph_base_react/.template/templateconfig.yaml,sha256=58k6Lhkn_3mYOmUMFFQ_mMq6Df4LerCZVju9uM2RDuQ,1049
|
34
34
|
agents/langgraph_base_react/app/agent.py,sha256=yzCc5JaOJgItoBiZOzHPiSy9aD2HGeGI_pH7nrysSmg,2505
|
35
35
|
agents/langgraph_base_react/notebooks/evaluating_langgraph_agent.ipynb,sha256=PlW41fL-ji9NKkimW6u25YRLGWN2pgoX2G8w5nzIEPE,58737
|
36
|
-
agents/langgraph_base_react/tests/integration/test_agent.py,sha256=
|
36
|
+
agents/langgraph_base_react/tests/integration/test_agent.py,sha256=5aFkYL6XcnlihoDOpGhb49inK20Ljvx1tzhdwTS-1y4,1601
|
37
37
|
agents/live_api/README.md,sha256=c3lu5WguOUBc5hO_UtNZfVhfYxvSzMXuGFICn9M38mU,2897
|
38
38
|
agents/live_api/.template/templateconfig.yaml,sha256=DD_hihMsuqmd5VWS18vVGZ3ZGVVpFWVXJ2dU07eKb6k,964
|
39
39
|
agents/live_api/app/agent.py,sha256=dYE2qd64OhL-fOgwzrjqN50LYXAgJ1TWbx6ohqtV5Rc,2434
|
@@ -46,49 +46,50 @@ src/base_template/.gitignore,sha256=Fq0w34x4sfbwP4RqDqh6hdHNYRUEsFNI-9XONzLWBIs,
|
|
46
46
|
src/base_template/GEMINI.md,sha256=WzscHWlQeYkKORZ-453P8KM9IHuj1kAxW-69c7Ytuwk,133
|
47
47
|
src/base_template/Makefile,sha256=Evt9HcJGBhyoYdVxj5AdfHsQ_vVnbh-g2IlUxM4PFP4,6149
|
48
48
|
src/base_template/README.md,sha256=3okWVHq8Mnm9WwaLR88O9pUq3zUO8fmHilK7ulWHrB4,11342
|
49
|
-
src/base_template/pyproject.toml,sha256=
|
49
|
+
src/base_template/pyproject.toml,sha256=Ow_R0OhPbaACmJ9bgXqu703Q-tCL8FZhfyJ1xVwhveU,2874
|
50
50
|
src/base_template/app/__init__.py,sha256=UyAgc2l8nkVIUPUzL9hKR7EgzCsc2jSYcOcjHNNmpMU,59
|
51
51
|
src/base_template/app/utils/gcs.py,sha256=jKblaWOGQEigw3esaawcfX178shhZi2Fyk0fJSA4T68,1501
|
52
52
|
src/base_template/app/utils/tracing.py,sha256=2rv1Ukh2jTBENDwoghCItJ28l-Sjz9gMlzdojlVgJa4,6052
|
53
53
|
src/base_template/app/utils/typing.py,sha256=DP5OZC3IGvqA1XbvWt8kI3gyAK3ZjzUSL5Ca17wNeLI,4249
|
54
54
|
src/base_template/deployment/README.md,sha256=gZJvSWdQh_Mi-bZ3dmuPv7fMezIw04fgN5tq7KgglPw,692
|
55
55
|
src/base_template/deployment/terraform/apis.tf,sha256=KX8Oe2gjT-gh9Bkntz9yIAyRjPc1gZvwOhroJ6NZVp4,1513
|
56
|
-
src/base_template/deployment/terraform/github.tf,sha256=
|
57
|
-
src/base_template/deployment/terraform/iam.tf,sha256=
|
56
|
+
src/base_template/deployment/terraform/github.tf,sha256=KhfNBAzeUH9jDr8FOw_DiypesA5AEC8IZT1PRqntSt8,10838
|
57
|
+
src/base_template/deployment/terraform/iam.tf,sha256=1u0qY-4srkhRirRI9kuQE0GAAYBeP5cTztA-w2N4FH8,5657
|
58
58
|
src/base_template/deployment/terraform/locals.tf,sha256=nvjlavqWRL6e-iIqfIRvsai5JY9l6KhRGcwJQFRdu_U,1653
|
59
59
|
src/base_template/deployment/terraform/log_sinks.tf,sha256=eAGh_dCjOKUQjylkqp1fNM9cfE4QB9HSEovjD6_G9Lg,2971
|
60
60
|
src/base_template/deployment/terraform/providers.tf,sha256=wNWvXJbpvV3njDYO8t4s6DdDkL0dQpWgkPsmJw61ABM,1167
|
61
|
-
src/base_template/deployment/terraform/service_accounts.tf,sha256=
|
61
|
+
src/base_template/deployment/terraform/service_accounts.tf,sha256=iSRrRzxL16pZHel5cZDzC7m15IRTRv8qMxkcg4nd30o,1672
|
62
62
|
src/base_template/deployment/terraform/storage.tf,sha256=W0l34U7Ql2wdegfWsWfKzaEooaMaTL2TkU18KM_Vuys,8695
|
63
|
-
src/base_template/deployment/terraform/variables.tf,sha256=
|
63
|
+
src/base_template/deployment/terraform/variables.tf,sha256=RudiaEVsIrRSCIHDMWs857gMghenUeZR5g_34kDuoXY,6733
|
64
64
|
src/base_template/deployment/terraform/{% if cookiecutter.cicd_runner == 'github_actions' %}wif.tf{% else %}unused_wif.tf{% endif %},sha256=rCupUnvaTVj75ahJOckNuzlQ-xcLTik_HpqXzVEEB5g,2666
|
65
|
-
src/base_template/deployment/terraform/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}build_triggers.tf{% else %}unused_build_triggers.tf{% endif %},sha256=
|
65
|
+
src/base_template/deployment/terraform/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}build_triggers.tf{% else %}unused_build_triggers.tf{% endif %},sha256=wb8Frd95PF0PHDRoh9v3QF5kpF-Fi-GDcD7mKmTxGJ8,6813
|
66
66
|
src/base_template/deployment/terraform/dev/apis.tf,sha256=R5fyLQGHsZy7JyDdFpuNzUBute6Rn9xR32zIMjkGxzc,1592
|
67
|
-
src/base_template/deployment/terraform/dev/iam.tf,sha256=
|
67
|
+
src/base_template/deployment/terraform/dev/iam.tf,sha256=q8dfqbMNSpgMXW96hP7rnApFoNaAUzZgUXs5HIl7ZFI,3329
|
68
68
|
src/base_template/deployment/terraform/dev/log_sinks.tf,sha256=uVdMtDdd8MnxtKhqzVaYqadE11P3r4fs2IdgNecxM4I,2671
|
69
69
|
src/base_template/deployment/terraform/dev/providers.tf,sha256=1S9jCh48d6ailVZ1e14EHsUUDSp7DyGZGExJwViFCkM,900
|
70
70
|
src/base_template/deployment/terraform/dev/storage.tf,sha256=1mgLs21SUhfcoRICqd7BqUlEVAVGeN3kMsQ4UAQLOh8,4654
|
71
|
-
src/base_template/deployment/terraform/dev/variables.tf,sha256=
|
71
|
+
src/base_template/deployment/terraform/dev/variables.tf,sha256=JMo3BQ57t8OTRiNUb9cz1zoWYCOMMhi67Hx0UZ_kZko,4072
|
72
72
|
src/base_template/deployment/terraform/dev/vars/env.tfvars,sha256=LoQMjh1AAMR-MGfaSCsVMjdoYTk2T4oS4D9vMH54CdQ,714
|
73
73
|
src/base_template/deployment/terraform/vars/env.tfvars,sha256=Jyc36pt-0xNMwQsoXucad0QAWFMeGe67fdimCKXx-tw,1411
|
74
74
|
src/base_template/tests/unit/test_dummy.py,sha256=2exfCH8qhkZrLWvK04ZxNTO9MV3fdTbZkJN3uK6zvok,850
|
75
|
-
src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/deploy-to-prod.yaml,sha256=
|
75
|
+
src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/deploy-to-prod.yaml,sha256=A9NbH0l-NqbwfPI5d2SxxKuMuwcAUbbErhTxYWYsSxc,5667
|
76
76
|
src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/pr_checks.yaml,sha256=vy51dSiRFEFlFq9eEWuUsemG0jXj3VL4lCRMcodPiok,1981
|
77
|
-
src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/staging.yaml,sha256=
|
78
|
-
src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/deploy-to-prod.yaml,sha256=
|
77
|
+
src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/staging.yaml,sha256=fYX-IBKHD-gSoFNLpAJUM0v2okL32AbMTn-eJpstSqU,8494
|
78
|
+
src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/deploy-to-prod.yaml,sha256=Zv3oE3YC8P2iYJ2_ie1PPo0HjNLxiMkY3IwJrS0bFcM,3703
|
79
79
|
src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/pr_checks.yaml,sha256=VFdF6q_-zETCMlJkJ0znW8T7gCYE59BZNliNPz2Bh18,1517
|
80
|
-
src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/staging.yaml,sha256=
|
81
|
-
src/cli/main.py,sha256=
|
82
|
-
src/cli/commands/create.py,sha256=
|
83
|
-
src/cli/commands/
|
80
|
+
src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/staging.yaml,sha256=Spy8ziGCHUtY5hqSIiIDTTywjmSoUw8N1YlwGo0aL04,7367
|
81
|
+
src/cli/main.py,sha256=Dya7Sw3ozMTaGDcwMh_-W7udkGZHGzgAj8aBdSZaZxI,1832
|
82
|
+
src/cli/commands/create.py,sha256=mUFukCCpuFV6bgS-JmQEZ6D-zB-_ddxmTMeuygrhogI,43876
|
83
|
+
src/cli/commands/enhance.py,sha256=Evi4UigR8zMUwP99D116w1W-ZKmlIy1hXRPWz4EH_E4,9372
|
84
|
+
src/cli/commands/list.py,sha256=qey_XDoJkjBvvuVMilFqjMUdBRmbHkSyqGeM23E3xHM,5502
|
84
85
|
src/cli/commands/setup_cicd.py,sha256=ZgpMrYHXg3B_u5h5PxvVuC4T7Q2uQTYMNMwBBOlcKmg,32250
|
85
86
|
src/cli/utils/__init__.py,sha256=_cTmsXGPqOtK0q8UW5164QTltbJRJFR_Efxq_BRL1-o,1311
|
86
87
|
src/cli/utils/cicd.py,sha256=9s_OcusQznT_pSjFP60BfDBoZ5V6bwPE0QWbWdMaVlY,26515
|
87
88
|
src/cli/utils/datastores.py,sha256=gv1V6eDcOEKx4MRNG5C3Y-VfixYq1AzQuaYMLp8QRNo,1058
|
88
89
|
src/cli/utils/gcp.py,sha256=cnuCyN144eiyYc9aJNEK9JnyWN66rdevugoMdDYC1UU,4032
|
89
|
-
src/cli/utils/logging.py,sha256=
|
90
|
-
src/cli/utils/remote_template.py,sha256=
|
91
|
-
src/cli/utils/template.py,sha256=
|
90
|
+
src/cli/utils/logging.py,sha256=MYPxQYXXaKCqBVOfrhEMe8lFKzpzZWjOVP2Km81X5Mk,3007
|
91
|
+
src/cli/utils/remote_template.py,sha256=1o3MloLycoO3Mjm_SA6cXc4dFGtvF9c1CNnnThPu-3w,12165
|
92
|
+
src/cli/utils/template.py,sha256=_rAaQxxETT7ucJAwbGoZVSF8mN7iDXCr1iNpMS08h8k,42649
|
92
93
|
src/cli/utils/version.py,sha256=F4udQmzniPStqWZFIgnv3Qg3l9non4mfy2An-Oveqmc,2916
|
93
94
|
src/data_ingestion/README.md,sha256=LNxSQoJW9JozK-TbyGQLj5L_MGWNwrfLk6V6RmQ2oBQ,4032
|
94
95
|
src/data_ingestion/pyproject.toml,sha256=-1Mf2QB8K70ICQV5UPZDpf-fN3UwEQLVzQyxfakCSTY,445
|
@@ -98,16 +99,16 @@ src/data_ingestion/data_ingestion_pipeline/submit_pipeline.py,sha256=tWGqL0zUB3V
|
|
98
99
|
src/data_ingestion/data_ingestion_pipeline/components/ingest_data.py,sha256=QbPmk6V7JPGo5Yc1BhL-1W_t9CXEN0iY5NKaGWlfSbM,10667
|
99
100
|
src/data_ingestion/data_ingestion_pipeline/components/process_data.py,sha256=8vubxkykRpx-d89H1XYGO3yXz4hxhihhGDgDR3s-XZ4,22045
|
100
101
|
src/deployment_targets/agent_engine/deployment_metadata.json,sha256=G_t_n-UNrFsBgH1Xrw5-ZqYzUGwZ4X6ipsIm_yiSq-w,72
|
101
|
-
src/deployment_targets/agent_engine/app/agent_engine_app.py,sha256=
|
102
|
+
src/deployment_targets/agent_engine/app/agent_engine_app.py,sha256=NKwghQ2vMai3bx0XDjrNve6pNDMAPjZ7zPjksoPapKM,12507
|
102
103
|
src/deployment_targets/agent_engine/notebooks/intro_agent_engine.ipynb,sha256=RE6Gp-bu4bHtNBngfkt_CF5emy5YcOWQ5rMYW_Cv8_w,48809
|
103
104
|
src/deployment_targets/agent_engine/tests/integration/test_agent_engine_app.py,sha256=3mEHdnenqT1RrQpndnQWZSMnn8kSLH85rPDhbxH6_lk,5978
|
104
105
|
src/deployment_targets/agent_engine/tests/load_test/README.md,sha256=aQP7nDAqd2jKBET4noI39HC9PVHpgpned7cxucWpVJo,1302
|
105
106
|
src/deployment_targets/agent_engine/tests/load_test/load_test.py,sha256=USzS89bQ4qHVoQynDRSRShKzeXf1MJ0MBV4FpV40vrI,4249
|
106
107
|
src/deployment_targets/agent_engine/tests/load_test/.results/.placeholder,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
107
108
|
src/deployment_targets/cloud_run/Dockerfile,sha256=CuhR3MuaRO2R7XrKPgNc5Oi7pv5JpJqgR8Nid0Tnsag,891
|
108
|
-
src/deployment_targets/cloud_run/app/server.py,sha256=
|
109
|
-
src/deployment_targets/cloud_run/deployment/terraform/service.tf,sha256=
|
110
|
-
src/deployment_targets/cloud_run/deployment/terraform/dev/service.tf,sha256=
|
109
|
+
src/deployment_targets/cloud_run/app/server.py,sha256=57S0SyDskDQnj6sMGx4ain-K2YVSCGplr4zp4mSlRPk,6656
|
110
|
+
src/deployment_targets/cloud_run/deployment/terraform/service.tf,sha256=w3iEnyScbO0sjLPQEYfs3GmPpHTUMGeG1ghi09wSY24,10322
|
111
|
+
src/deployment_targets/cloud_run/deployment/terraform/dev/service.tf,sha256=VegAzMcl2ohxMvtq6bcSXfCHYzQW68usyA839oULpgk,6581
|
111
112
|
src/deployment_targets/cloud_run/tests/integration/test_server_e2e.py,sha256=6gtRbCxlrsnvHdOFq8c_B_xowo49CJxThUeVjtQdTew,9238
|
112
113
|
src/deployment_targets/cloud_run/tests/load_test/README.md,sha256=k-PBN6HE9wgSRFb81sSiXA8h5Li6KYyIUSwDj6yntHU,2740
|
113
114
|
src/deployment_targets/cloud_run/tests/load_test/load_test.py,sha256=eVhqX8GtiDsIuZxMJAF2ivXML0xHDWDbriYsHZjAQZE,4212
|
@@ -189,22 +190,22 @@ src/resources/docs/adk-cheatsheet.md,sha256=C3xb_dEWWp7iROLRVb0iTBGmJ9uAbreF1j6V
|
|
189
190
|
src/resources/idx/idx-template.json,sha256=07OQZCPp45Iqor2O7Tm1e1Gmsdd-AmmUofSvA7y-oRs,793
|
190
191
|
src/resources/idx/idx-template.nix,sha256=sesHGev_PYtVDg0J5tHkg0OO7IR1Bz2iAtl_if3Ar3M,892
|
191
192
|
src/resources/idx/.idx/dev.nix,sha256=XQ4T1xt5I-8SVwnI37v56RFFlxa58Ko-a9G2-oelYAI,1602
|
192
|
-
src/resources/locks/uv-adk_base-agent_engine.lock,sha256=
|
193
|
-
src/resources/locks/uv-adk_base-cloud_run.lock,sha256=
|
194
|
-
src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock,sha256=
|
195
|
-
src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock,sha256=
|
196
|
-
src/resources/locks/uv-agentic_rag-agent_engine.lock,sha256=
|
197
|
-
src/resources/locks/uv-agentic_rag-cloud_run.lock,sha256=
|
198
|
-
src/resources/locks/uv-crewai_coding_crew-agent_engine.lock,sha256=
|
199
|
-
src/resources/locks/uv-crewai_coding_crew-cloud_run.lock,sha256=
|
200
|
-
src/resources/locks/uv-langgraph_base_react-agent_engine.lock,sha256=
|
201
|
-
src/resources/locks/uv-langgraph_base_react-cloud_run.lock,sha256=
|
202
|
-
src/resources/locks/uv-live_api-cloud_run.lock,sha256=
|
193
|
+
src/resources/locks/uv-adk_base-agent_engine.lock,sha256=XRegoR8TO1MDfCWQzjoBK9CuaC8wdUCs6cWet6c1J40,486277
|
194
|
+
src/resources/locks/uv-adk_base-cloud_run.lock,sha256=RowuQWgvz2W-sMG1hSp1QCswn2POYmGKCAln_aY2tpI,640556
|
195
|
+
src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock,sha256=XRegoR8TO1MDfCWQzjoBK9CuaC8wdUCs6cWet6c1J40,486277
|
196
|
+
src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock,sha256=RowuQWgvz2W-sMG1hSp1QCswn2POYmGKCAln_aY2tpI,640556
|
197
|
+
src/resources/locks/uv-agentic_rag-agent_engine.lock,sha256=grapMSoXHRsI9HFBz2M1XQ5eicwNvd1vf1ay2oaj_-o,544169
|
198
|
+
src/resources/locks/uv-agentic_rag-cloud_run.lock,sha256=rhRWMB1SXniMFjT0p0yBrVskyDvZDxjWEtHlGJji0vs,718129
|
199
|
+
src/resources/locks/uv-crewai_coding_crew-agent_engine.lock,sha256=mmZGeSNBAG3QJEeHbFFaXGh4vvhs2NNCce3kx-E55Lo,814252
|
200
|
+
src/resources/locks/uv-crewai_coding_crew-cloud_run.lock,sha256=xX1Wh5CfY0T_m5DNUrQjB9NlU4M9pOw08Vost0iWGB0,1071769
|
201
|
+
src/resources/locks/uv-langgraph_base_react-agent_engine.lock,sha256=pItAia1C5B6aKU7eewW7ktqnLx60qK49g7CJOA08HEM,694504
|
202
|
+
src/resources/locks/uv-langgraph_base_react-cloud_run.lock,sha256=3LUeFAOXbNpLZBdxSBY21DxXUDLkIBIJAFV2GyO6w18,918987
|
203
|
+
src/resources/locks/uv-live_api-cloud_run.lock,sha256=xOPEAiyHooNT2nMP1wbnJ2ekODdI5H0lM8h_byau1Xg,839570
|
203
204
|
src/utils/generate_locks.py,sha256=6V1B8V2BEuevWnXUsxZVTrLjXwFRII8UfsIGrQqZxVs,4320
|
204
205
|
src/utils/lock_utils.py,sha256=IFOMUWtb-ypm2Y8w8J5y2oI_-MaPuwPF_JOAAlnNudA,2275
|
205
206
|
src/utils/watch_and_rebuild.py,sha256=vP4yIiA7E_lj5sfQdJUl8TXas6V7msDg8XWUutAC05Q,6679
|
206
|
-
agent_starter_pack-0.
|
207
|
-
agent_starter_pack-0.
|
208
|
-
agent_starter_pack-0.
|
209
|
-
agent_starter_pack-0.
|
210
|
-
agent_starter_pack-0.
|
207
|
+
agent_starter_pack-0.11.0.dist-info/METADATA,sha256=I6ucqd79L2lMuuIQTi4hn1BXKD587zEHizRnB8mtvGU,11209
|
208
|
+
agent_starter_pack-0.11.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
209
|
+
agent_starter_pack-0.11.0.dist-info/entry_points.txt,sha256=U7uCxR7YulIhZ0L8R8Hui0Bsy6J7oyESBeDYJYMrQjA,56
|
210
|
+
agent_starter_pack-0.11.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
211
|
+
agent_starter_pack-0.11.0.dist-info/RECORD,,
|
@@ -21,7 +21,7 @@ settings:
|
|
21
21
|
"langchain~=0.3.14",
|
22
22
|
"langchain-community~=0.3.17",
|
23
23
|
"langchain-openai~=0.3.5",
|
24
|
-
"langgraph~=0.
|
25
|
-
"crewai~=0.
|
24
|
+
"langgraph~=0.6.2",
|
25
|
+
"crewai~=0.152.0"
|
26
26
|
]
|
27
27
|
example_question: "How can I implement a function to sort a list in Python?"
|
@@ -32,18 +32,18 @@ resource "google_project_iam_member" "default_compute_sa_storage_object_creator"
|
|
32
32
|
depends_on = [resource.google_project_service.services]
|
33
33
|
}
|
34
34
|
|
35
|
-
|
36
|
-
resource "google_service_account" "
|
37
|
-
account_id = "${var.project_name}-
|
38
|
-
display_name = "${var.project_name}
|
35
|
+
# Agent service account
|
36
|
+
resource "google_service_account" "app_sa" {
|
37
|
+
account_id = "${var.project_name}-app"
|
38
|
+
display_name = "${var.project_name} Agent Service Account"
|
39
39
|
project = var.dev_project_id
|
40
40
|
depends_on = [resource.google_project_service.services]
|
41
41
|
}
|
42
42
|
|
43
|
-
# Grant
|
44
|
-
resource "google_project_iam_member" "
|
43
|
+
# Grant application SA the required permissions to run the application
|
44
|
+
resource "google_project_iam_member" "app_sa_roles" {
|
45
45
|
for_each = {
|
46
|
-
for pair in setproduct(keys(local.project_ids), var.
|
46
|
+
for pair in setproduct(keys(local.project_ids), var.app_sa_roles) :
|
47
47
|
join(",", pair) => {
|
48
48
|
project = local.project_ids[pair[0]]
|
49
49
|
role = pair[1]
|
@@ -52,14 +52,15 @@ resource "google_project_iam_member" "cloud_run_app_sa_roles" {
|
|
52
52
|
|
53
53
|
project = each.value.project
|
54
54
|
role = each.value.role
|
55
|
-
member = "serviceAccount:${google_service_account.
|
55
|
+
member = "serviceAccount:${google_service_account.app_sa.email}"
|
56
56
|
depends_on = [resource.google_project_service.services]
|
57
57
|
}
|
58
|
-
|
59
|
-
|
58
|
+
|
59
|
+
{% if cookiecutter.deployment_target == 'agent_engine' %}
|
60
|
+
# Grant required permissions to Vertex AI service account for Agent Engine
|
60
61
|
resource "google_project_iam_member" "vertex_ai_sa_permissions" {
|
61
62
|
for_each = {
|
62
|
-
for pair in setproduct(keys(local.project_ids), var.
|
63
|
+
for pair in setproduct(keys(local.project_ids), var.app_sa_roles) :
|
63
64
|
join(",", pair) => pair[1]
|
64
65
|
}
|
65
66
|
|
@@ -45,13 +45,8 @@ variable "feedback_logs_filter" {
|
|
45
45
|
default = "jsonPayload.log_type=\"feedback\" jsonPayload.service_name=\"{{cookiecutter.project_name}}\""
|
46
46
|
}
|
47
47
|
|
48
|
-
|
49
|
-
|
50
|
-
description = "List of roles to assign to the Cloud Run app service account"
|
51
|
-
{% elif cookiecutter.deployment_target == 'agent_engine' %}
|
52
|
-
variable "agentengine_sa_roles" {
|
53
|
-
description = "List of roles to assign to the Agent Engine app service account"
|
54
|
-
{% endif %}
|
48
|
+
variable "app_sa_roles" {
|
49
|
+
description = "List of roles to assign to the application service account"
|
55
50
|
type = list(string)
|
56
51
|
default = [
|
57
52
|
{%- if "adk" in cookiecutter.tags and cookiecutter.session_type == "alloydb" %}
|
@@ -105,6 +105,20 @@ resource "github_actions_variable" "bucket_name_load_test_results" {
|
|
105
105
|
depends_on = [github_repository.repo]
|
106
106
|
}
|
107
107
|
|
108
|
+
resource "github_actions_variable" "app_sa_email_staging" {
|
109
|
+
repository = var.repository_name
|
110
|
+
variable_name = "APP_SA_EMAIL_STAGING"
|
111
|
+
value = google_service_account.app_sa["staging"].email
|
112
|
+
depends_on = [github_repository.repo]
|
113
|
+
}
|
114
|
+
|
115
|
+
resource "github_actions_variable" "app_sa_email_prod" {
|
116
|
+
repository = var.repository_name
|
117
|
+
variable_name = "APP_SA_EMAIL_PROD"
|
118
|
+
value = google_service_account.app_sa["prod"].email
|
119
|
+
depends_on = [github_repository.repo]
|
120
|
+
}
|
121
|
+
|
108
122
|
{% if cookiecutter.deployment_target == 'cloud_run' %}
|
109
123
|
resource "github_actions_variable" "container_name" {
|
110
124
|
repository = var.repository_name
|
@@ -56,10 +56,10 @@ resource "google_project_iam_member" "cicd_run_invoker_artifact_registry_reader"
|
|
56
56
|
|
57
57
|
}
|
58
58
|
|
59
|
-
# 4. Grant
|
60
|
-
resource "google_project_iam_member" "
|
59
|
+
# 4. Grant application SA the required permissions to run the application
|
60
|
+
resource "google_project_iam_member" "app_sa_roles" {
|
61
61
|
for_each = {
|
62
|
-
for pair in setproduct(keys(local.deploy_project_ids), var.
|
62
|
+
for pair in setproduct(keys(local.deploy_project_ids), var.app_sa_roles) :
|
63
63
|
join(",", pair) => {
|
64
64
|
project = local.deploy_project_ids[pair[0]]
|
65
65
|
role = pair[1]
|
@@ -68,10 +68,13 @@ resource "google_project_iam_member" "cloud_run_app_sa_roles" {
|
|
68
68
|
|
69
69
|
project = each.value.project
|
70
70
|
role = each.value.role
|
71
|
-
member = "serviceAccount:${google_service_account.
|
71
|
+
member = "serviceAccount:${google_service_account.app_sa[split(",", each.key)[0]].email}"
|
72
72
|
depends_on = [resource.google_project_service.cicd_services, resource.google_project_service.deploy_project_services]
|
73
73
|
}
|
74
|
-
|
74
|
+
|
75
|
+
{% endif %}
|
76
|
+
|
77
|
+
{% if cookiecutter.deployment_target == 'agent_engine' %}
|
75
78
|
resource "google_project_service_identity" "vertex_sa" {
|
76
79
|
for_each = local.deploy_project_ids
|
77
80
|
provider = google-beta
|
@@ -79,10 +82,10 @@ resource "google_project_service_identity" "vertex_sa" {
|
|
79
82
|
service = "aiplatform.googleapis.com"
|
80
83
|
}
|
81
84
|
|
82
|
-
#
|
85
|
+
# 5. Grant required permissions to Vertex AI Service Agent SA for Agent Engine
|
83
86
|
resource "google_project_iam_member" "vertex_ai_sa_permissions" {
|
84
87
|
for_each = {
|
85
|
-
for pair in setproduct(keys(local.deploy_project_ids), var.
|
88
|
+
for pair in setproduct(keys(local.deploy_project_ids), var.app_sa_roles) :
|
86
89
|
"${pair[0]}_${pair[1]}" => {
|
87
90
|
project = local.deploy_project_ids[pair[0]]
|
88
91
|
role = pair[1]
|
@@ -18,16 +18,15 @@ resource "google_service_account" "cicd_runner_sa" {
|
|
18
18
|
project = var.cicd_runner_project_id
|
19
19
|
depends_on = [resource.google_project_service.cicd_services, resource.google_project_service.deploy_project_services]
|
20
20
|
}
|
21
|
-
|
22
|
-
resource "google_service_account" "
|
21
|
+
# Agent service account
|
22
|
+
resource "google_service_account" "app_sa" {
|
23
23
|
for_each = local.deploy_project_ids
|
24
24
|
|
25
|
-
account_id = "${var.project_name}-
|
26
|
-
display_name = "
|
25
|
+
account_id = "${var.project_name}-app"
|
26
|
+
display_name = "${var.project_name} Agent Service Account"
|
27
27
|
project = each.value
|
28
28
|
depends_on = [resource.google_project_service.cicd_services, resource.google_project_service.deploy_project_services]
|
29
29
|
}
|
30
|
-
{% endif %}
|
31
30
|
|
32
31
|
{% if cookiecutter.data_ingestion %}
|
33
32
|
# Service account to run Vertex AI pipeline
|
@@ -66,13 +66,8 @@ variable "feedback_logs_filter" {
|
|
66
66
|
default = "jsonPayload.log_type=\"feedback\""
|
67
67
|
}
|
68
68
|
|
69
|
-
|
70
|
-
|
71
|
-
description = "List of roles to assign to the Cloud Run app service account"
|
72
|
-
{% elif cookiecutter.deployment_target == 'agent_engine' %}
|
73
|
-
variable "agentengine_sa_roles" {
|
74
|
-
description = "List of roles to assign to the Agent Engine service account"
|
75
|
-
{% endif %}
|
69
|
+
variable "app_sa_roles" {
|
70
|
+
description = "List of roles to assign to the application service account"
|
76
71
|
type = list(string)
|
77
72
|
default = [
|
78
73
|
{%- if cookiecutter.deployment_target == 'cloud_run' %}
|
@@ -78,7 +78,8 @@ resource "google_cloudbuild_trigger" "cd_pipeline" {
|
|
78
78
|
{% if cookiecutter.deployment_target == 'cloud_run' %}
|
79
79
|
_CONTAINER_NAME = var.project_name
|
80
80
|
_ARTIFACT_REGISTRY_REPO_NAME = resource.google_artifact_registry_repository.repo-artifacts-genai.repository_id
|
81
|
-
|
81
|
+
{% elif cookiecutter.deployment_target == 'agent_engine' %}
|
82
|
+
_APP_SA_EMAIL_STAGING = resource.google_service_account.app_sa["staging"].email
|
82
83
|
{% endif %}
|
83
84
|
{% if cookiecutter.data_ingestion %}
|
84
85
|
_PIPELINE_GCS_ROOT_STAGING = "gs://${resource.google_storage_bucket.data_ingestion_pipeline_gcs_root["staging"].name}"
|
@@ -126,7 +127,8 @@ resource "google_cloudbuild_trigger" "deploy_to_prod_pipeline" {
|
|
126
127
|
{% if cookiecutter.deployment_target == 'cloud_run' %}
|
127
128
|
_CONTAINER_NAME = var.project_name
|
128
129
|
_ARTIFACT_REGISTRY_REPO_NAME = resource.google_artifact_registry_repository.repo-artifacts-genai.repository_id
|
129
|
-
|
130
|
+
{% elif cookiecutter.deployment_target == 'agent_engine' %}
|
131
|
+
_APP_SA_EMAIL_PROD = resource.google_service_account.app_sa["prod"].email
|
130
132
|
{% endif %}
|
131
133
|
{% if cookiecutter.data_ingestion %}
|
132
134
|
_PIPELINE_GCS_ROOT_PROD = "gs://${resource.google_storage_bucket.data_ingestion_pipeline_gcs_root["prod"].name}"
|
src/base_template/pyproject.toml
CHANGED
@@ -16,12 +16,12 @@ dependencies = [
|
|
16
16
|
{%- endif %}
|
17
17
|
"google-cloud-logging~=3.11.4",
|
18
18
|
{%- if cookiecutter.deployment_target == 'cloud_run' %}
|
19
|
-
"google-cloud-aiplatform[evaluation]~=1.
|
19
|
+
"google-cloud-aiplatform[evaluation]~=1.106.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.106.0"
|
25
25
|
{%- endif %}
|
26
26
|
]
|
27
27
|
{% if cookiecutter.deployment_target == 'cloud_run' %}
|
@@ -109,6 +109,7 @@ jobs:
|
|
109
109
|
uv run app/agent_engine_app.py \
|
110
110
|
--project {% raw %}${{ vars.PROD_PROJECT_ID }}{% endraw %} \
|
111
111
|
--location {% raw %}${{ vars.REGION }}{% endraw %} \
|
112
|
+
--service-account {% raw %}${{ vars.APP_SA_EMAIL_PROD }}{% endraw %} \
|
112
113
|
--set-env-vars="COMMIT_SHA={% raw %}${{ github.sha }}{% endraw %}{%- if cookiecutter.data_ingestion %}{%- if cookiecutter.datastore_type == "vertex_ai_search" %},DATA_STORE_ID={% raw %}${{ vars.DATA_STORE_ID_PROD }}{% endraw %},DATA_STORE_REGION={% raw %}${{ vars.DATA_STORE_REGION }}{% endraw %}{%- elif cookiecutter.datastore_type == "vertex_ai_vector_search" %},VECTOR_SEARCH_INDEX={% raw %}${{ vars.VECTOR_SEARCH_INDEX_PROD }}{% endraw %},VECTOR_SEARCH_INDEX_ENDPOINT={% raw %}${{ vars.VECTOR_SEARCH_INDEX_ENDPOINT_PROD }}{% endraw %},VECTOR_SEARCH_BUCKET={% raw %}${{ vars.VECTOR_SEARCH_BUCKET_PROD }}{% endraw %}{%- endif %}{%- endif %}"
|
113
114
|
{%- endif %}
|
114
115
|
|
@@ -122,6 +122,7 @@ jobs:
|
|
122
122
|
uv run app/agent_engine_app.py \
|
123
123
|
--project {% raw %}${{ vars.STAGING_PROJECT_ID }}{% endraw %} \
|
124
124
|
--location {% raw %}${{ vars.REGION }}{% endraw %} \
|
125
|
+
--service-account {% raw %}${{ vars.APP_SA_EMAIL_STAGING }}{% endraw %} \
|
125
126
|
--set-env-vars="COMMIT_SHA={% raw %}${{ github.sha }}{% endraw %}{%- if cookiecutter.data_ingestion %}{%- if cookiecutter.datastore_type == "vertex_ai_search" %},DATA_STORE_ID={% raw %}${{ vars.DATA_STORE_ID_STAGING }}{% endraw %},DATA_STORE_REGION={% raw %}${{ vars.DATA_STORE_REGION }}{% endraw %}{%- elif cookiecutter.datastore_type == "vertex_ai_vector_search" %},VECTOR_SEARCH_INDEX={% raw %}${{ vars.VECTOR_SEARCH_INDEX_STAGING }}{% endraw %},VECTOR_SEARCH_INDEX_ENDPOINT={% raw %}${{ vars.VECTOR_SEARCH_INDEX_ENDPOINT_STAGING }}{% endraw %},VECTOR_SEARCH_BUCKET={% raw %}${{ vars.VECTOR_SEARCH_BUCKET_STAGING }}{% endraw %}{%- endif %}{%- endif %}"
|
126
127
|
|
127
128
|
- name: Fetch Auth Token
|
@@ -77,6 +77,7 @@ steps:
|
|
77
77
|
uv run app/agent_engine_app.py \
|
78
78
|
--project ${_PROD_PROJECT_ID} \
|
79
79
|
--location ${_REGION} \
|
80
|
+
--service-account ${_APP_SA_EMAIL_PROD} \
|
80
81
|
--set-env-vars="COMMIT_SHA=${COMMIT_SHA}{%- if cookiecutter.data_ingestion %}{%- if cookiecutter.datastore_type == "vertex_ai_search" %},DATA_STORE_ID=${_DATA_STORE_ID_PROD},DATA_STORE_REGION=${_DATA_STORE_REGION}{%- elif cookiecutter.datastore_type == "vertex_ai_vector_search" %},VECTOR_SEARCH_INDEX=${_VECTOR_SEARCH_INDEX_PROD},VECTOR_SEARCH_INDEX_ENDPOINT=${_VECTOR_SEARCH_INDEX_ENDPOINT_PROD},VECTOR_SEARCH_BUCKET=${_VECTOR_SEARCH_BUCKET_PROD}{%- endif %}{%- endif %}"
|
81
82
|
env:
|
82
83
|
- 'PATH=/usr/local/bin:/usr/bin:~/.local/bin'
|
@@ -111,6 +111,7 @@ steps:
|
|
111
111
|
uv run app/agent_engine_app.py \
|
112
112
|
--project ${_STAGING_PROJECT_ID} \
|
113
113
|
--location ${_REGION} \
|
114
|
+
--service-account ${_APP_SA_EMAIL_STAGING} \
|
114
115
|
--set-env-vars="COMMIT_SHA=${COMMIT_SHA}{%- if cookiecutter.data_ingestion %}{%- if cookiecutter.datastore_type == "vertex_ai_search" %},DATA_STORE_ID=${_DATA_STORE_ID_STAGING},DATA_STORE_REGION=${_DATA_STORE_REGION}{%- elif cookiecutter.datastore_type == "vertex_ai_vector_search" %},VECTOR_SEARCH_INDEX=${_VECTOR_SEARCH_INDEX_STAGING},VECTOR_SEARCH_INDEX_ENDPOINT=${_VECTOR_SEARCH_INDEX_ENDPOINT_STAGING},VECTOR_SEARCH_BUCKET=${_VECTOR_SEARCH_BUCKET_STAGING}{%- endif %}{%- endif %}"
|
115
116
|
env:
|
116
117
|
- 'PATH=/usr/local/bin:/usr/bin:~/.local/bin'
|