agent-starter-pack 0.6.4__py3-none-any.whl → 0.7.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 (32) hide show
  1. {agent_starter_pack-0.6.4.dist-info → agent_starter_pack-0.7.0.dist-info}/METADATA +15 -12
  2. {agent_starter_pack-0.6.4.dist-info → agent_starter_pack-0.7.0.dist-info}/RECORD +32 -29
  3. agents/adk_gemini_fullstack/app/agent.py +62 -8
  4. llm.txt +290 -0
  5. src/base_template/.gitignore +2 -1
  6. src/base_template/GEMINI.md +5 -0
  7. src/base_template/Makefile +20 -5
  8. src/base_template/deployment/cd/deploy-to-prod.yaml +3 -3
  9. src/base_template/deployment/cd/staging.yaml +4 -4
  10. src/base_template/deployment/ci/pr_checks.yaml +1 -1
  11. src/base_template/pyproject.toml +2 -2
  12. src/cli/utils/template.py +22 -9
  13. src/data_ingestion/uv.lock +97 -0
  14. src/frontends/adk_gemini_fullstack/frontend/package-lock.json +276 -0
  15. src/frontends/adk_gemini_fullstack/frontend/package.json +1 -0
  16. src/frontends/adk_gemini_fullstack/frontend/src/components/ChatMessagesView.tsx +5 -4
  17. src/frontends/adk_gemini_fullstack/frontend/vite.config.ts +4 -0
  18. src/resources/docs/adk-cheatsheet.md +1224 -0
  19. src/resources/locks/uv-adk_base-agent_engine.lock +14 -13
  20. src/resources/locks/uv-adk_base-cloud_run.lock +14 -13
  21. src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock +14 -13
  22. src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock +14 -13
  23. src/resources/locks/uv-agentic_rag-agent_engine.lock +78 -83
  24. src/resources/locks/uv-agentic_rag-cloud_run.lock +110 -119
  25. src/resources/locks/uv-crewai_coding_crew-agent_engine.lock +130 -135
  26. src/resources/locks/uv-crewai_coding_crew-cloud_run.lock +163 -172
  27. src/resources/locks/uv-langgraph_base_react-agent_engine.lock +87 -92
  28. src/resources/locks/uv-langgraph_base_react-cloud_run.lock +119 -128
  29. src/resources/locks/uv-live_api-cloud_run.lock +98 -107
  30. {agent_starter_pack-0.6.4.dist-info → agent_starter_pack-0.7.0.dist-info}/WHEEL +0 -0
  31. {agent_starter_pack-0.6.4.dist-info → agent_starter_pack-0.7.0.dist-info}/entry_points.txt +0 -0
  32. {agent_starter_pack-0.6.4.dist-info → agent_starter_pack-0.7.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.6.4
3
+ Version: 0.7.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
@@ -46,7 +46,7 @@ It accelerates development by providing a holistic, production-ready solution, a
46
46
 
47
47
  | ⚡️ Launch | 🧪 Experiment | ✅ Deploy | 🛠️ Customize |
48
48
  |---|---|---|---|
49
- | [Pre-built agent templates](./agents/) (ReAct, RAG, multi-agent, Live API). | [Vertex AI evaluation](https://cloud.google.com/vertex-ai/generative-ai/docs/models/evaluation-overview) and an interactive playground. | Production-ready infra with [monitoring, observability](https://googlecloudplatform.github.io/agent-starter-pack/guide/observability), and [CI/CD](https://googlecloudplatform.github.io/agent-starter-pack/guide/deployment) on [Cloud Run](https://cloud.google.com/run) or [Agent Engine](https://cloud.google.com/vertex-ai/generative-ai/docs/agent-engine/overview). | Extend and customize templates according to your needs. |
49
+ | [Pre-built agent templates](./agents/) (ReAct, RAG, multi-agent, Live API). | [Vertex AI evaluation](https://cloud.google.com/vertex-ai/generative-ai/docs/models/evaluation-overview) and an interactive playground. | Production-ready infra with [monitoring, observability](https://googlecloudplatform.github.io/agent-starter-pack/guide/observability), and [CI/CD](https://googlecloudplatform.github.io/agent-starter-pack/guide/deployment) on [Cloud Run](https://cloud.google.com/run) or [Agent Engine](https://cloud.google.com/vertex-ai/generative-ai/docs/agent-engine/overview). | Extend and customize templates according to your needs. 🆕 Now integrating with [Gemini CLI](https://github.com/google-gemini/gemini-cli) |
50
50
 
51
51
  ---
52
52
 
@@ -59,24 +59,27 @@ Ready to build your AI agent? Simply run this command:
59
59
  python -m venv .venv && source .venv/bin/activate
60
60
 
61
61
  # Install the agent starter pack
62
- pip install agent-starter-pack
62
+ pip install --upgrade agent-starter-pack
63
63
 
64
64
  # Create a new agent project
65
65
  agent-starter-pack create my-awesome-agent
66
66
  ```
67
67
 
68
- **That's it!** You now have a fully functional agent project—complete with backend, frontend, and deployment infrastructure—ready for you to explore and customize.
69
- See [Installation Guide](https://googlecloudplatform.github.io/agent-starter-pack/guide/installation) for more options, or try with zero setup in [Firebase Studio](https://studio.firebase.google.com/new?template=https%3A%2F%2Fgithub.com%2FGoogleCloudPlatform%2Fagent-starter-pack%2Ftree%2Fmain%2Fsrc%2Fresources%2Fidx) or [Cloud Shell](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).
70
-
71
- ---
72
-
73
- 🆕 The starter pack offers full support for Agent Engine, a new fully managed solution to deploy agents. Simply run this command to get started:
68
+ <details>
69
+ <summary> Alternative: Using uv</summary>
74
70
 
71
+ If you have [`uv`](https://github.com/astral-sh/uv) installed, you can create and set up your project with a single command:
75
72
  ```bash
76
- agent-starter-pack create my-agent -d agent_engine -a adk_base
73
+ uvx agent-starter-pack create my-fullstack-agent
77
74
  ```
75
+ This command handles creating the project without needing to pre-install the package into a virtual environment.
76
+ </details>
78
77
 
79
- *See the [full list of options](https://googlecloudplatform.github.io/agent-starter-pack/cli/create) for details.*
78
+ **That's it!** You now have a fully functional agent project—complete with backend, frontend, and deployment infrastructure—ready for you to explore and customize.
79
+
80
+ See [Installation Guide](https://googlecloudplatform.github.io/agent-starter-pack/guide/installation) for more options, or try with zero setup in [Firebase Studio](https://studio.firebase.google.com/new?template=https%3A%2F%2Fgithub.com%2FGoogleCloudPlatform%2Fagent-starter-pack%2Ftree%2Fmain%2Fsrc%2Fresources%2Fidx) or [Cloud Shell](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).
81
+
82
+ ---
80
83
 
81
84
  ## 🤖 Agents
82
85
 
@@ -100,7 +103,7 @@ Looking to explore more ADK examples? Check out the [ADK Samples Repository](htt
100
103
  The `agent-starter-pack` offers two key features to accelerate and simplify the development of your agent:
101
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
102
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).
103
-
106
+ * **🤖 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.
104
107
 
105
108
  ## High-Level Architecture
106
109
 
@@ -5,7 +5,7 @@ agents/adk_base/notebooks/evaluating_adk_agent.ipynb,sha256=OMTiT3gAFWPvE9pPL8z7
5
5
  agents/adk_base/template/.templateconfig.yaml,sha256=EWfw7zqlQsxKrmMdiqwSemIhx3ke6i6a5mqZ3z94KDI,893
6
6
  agents/adk_base/tests/integration/test_agent.py,sha256=VypgpEWrQegJBgc58V-BlIsbqh-Hii-hwmkwcz5feFw,1969
7
7
  agents/adk_gemini_fullstack/README.md,sha256=yQFFcESALj5Q6eweyIyPx__U74obUM88aCBJYNV2UWs,1674
8
- agents/adk_gemini_fullstack/app/agent.py,sha256=bk67bpAge8_b-reI1VuF4PNTXFHqnD92hdVTVXslS4s,16402
8
+ agents/adk_gemini_fullstack/app/agent.py,sha256=NXOkYFxDccJaSq55CTS-UYY8z5-WgBZqexII0Ybzk9c,22662
9
9
  agents/adk_gemini_fullstack/app/config.py,sha256=x--axECPKWW3oLANKz2_4zzHEBIU7if8iYNZRjlTNV0,1563
10
10
  agents/adk_gemini_fullstack/notebooks/adk_app_testing.ipynb,sha256=kWYd-ButNGemupiPDIzhlQO0elxWCwiea0nhmnsW8cg,9619
11
11
  agents/adk_gemini_fullstack/notebooks/evaluating_adk_agent.ipynb,sha256=OMTiT3gAFWPvE9pPL8z7tsDwOU-l8wem5wH-OXPPlvk,56805
@@ -40,18 +40,20 @@ agents/live_api/template/.templateconfig.yaml,sha256=DD_hihMsuqmd5VWS18vVGZ3ZGVV
40
40
  agents/live_api/tests/integration/test_server_e2e.py,sha256=D2VETDIyTD2fQyQ6DXwLr-POSYyVzzzcpIFLt5Ppyx4,8398
41
41
  agents/live_api/tests/load_test/load_test.py,sha256=HHZyfC4gqiQtZVF_CbbxENGgWQccMLpwMv0IdoQ6cbQ,1275
42
42
  agents/live_api/tests/unit/test_server.py,sha256=_TjlgQgNkjerIaBGnu8P8_KB8ZlSolDcivALpUOn_Rw,4786
43
- src/base_template/.gitignore,sha256=mJKTZIcVdAFiIUQicRfPNGUg6WvwcfTEC2xbmAaU34g,2579
44
- src/base_template/Makefile,sha256=b1LwWHtHziYNB8vTsnnhe8KbcYkP3lIsdWXh59lRnIU,5459
43
+ llm.txt,sha256=cZkWdzV2hRPIcV57E5J2zjnEiRntM6MrisFLstE4iYY,12140
44
+ src/base_template/.gitignore,sha256=bM9stR1IiKW5RVcryDyXj8ZgmKbN3x-3OCneDsmRZUg,2589
45
+ src/base_template/GEMINI.md,sha256=WzscHWlQeYkKORZ-453P8KM9IHuj1kAxW-69c7Ytuwk,133
46
+ src/base_template/Makefile,sha256=037wvhexHIZyWW451D4vkvNnldTznxDFZ0sleUvl8jU,6115
45
47
  src/base_template/README.md,sha256=d9vGHGZzpgbcgu-J-9gHr3NOV7nuRzgFzdSxSzwY3xs,10694
46
- src/base_template/pyproject.toml,sha256=0fM80KjqgmbiNxfM5jSXTnrze41nlPsYvFUEsKhlF08,2840
48
+ src/base_template/pyproject.toml,sha256=B7pnk8dhEWLEqPYQ0wqbbRGAVPZSjnPPP1imoFnilJw,2840
47
49
  src/base_template/app/__init__.py,sha256=UyAgc2l8nkVIUPUzL9hKR7EgzCsc2jSYcOcjHNNmpMU,59
48
50
  src/base_template/app/utils/gcs.py,sha256=jKblaWOGQEigw3esaawcfX178shhZi2Fyk0fJSA4T68,1501
49
51
  src/base_template/app/utils/tracing.py,sha256=2rv1Ukh2jTBENDwoghCItJ28l-Sjz9gMlzdojlVgJa4,6052
50
52
  src/base_template/app/utils/typing.py,sha256=DP5OZC3IGvqA1XbvWt8kI3gyAK3ZjzUSL5Ca17wNeLI,4249
51
53
  src/base_template/deployment/README.md,sha256=qWTCWyEj1bZuny3XyCelXPgljh6yu_GDwfPNUeFoXBY,5245
52
- src/base_template/deployment/cd/deploy-to-prod.yaml,sha256=1VncyjYOVyGBsDGN-zvXOH9J1TPL-LarYzbXOHwLDRY,4376
53
- src/base_template/deployment/cd/staging.yaml,sha256=WE9vSKh9tNs5pPnWslGyPa5-7AqQSFyuPaY5HAz7RCo,8004
54
- src/base_template/deployment/ci/pr_checks.yaml,sha256=7jS9HlRfistS4hhUXMF0tc-5m6g6l9s0rGhq_xP8Tnc,1517
54
+ src/base_template/deployment/cd/deploy-to-prod.yaml,sha256=3NslaDpk4dHNDC594Dsc7Ggboh_4jRixhZ5SYbBCdyM,4376
55
+ src/base_template/deployment/cd/staging.yaml,sha256=Fy_Qw2lvA35BQUeSjPsWWfYgOmtvSZSkS38RgT9dZmQ,8004
56
+ src/base_template/deployment/ci/pr_checks.yaml,sha256=VFdF6q_-zETCMlJkJ0znW8T7gCYE59BZNliNPz2Bh18,1517
55
57
  src/base_template/deployment/terraform/apis.tf,sha256=98vqe53RLtFwnQq_9N1widR8J0c1SGqwhCXp_GohITA,1497
56
58
  src/base_template/deployment/terraform/build_triggers.tf,sha256=_XDFj6kPd21NmEKKRjpqYIa48P8VHCMVG_6thLqrS0Y,6363
57
59
  src/base_template/deployment/terraform/iam.tf,sha256=-KrOngRch4gKnPkZy0ybQQq0RW5-TI80tJ-VJLg-AdA,5597
@@ -78,11 +80,11 @@ src/cli/utils/cicd.py,sha256=m2BxwV39323rVzJCjJjB37IPdSNQdxVgXGrgnhdbb84,26040
78
80
  src/cli/utils/datastores.py,sha256=gv1V6eDcOEKx4MRNG5C3Y-VfixYq1AzQuaYMLp8QRNo,1058
79
81
  src/cli/utils/gcp.py,sha256=cnuCyN144eiyYc9aJNEK9JnyWN66rdevugoMdDYC1UU,4032
80
82
  src/cli/utils/logging.py,sha256=0lHe4EPi1A8sOx9xkA7gS4UNl0GsIyp2ahydkkuCzLY,1570
81
- src/cli/utils/template.py,sha256=ruaOmjc_dPEyHaMjMeJSzFqFjgEKK56FdhubWLu-V9s,29164
83
+ src/cli/utils/template.py,sha256=rb3QoP-5AxEXYImsSR6wJhcF8bZRo-PzU1H6uNMsrk0,29709
82
84
  src/cli/utils/version.py,sha256=F4udQmzniPStqWZFIgnv3Qg3l9non4mfy2An-Oveqmc,2916
83
85
  src/data_ingestion/README.md,sha256=LNxSQoJW9JozK-TbyGQLj5L_MGWNwrfLk6V6RmQ2oBQ,4032
84
86
  src/data_ingestion/pyproject.toml,sha256=-1Mf2QB8K70ICQV5UPZDpf-fN3UwEQLVzQyxfakCSTY,445
85
- src/data_ingestion/uv.lock,sha256=HzSD6_IxS2urt49EefD9MvVxBwxW_bJ-k0XltTDT3Vc,144223
87
+ src/data_ingestion/uv.lock,sha256=nzF1JbCYbbkkWEaFanR3WrZ6ql6CrFXkeieCTgFJUmg,162793
86
88
  src/data_ingestion/data_ingestion_pipeline/pipeline.py,sha256=UAS6dxV954yARP0NdDbCf5kzap3NfmoX52eZ2mZtWXs,3331
87
89
  src/data_ingestion/data_ingestion_pipeline/submit_pipeline.py,sha256=tWGqL0zUB3V5JxR1SpX7LMjCW5r6JEGnvgF8tAxZ12s,7784
88
90
  src/data_ingestion/data_ingestion_pipeline/components/ingest_data.py,sha256=QbPmk6V7JPGo5Yc1BhL-1W_t9CXEN0iY5NKaGWlfSbM,10667
@@ -104,18 +106,18 @@ src/deployment_targets/cloud_run/tests/load_test/.results/.placeholder,sha256=Zb
104
106
  src/frontends/adk_gemini_fullstack/frontend/components.json,sha256=OUAALKbVpmIHQ16HcK1BgLBbVf_rV7s08PuGqgCFJ-o,423
105
107
  src/frontends/adk_gemini_fullstack/frontend/eslint.config.js,sha256=3ADH23ANA4NNBKFy6nCVk65e8bx1DrVd_FIaYNnhuqA,734
106
108
  src/frontends/adk_gemini_fullstack/frontend/index.html,sha256=cGmA25GOzciMX6ABt1SW_SqnrgPXGGf-1Pbkx2eMByQ,306
107
- src/frontends/adk_gemini_fullstack/frontend/package-lock.json,sha256=Pmb8NFfyEh7H9U_SHXkHAgkORcuGyd3JagKUFHIUr-Y,206669
108
- src/frontends/adk_gemini_fullstack/frontend/package.json,sha256=fsPrhf27JfN35B8015kiQGVpyil2NNi6tZiZV_B7kXk,1284
109
+ src/frontends/adk_gemini_fullstack/frontend/package-lock.json,sha256=DMSGcDHDWvcxRVbgaPqI2O0Z7HJk5PAiZmLfAVifPns,218303
110
+ src/frontends/adk_gemini_fullstack/frontend/package.json,sha256=bUzgvwGx8oVL2wHYbSNizO0EI1CjLd0jcWirJI-cxwA,1312
109
111
  src/frontends/adk_gemini_fullstack/frontend/tsconfig.json,sha256=LtqiCB6w68AjbIegDnbXa1YXKM_RQZZVVkAjfUNxyBo,753
110
112
  src/frontends/adk_gemini_fullstack/frontend/tsconfig.node.json,sha256=1BewvjsiZMJqSGXTqe94jo5yKdpi7yqI7UGoHgTv9mg,593
111
- src/frontends/adk_gemini_fullstack/frontend/vite.config.ts,sha256=hxnoqbvxU6kljtTYOE49jhzurHiyr0cZvxugWSPvKsM,1150
113
+ src/frontends/adk_gemini_fullstack/frontend/vite.config.ts,sha256=nmeV8oQoQe7SxIVNalYeR8Dw9LOQrcxTWyBUYxLr_Ns,1359
112
114
  src/frontends/adk_gemini_fullstack/frontend/src/App.tsx,sha256=X624JJ2LaDm1ztjb23r15f2fRzilVp6CNpw80HtuCAg,21473
113
115
  src/frontends/adk_gemini_fullstack/frontend/src/global.css,sha256=uNpkk45y9XVsmQs84D0KHN8B2i55ElSFZxHu6zml5E8,5037
114
116
  src/frontends/adk_gemini_fullstack/frontend/src/main.tsx,sha256=WYYxbfb0WHrY1BW7KB-pCxb3jslb1UeCDa26l9Ve0SQ,328
115
117
  src/frontends/adk_gemini_fullstack/frontend/src/utils.ts,sha256=Utm02hSGixxQ_T4hqlZqpdc8BuK1B2Mgk5X0vNK3V_4,170
116
118
  src/frontends/adk_gemini_fullstack/frontend/src/vite-env.d.ts,sha256=ZZlpNvuwQpFfe3SiAPzd5-QQ8ypmmxq5WXz6pLD63bU,38
117
119
  src/frontends/adk_gemini_fullstack/frontend/src/components/ActivityTimeline.tsx,sha256=FfDYEJyBc5vZYOBATcLyJRl1IYjb1B-0qv79dN8DqBI,9616
118
- src/frontends/adk_gemini_fullstack/frontend/src/components/ChatMessagesView.tsx,sha256=Jgv50ATn7_Fu9iZItsmquU90JsfNey-h8Ab6AgSB6kM,14369
120
+ src/frontends/adk_gemini_fullstack/frontend/src/components/ChatMessagesView.tsx,sha256=pRyJ9NJedSVL_58mYyy4ENKfjmcFs9IxdMzVmci5F4I,14517
119
121
  src/frontends/adk_gemini_fullstack/frontend/src/components/InputForm.tsx,sha256=8YjXJ2251qAunm5nEgVSto70pe3yoxGGqbU3hDSIB30,1875
120
122
  src/frontends/adk_gemini_fullstack/frontend/src/components/WelcomeScreen.tsx,sha256=cs3ogNX5U4_divL_3AA_75PPh5m7JqkfO8upemcPEQk,2064
121
123
  src/frontends/adk_gemini_fullstack/frontend/src/components/ui/badge.tsx,sha256=RK5qi9QBQLZRULdg46yX_sdQ05NTBq4EkuegeLa6I4A,1627
@@ -174,28 +176,29 @@ src/frontends/streamlit/frontend/utils/stream_handler.py,sha256=-XVRfLH6ck1KP6NS
174
176
  src/frontends/streamlit/frontend/utils/title_summary.py,sha256=B0cadS_KPW-tsbABauI4J681aqjEtuKFDa25e9R1WKc,3030
175
177
  src/resources/containers/data_processing/Dockerfile,sha256=VoB9d5yZiiWnqRfWrIq0gGNMzZg-eVy733OgP72ZgO0,950
176
178
  src/resources/containers/e2e-tests/Dockerfile,sha256=Q_aTyX_iaFY8j06XZkpMuggJnNO5daiLmmrvqaZHMxw,1611
179
+ src/resources/docs/adk-cheatsheet.md,sha256=SHtckZqDg60Bz_Id7qc2TY6ftz_X2bh88RQi4gCYb4E,58717
177
180
  src/resources/idx/idx-template.json,sha256=07OQZCPp45Iqor2O7Tm1e1Gmsdd-AmmUofSvA7y-oRs,793
178
181
  src/resources/idx/idx-template.nix,sha256=sesHGev_PYtVDg0J5tHkg0OO7IR1Bz2iAtl_if3Ar3M,892
179
182
  src/resources/idx/.idx/dev.nix,sha256=XQ4T1xt5I-8SVwnI37v56RFFlxa58Ko-a9G2-oelYAI,1602
180
- src/resources/locks/uv-adk_base-agent_engine.lock,sha256=teMKoCsUYEmuMTgTGQj6RkdoNTUdg4qEKQSJx-iEthI,359032
181
- src/resources/locks/uv-adk_base-cloud_run.lock,sha256=HrQCBGDXVPIqeAO2nAl09cEqcvWe8x7fNBP8M8c7bro,444877
182
- src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock,sha256=teMKoCsUYEmuMTgTGQj6RkdoNTUdg4qEKQSJx-iEthI,359032
183
- src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock,sha256=HrQCBGDXVPIqeAO2nAl09cEqcvWe8x7fNBP8M8c7bro,444877
184
- src/resources/locks/uv-agentic_rag-agent_engine.lock,sha256=tUtdkyWYAqJQxY3A83MJpBO4ob-nyOphZtd8Ye9w6nA,525204
185
- src/resources/locks/uv-agentic_rag-cloud_run.lock,sha256=NcYrDEWNG37mLSd14UDFY9x5m2jCjoS943L_NMvaeGc,684231
186
- src/resources/locks/uv-crewai_coding_crew-agent_engine.lock,sha256=nep-Xh1bP0lSWGfZBwBdkichQ6NzDY04Zhg9-1u-K4E,814819
187
- src/resources/locks/uv-crewai_coding_crew-cloud_run.lock,sha256=NmYdb4pV-2gRdtN-wERDPabbSieDkREBizkmbkJcsTg,1048015
188
- src/resources/locks/uv-langgraph_base_react-agent_engine.lock,sha256=E2XpgMFHufviXXwJcyqNu8aLQ-pmVKy3b8151vy1Hlw,672886
189
- src/resources/locks/uv-langgraph_base_react-cloud_run.lock,sha256=Rcr6mBYO1SB8vYwN257CQOvnQ3xpW8brJKMbPmHKREc,875815
190
- src/resources/locks/uv-live_api-cloud_run.lock,sha256=y1quwN7HpuFL3CVZ58dsnQ-c4kX0S9w9MBwhfbaYQGE,797917
183
+ src/resources/locks/uv-adk_base-agent_engine.lock,sha256=0OrJhKC_JVKgX-S9fFxRujnKEvmOEpd8vCyfkesqLAs,359057
184
+ src/resources/locks/uv-adk_base-cloud_run.lock,sha256=itu4YI-tXc1hN7ncu0_uK2qbEhFY3Wu2tO4GoysGfSA,444902
185
+ src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock,sha256=0OrJhKC_JVKgX-S9fFxRujnKEvmOEpd8vCyfkesqLAs,359057
186
+ src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock,sha256=itu4YI-tXc1hN7ncu0_uK2qbEhFY3Wu2tO4GoysGfSA,444902
187
+ src/resources/locks/uv-agentic_rag-agent_engine.lock,sha256=TAMmD1WW_Ge35kKaY4w1FdN3aEih7_kRSWc7kXQobOA,523699
188
+ src/resources/locks/uv-agentic_rag-cloud_run.lock,sha256=5IM5puIbWmY4a3PGTcaIiG-Iu6E-QillJh5b105pDL4,681704
189
+ src/resources/locks/uv-crewai_coding_crew-agent_engine.lock,sha256=jZVg40hOaiMhCF4dB6BMpQ8WanHPhGFYVRMqPX_Hg8I,813314
190
+ src/resources/locks/uv-crewai_coding_crew-cloud_run.lock,sha256=QX5ZQX9c7s9FnPyCXfVdBFDfz8rsQ___iDcZvuukZ34,1045488
191
+ src/resources/locks/uv-langgraph_base_react-agent_engine.lock,sha256=D3N9GNNKiX8pK2Yivw6f77oID4wRAs1MhUIoSXGv-3g,671381
192
+ src/resources/locks/uv-langgraph_base_react-cloud_run.lock,sha256=dATDd1pQguY0Mo_2MCKn24cRzk7ZtAK0DG7_08RkLNY,873288
193
+ src/resources/locks/uv-live_api-cloud_run.lock,sha256=aFvPKu0r23qSH2V9_1rTUuJNBG9UseDLnT6QM_g3nfo,795390
191
194
  src/resources/setup_cicd/cicd_variables.tf,sha256=PMflYe1TzQi63LORHkmeCktTYzXFplJgxffNH4DtuAQ,1244
192
195
  src/resources/setup_cicd/github.tf,sha256=scTBgeZlCM74N-pzhVKsnTN0PX9a5GboNl1HN3-LlCM,2791
193
196
  src/resources/setup_cicd/providers.tf,sha256=Km4z6IJt7x7PLaa0kyZbBrO2m3lpuIJZFD5jB7QBfF0,1122
194
197
  src/utils/generate_locks.py,sha256=6V1B8V2BEuevWnXUsxZVTrLjXwFRII8UfsIGrQqZxVs,4320
195
198
  src/utils/lock_utils.py,sha256=RSE6n3hBkH64xNm3Q5wrR0Pqbeo-oc7xaTOhA9yzHjk,2275
196
199
  src/utils/watch_and_rebuild.py,sha256=vP4yIiA7E_lj5sfQdJUl8TXas6V7msDg8XWUutAC05Q,6679
197
- agent_starter_pack-0.6.4.dist-info/METADATA,sha256=x7-k1tV6DfP6Clfd08rcW98Fb6VTOhl3dGrXO-a1cCM,10729
198
- agent_starter_pack-0.6.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
199
- agent_starter_pack-0.6.4.dist-info/entry_points.txt,sha256=U7uCxR7YulIhZ0L8R8Hui0Bsy6J7oyESBeDYJYMrQjA,56
200
- agent_starter_pack-0.6.4.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
201
- agent_starter_pack-0.6.4.dist-info/RECORD,,
200
+ agent_starter_pack-0.7.0.dist-info/METADATA,sha256=0Op9EZV9jjK0MPZ1SJ5rpATz_-cdMjEIxkwFy0KiGII,11146
201
+ agent_starter_pack-0.7.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
202
+ agent_starter_pack-0.7.0.dist-info/entry_points.txt,sha256=U7uCxR7YulIhZ0L8R8Hui0Bsy6J7oyESBeDYJYMrQjA,56
203
+ agent_starter_pack-0.7.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
204
+ agent_starter_pack-0.7.0.dist-info/RECORD,,
@@ -182,12 +182,33 @@ class EscalationChecker(BaseAgent):
182
182
  plan_generator = LlmAgent(
183
183
  model=config.worker_model,
184
184
  name="plan_generator",
185
- description="Generates a 4-5 line action-oriented research plan, using minimal search only for topic clarification.",
185
+ description="Generates or refine the existing 5 line action-oriented research plan, using minimal search only for topic clarification.",
186
186
  instruction=f"""
187
- You are a research strategist. Your job is to create a high-level RESEARCH PLAN, not a summary.
188
- **RULE: Your output MUST be a bulleted list of 4-5 action-oriented research goals or key questions.**
189
- - A good goal starts with a verb like "Analyze," "Identify," "Investigate."
187
+ You are a research strategist. Your job is to create a high-level RESEARCH PLAN, not a summary. If there is already a RESEARCH PLAN in the session state,
188
+ improve upon it based on the user feedback.
189
+
190
+ RESEARCH PLAN(SO FAR):
191
+ {{ research_plan? }}
192
+
193
+ **GENERAL INSTRUCTION: CLASSIFY TASK TYPES**
194
+ Your plan must clearly classify each goal for downstream execution. Each bullet point should start with a task type prefix:
195
+ - **`[RESEARCH]`**: For goals that primarily involve information gathering, investigation, analysis, or data collection (these require search tool usage by a researcher).
196
+ - **`[DELIVERABLE]`**: For goals that involve synthesizing collected information, creating structured outputs (e.g., tables, charts, summaries, reports), or compiling final output artifacts (these are executed AFTER research tasks, often without further search).
197
+
198
+ **INITIAL RULE: Your initial output MUST start with a bulleted list of 5 action-oriented research goals or key questions, followed by any *inherently implied* deliverables.**
199
+ - All initial 5 goals will be classified as `[RESEARCH]` tasks.
200
+ - A good goal for `[RESEARCH]` starts with a verb like "Analyze," "Identify," "Investigate."
190
201
  - A bad output is a statement of fact like "The event was in April 2024."
202
+ - **Proactive Implied Deliverables (Initial):** If any of your initial 5 `[RESEARCH]` goals inherently imply a standard output or deliverable (e.g., a comparative analysis suggesting a comparison table, or a comprehensive review suggesting a summary document), you MUST add these as additional, distinct goals immediately after the initial 5. Phrase these as *synthesis or output creation actions* (e.g., "Create a summary," "Develop a comparison," "Compile a report") and prefix them with `[DELIVERABLE][IMPLIED]`.
203
+
204
+ **REFINEMENT RULE**:
205
+ - **Integrate Feedback & Mark Changes:** When incorporating user feedback, make targeted modifications to existing bullet points. Add `[MODIFIED]` to the existing task type and status prefix (e.g., `[RESEARCH][MODIFIED]`). If the feedback introduces new goals:
206
+ - If it's an information gathering task, prefix it with `[RESEARCH][NEW]`.
207
+ - If it's a synthesis or output creation task, prefix it with `[DELIVERABLE][NEW]`.
208
+ - **Proactive Implied Deliverables (Refinement):** Beyond explicit user feedback, if the nature of an existing `[RESEARCH]` goal (e.g., requiring a structured comparison, deep dive analysis, or broad synthesis) or a `[DELIVERABLE]` goal inherently implies an additional, standard output or synthesis step (e.g., a detailed report following a summary, or a visual representation of complex data), proactively add this as a new goal. Phrase these as *synthesis or output creation actions* and prefix them with `[DELIVERABLE][IMPLIED]`.
209
+ - **Maintain Order:** Strictly maintain the original sequential order of existing bullet points. New bullets, whether `[NEW]` or `[IMPLIED]`, should generally be appended to the list, unless the user explicitly instructs a specific insertion point.
210
+ - **Flexible Length:** The refined plan is no longer constrained by the initial 5-bullet limit and may comprise more goals as needed to fully address the feedback and implied deliverables.
211
+
191
212
  **TOOL USE IS STRICTLY LIMITED:**
192
213
  Your goal is to create a generic, high-quality plan *without searching*.
193
214
  Only use `google_search` if a topic is ambiguous or time-sensitive and you absolutely cannot create a plan without a key piece of identifying information.
@@ -204,6 +225,7 @@ section_planner = LlmAgent(
204
225
  description="Breaks down the research plan into a structured markdown outline of report sections.",
205
226
  instruction="""
206
227
  You are an expert report architect. Using the research topic and the plan from the 'research_plan' state key, design a logical structure for the final report.
228
+ Note: Ignore all the tag nanes ([MODIFIED], [NEW], [RESEARCH], [DELIVERABLE]) in the research plan.
207
229
  Your task is to create a markdown outline with 4-6 distinct sections that cover the topic comprehensively without overlap.
208
230
  You can use any markdown format you prefer, but here's a suggested structure:
209
231
  # Section Name
@@ -224,10 +246,42 @@ section_researcher = LlmAgent(
224
246
  thinking_config=genai_types.ThinkingConfig(include_thoughts=True)
225
247
  ),
226
248
  instruction="""
227
- You are a diligent and exhaustive researcher. Your task is to perform the initial, broad information gathering for a report.
228
- You will be provided with a list of sections in the 'report_sections' state key.
229
- For each section where 'research' is marked as 'true', generate a comprehensive list of 4-5 targeted search queries to cover the topic from multiple angles.
230
- Execute all of these queries using the 'google_search' tool and synthesize the results into a detailed summary for that section.
249
+ You are a highly capable and diligent research and synthesis agent. Your comprehensive task is to execute a provided research plan with **absolute fidelity**, first by gathering necessary information, and then by synthesizing that information into specified outputs.
250
+
251
+ You will be provided with a sequential list of research plan goals, stored in the `research_plan` state key. Each goal will be clearly prefixed with its primary task type: `[RESEARCH]` or `[DELIVERABLE]`.
252
+
253
+ Your execution process must strictly adhere to these two distinct and sequential phases:
254
+
255
+ ---
256
+
257
+ **Phase 1: Information Gathering (`[RESEARCH]` Tasks)**
258
+
259
+ * **Execution Directive:** You **MUST** systematically process every goal prefixed with `[RESEARCH]` before proceeding to Phase 2.
260
+ * For each `[RESEARCH]` goal:
261
+ * **Query Generation:** Formulate a comprehensive set of 4-5 targeted search queries. These queries must be expertly designed to broadly cover the specific intent of the `[RESEARCH]` goal from multiple angles.
262
+ * **Execution:** Utilize the `google_search` tool to execute **all** generated queries for the current `[RESEARCH]` goal.
263
+ * **Summarization:** Synthesize the search results into a detailed, coherent summary that directly addresses the objective of the `[RESEARCH]` goal.
264
+ * **Internal Storage:** Store this summary, clearly tagged or indexed by its corresponding `[RESEARCH]` goal, for later and exclusive use in Phase 2. You **MUST NOT** lose or discard any generated summaries.
265
+
266
+ ---
267
+
268
+ **Phase 2: Synthesis and Output Creation (`[DELIVERABLE]` Tasks)**
269
+
270
+ * **Execution Prerequisite:** This phase **MUST ONLY COMMENCE** once **ALL** `[RESEARCH]` goals from Phase 1 have been fully completed and their summaries are internally stored.
271
+ * **Execution Directive:** You **MUST** systematically process **every** goal prefixed with `[DELIVERABLE]`. For each `[DELIVERABLE]` goal, your directive is to **PRODUCE** the artifact as explicitly described.
272
+ * For each `[DELIVERABLE]` goal:
273
+ * **Instruction Interpretation:** You will interpret the goal's text (following the `[DELIVERABLE]` tag) as a **direct and non-negotiable instruction** to generate a specific output artifact.
274
+ * *If the instruction details a table (e.g., "Create a Detailed Comparison Table in Markdown format"), your output for this step **MUST** be a properly formatted Markdown table utilizing columns and rows as implied by the instruction and the prepared data.*
275
+ * *If the instruction states to prepare a summary, report, or any other structured output, your output for this step **MUST** be that precise artifact.*
276
+ * **Data Consolidation:** Access and utilize **ONLY** the summaries generated during Phase 1 (`[RESEARCH]` tasks`) to fulfill the requirements of the current `[DELIVERABLE]` goal. You **MUST NOT** perform new searches.
277
+ * **Output Generation:** Based on the specific instruction of the `[DELIVERABLE]` goal:
278
+ * Carefully extract, organize, and synthesize the relevant information from your previously gathered summaries.
279
+ * Must always produce the specified output artifact (e.g., a concise summary, a structured comparison table, a comprehensive report, a visual representation, etc.) with accuracy and completeness.
280
+ * **Output Accumulation:** Maintain and accumulate **all** the generated `[DELIVERABLE]` artifacts. These are your final outputs.
281
+
282
+ ---
283
+
284
+ **Final Output:** Your final output will comprise the complete set of processed summaries from `[RESEARCH]` tasks AND all the generated artifacts from `[DELIVERABLE]` tasks, presented clearly and distinctly.
231
285
  """,
232
286
  tools=[google_search],
233
287
  output_key="section_research_findings",
llm.txt ADDED
@@ -0,0 +1,290 @@
1
+ ---
2
+ **llm.txt** documents the "Agent Starter Pack" repository, providing a source of truth on its purpose, features, and usage.
3
+ ---
4
+
5
+ ### Section 1: Project Overview
6
+
7
+ * **Project Name:** Agent Starter Pack
8
+ * **Purpose:** Accelerate development of production-ready GenAI Agents on Google Cloud.
9
+ * **Tagline:** Production-Ready Agents on Google Cloud, faster.
10
+
11
+ **The "Production Gap":**
12
+ While prototyping GenAI agents is quick, production deployment often takes 3-9 months.
13
+
14
+ **Key Challenges Addressed:**
15
+ * **Customization:** Business logic, data grounding, security/compliance.
16
+ * **Evaluation:** Metrics, quality assessment, test datasets.
17
+ * **Deployment:** Cloud infrastructure, CI/CD, UI integration.
18
+ * **Observability:** Performance tracking, user feedback.
19
+
20
+ **Solution: Agent Starter Pack**
21
+ Provides MLOps and infrastructure templates so developers focus on agent logic.
22
+
23
+ * **You Build:** Prompts, LLM interactions, business logic, agent orchestration.
24
+ * **We Provide:**
25
+ * Deployment infrastructure, CI/CD, testing
26
+ * Logging, monitoring
27
+ * Evaluation tools
28
+ * Data connections, UI playground
29
+ * Security best practices
30
+
31
+ Establishes production patterns from day one, saving setup time.
32
+
33
+ ---
34
+ ### Section 2: Creating a New Agent Project
35
+
36
+ Start by creating a new agent project from a predefined template. This process supports both interactive and fully automated setup.
37
+
38
+ **Prerequisites:**
39
+ Before you begin, ensure you have `uv`/`uvx`, `gcloud` CLI, `terraform`, `git`, and `gh` CLI (for automated CI/CD setup) installed and authenticated.
40
+
41
+ **Installing the `agent-starter-pack` CLI:**
42
+ Choose one method to get the `agent-starter-pack` command:
43
+
44
+ 1. **`uvx` (Recommended for Zero-Install/Automation):** Run directly without prior installation.
45
+ ```bash
46
+ uvx agent-starter-pack create ...
47
+ ```
48
+ 2. **Virtual Environment (`pip` or `uv`):**
49
+ ```bash
50
+ pip install agent-starter-pack
51
+ ```
52
+ 3. **Persistent CLI Install (`pipx` or `uv tool`):** Installs globally in an isolated environment.
53
+
54
+ ---
55
+ ### `agent-starter-pack create` Command
56
+
57
+ Generates a new agent project directory based on a chosen template and configuration.
58
+
59
+ **Usage:**
60
+ ```bash
61
+ agent-starter-pack create PROJECT_NAME [OPTIONS]
62
+ ```
63
+
64
+ **Arguments:**
65
+ * `PROJECT_NAME`: Name for your new project directory and base for GCP resource naming.
66
+
67
+ **Key Options:**
68
+ * `-a, --agent`: Agent template (e.g., `adk_base`, `agentic_rag`).
69
+ * `-d, --deployment-target`: Target deployment environment (`cloud_run` or `agent_engine`).
70
+ * `-ds, --datastore`: For RAG agents, the datastore (`vertex_ai_search` or `vertex_ai_vector_search`).
71
+ * `-i, --include-data-ingestion`: Include data ingestion pipeline scaffolding.
72
+ * `--region`: GCP region (e.g., `us-central1`).
73
+ * `--auto-approve`: **Skips all interactive prompts (crucial for automation).**
74
+ * `--debug`: Enables debug logging during creation.
75
+
76
+ **Automated Creation Example:**
77
+ ```bash
78
+ uvx agent-starter-pack create my-automated-agent \
79
+ -a adk_base \
80
+ -d cloud_run \
81
+ --region us-central1 \
82
+ --auto-approve
83
+ ```
84
+
85
+ ---
86
+
87
+ ### Available Agent Templates
88
+
89
+ Templates for the `create` command (via `-a` or `--agent`):
90
+
91
+ | Agent Name | Description |
92
+ | :--------------------- | :------------------------------------------- |
93
+ | `adk_base` | Base ReAct agent (ADK) |
94
+ | `adk_gemini_fullstack` | Production-ready fullstack research agent |
95
+ | `agentic_rag` | RAG agent for document retrieval & Q&A |
96
+ | `langgraph_base_react` | Base ReAct agent (LangGraph) |
97
+ | `crewai_coding_crew` | Multi-agent collaborative coding assistance |
98
+ | `live_api` | Real-time multimodal RAG agent |
99
+
100
+ ---
101
+
102
+ ### Including a Data Ingestion Pipeline (for RAG agents)
103
+
104
+ For RAG agents needing custom document search, enabling this option automates loading, chunking, embedding documents with Vertex AI, and storing them in a vector database.
105
+
106
+ **How to enable:**
107
+ ```bash
108
+ uvx agent-starter-pack create my-rag-agent \
109
+ -a agentic_rag \
110
+ -d cloud_run \
111
+ -i \
112
+ -ds vertex_ai_search \
113
+ --auto-approve
114
+ ```
115
+ **Post-creation:** Follow your new project's `data_ingestion/README.md` to deploy the necessary infrastructure.
116
+
117
+ ---
118
+ ### Section 3: Development & Automated Deployment Workflow
119
+ ---
120
+
121
+ This section describes the end-to-end lifecycle of an agent, with emphasis on automation.
122
+
123
+
124
+ ### 1. Local Development & Iteration
125
+
126
+ Once your project is created, navigate into its directory to begin development.
127
+
128
+ **First, install dependencies (run once):**
129
+ ```bash
130
+ make install
131
+ ```
132
+
133
+ **Next, test your agent. The recommended method is to use a programmatic script.**
134
+
135
+ #### Programmatic Testing (Recommended Workflow)
136
+
137
+ This method allows for quick, automated validation of your agent's logic.
138
+
139
+ 1. **Create a script:** In the project's root directory, create a Python script named `run_agent.py`.
140
+ 2. **Invoke the agent:** In the script, write code to programmatically call your agent with sample input and `print()` the output for inspection.
141
+ * **Guidance:** If you're unsure or no guidance exists, you can look at files in the `tests/` directory for examples of how to import and call the agent's main function.
142
+ * **Important:** This script is for simple validation. **Assertions are not required**, and you should not create a formal `pytest` file.
143
+ 3. **Run the test:** Execute your script from the terminal using `uv`.
144
+ ```bash
145
+ uv run python run_agent.py
146
+ ```
147
+ You can keep the test file for future testing.
148
+
149
+ #### Manual Testing with the UI Playground (Optional)
150
+
151
+ If the user needs to interact with your agent manually in a chat interface for debugging:
152
+
153
+ 1. Run the following command to start the local web UI:
154
+ ```bash
155
+ make playground
156
+ ```
157
+ This is useful for human-in-the-loop testing and features hot-reloading.
158
+
159
+ ### 2. Deploying to a Cloud Development Environment
160
+ Before setting up full CI/CD, you can deploy to a personal cloud dev environment.
161
+
162
+ 1. **Set Project:** `gcloud config set project YOUR_DEV_PROJECT_ID`
163
+ 2. **Provision Resources:** `make setup-dev-env` (uses Terraform).
164
+ 3. **Deploy Backend:** `make backend` (builds and deploys the agent).
165
+
166
+ ### 3. Automated Production-Ready Deployment with CI/CD
167
+ For reliable deployments, the `setup-cicd` command streamlines the entire process. It creates a GitHub repo, connects it to Cloud Build, provisions staging/prod infrastructure, and configures deployment triggers.
168
+
169
+ **Automated CI/CD Setup Example (Recommended):**
170
+ ```bash
171
+ # Run from the project root. This command will guide you or can be automated with flags.
172
+ uvx agent-starter-pack setup-cicd
173
+ ```
174
+
175
+ **CI/CD Workflow Logic:**
176
+ * **On Pull Request:** CI pipeline runs tests.
177
+ * **On Merge to `main`:** CD pipeline deploys to staging.
178
+ * **Manual Approval:** A manual approval step triggers the production deployment.
179
+
180
+ ---
181
+ ### Section 4: Key Features & Customization
182
+ ---
183
+
184
+ ### Deploying with a User Interface (UI)
185
+ * **Unified Deployment (for Dev/Test):** The backend and frontend can be packaged and served from a single Cloud Run service, secured with Identity-Aware Proxy (IAP).
186
+ * **Deploying with UI:** `make backend IAP=true`
187
+ * **Access Control:** After deploying with IAP, grant users the `IAP-secured Web App User` role in IAM to give them access.
188
+
189
+ ### Monitoring & Observability
190
+ * **Technology:** Uses OpenTelemetry to emit events to Google Cloud Trace and Logging.
191
+ * **Custom Tracer:** A custom tracer in `app/utils/tracing.py` handles large payloads by linking to GCS, overcoming default service limits.
192
+ * **Infrastructure:** A Log Router to sink data to BigQuery is provisioned by Terraform.
193
+
194
+ ---
195
+ ### Section 5: CLI Reference for CI/CD Setup
196
+ ---
197
+
198
+ ### `agent-starter-pack setup-cicd`
199
+ Automates the entire CI/CD setup for a project on GitHub.
200
+
201
+ **Usage:**
202
+ ```bash
203
+ uvx agent-starter-pack setup-cicd [OPTIONS]
204
+ ```
205
+ **Prerequisites:** Run from the project root. `uv`, `gh` CLI, `gcloud` CLI, and `terraform` must be installed and authenticated. Requires `Owner` role on the GCP projects.
206
+
207
+ **Key Automation Options:**
208
+ * `--staging-project`, `--prod-project`, `--cicd-project`, `--dev-project`
209
+ * `--region`, `--repository-name`, `--repository-owner`
210
+ * `--auto-approve`: **Crucial for automation.** Skips all interactive prompts.
211
+
212
+ **Automated Example:**
213
+ ```bash
214
+ uvx agent-starter-pack setup-cicd \
215
+ --staging-project t-starter-staging \
216
+ --prod-project t-starter-prod \
217
+ --repository-name my-adk-project-repo \
218
+ --repository-owner eliasecchig \
219
+ --auto-approve
220
+ ```
221
+
222
+ ---
223
+ ### Section 6: Operational Guidelines for Coding Agents
224
+
225
+ These guidelines are essential for interacting with the Agent Starter Pack project effectively.
226
+
227
+ ---
228
+
229
+ ### Principle 1: Code Preservation & Isolation
230
+
231
+ When executing code modifications using tools like `replace` or `write_file`, your paramount objective is surgical precision. You **must alter only the code segments directly targeted** by the user's request, while **strictly preserving all surrounding and unrelated code.**
232
+
233
+ **Mandatory Pre-Execution Verification:**
234
+
235
+ Before finalizing any `new_string` for a `replace` operation, meticulously verify the following:
236
+
237
+ 1. **Target Identification:** Clearly define the exact lines or expressions to be changed, based *solely* on the user's explicit instructions.
238
+ 2. **Preservation Check:** Compare your proposed `new_string` against the `old_string`. Ensure all code, configuration values (e.g., `model`, `version`, `api_key`), comments, and formatting *outside* the identified target remain identical and verbatim.
239
+
240
+ **Example: Adhering to Preservation**
241
+
242
+ * **User Request:** "Change the agent's instruction to be a recipe suggester."
243
+ * **Original Code Snippet:**
244
+ ```python
245
+ root_agent = Agent(
246
+ name="root_agent",
247
+ model="gemini-2.5-flash",
248
+ instruction="You are a helpful AI assistant."
249
+ )
250
+ ```
251
+ * **Incorrect Modification (VIOLATION):**
252
+ ```python
253
+ root_agent = Agent(
254
+ name="recipe_suggester",
255
+ model="gemini-1.5-flash", # UNINTENDED MUTATION - model was not requested to change
256
+ instruction="You are a recipe suggester."
257
+ )
258
+ ```
259
+ * **Correct Modification (COMPLIANT):**
260
+ ```python
261
+ root_agent = Agent(
262
+ name="recipe_suggester", # OK, related to new purpose
263
+ model="gemini-2.5-flash", # MUST be preserved
264
+ instruction="You are a recipe suggester." # OK, the direct target
265
+ )
266
+ ```
267
+
268
+ **Critical Error:** Failure to adhere to this preservation principle is a critical error. Always prioritize the integrity of existing, unchanged code over the convenience of rewriting entire blocks.
269
+
270
+ ---
271
+
272
+ ### Principle 2: Workflow & Execution Best Practices
273
+
274
+ * **Standard Workflow:**
275
+ The validated end-to-end process is: `create` → `test` → `setup-cicd` → push to deploy. Trust this high-level workflow as the default for developing and shipping agents.
276
+
277
+ * **Agent Testing:**
278
+ * **Avoid `make playground`** unless specifically instructed; it is designed for human interaction. Focus on programmatic testing.
279
+
280
+ * **Model Selection:**
281
+ * **When using Gemini, prefer the 2.5 model family** for optimal performance and capabilities: "gemini-2.5-pro" and "gemini-2.5-flash"
282
+
283
+ * **Running Python Commands:**
284
+ * Always use `uv` to execute Python commands within this repository (e.g., `uv run run_agent.py`).
285
+ * Ensure project dependencies are installed by running `make install` before executing scripts.
286
+ * Consult the project's `Makefile` and `README.md` for other useful development commands.
287
+
288
+ * **Further Reading & Troubleshooting:**
289
+ * For questions about specific frameworks (e.g., LangGraph) or Google Cloud products (e.g., Cloud Run), their official documentation and online resources are the best source of truth.
290
+ * **When encountering persistent errors or if you're unsure how to proceed after initial troubleshooting, a targeted Google Search is strongly recommended.** It is often the fastest way to find relevant documentation, community discussions, or direct solutions to your problem.
@@ -194,4 +194,5 @@ my_env.tfvars
194
194
  .streamlit_chats
195
195
  .saved_chats
196
196
  .env
197
- .requirements.txt
197
+ .requirements.txt
198
+ GEMINI.md
@@ -0,0 +1,5 @@
1
+ Coding Agent guidance:
2
+ {%- if "adk" in cookiecutter.tags %}
3
+ {{ cookiecutter.adk_cheatsheet }}
4
+ {%- endif %}
5
+ {{ cookiecutter.llm_txt }}