agent-starter-pack 0.7.1__py3-none-any.whl → 0.9.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {agent_starter_pack-0.7.1.dist-info → agent_starter_pack-0.9.0.dist-info}/METADATA +7 -6
- {agent_starter_pack-0.7.1.dist-info → agent_starter_pack-0.9.0.dist-info}/RECORD +63 -59
- agents/README.md +7 -0
- agents/adk_base/{template/.templateconfig.yaml → .template/templateconfig.yaml} +3 -1
- agents/adk_base/notebooks/adk_app_testing.ipynb +8 -6
- agents/adk_gemini_fullstack/{template/.templateconfig.yaml → .template/templateconfig.yaml} +3 -2
- agents/adk_gemini_fullstack/notebooks/adk_app_testing.ipynb +8 -6
- agents/agentic_rag/{template/.templateconfig.yaml → .template/templateconfig.yaml} +2 -1
- agents/agentic_rag/notebooks/adk_app_testing.ipynb +8 -6
- agents/crewai_coding_crew/{template/.templateconfig.yaml → .template/templateconfig.yaml} +1 -1
- llm.txt +7 -0
- src/base_template/Makefile +5 -1
- src/base_template/README.md +2 -2
- src/base_template/deployment/cd/deploy-to-prod.yaml +1 -16
- src/base_template/deployment/cd/staging.yaml +4 -19
- src/base_template/deployment/terraform/apis.tf +2 -2
- src/base_template/deployment/terraform/build_triggers.tf +5 -5
- src/base_template/deployment/terraform/dev/apis.tf +8 -1
- src/base_template/deployment/terraform/dev/variables.tf +3 -1
- src/base_template/deployment/terraform/iam.tf +8 -8
- src/base_template/deployment/terraform/locals.tf +9 -2
- src/base_template/deployment/terraform/log_sinks.tf +2 -2
- src/base_template/deployment/terraform/service_accounts.tf +3 -3
- src/base_template/deployment/terraform/storage.tf +7 -7
- src/base_template/deployment/terraform/variables.tf +3 -0
- src/base_template/pyproject.toml +4 -3
- src/cli/commands/create.py +191 -41
- src/cli/commands/list.py +158 -0
- src/cli/commands/setup_cicd.py +2 -2
- src/cli/main.py +2 -0
- src/cli/utils/cicd.py +2 -2
- src/cli/utils/remote_template.py +254 -0
- src/cli/utils/template.py +134 -25
- src/deployment_targets/agent_engine/app/agent_engine_app.py +7 -7
- src/deployment_targets/agent_engine/tests/load_test/README.md +1 -6
- src/deployment_targets/agent_engine/tests/load_test/load_test.py +13 -3
- src/deployment_targets/cloud_run/Dockerfile +3 -0
- src/deployment_targets/cloud_run/app/server.py +18 -0
- src/deployment_targets/cloud_run/deployment/terraform/dev/service.tf +231 -0
- src/deployment_targets/cloud_run/deployment/terraform/service.tf +360 -0
- src/deployment_targets/cloud_run/tests/integration/test_server_e2e.py +8 -5
- src/deployment_targets/cloud_run/tests/load_test/README.md +2 -2
- src/deployment_targets/cloud_run/tests/load_test/load_test.py +21 -17
- src/frontends/adk_gemini_fullstack/frontend/src/App.tsx +2 -3
- src/resources/docs/adk-cheatsheet.md +1 -1
- src/resources/locks/uv-adk_base-agent_engine.lock +873 -236
- src/resources/locks/uv-adk_base-cloud_run.lock +1169 -283
- src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock +873 -236
- src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock +1169 -283
- src/resources/locks/uv-agentic_rag-agent_engine.lock +508 -373
- src/resources/locks/uv-agentic_rag-cloud_run.lock +668 -469
- src/resources/locks/uv-crewai_coding_crew-agent_engine.lock +582 -587
- src/resources/locks/uv-crewai_coding_crew-cloud_run.lock +791 -733
- src/resources/locks/uv-langgraph_base_react-agent_engine.lock +587 -478
- src/resources/locks/uv-langgraph_base_react-cloud_run.lock +799 -627
- src/resources/locks/uv-live_api-cloud_run.lock +803 -603
- src/resources/setup_cicd/github.tf +2 -2
- src/utils/lock_utils.py +1 -1
- src/deployment_targets/cloud_run/uv.lock +0 -6952
- {agent_starter_pack-0.7.1.dist-info → agent_starter_pack-0.9.0.dist-info}/WHEEL +0 -0
- {agent_starter_pack-0.7.1.dist-info → agent_starter_pack-0.9.0.dist-info}/entry_points.txt +0 -0
- {agent_starter_pack-0.7.1.dist-info → agent_starter_pack-0.9.0.dist-info}/licenses/LICENSE +0 -0
- /agents/langgraph_base_react/{template/.templateconfig.yaml → .template/templateconfig.yaml} +0 -0
- /agents/live_api/{template/.templateconfig.yaml → .template/templateconfig.yaml} +0 -0
@@ -1,17 +1,17 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: agent-starter-pack
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.9.0
|
4
4
|
Summary: CLI to bootstrap production-ready Google Cloud GenAI agent projects from templates.
|
5
5
|
Author-email: Google LLC <agent-starter-pack@google.com>
|
6
6
|
License: Apache-2.0
|
7
7
|
License-File: LICENSE
|
8
8
|
Requires-Python: >=3.10
|
9
9
|
Requires-Dist: backoff>=2.2.1
|
10
|
-
Requires-Dist: click
|
11
|
-
Requires-Dist: cookiecutter~=2.
|
10
|
+
Requires-Dist: click>=8.1.7
|
11
|
+
Requires-Dist: cookiecutter~=2.6.0
|
12
12
|
Requires-Dist: google-cloud-aiplatform>=1.87.0
|
13
|
-
Requires-Dist: pyyaml
|
14
|
-
Requires-Dist: rich
|
13
|
+
Requires-Dist: pyyaml>=6.0.1
|
14
|
+
Requires-Dist: rich>=13.7.0
|
15
15
|
Provides-Extra: jupyter
|
16
16
|
Requires-Dist: ipykernel>=6.29.5; extra == 'jupyter'
|
17
17
|
Requires-Dist: jupyter; extra == 'jupyter'
|
@@ -103,7 +103,8 @@ Looking to explore more ADK examples? Check out the [ADK Samples Repository](htt
|
|
103
103
|
The `agent-starter-pack` offers two key features to accelerate and simplify the development of your agent:
|
104
104
|
- **🔄 [CI/CD Automation (Experimental)](https://googlecloudplatform.github.io/agent-starter-pack/cli/setup_cicd)** - One command to set up a complete GitHub + Cloud Build pipeline for all environments
|
105
105
|
- **📥 [Data Pipeline for RAG with Terraform/CI-CD](https://googlecloudplatform.github.io/agent-starter-pack/guide/data-ingestion)** - Seamlessly integrate a data pipeline to process embeddings for RAG into your agent system. Supporting [Vertex AI Search](https://cloud.google.com/generative-ai-app-builder/docs/enterprise-search-introduction) and [Vector Search](https://cloud.google.com/vertex-ai/docs/vector-search/overview).
|
106
|
-
|
106
|
+
- **[Remote Templates](docs/guide/remote-templating.md)**: Create and share your own agent starter packs templates from any Git repository.
|
107
|
+
- **🤖 Gemini CLI Integration** - Use the [Gemini CLI](https://github.com/google-gemini/gemini-cli) and the included `GEMINI.md` context file to ask questions about your template, agent architecture, and the path to production. Get instant guidance and code examples directly in your terminal.
|
107
108
|
|
108
109
|
## High-Level Architecture
|
109
110
|
|
@@ -1,86 +1,89 @@
|
|
1
|
+
agents/README.md,sha256=L8__lIXXjxLTZbkCmTC4taTFUMRVrO3QI2mCKZTdhJM,462
|
1
2
|
agents/adk_base/README.md,sha256=eLf-F9Z4u_mQOchAnUaSrOAHXRSx8wUQN29kkwz1SF4,894
|
3
|
+
agents/adk_base/.template/templateconfig.yaml,sha256=CUhOW807Ap2XDk3ZRK-OWP4-tD5fUUr8Nvv4yrOfjJk,923
|
2
4
|
agents/adk_base/app/agent.py,sha256=6Q6QegQDxEaAck989DPIb3ArHMZtw_YJBqhHFqg-UjQ,2182
|
3
|
-
agents/adk_base/notebooks/adk_app_testing.ipynb,sha256=
|
5
|
+
agents/adk_base/notebooks/adk_app_testing.ipynb,sha256=wgFzBo7hX393NVzy3ZfZHncs1ptiQbM_8he3XxJu4yM,9763
|
4
6
|
agents/adk_base/notebooks/evaluating_adk_agent.ipynb,sha256=OMTiT3gAFWPvE9pPL8z7tsDwOU-l8wem5wH-OXPPlvk,56805
|
5
|
-
agents/adk_base/template/.templateconfig.yaml,sha256=EWfw7zqlQsxKrmMdiqwSemIhx3ke6i6a5mqZ3z94KDI,893
|
6
7
|
agents/adk_base/tests/integration/test_agent.py,sha256=VypgpEWrQegJBgc58V-BlIsbqh-Hii-hwmkwcz5feFw,1969
|
7
8
|
agents/adk_gemini_fullstack/README.md,sha256=yQFFcESALj5Q6eweyIyPx__U74obUM88aCBJYNV2UWs,1674
|
9
|
+
agents/adk_gemini_fullstack/.template/templateconfig.yaml,sha256=gU0EeLdr2INQDZKeypofUoZw-lcwq3qV6E8AVeowTQg,1716
|
8
10
|
agents/adk_gemini_fullstack/app/agent.py,sha256=NXOkYFxDccJaSq55CTS-UYY8z5-WgBZqexII0Ybzk9c,22662
|
9
11
|
agents/adk_gemini_fullstack/app/config.py,sha256=x--axECPKWW3oLANKz2_4zzHEBIU7if8iYNZRjlTNV0,1563
|
10
|
-
agents/adk_gemini_fullstack/notebooks/adk_app_testing.ipynb,sha256=
|
12
|
+
agents/adk_gemini_fullstack/notebooks/adk_app_testing.ipynb,sha256=wgFzBo7hX393NVzy3ZfZHncs1ptiQbM_8he3XxJu4yM,9763
|
11
13
|
agents/adk_gemini_fullstack/notebooks/evaluating_adk_agent.ipynb,sha256=OMTiT3gAFWPvE9pPL8z7tsDwOU-l8wem5wH-OXPPlvk,56805
|
12
|
-
agents/adk_gemini_fullstack/template/.templateconfig.yaml,sha256=yRLZdEON4faicYe9hklktxv06OCx1sdP9ihuniKuPfU,1658
|
13
14
|
agents/adk_gemini_fullstack/tests/integration/test_agent.py,sha256=VypgpEWrQegJBgc58V-BlIsbqh-Hii-hwmkwcz5feFw,1969
|
14
15
|
agents/agentic_rag/README.md,sha256=mxMLkq6tAghFaDmc2sc2sEQ5vn9kGWdiRxfTykwpLz0,2268
|
16
|
+
agents/agentic_rag/.template/templateconfig.yaml,sha256=VC0Ss-QmLjROtSy3Dx_BSDV5xSgvr-yI1doBkKXBjc4,1248
|
15
17
|
agents/agentic_rag/app/agent.py,sha256=tKtzez7vGu6JgMWmZN7QrKkyLBvHu1ondAuICjKoC-g,3983
|
16
18
|
agents/agentic_rag/app/retrievers.py,sha256=qfxwSEixMddvAu4FvUTZAFh1Gdp3RPY65s0Wp6gEFVk,4561
|
17
19
|
agents/agentic_rag/app/templates.py,sha256=8N_uRchwiN7hlH9Y8rdJ1CAtOhpHUWZkXZZ7IU-YJJk,867
|
18
|
-
agents/agentic_rag/notebooks/adk_app_testing.ipynb,sha256=
|
20
|
+
agents/agentic_rag/notebooks/adk_app_testing.ipynb,sha256=wgFzBo7hX393NVzy3ZfZHncs1ptiQbM_8he3XxJu4yM,9763
|
19
21
|
agents/agentic_rag/notebooks/evaluating_adk_agent.ipynb,sha256=OMTiT3gAFWPvE9pPL8z7tsDwOU-l8wem5wH-OXPPlvk,56805
|
20
|
-
agents/agentic_rag/template/.templateconfig.yaml,sha256=xZlSDarlNwppW6gjHXdxQMbUZAVpXwHPalVTS4Zbln8,1223
|
21
22
|
agents/agentic_rag/tests/integration/test_agent.py,sha256=mxsKFyZrwXzIvAoxlqZv2JndM3VTVTKcugRYdF3APr4,2112
|
22
23
|
agents/crewai_coding_crew/README.md,sha256=4No7sfHQVHELARGiT3fWANJzDR0NP48ow4ct3FoPwlA,1672
|
24
|
+
agents/crewai_coding_crew/.template/templateconfig.yaml,sha256=q2KH2Hkq7MkGkVup9pIj2E3tosy7paQW2WiEHA2Qw_Y,1051
|
23
25
|
agents/crewai_coding_crew/app/agent.py,sha256=yd-P2Jzx3Do4FQuhwDsok-YRNYFi9Vl8OTqSlbdn4Sw,3260
|
24
26
|
agents/crewai_coding_crew/app/crew/crew.py,sha256=pqeeJ4txP-gcVT3PKEAw2zZ4x8g4cDlnFFbf0_zZRr4,2000
|
25
27
|
agents/crewai_coding_crew/app/crew/config/agents.yaml,sha256=Cn9zTcP3C-8MvlV19cYdlxR0iIs2_FOy2gKOJLUpNRo,1154
|
26
28
|
agents/crewai_coding_crew/app/crew/config/tasks.yaml,sha256=SSFuiSQPhi4dM0V5HdNuMqtN7JJr5RUCMhhBzUkPBpc,1511
|
27
29
|
agents/crewai_coding_crew/notebooks/evaluating_crewai_agent.ipynb,sha256=ifTn4RfrJeYQ8ell9n6VE65ZEfcnKGkMLFG8RBlPK70,57974
|
28
30
|
agents/crewai_coding_crew/notebooks/evaluating_langgraph_agent.ipynb,sha256=PlW41fL-ji9NKkimW6u25YRLGWN2pgoX2G8w5nzIEPE,58737
|
29
|
-
agents/crewai_coding_crew/template/.templateconfig.yaml,sha256=4SLcpHgDcf_6mjJCxPVciQ002QVz09V04uvbtMLZs4A,1051
|
30
31
|
agents/crewai_coding_crew/tests/integration/test_agent.py,sha256=0uvfmM3FSdESIU7ICb2oqABsQqylQU2PE3UBwbpif-A,1629
|
31
32
|
agents/langgraph_base_react/README.md,sha256=KZQ0e8q9CqnIEiItH9Tc2Ceb2mC3sBcyQUo-ZAmO-zs,482
|
33
|
+
agents/langgraph_base_react/.template/templateconfig.yaml,sha256=jHh3WDNT70KMbA2zy3Da_J_jIWeGfeiqIKfUs5B8OBk,1049
|
32
34
|
agents/langgraph_base_react/app/agent.py,sha256=yzCc5JaOJgItoBiZOzHPiSy9aD2HGeGI_pH7nrysSmg,2505
|
33
35
|
agents/langgraph_base_react/notebooks/evaluating_langgraph_agent.ipynb,sha256=PlW41fL-ji9NKkimW6u25YRLGWN2pgoX2G8w5nzIEPE,58737
|
34
|
-
agents/langgraph_base_react/template/.templateconfig.yaml,sha256=jHh3WDNT70KMbA2zy3Da_J_jIWeGfeiqIKfUs5B8OBk,1049
|
35
36
|
agents/langgraph_base_react/tests/integration/test_agent.py,sha256=wg2Y8V4l7dh7rhWy7Z8zioDW5ILRsz7RZJ-mz0AhK3U,1619
|
36
37
|
agents/live_api/README.md,sha256=c3lu5WguOUBc5hO_UtNZfVhfYxvSzMXuGFICn9M38mU,2897
|
38
|
+
agents/live_api/.template/templateconfig.yaml,sha256=DD_hihMsuqmd5VWS18vVGZ3ZGVVpFWVXJ2dU07eKb6k,964
|
37
39
|
agents/live_api/app/agent.py,sha256=dYE2qd64OhL-fOgwzrjqN50LYXAgJ1TWbx6ohqtV5Rc,2434
|
38
40
|
agents/live_api/app/server.py,sha256=ZXriNDl_zo7WDRBke85lyzMsy66qGzPaRXY1FMy4Fdw,7793
|
39
|
-
agents/live_api/template/.templateconfig.yaml,sha256=DD_hihMsuqmd5VWS18vVGZ3ZGVVpFWVXJ2dU07eKb6k,964
|
40
41
|
agents/live_api/tests/integration/test_server_e2e.py,sha256=D2VETDIyTD2fQyQ6DXwLr-POSYyVzzzcpIFLt5Ppyx4,8398
|
41
42
|
agents/live_api/tests/load_test/load_test.py,sha256=HHZyfC4gqiQtZVF_CbbxENGgWQccMLpwMv0IdoQ6cbQ,1275
|
42
43
|
agents/live_api/tests/unit/test_server.py,sha256=_TjlgQgNkjerIaBGnu8P8_KB8ZlSolDcivALpUOn_Rw,4786
|
43
|
-
llm.txt,sha256=
|
44
|
+
llm.txt,sha256=DZaO2YqDmvigYzqIvMsNPYilmbNqZfJL9hTicZHpvZc,13561
|
44
45
|
src/base_template/.gitignore,sha256=Fq0w34x4sfbwP4RqDqh6hdHNYRUEsFNI-9XONzLWBIs,2580
|
45
46
|
src/base_template/GEMINI.md,sha256=WzscHWlQeYkKORZ-453P8KM9IHuj1kAxW-69c7Ytuwk,133
|
46
|
-
src/base_template/Makefile,sha256=
|
47
|
-
src/base_template/README.md,sha256=
|
48
|
-
src/base_template/pyproject.toml,sha256=
|
47
|
+
src/base_template/Makefile,sha256=MEsMvBosWrSVgUPRucTjsxYovl41rQc3d8Vw8dxdPoA,6128
|
48
|
+
src/base_template/README.md,sha256=xAz5JXSnhCjXtvw5wSl6AVn6DJBlQIhSl4exyO5N4nc,10929
|
49
|
+
src/base_template/pyproject.toml,sha256=TEu9_gZT9tRuV6x8CcVIpC4Lcetbr0mHMPcJAab0aq4,2874
|
49
50
|
src/base_template/app/__init__.py,sha256=UyAgc2l8nkVIUPUzL9hKR7EgzCsc2jSYcOcjHNNmpMU,59
|
50
51
|
src/base_template/app/utils/gcs.py,sha256=jKblaWOGQEigw3esaawcfX178shhZi2Fyk0fJSA4T68,1501
|
51
52
|
src/base_template/app/utils/tracing.py,sha256=2rv1Ukh2jTBENDwoghCItJ28l-Sjz9gMlzdojlVgJa4,6052
|
52
53
|
src/base_template/app/utils/typing.py,sha256=DP5OZC3IGvqA1XbvWt8kI3gyAK3ZjzUSL5Ca17wNeLI,4249
|
53
54
|
src/base_template/deployment/README.md,sha256=qWTCWyEj1bZuny3XyCelXPgljh6yu_GDwfPNUeFoXBY,5245
|
54
|
-
src/base_template/deployment/cd/deploy-to-prod.yaml,sha256=
|
55
|
-
src/base_template/deployment/cd/staging.yaml,sha256=
|
55
|
+
src/base_template/deployment/cd/deploy-to-prod.yaml,sha256=NDXSV5MdnTZfGk0Rkrh7_6RRTq6GiSmKyRVnX83OAfI,3601
|
56
|
+
src/base_template/deployment/cd/staging.yaml,sha256=18plJjSrU73GR1Yncv_i9F0c2VE23ktYuEJpWDPVEQY,7232
|
56
57
|
src/base_template/deployment/ci/pr_checks.yaml,sha256=VFdF6q_-zETCMlJkJ0znW8T7gCYE59BZNliNPz2Bh18,1517
|
57
|
-
src/base_template/deployment/terraform/apis.tf,sha256=
|
58
|
-
src/base_template/deployment/terraform/build_triggers.tf,sha256=
|
59
|
-
src/base_template/deployment/terraform/iam.tf,sha256
|
60
|
-
src/base_template/deployment/terraform/locals.tf,sha256=
|
61
|
-
src/base_template/deployment/terraform/log_sinks.tf,sha256=
|
58
|
+
src/base_template/deployment/terraform/apis.tf,sha256=KX8Oe2gjT-gh9Bkntz9yIAyRjPc1gZvwOhroJ6NZVp4,1513
|
59
|
+
src/base_template/deployment/terraform/build_triggers.tf,sha256=kPLPRzgXrW3cBocWq-kPMxtfCcBo1yBLblSAxNvajrQ,6365
|
60
|
+
src/base_template/deployment/terraform/iam.tf,sha256=IdZju8WsfjT_-CswYSGuAHjE8JsWArsAi2TbqTnphEU,5661
|
61
|
+
src/base_template/deployment/terraform/locals.tf,sha256=nvjlavqWRL6e-iIqfIRvsai5JY9l6KhRGcwJQFRdu_U,1653
|
62
|
+
src/base_template/deployment/terraform/log_sinks.tf,sha256=eAGh_dCjOKUQjylkqp1fNM9cfE4QB9HSEovjD6_G9Lg,2971
|
62
63
|
src/base_template/deployment/terraform/providers.tf,sha256=LFjFQm8XbhWfQRwBUwhTjHLDWUbHW-IlFg71E0zFHIg,1080
|
63
|
-
src/base_template/deployment/terraform/service_accounts.tf,sha256=
|
64
|
-
src/base_template/deployment/terraform/storage.tf,sha256=
|
65
|
-
src/base_template/deployment/terraform/variables.tf,sha256=
|
66
|
-
src/base_template/deployment/terraform/dev/apis.tf,sha256=
|
64
|
+
src/base_template/deployment/terraform/service_accounts.tf,sha256=KsM9g0dlXmO6-Hokzz09HP1oO3crc8uLJj_Z45d8fe0,1713
|
65
|
+
src/base_template/deployment/terraform/storage.tf,sha256=W0l34U7Ql2wdegfWsWfKzaEooaMaTL2TkU18KM_Vuys,8695
|
66
|
+
src/base_template/deployment/terraform/variables.tf,sha256=xQLz_jdMvJjmDjEdYuuNOS-Xjf_GMwBbqZ1ig_lmCnE,5962
|
67
|
+
src/base_template/deployment/terraform/dev/apis.tf,sha256=R5fyLQGHsZy7JyDdFpuNzUBute6Rn9xR32zIMjkGxzc,1592
|
67
68
|
src/base_template/deployment/terraform/dev/iam.tf,sha256=ZHFs4TMvq6mqD90n8ecXndzW3pyu4EbZO4iJis88BH0,3394
|
68
69
|
src/base_template/deployment/terraform/dev/log_sinks.tf,sha256=uVdMtDdd8MnxtKhqzVaYqadE11P3r4fs2IdgNecxM4I,2671
|
69
70
|
src/base_template/deployment/terraform/dev/providers.tf,sha256=1S9jCh48d6ailVZ1e14EHsUUDSp7DyGZGExJwViFCkM,900
|
70
71
|
src/base_template/deployment/terraform/dev/storage.tf,sha256=1mgLs21SUhfcoRICqd7BqUlEVAVGeN3kMsQ4UAQLOh8,4654
|
71
|
-
src/base_template/deployment/terraform/dev/variables.tf,sha256=
|
72
|
+
src/base_template/deployment/terraform/dev/variables.tf,sha256=7uQeqzN6IR14h1iThXf-3M1pbWKpKxCddDs78r49yuo,4324
|
72
73
|
src/base_template/deployment/terraform/dev/vars/env.tfvars,sha256=LoQMjh1AAMR-MGfaSCsVMjdoYTk2T4oS4D9vMH54CdQ,714
|
73
74
|
src/base_template/deployment/terraform/vars/env.tfvars,sha256=Nze8q1x2Aj6ZUeWC2hDeZWqNUkLp13DgzA_LFmmOzCo,1216
|
74
75
|
src/base_template/tests/unit/test_dummy.py,sha256=2exfCH8qhkZrLWvK04ZxNTO9MV3fdTbZkJN3uK6zvok,850
|
75
|
-
src/cli/main.py,sha256=
|
76
|
-
src/cli/commands/create.py,sha256=
|
77
|
-
src/cli/commands/
|
76
|
+
src/cli/main.py,sha256=fyJKjU1gvRQmuqS-J6sExvqXo0-z7n6Bce8PSbDPa6E,1769
|
77
|
+
src/cli/commands/create.py,sha256=yIHngbbeUBvLKWg6IkH87yFwf-IJqdzbebkdqpwEFRQ,31818
|
78
|
+
src/cli/commands/list.py,sha256=50sxEcYY5T4Q34Uj7J5h8A9Tq5Zw8GQhkqunBdzzD0U,5288
|
79
|
+
src/cli/commands/setup_cicd.py,sha256=1ZvgTD-Z2bZk6pWuinz4IP2G1Eb8H1MibRLPS-mZ6Ng,31721
|
78
80
|
src/cli/utils/__init__.py,sha256=_cTmsXGPqOtK0q8UW5164QTltbJRJFR_Efxq_BRL1-o,1311
|
79
|
-
src/cli/utils/cicd.py,sha256=
|
81
|
+
src/cli/utils/cicd.py,sha256=VSkJTL7OBnXQ6Zbb2gzgw5gLWpwUjfr9XthqTpJ2Oj8,26197
|
80
82
|
src/cli/utils/datastores.py,sha256=gv1V6eDcOEKx4MRNG5C3Y-VfixYq1AzQuaYMLp8QRNo,1058
|
81
83
|
src/cli/utils/gcp.py,sha256=cnuCyN144eiyYc9aJNEK9JnyWN66rdevugoMdDYC1UU,4032
|
82
84
|
src/cli/utils/logging.py,sha256=0lHe4EPi1A8sOx9xkA7gS4UNl0GsIyp2ahydkkuCzLY,1570
|
83
|
-
src/cli/utils/
|
85
|
+
src/cli/utils/remote_template.py,sha256=LA2gAo1i_PCMMB6gqWPOH-WWR8MFyr9CrK9_-f1jVIY,7895
|
86
|
+
src/cli/utils/template.py,sha256=GpUWMQ7hfO5nkACRQ3_aFbn5yT2MjO58nr9Hs0Fp8kM,33700
|
84
87
|
src/cli/utils/version.py,sha256=F4udQmzniPStqWZFIgnv3Qg3l9non4mfy2An-Oveqmc,2916
|
85
88
|
src/data_ingestion/README.md,sha256=LNxSQoJW9JozK-TbyGQLj5L_MGWNwrfLk6V6RmQ2oBQ,4032
|
86
89
|
src/data_ingestion/pyproject.toml,sha256=-1Mf2QB8K70ICQV5UPZDpf-fN3UwEQLVzQyxfakCSTY,445
|
@@ -90,18 +93,19 @@ src/data_ingestion/data_ingestion_pipeline/submit_pipeline.py,sha256=tWGqL0zUB3V
|
|
90
93
|
src/data_ingestion/data_ingestion_pipeline/components/ingest_data.py,sha256=QbPmk6V7JPGo5Yc1BhL-1W_t9CXEN0iY5NKaGWlfSbM,10667
|
91
94
|
src/data_ingestion/data_ingestion_pipeline/components/process_data.py,sha256=8vubxkykRpx-d89H1XYGO3yXz4hxhihhGDgDR3s-XZ4,22045
|
92
95
|
src/deployment_targets/agent_engine/deployment_metadata.json,sha256=G_t_n-UNrFsBgH1Xrw5-ZqYzUGwZ4X6ipsIm_yiSq-w,72
|
93
|
-
src/deployment_targets/agent_engine/app/agent_engine_app.py,sha256=
|
96
|
+
src/deployment_targets/agent_engine/app/agent_engine_app.py,sha256=aPXSg4K-Vo3z9qMPa0mYT5kB2Py1JhJfW2D0kOxdjjg,12229
|
94
97
|
src/deployment_targets/agent_engine/notebooks/intro_agent_engine.ipynb,sha256=RE6Gp-bu4bHtNBngfkt_CF5emy5YcOWQ5rMYW_Cv8_w,48809
|
95
98
|
src/deployment_targets/agent_engine/tests/integration/test_agent_engine_app.py,sha256=3mEHdnenqT1RrQpndnQWZSMnn8kSLH85rPDhbxH6_lk,5978
|
96
|
-
src/deployment_targets/agent_engine/tests/load_test/README.md,sha256=
|
97
|
-
src/deployment_targets/agent_engine/tests/load_test/load_test.py,sha256=
|
99
|
+
src/deployment_targets/agent_engine/tests/load_test/README.md,sha256=aQP7nDAqd2jKBET4noI39HC9PVHpgpned7cxucWpVJo,1302
|
100
|
+
src/deployment_targets/agent_engine/tests/load_test/load_test.py,sha256=USzS89bQ4qHVoQynDRSRShKzeXf1MJ0MBV4FpV40vrI,4249
|
98
101
|
src/deployment_targets/agent_engine/tests/load_test/.results/.placeholder,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
99
|
-
src/deployment_targets/cloud_run/Dockerfile,sha256=
|
100
|
-
src/deployment_targets/cloud_run/
|
101
|
-
src/deployment_targets/cloud_run/
|
102
|
-
src/deployment_targets/cloud_run/
|
103
|
-
src/deployment_targets/cloud_run/tests/
|
104
|
-
src/deployment_targets/cloud_run/tests/load_test/
|
102
|
+
src/deployment_targets/cloud_run/Dockerfile,sha256=CuhR3MuaRO2R7XrKPgNc5Oi7pv5JpJqgR8Nid0Tnsag,891
|
103
|
+
src/deployment_targets/cloud_run/app/server.py,sha256=dITsPFLccQxAXCSeAVNcAS9muBcnzEax6QRNINYhnp8,5879
|
104
|
+
src/deployment_targets/cloud_run/deployment/terraform/service.tf,sha256=T3qVGn_c1oR5dS4XvDYxylK3FPC9FuYIx51kTE2c3xA,10299
|
105
|
+
src/deployment_targets/cloud_run/deployment/terraform/dev/service.tf,sha256=C4Yy8Q_HKaCrgCo-JV8CgyTpznPKApUJnhzG7kk8u_A,6548
|
106
|
+
src/deployment_targets/cloud_run/tests/integration/test_server_e2e.py,sha256=CZpnpGcCvU4yI0NYGBq1Xfa-NpqTkPuWG7s8FuCEf7I,7896
|
107
|
+
src/deployment_targets/cloud_run/tests/load_test/README.md,sha256=pfBZOSem-zs1-3D0dD_Gmf70ueW6GNf0sevsrZdAOz8,2808
|
108
|
+
src/deployment_targets/cloud_run/tests/load_test/load_test.py,sha256=eVhqX8GtiDsIuZxMJAF2ivXML0xHDWDbriYsHZjAQZE,4212
|
105
109
|
src/deployment_targets/cloud_run/tests/load_test/.results/.placeholder,sha256=ZbWpSgDo8bT33PstD_73aQSeN_0oo0F104NMUGuZ8lE,14903
|
106
110
|
src/frontends/adk_gemini_fullstack/frontend/components.json,sha256=OUAALKbVpmIHQ16HcK1BgLBbVf_rV7s08PuGqgCFJ-o,423
|
107
111
|
src/frontends/adk_gemini_fullstack/frontend/eslint.config.js,sha256=3ADH23ANA4NNBKFy6nCVk65e8bx1DrVd_FIaYNnhuqA,734
|
@@ -111,7 +115,7 @@ src/frontends/adk_gemini_fullstack/frontend/package.json,sha256=bUzgvwGx8oVL2wHY
|
|
111
115
|
src/frontends/adk_gemini_fullstack/frontend/tsconfig.json,sha256=LtqiCB6w68AjbIegDnbXa1YXKM_RQZZVVkAjfUNxyBo,753
|
112
116
|
src/frontends/adk_gemini_fullstack/frontend/tsconfig.node.json,sha256=1BewvjsiZMJqSGXTqe94jo5yKdpi7yqI7UGoHgTv9mg,593
|
113
117
|
src/frontends/adk_gemini_fullstack/frontend/vite.config.ts,sha256=nmeV8oQoQe7SxIVNalYeR8Dw9LOQrcxTWyBUYxLr_Ns,1359
|
114
|
-
src/frontends/adk_gemini_fullstack/frontend/src/App.tsx,sha256=
|
118
|
+
src/frontends/adk_gemini_fullstack/frontend/src/App.tsx,sha256=N50ox6esJyvNifWXxCQUXulXhfQD643qGSXdfiIh6zk,21411
|
115
119
|
src/frontends/adk_gemini_fullstack/frontend/src/global.css,sha256=uNpkk45y9XVsmQs84D0KHN8B2i55ElSFZxHu6zml5E8,5037
|
116
120
|
src/frontends/adk_gemini_fullstack/frontend/src/main.tsx,sha256=WYYxbfb0WHrY1BW7KB-pCxb3jslb1UeCDa26l9Ve0SQ,328
|
117
121
|
src/frontends/adk_gemini_fullstack/frontend/src/utils.ts,sha256=Utm02hSGixxQ_T4hqlZqpdc8BuK1B2Mgk5X0vNK3V_4,170
|
@@ -176,29 +180,29 @@ src/frontends/streamlit/frontend/utils/stream_handler.py,sha256=-XVRfLH6ck1KP6NS
|
|
176
180
|
src/frontends/streamlit/frontend/utils/title_summary.py,sha256=B0cadS_KPW-tsbABauI4J681aqjEtuKFDa25e9R1WKc,3030
|
177
181
|
src/resources/containers/data_processing/Dockerfile,sha256=VoB9d5yZiiWnqRfWrIq0gGNMzZg-eVy733OgP72ZgO0,950
|
178
182
|
src/resources/containers/e2e-tests/Dockerfile,sha256=Q_aTyX_iaFY8j06XZkpMuggJnNO5daiLmmrvqaZHMxw,1611
|
179
|
-
src/resources/docs/adk-cheatsheet.md,sha256=
|
183
|
+
src/resources/docs/adk-cheatsheet.md,sha256=KTCdM7hOvsv1-GgwEBMMU6kLk3WHQ69RAs6VWltNaDA,58722
|
180
184
|
src/resources/idx/idx-template.json,sha256=07OQZCPp45Iqor2O7Tm1e1Gmsdd-AmmUofSvA7y-oRs,793
|
181
185
|
src/resources/idx/idx-template.nix,sha256=sesHGev_PYtVDg0J5tHkg0OO7IR1Bz2iAtl_if3Ar3M,892
|
182
186
|
src/resources/idx/.idx/dev.nix,sha256=XQ4T1xt5I-8SVwnI37v56RFFlxa58Ko-a9G2-oelYAI,1602
|
183
|
-
src/resources/locks/uv-adk_base-agent_engine.lock,sha256=
|
184
|
-
src/resources/locks/uv-adk_base-cloud_run.lock,sha256=
|
185
|
-
src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock,sha256=
|
186
|
-
src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock,sha256=
|
187
|
-
src/resources/locks/uv-agentic_rag-agent_engine.lock,sha256=
|
188
|
-
src/resources/locks/uv-agentic_rag-cloud_run.lock,sha256=
|
189
|
-
src/resources/locks/uv-crewai_coding_crew-agent_engine.lock,sha256=
|
190
|
-
src/resources/locks/uv-crewai_coding_crew-cloud_run.lock,sha256=
|
191
|
-
src/resources/locks/uv-langgraph_base_react-agent_engine.lock,sha256=
|
192
|
-
src/resources/locks/uv-langgraph_base_react-cloud_run.lock,sha256=
|
193
|
-
src/resources/locks/uv-live_api-cloud_run.lock,sha256=
|
187
|
+
src/resources/locks/uv-adk_base-agent_engine.lock,sha256=hK9YQfIRT6kfSlFUBrhUEXeXZ3IS2muNV8T3lkihQAY,483186
|
188
|
+
src/resources/locks/uv-adk_base-cloud_run.lock,sha256=6t7zeqDFtMyPFrIiF6Xo1p4POyyYEnc6pyUtkHzf2EA,637362
|
189
|
+
src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock,sha256=hK9YQfIRT6kfSlFUBrhUEXeXZ3IS2muNV8T3lkihQAY,483186
|
190
|
+
src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock,sha256=6t7zeqDFtMyPFrIiF6Xo1p4POyyYEnc6pyUtkHzf2EA,637362
|
191
|
+
src/resources/locks/uv-agentic_rag-agent_engine.lock,sha256=1eA8gC_Y42ooUbJ4JxAG5n2cbHHKUBZe6D4FItc_Mvg,541123
|
192
|
+
src/resources/locks/uv-agentic_rag-cloud_run.lock,sha256=j8vpv7fa0ndEPYKzG71vkwZmHQ8f5AdtTqb2WwlgzXc,714995
|
193
|
+
src/resources/locks/uv-crewai_coding_crew-agent_engine.lock,sha256=EagJM13n7X8vqcE3HO7rF-Z2jMEobFlWPZjOqEEW_Fo,813064
|
194
|
+
src/resources/locks/uv-crewai_coding_crew-cloud_run.lock,sha256=WzCE7940FbtzjVnpy5vPe4Mp7JA9nQvE2ROuWmhEHzc,1060934
|
195
|
+
src/resources/locks/uv-langgraph_base_react-agent_engine.lock,sha256=b9wpOgH6uqdFTDfCxxfN1dVCH1ZFb_SJhhZh51fkxBE,681721
|
196
|
+
src/resources/locks/uv-langgraph_base_react-cloud_run.lock,sha256=zmX9dyHsaOt62LoItbhn1h7BiyGqdk-07Mbf8GEvxU0,899355
|
197
|
+
src/resources/locks/uv-live_api-cloud_run.lock,sha256=JsTYkungSDMWm756YxXmHXJ2LNO9dhS8DEBTJTuIquk,822914
|
194
198
|
src/resources/setup_cicd/cicd_variables.tf,sha256=PMflYe1TzQi63LORHkmeCktTYzXFplJgxffNH4DtuAQ,1244
|
195
|
-
src/resources/setup_cicd/github.tf,sha256=
|
199
|
+
src/resources/setup_cicd/github.tf,sha256=V2XZ7bKdJ9fzibsjIrI-loHQ1eQbfjNWVPLDPIAUeTA,2807
|
196
200
|
src/resources/setup_cicd/providers.tf,sha256=Km4z6IJt7x7PLaa0kyZbBrO2m3lpuIJZFD5jB7QBfF0,1122
|
197
201
|
src/utils/generate_locks.py,sha256=6V1B8V2BEuevWnXUsxZVTrLjXwFRII8UfsIGrQqZxVs,4320
|
198
|
-
src/utils/lock_utils.py,sha256=
|
202
|
+
src/utils/lock_utils.py,sha256=IFOMUWtb-ypm2Y8w8J5y2oI_-MaPuwPF_JOAAlnNudA,2275
|
199
203
|
src/utils/watch_and_rebuild.py,sha256=vP4yIiA7E_lj5sfQdJUl8TXas6V7msDg8XWUutAC05Q,6679
|
200
|
-
agent_starter_pack-0.
|
201
|
-
agent_starter_pack-0.
|
202
|
-
agent_starter_pack-0.
|
203
|
-
agent_starter_pack-0.
|
204
|
-
agent_starter_pack-0.
|
204
|
+
agent_starter_pack-0.9.0.dist-info/METADATA,sha256=tm8hhXSmxExEPbCj30Q1GlG9U0W5xiLP84JTavvezJI,11286
|
205
|
+
agent_starter_pack-0.9.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
206
|
+
agent_starter_pack-0.9.0.dist-info/entry_points.txt,sha256=U7uCxR7YulIhZ0L8R8Hui0Bsy6J7oyESBeDYJYMrQjA,56
|
207
|
+
agent_starter_pack-0.9.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
208
|
+
agent_starter_pack-0.9.0.dist-info/RECORD,,
|
agents/README.md
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
# Agent Templates
|
2
|
+
|
3
|
+
This directory contains template implementations for various agents designed to work with the Agent Starter Pack templating system.
|
4
|
+
Feel free to browse through these folders to preview what each template offers.
|
5
|
+
Direct cloning of this repository isn't necessary to utilize these templates.
|
6
|
+
|
7
|
+
For setup instructions and getting started, please refer to the main [README](/README.md) which explains how to install and use the Agent Starter Pack.
|
@@ -16,7 +16,9 @@ description: "A base ReAct agent built with Google's Agent Development Kit (ADK)
|
|
16
16
|
example_question: "What's the weather in San Francisco?"
|
17
17
|
settings:
|
18
18
|
requires_data_ingestion: false
|
19
|
+
requires_session: true
|
19
20
|
deployment_targets: ["agent_engine", "cloud_run"]
|
20
|
-
extra_dependencies: ["google-adk~=1.
|
21
|
+
extra_dependencies: ["google-adk~=1.6.0"]
|
21
22
|
tags: ["adk"]
|
22
23
|
frontend_type: "None"
|
24
|
+
|
@@ -207,14 +207,15 @@
|
|
207
207
|
"outputs": [],
|
208
208
|
"source": [
|
209
209
|
"user_id = \"test_user_123\"\n",
|
210
|
-
"session_id = \"test_session_456\"\n",
|
211
210
|
"session_data = {\"state\": {\"preferred_language\": \"English\", \"visit_count\": 1}}\n",
|
212
211
|
"\n",
|
213
|
-
"session_url = f\"{SERVICE_URL}/apps/app/users/{user_id}/sessions
|
212
|
+
"session_url = f\"{SERVICE_URL}/apps/app/users/{user_id}/sessions\"\n",
|
214
213
|
"headers = {\"Content-Type\": \"application/json\", \"Authorization\": f\"Bearer {ID_TOKEN}\"}\n",
|
215
214
|
"\n",
|
216
215
|
"session_response = requests.post(session_url, headers=headers, json=session_data)\n",
|
217
|
-
"print(f\"Session creation status code: {session_response.status_code}\")"
|
216
|
+
"print(f\"Session creation status code: {session_response.status_code}\")\n",
|
217
|
+
"print(f\"Session creation response: {session_response.json()}\")\n",
|
218
|
+
"session_id = session_response.json()[\"id\"]"
|
218
219
|
]
|
219
220
|
},
|
220
221
|
{
|
@@ -279,14 +280,15 @@
|
|
279
280
|
"outputs": [],
|
280
281
|
"source": [
|
281
282
|
"user_id = \"test_user_123\"\n",
|
282
|
-
"session_id = \"test_session_456\"\n",
|
283
283
|
"session_data = {\"state\": {\"preferred_language\": \"English\", \"visit_count\": 1}}\n",
|
284
284
|
"\n",
|
285
|
-
"session_url = f\"http://127.0.0.1:8000/apps/app/users/{user_id}/sessions
|
285
|
+
"session_url = f\"http://127.0.0.1:8000/apps/app/users/{user_id}/sessions\"\n",
|
286
286
|
"headers = {\"Content-Type\": \"application/json\"}\n",
|
287
287
|
"\n",
|
288
288
|
"session_response = requests.post(session_url, headers=headers, json=session_data)\n",
|
289
|
-
"print(f\"Session creation status code: {session_response.status_code}\")"
|
289
|
+
"print(f\"Session creation status code: {session_response.status_code}\")\n",
|
290
|
+
"print(f\"Session creation response: {session_response.json()}\")\n",
|
291
|
+
"session_id = session_response.json()[\"id\"]"
|
290
292
|
]
|
291
293
|
},
|
292
294
|
{
|
@@ -16,13 +16,14 @@ description: "A production-ready fullstack research agent that uses Gemini to st
|
|
16
16
|
example_question: "A report on the latest Google I/O event"
|
17
17
|
settings:
|
18
18
|
requires_data_ingestion: false
|
19
|
+
requires_session: true
|
19
20
|
deployment_targets: ["agent_engine", "cloud_run"]
|
20
|
-
extra_dependencies: ["google-adk~=1.
|
21
|
+
extra_dependencies: ["google-adk~=1.6.0"]
|
21
22
|
tags: ["adk"]
|
22
23
|
frontend_type: "adk_gemini_fullstack"
|
23
24
|
commands:
|
24
25
|
override:
|
25
|
-
install: "npm --prefix frontend install"
|
26
|
+
install: "uv sync --dev --extra jupyter && npm --prefix frontend install"
|
26
27
|
extra:
|
27
28
|
dev:
|
28
29
|
command: 'make dev-backend & make dev-frontend'
|
@@ -207,14 +207,15 @@
|
|
207
207
|
"outputs": [],
|
208
208
|
"source": [
|
209
209
|
"user_id = \"test_user_123\"\n",
|
210
|
-
"session_id = \"test_session_456\"\n",
|
211
210
|
"session_data = {\"state\": {\"preferred_language\": \"English\", \"visit_count\": 1}}\n",
|
212
211
|
"\n",
|
213
|
-
"session_url = f\"{SERVICE_URL}/apps/app/users/{user_id}/sessions
|
212
|
+
"session_url = f\"{SERVICE_URL}/apps/app/users/{user_id}/sessions\"\n",
|
214
213
|
"headers = {\"Content-Type\": \"application/json\", \"Authorization\": f\"Bearer {ID_TOKEN}\"}\n",
|
215
214
|
"\n",
|
216
215
|
"session_response = requests.post(session_url, headers=headers, json=session_data)\n",
|
217
|
-
"print(f\"Session creation status code: {session_response.status_code}\")"
|
216
|
+
"print(f\"Session creation status code: {session_response.status_code}\")\n",
|
217
|
+
"print(f\"Session creation response: {session_response.json()}\")\n",
|
218
|
+
"session_id = session_response.json()[\"id\"]"
|
218
219
|
]
|
219
220
|
},
|
220
221
|
{
|
@@ -279,14 +280,15 @@
|
|
279
280
|
"outputs": [],
|
280
281
|
"source": [
|
281
282
|
"user_id = \"test_user_123\"\n",
|
282
|
-
"session_id = \"test_session_456\"\n",
|
283
283
|
"session_data = {\"state\": {\"preferred_language\": \"English\", \"visit_count\": 1}}\n",
|
284
284
|
"\n",
|
285
|
-
"session_url = f\"http://127.0.0.1:8000/apps/app/users/{user_id}/sessions
|
285
|
+
"session_url = f\"http://127.0.0.1:8000/apps/app/users/{user_id}/sessions\"\n",
|
286
286
|
"headers = {\"Content-Type\": \"application/json\"}\n",
|
287
287
|
"\n",
|
288
288
|
"session_response = requests.post(session_url, headers=headers, json=session_data)\n",
|
289
|
-
"print(f\"Session creation status code: {session_response.status_code}\")"
|
289
|
+
"print(f\"Session creation status code: {session_response.status_code}\")\n",
|
290
|
+
"print(f\"Session creation response: {session_response.json()}\")\n",
|
291
|
+
"session_id = session_response.json()[\"id\"]"
|
290
292
|
]
|
291
293
|
},
|
292
294
|
{
|
@@ -16,9 +16,10 @@ description: "ADK RAG agent for document retrieval and Q&A. Includes a data pipe
|
|
16
16
|
example_question: "How to save a pandas dataframe to CSV?"
|
17
17
|
settings:
|
18
18
|
requires_data_ingestion: true
|
19
|
+
requires_session: true
|
19
20
|
deployment_targets: ["agent_engine", "cloud_run"]
|
20
21
|
extra_dependencies: [
|
21
|
-
"google-adk~=1.
|
22
|
+
"google-adk~=1.6.0",
|
22
23
|
"langchain-google-vertexai~=2.0.7",
|
23
24
|
"langchain~=0.3.24",
|
24
25
|
"langchain-core~=0.3.55",
|
@@ -207,14 +207,15 @@
|
|
207
207
|
"outputs": [],
|
208
208
|
"source": [
|
209
209
|
"user_id = \"test_user_123\"\n",
|
210
|
-
"session_id = \"test_session_456\"\n",
|
211
210
|
"session_data = {\"state\": {\"preferred_language\": \"English\", \"visit_count\": 1}}\n",
|
212
211
|
"\n",
|
213
|
-
"session_url = f\"{SERVICE_URL}/apps/app/users/{user_id}/sessions
|
212
|
+
"session_url = f\"{SERVICE_URL}/apps/app/users/{user_id}/sessions\"\n",
|
214
213
|
"headers = {\"Content-Type\": \"application/json\", \"Authorization\": f\"Bearer {ID_TOKEN}\"}\n",
|
215
214
|
"\n",
|
216
215
|
"session_response = requests.post(session_url, headers=headers, json=session_data)\n",
|
217
|
-
"print(f\"Session creation status code: {session_response.status_code}\")"
|
216
|
+
"print(f\"Session creation status code: {session_response.status_code}\")\n",
|
217
|
+
"print(f\"Session creation response: {session_response.json()}\")\n",
|
218
|
+
"session_id = session_response.json()[\"id\"]"
|
218
219
|
]
|
219
220
|
},
|
220
221
|
{
|
@@ -279,14 +280,15 @@
|
|
279
280
|
"outputs": [],
|
280
281
|
"source": [
|
281
282
|
"user_id = \"test_user_123\"\n",
|
282
|
-
"session_id = \"test_session_456\"\n",
|
283
283
|
"session_data = {\"state\": {\"preferred_language\": \"English\", \"visit_count\": 1}}\n",
|
284
284
|
"\n",
|
285
|
-
"session_url = f\"http://127.0.0.1:8000/apps/app/users/{user_id}/sessions
|
285
|
+
"session_url = f\"http://127.0.0.1:8000/apps/app/users/{user_id}/sessions\"\n",
|
286
286
|
"headers = {\"Content-Type\": \"application/json\"}\n",
|
287
287
|
"\n",
|
288
288
|
"session_response = requests.post(session_url, headers=headers, json=session_data)\n",
|
289
|
-
"print(f\"Session creation status code: {session_response.status_code}\")"
|
289
|
+
"print(f\"Session creation status code: {session_response.status_code}\")\n",
|
290
|
+
"print(f\"Session creation response: {session_response.json()}\")\n",
|
291
|
+
"session_id = session_response.json()[\"id\"]"
|
290
292
|
]
|
291
293
|
},
|
292
294
|
{
|
llm.txt
CHANGED
@@ -69,6 +69,7 @@ agent-starter-pack create PROJECT_NAME [OPTIONS]
|
|
69
69
|
* `-d, --deployment-target`: Target deployment environment (`cloud_run` or `agent_engine`).
|
70
70
|
* `-ds, --datastore`: For RAG agents, the datastore (`vertex_ai_search` or `vertex_ai_vector_search`).
|
71
71
|
* `-i, --include-data-ingestion`: Include data ingestion pipeline scaffolding.
|
72
|
+
* `--session-type`: For agents requiring session management on Cloud Run, specifies the storage type (`in_memory` or `alloydb`).
|
72
73
|
* `--region`: GCP region (e.g., `us-central1`).
|
73
74
|
* `--auto-approve`: **Skips all interactive prompts (crucial for automation).**
|
74
75
|
* `--debug`: Enables debug logging during creation.
|
@@ -186,6 +187,12 @@ uvx agent-starter-pack setup-cicd
|
|
186
187
|
* **Deploying with UI:** `make backend IAP=true`
|
187
188
|
* **Access Control:** After deploying with IAP, grant users the `IAP-secured Web App User` role in IAM to give them access.
|
188
189
|
|
190
|
+
### Session Management
|
191
|
+
|
192
|
+
For stateful agents, the starter pack supports persistent sessions.
|
193
|
+
* **Cloud Run:** Choose between `in_memory` (for testing) and durable `alloydb` sessions using the `--session-type` flag.
|
194
|
+
* **Agent Engine:** Provides session management automatically.
|
195
|
+
|
189
196
|
### Monitoring & Observability
|
190
197
|
* **Technology:** Uses OpenTelemetry to emit events to Google Cloud Trace and Logging.
|
191
198
|
* **Custom Tracer:** A custom tracer in `app/utils/tracing.py` handles large payloads by linking to GCS, overcoming default service limits.
|
src/base_template/Makefile
CHANGED
@@ -1,8 +1,12 @@
|
|
1
1
|
# Install dependencies using uv package manager
|
2
2
|
install:
|
3
3
|
@command -v uv >/dev/null 2>&1 || { echo "uv is not installed. Installing uv..."; curl -LsSf https://astral.sh/uv/0.6.12/install.sh | sh; source $HOME/.local/bin/env; }
|
4
|
+
{%- if cookiecutter.settings.get("commands", {}).get("override", {}).get("install") %}
|
5
|
+
{{cookiecutter.settings.get("commands", {}).get("override", {}).get("install")}}
|
6
|
+
{%- else %}
|
4
7
|
uv sync --dev{% if cookiecutter.agent_name != 'live_api' and "adk" not in cookiecutter.tags %} --extra streamlit{%- endif %} --extra jupyter{% if cookiecutter.agent_name == 'live_api' %} && npm --prefix frontend install{%- endif %}
|
5
|
-
{%-
|
8
|
+
{%- endif %}
|
9
|
+
|
6
10
|
{%- if cookiecutter.settings.get("commands", {}).get("extra", {}) %}
|
7
11
|
{%- for cmd_name, cmd_value in cookiecutter.settings.get("commands", {}).get("extra", {}).items() %}
|
8
12
|
|
src/base_template/README.md
CHANGED
@@ -54,7 +54,7 @@ make install && make playground
|
|
54
54
|
{%- endif %}
|
55
55
|
{%- if cookiecutter.deployment_target == 'cloud_run' %}
|
56
56
|
| `make playground` | Launch local development environment with backend and frontend{%- if "adk" in cookiecutter.tags %} - leveraging `adk web` command. {%- endif %}|
|
57
|
-
| `make backend` | Deploy agent to Cloud Run |
|
57
|
+
| `make backend` | Deploy agent to Cloud Run (use `IAP=true` to enable Identity-Aware Proxy) |
|
58
58
|
| `make local-backend` | Launch local development server |
|
59
59
|
{%- if cookiecutter.deployment_target == 'cloud_run' %}
|
60
60
|
{%- if cookiecutter.agent_name == 'live_api' %}
|
@@ -67,7 +67,7 @@ make install && make playground
|
|
67
67
|
{%- endif %}
|
68
68
|
| `make test` | Run unit and integration tests |
|
69
69
|
| `make lint` | Run code quality checks (codespell, ruff, mypy) |
|
70
|
-
| `make setup-dev-env` | Set up development environment resources using Terraform
|
70
|
+
| `make setup-dev-env` | Set up development environment resources using Terraform |
|
71
71
|
{%- if cookiecutter.data_ingestion %}
|
72
72
|
| `make data-ingestion`| Run data ingestion pipeline in the Dev environment |
|
73
73
|
{%- endif %}
|
@@ -55,22 +55,7 @@ steps:
|
|
55
55
|
- "$_REGION"
|
56
56
|
- "--project"
|
57
57
|
- $_PROD_PROJECT_ID
|
58
|
-
|
59
|
-
- "1"
|
60
|
-
- "--no-cpu-throttling"
|
61
|
-
- "--cpu"
|
62
|
-
- "4"
|
63
|
-
- "--memory"
|
64
|
-
- "4Gi"
|
65
|
-
- "--concurrency"
|
66
|
-
- "40"
|
67
|
-
- "--service-account"
|
68
|
-
- "${_CLOUD_RUN_APP_SA_EMAIL}"
|
69
|
-
- "--session-affinity"
|
70
|
-
- "--labels"
|
71
|
-
- "created-by=adk"
|
72
|
-
- "--set-env-vars"
|
73
|
-
- "COMMIT_SHA=${COMMIT_SHA}{%- if cookiecutter.data_ingestion %}{%- if cookiecutter.datastore_type == "vertex_ai_search" %},DATA_STORE_ID=${_DATA_STORE_ID},DATA_STORE_REGION=${_DATA_STORE_REGION}{%- elif cookiecutter.datastore_type == "vertex_ai_vector_search" %},VECTOR_SEARCH_INDEX=${_VECTOR_SEARCH_INDEX},VECTOR_SEARCH_INDEX_ENDPOINT=${_VECTOR_SEARCH_INDEX_ENDPOINT},VECTOR_SEARCH_BUCKET=${_VECTOR_SEARCH_BUCKET}{%- endif %}{%- endif %}"
|
58
|
+
|
74
59
|
{%- elif cookiecutter.deployment_target == 'agent_engine' %}
|
75
60
|
- name: "python:3.11-slim"
|
76
61
|
id: install-dependencies
|
@@ -46,6 +46,8 @@ steps:
|
|
46
46
|
"build",
|
47
47
|
"-t",
|
48
48
|
"$_REGION-docker.pkg.dev/$PROJECT_ID/$_ARTIFACT_REGISTRY_REPO_NAME/$_CONTAINER_NAME",
|
49
|
+
"--build-arg",
|
50
|
+
"COMMIT_SHA=$COMMIT_SHA",
|
49
51
|
".",
|
50
52
|
]
|
51
53
|
- name: "gcr.io/cloud-builders/docker"
|
@@ -69,22 +71,6 @@ steps:
|
|
69
71
|
- "${_REGION}"
|
70
72
|
- "--project"
|
71
73
|
- "${_STAGING_PROJECT_ID}"
|
72
|
-
- "--min-instances"
|
73
|
-
- "1"
|
74
|
-
- "--no-cpu-throttling"
|
75
|
-
- "--cpu"
|
76
|
-
- "4"
|
77
|
-
- "--memory"
|
78
|
-
- "4Gi"
|
79
|
-
- "--concurrency"
|
80
|
-
- "40"
|
81
|
-
- "--service-account"
|
82
|
-
- "${_CLOUD_RUN_APP_SA_EMAIL}"
|
83
|
-
- "--session-affinity"
|
84
|
-
- "--labels"
|
85
|
-
- "created-by=adk"
|
86
|
-
- "--set-env-vars"
|
87
|
-
- "COMMIT_SHA=${COMMIT_SHA}{%- if cookiecutter.data_ingestion %}{%- if cookiecutter.datastore_type == "vertex_ai_search" %},DATA_STORE_ID=${_DATA_STORE_ID},DATA_STORE_REGION=${_DATA_STORE_REGION}{%- elif cookiecutter.datastore_type == "vertex_ai_vector_search" %},VECTOR_SEARCH_INDEX=${_VECTOR_SEARCH_INDEX},VECTOR_SEARCH_INDEX_ENDPOINT=${_VECTOR_SEARCH_INDEX_ENDPOINT},VECTOR_SEARCH_BUCKET=${_VECTOR_SEARCH_BUCKET}{%- endif %}{%- endif %}"
|
88
74
|
|
89
75
|
# Fetch Staging Service URL
|
90
76
|
- name: "gcr.io/cloud-builders/gcloud"
|
@@ -149,12 +135,11 @@ steps:
|
|
149
135
|
{%- if cookiecutter.deployment_target == 'cloud_run' %}
|
150
136
|
export _ID_TOKEN=$(cat id_token.txt)
|
151
137
|
export _STAGING_URL=$(cat staging_url.txt)
|
152
|
-
pip install uv==0.6.12 --user && uv sync --locked
|
153
138
|
{%- elif cookiecutter.deployment_target == 'agent_engine' %}
|
154
139
|
export _AUTH_TOKEN=$(cat auth_token.txt)
|
155
140
|
{%- endif %}
|
156
|
-
|
157
|
-
|
141
|
+
pip install locust==2.31.1 --user
|
142
|
+
locust -f tests/load_test/load_test.py \
|
158
143
|
--headless \
|
159
144
|
{%- if cookiecutter.deployment_target == 'cloud_run' %}
|
160
145
|
-H $$_STAGING_URL \
|
@@ -19,9 +19,9 @@ resource "google_project_service" "cicd_services" {
|
|
19
19
|
disable_on_destroy = false
|
20
20
|
}
|
21
21
|
|
22
|
-
resource "google_project_service" "
|
22
|
+
resource "google_project_service" "deploy_project_services" {
|
23
23
|
for_each = {
|
24
|
-
for pair in setproduct(keys(local.deploy_project_ids), local.
|
24
|
+
for pair in setproduct(keys(local.deploy_project_ids), local.deploy_project_services) :
|
25
25
|
"${pair[0]}_${replace(pair[1], ".", "_")}" => {
|
26
26
|
project = local.deploy_project_ids[pair[0]]
|
27
27
|
service = pair[1]
|
@@ -39,7 +39,7 @@ resource "google_cloudbuild_trigger" "pr_checks" {
|
|
39
39
|
{% endif %}
|
40
40
|
]
|
41
41
|
include_build_logs = "INCLUDE_BUILD_LOGS_WITH_STATUS"
|
42
|
-
depends_on = [resource.google_project_service.cicd_services, resource.google_project_service.
|
42
|
+
depends_on = [resource.google_project_service.cicd_services, resource.google_project_service.deploy_project_services]
|
43
43
|
}
|
44
44
|
|
45
45
|
# b. Create CD pipeline trigger
|
@@ -85,13 +85,13 @@ resource "google_cloudbuild_trigger" "cd_pipeline" {
|
|
85
85
|
{% elif cookiecutter.datastore_type == "vertex_ai_vector_search" %}
|
86
86
|
_VECTOR_SEARCH_INDEX = resource.google_vertex_ai_index.vector_search_index_staging.id
|
87
87
|
_VECTOR_SEARCH_INDEX_ENDPOINT = resource.google_vertex_ai_index_endpoint.vector_search_index_endpoint_staging.id
|
88
|
-
_VECTOR_SEARCH_BUCKET =
|
88
|
+
_VECTOR_SEARCH_BUCKET = resource.google_storage_bucket.vector_search_data_bucket["staging"].url
|
89
89
|
|
90
90
|
{% endif %}
|
91
91
|
{% endif %}
|
92
92
|
# Your other CD Pipeline substitutions
|
93
93
|
}
|
94
|
-
depends_on = [resource.google_project_service.cicd_services, resource.google_project_service.
|
94
|
+
depends_on = [resource.google_project_service.cicd_services, resource.google_project_service.deploy_project_services]
|
95
95
|
|
96
96
|
}
|
97
97
|
|
@@ -128,11 +128,11 @@ resource "google_cloudbuild_trigger" "deploy_to_prod_pipeline" {
|
|
128
128
|
{% elif cookiecutter.datastore_type == "vertex_ai_vector_search" %}
|
129
129
|
_VECTOR_SEARCH_INDEX = resource.google_vertex_ai_index.vector_search_index_prod.id
|
130
130
|
_VECTOR_SEARCH_INDEX_ENDPOINT = resource.google_vertex_ai_index_endpoint.vector_search_index_endpoint_prod.id
|
131
|
-
_VECTOR_SEARCH_BUCKET =
|
131
|
+
_VECTOR_SEARCH_BUCKET = resource.google_storage_bucket.vector_search_data_bucket["prod"].url
|
132
132
|
{% endif %}
|
133
133
|
{% endif %}
|
134
134
|
# Your other Deploy to Prod Pipeline substitutions
|
135
135
|
}
|
136
|
-
depends_on = [resource.google_project_service.cicd_services, resource.google_project_service.
|
136
|
+
depends_on = [resource.google_project_service.cicd_services, resource.google_project_service.deploy_project_services]
|
137
137
|
|
138
138
|
}
|