agent-starter-pack 0.11.0__py3-none-any.whl → 0.11.1__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.11.0.dist-info → agent_starter_pack-0.11.1.dist-info}/METADATA +9 -2
- {agent_starter_pack-0.11.0.dist-info → agent_starter_pack-0.11.1.dist-info}/RECORD +7 -14
- src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/deploy-to-prod.yaml +2 -0
- src/cli/commands/enhance.py +70 -16
- agents/adk_gemini_fullstack/.template/templateconfig.yaml +0 -39
- agents/adk_gemini_fullstack/README.md +0 -27
- agents/adk_gemini_fullstack/app/agent.py +0 -412
- agents/adk_gemini_fullstack/app/config.py +0 -46
- agents/adk_gemini_fullstack/notebooks/adk_app_testing.ipynb +0 -355
- agents/adk_gemini_fullstack/notebooks/evaluating_adk_agent.ipynb +0 -1528
- agents/adk_gemini_fullstack/tests/integration/test_agent.py +0 -58
- {agent_starter_pack-0.11.0.dist-info → agent_starter_pack-0.11.1.dist-info}/WHEEL +0 -0
- {agent_starter_pack-0.11.0.dist-info → agent_starter_pack-0.11.1.dist-info}/entry_points.txt +0 -0
- {agent_starter_pack-0.11.0.dist-info → agent_starter_pack-0.11.1.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.11.
|
3
|
+
Version: 0.11.1
|
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
|
@@ -75,6 +75,14 @@ This command handles creating the project without needing to pre-install the pac
|
|
75
75
|
|
76
76
|
**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.
|
77
77
|
|
78
|
+
### 🔧 Enhance Existing Agents
|
79
|
+
|
80
|
+
Already have an agent? Add production-ready deployment and infrastructure:
|
81
|
+
|
82
|
+
```bash
|
83
|
+
agent-starter-pack enhance my-existing-agent
|
84
|
+
```
|
85
|
+
|
78
86
|
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).
|
79
87
|
|
80
88
|
---
|
@@ -84,7 +92,6 @@ See [Installation Guide](https://googlecloudplatform.github.io/agent-starter-pac
|
|
84
92
|
| Agent Name | Description |
|
85
93
|
|-----------------------------|-----------------------------------------------------------------------------------------------------------------------------------|
|
86
94
|
| `adk_base` | A base ReAct agent implemented using Google's [Agent Development Kit](https://github.com/google/adk-python) |
|
87
|
-
| `adk_gemini_fullstack` | A production-ready fullstack research agent with Gemini that demonstrates complex agentic workflows, modular agent design, and Human-in-the-Loop steps. [ADK Samples](https://github.com/google/adk-samples/tree/main/python/agents/gemini-fullstack) |
|
88
95
|
| `agentic_rag` | A RAG agent for document retrieval and Q&A. 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). |
|
89
96
|
| `langgraph_base_react` | An agent implementing a base ReAct agent using LangGraph |
|
90
97
|
| `crewai_coding_crew` | A multi-agent system implemented with CrewAI created to support coding activities |
|
@@ -5,13 +5,6 @@ agents/adk_base/app/agent.py,sha256=6Q6QegQDxEaAck989DPIb3ArHMZtw_YJBqhHFqg-UjQ,
|
|
5
5
|
agents/adk_base/notebooks/adk_app_testing.ipynb,sha256=wgFzBo7hX393NVzy3ZfZHncs1ptiQbM_8he3XxJu4yM,9763
|
6
6
|
agents/adk_base/notebooks/evaluating_adk_agent.ipynb,sha256=OMTiT3gAFWPvE9pPL8z7tsDwOU-l8wem5wH-OXPPlvk,56805
|
7
7
|
agents/adk_base/tests/integration/test_agent.py,sha256=VypgpEWrQegJBgc58V-BlIsbqh-Hii-hwmkwcz5feFw,1969
|
8
|
-
agents/adk_gemini_fullstack/README.md,sha256=yQFFcESALj5Q6eweyIyPx__U74obUM88aCBJYNV2UWs,1674
|
9
|
-
agents/adk_gemini_fullstack/.template/templateconfig.yaml,sha256=BFlIFsm1g0xmIg4g0jkQ8MpW_EJPRXi4gPYjgIIsAEg,1745
|
10
|
-
agents/adk_gemini_fullstack/app/agent.py,sha256=NXOkYFxDccJaSq55CTS-UYY8z5-WgBZqexII0Ybzk9c,22662
|
11
|
-
agents/adk_gemini_fullstack/app/config.py,sha256=x--axECPKWW3oLANKz2_4zzHEBIU7if8iYNZRjlTNV0,1563
|
12
|
-
agents/adk_gemini_fullstack/notebooks/adk_app_testing.ipynb,sha256=wgFzBo7hX393NVzy3ZfZHncs1ptiQbM_8he3XxJu4yM,9763
|
13
|
-
agents/adk_gemini_fullstack/notebooks/evaluating_adk_agent.ipynb,sha256=OMTiT3gAFWPvE9pPL8z7tsDwOU-l8wem5wH-OXPPlvk,56805
|
14
|
-
agents/adk_gemini_fullstack/tests/integration/test_agent.py,sha256=VypgpEWrQegJBgc58V-BlIsbqh-Hii-hwmkwcz5feFw,1969
|
15
8
|
agents/agentic_rag/README.md,sha256=cPeY_XGt79ava22PIM0x92oi67R-TnlEKBQGpK1MOkA,2262
|
16
9
|
agents/agentic_rag/.template/templateconfig.yaml,sha256=Gfw3FOjj3XNxoXn6WGwC2PG59f4qB3p2cYTQ49ykvJc,1248
|
17
10
|
agents/agentic_rag/app/agent.py,sha256=tKtzez7vGu6JgMWmZN7QrKkyLBvHu1ondAuICjKoC-g,3983
|
@@ -72,7 +65,7 @@ src/base_template/deployment/terraform/dev/variables.tf,sha256=JMo3BQ57t8OTRiNUb
|
|
72
65
|
src/base_template/deployment/terraform/dev/vars/env.tfvars,sha256=LoQMjh1AAMR-MGfaSCsVMjdoYTk2T4oS4D9vMH54CdQ,714
|
73
66
|
src/base_template/deployment/terraform/vars/env.tfvars,sha256=Jyc36pt-0xNMwQsoXucad0QAWFMeGe67fdimCKXx-tw,1411
|
74
67
|
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=
|
68
|
+
src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/deploy-to-prod.yaml,sha256=I9uwH0mpuQQU3wbqaniWMb37UPEUnbY4o1YhRJ5egM8,5739
|
76
69
|
src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/pr_checks.yaml,sha256=vy51dSiRFEFlFq9eEWuUsemG0jXj3VL4lCRMcodPiok,1981
|
77
70
|
src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/staging.yaml,sha256=fYX-IBKHD-gSoFNLpAJUM0v2okL32AbMTn-eJpstSqU,8494
|
78
71
|
src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/deploy-to-prod.yaml,sha256=Zv3oE3YC8P2iYJ2_ie1PPo0HjNLxiMkY3IwJrS0bFcM,3703
|
@@ -80,7 +73,7 @@ src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.clou
|
|
80
73
|
src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/staging.yaml,sha256=Spy8ziGCHUtY5hqSIiIDTTywjmSoUw8N1YlwGo0aL04,7367
|
81
74
|
src/cli/main.py,sha256=Dya7Sw3ozMTaGDcwMh_-W7udkGZHGzgAj8aBdSZaZxI,1832
|
82
75
|
src/cli/commands/create.py,sha256=mUFukCCpuFV6bgS-JmQEZ6D-zB-_ddxmTMeuygrhogI,43876
|
83
|
-
src/cli/commands/enhance.py,sha256=
|
76
|
+
src/cli/commands/enhance.py,sha256=KcSLRmhNDxbQa_XoJqcXtC16enyx8FWq20bkpmLSpyQ,11370
|
84
77
|
src/cli/commands/list.py,sha256=qey_XDoJkjBvvuVMilFqjMUdBRmbHkSyqGeM23E3xHM,5502
|
85
78
|
src/cli/commands/setup_cicd.py,sha256=ZgpMrYHXg3B_u5h5PxvVuC4T7Q2uQTYMNMwBBOlcKmg,32250
|
86
79
|
src/cli/utils/__init__.py,sha256=_cTmsXGPqOtK0q8UW5164QTltbJRJFR_Efxq_BRL1-o,1311
|
@@ -204,8 +197,8 @@ src/resources/locks/uv-live_api-cloud_run.lock,sha256=xOPEAiyHooNT2nMP1wbnJ2ekOD
|
|
204
197
|
src/utils/generate_locks.py,sha256=6V1B8V2BEuevWnXUsxZVTrLjXwFRII8UfsIGrQqZxVs,4320
|
205
198
|
src/utils/lock_utils.py,sha256=IFOMUWtb-ypm2Y8w8J5y2oI_-MaPuwPF_JOAAlnNudA,2275
|
206
199
|
src/utils/watch_and_rebuild.py,sha256=vP4yIiA7E_lj5sfQdJUl8TXas6V7msDg8XWUutAC05Q,6679
|
207
|
-
agent_starter_pack-0.11.
|
208
|
-
agent_starter_pack-0.11.
|
209
|
-
agent_starter_pack-0.11.
|
210
|
-
agent_starter_pack-0.11.
|
211
|
-
agent_starter_pack-0.11.
|
200
|
+
agent_starter_pack-0.11.1.dist-info/METADATA,sha256=fdeIAa2Bx6sAKcoy4p0qgFdbvVoZ5TRd-v9HGhzjUYE,11102
|
201
|
+
agent_starter_pack-0.11.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
202
|
+
agent_starter_pack-0.11.1.dist-info/entry_points.txt,sha256=U7uCxR7YulIhZ0L8R8Hui0Bsy6J7oyESBeDYJYMrQjA,56
|
203
|
+
agent_starter_pack-0.11.1.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
204
|
+
agent_starter_pack-0.11.1.dist-info/RECORD,,
|
@@ -64,10 +64,12 @@ jobs:
|
|
64
64
|
uses: 'google-github-actions/setup-gcloud@v2'
|
65
65
|
{%- endif %}
|
66
66
|
|
67
|
+
{%- if cookiecutter.deployment_target == 'agent_engine' %}
|
67
68
|
- name: Install uv and dependencies
|
68
69
|
run: |
|
69
70
|
pip install uv==0.6.12
|
70
71
|
uv sync --locked
|
72
|
+
{%- endif %}
|
71
73
|
|
72
74
|
{%- if cookiecutter.data_ingestion %}
|
73
75
|
- name: Deploy data ingestion pipeline (Production)
|
src/cli/commands/enhance.py
CHANGED
@@ -16,8 +16,10 @@ import pathlib
|
|
16
16
|
|
17
17
|
import click
|
18
18
|
from rich.console import Console
|
19
|
+
from rich.prompt import IntPrompt
|
19
20
|
|
20
21
|
from ..utils.logging import display_welcome_banner, handle_cli_error
|
22
|
+
from ..utils.template import get_available_agents
|
21
23
|
from .create import (
|
22
24
|
create,
|
23
25
|
get_available_base_templates,
|
@@ -28,6 +30,48 @@ from .create import (
|
|
28
30
|
console = Console()
|
29
31
|
|
30
32
|
|
33
|
+
def display_base_template_selection(current_base: str) -> str:
|
34
|
+
"""Display available base templates and prompt for selection."""
|
35
|
+
agents = get_available_agents()
|
36
|
+
|
37
|
+
if not agents:
|
38
|
+
raise click.ClickException("No base templates available")
|
39
|
+
|
40
|
+
console.print()
|
41
|
+
console.print("🔧 [bold]Base Template Selection[/bold]")
|
42
|
+
console.print()
|
43
|
+
console.print(f"Your project currently inherits from: [cyan]{current_base}[/cyan]")
|
44
|
+
console.print("Available base templates:")
|
45
|
+
|
46
|
+
# Create a mapping of choices to agent names
|
47
|
+
template_choices = {}
|
48
|
+
choice_num = 1
|
49
|
+
current_choice = None
|
50
|
+
|
51
|
+
for _num, agent in agents.items():
|
52
|
+
template_choices[choice_num] = agent["name"]
|
53
|
+
current_indicator = " (current)" if agent["name"] == current_base else ""
|
54
|
+
console.print(
|
55
|
+
f" {choice_num}. [bold]{agent['name']}[/]{current_indicator} - [dim]{agent['description']}[/]"
|
56
|
+
)
|
57
|
+
if agent["name"] == current_base:
|
58
|
+
current_choice = choice_num
|
59
|
+
choice_num += 1
|
60
|
+
|
61
|
+
if current_choice is None:
|
62
|
+
current_choice = 1
|
63
|
+
|
64
|
+
console.print()
|
65
|
+
choice = IntPrompt.ask(
|
66
|
+
"Select base template", default=current_choice, show_default=True
|
67
|
+
)
|
68
|
+
|
69
|
+
if choice in template_choices:
|
70
|
+
return template_choices[choice]
|
71
|
+
else:
|
72
|
+
raise ValueError(f"Invalid base template selection: {choice}")
|
73
|
+
|
74
|
+
|
31
75
|
@click.command()
|
32
76
|
@click.pass_context
|
33
77
|
@click.argument(
|
@@ -155,25 +199,35 @@ def enhance(
|
|
155
199
|
# Load config from current directory for inheritance info
|
156
200
|
current_dir = pathlib.Path.cwd()
|
157
201
|
source_config = load_remote_template_config(current_dir, cli_overrides)
|
158
|
-
|
159
|
-
|
160
|
-
console.print()
|
161
|
-
console.print(
|
162
|
-
f"Template inherits from base: [cyan][link=https://github.com/GoogleCloudPlatform/agent-starter-pack/tree/main/agents/{base_template_name}]{base_template_name}[/link][/cyan]"
|
163
|
-
)
|
202
|
+
original_base_template_name = get_base_template_name(source_config)
|
164
203
|
|
165
|
-
#
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
204
|
+
# Interactive base template selection if not provided via CLI and not auto-approved
|
205
|
+
if not base_template and not auto_approve:
|
206
|
+
selected_base_template = display_base_template_selection(
|
207
|
+
original_base_template_name
|
208
|
+
)
|
209
|
+
if selected_base_template != original_base_template_name:
|
210
|
+
# Update CLI overrides with the selected base template
|
211
|
+
cli_overrides["base_template"] = selected_base_template
|
212
|
+
base_template = selected_base_template
|
173
213
|
console.print(
|
174
|
-
"
|
214
|
+
f"✅ Selected base template: [cyan]{selected_base_template}[/cyan]"
|
175
215
|
)
|
176
|
-
|
216
|
+
console.print()
|
217
|
+
|
218
|
+
# Reload config with potential base template override
|
219
|
+
if cli_overrides.get("base_template"):
|
220
|
+
source_config = load_remote_template_config(current_dir, cli_overrides)
|
221
|
+
|
222
|
+
base_template_name = get_base_template_name(source_config)
|
223
|
+
|
224
|
+
# Show current inheritance info
|
225
|
+
if not auto_approve or base_template:
|
226
|
+
console.print()
|
227
|
+
console.print(
|
228
|
+
f"Template inherits from base: [cyan][link=https://github.com/GoogleCloudPlatform/agent-starter-pack/tree/main/agents/{base_template_name}]{base_template_name}[/link][/cyan]"
|
229
|
+
)
|
230
|
+
console.print()
|
177
231
|
|
178
232
|
# Validate project structure when using current directory template
|
179
233
|
if template_path == pathlib.Path("."):
|
@@ -1,39 +0,0 @@
|
|
1
|
-
# Copyright 2025 Google LLC
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
|
-
description: "A production-ready fullstack research agent that uses Gemini to strategize, research, and synthesize comprehensive reports with human-in-the-loop collaboration"
|
16
|
-
example_question: "A report on the latest Google I/O event"
|
17
|
-
settings:
|
18
|
-
requires_data_ingestion: false
|
19
|
-
requires_session: true
|
20
|
-
deployment_targets: ["agent_engine", "cloud_run"]
|
21
|
-
extra_dependencies: ["google-adk~=1.8.0"]
|
22
|
-
tags: ["adk"]
|
23
|
-
frontend_type: "adk_gemini_fullstack"
|
24
|
-
interactive_command: "dev"
|
25
|
-
commands:
|
26
|
-
override:
|
27
|
-
install: "uv sync --dev --extra jupyter && npm --prefix frontend install"
|
28
|
-
extra:
|
29
|
-
dev:
|
30
|
-
command: 'make dev-backend & make dev-frontend'
|
31
|
-
description: "Start the ADK API server and React frontend development server simultaneously"
|
32
|
-
dev-backend:
|
33
|
-
command:
|
34
|
-
agent_engine: 'uv run adk api_server app --allow_origins="*"'
|
35
|
-
cloud_run: 'ALLOW_ORIGINS="*" uv run uvicorn app.server:app --host 0.0.0.0 --port 8000 --reload'
|
36
|
-
description: "Start the ADK API server"
|
37
|
-
dev-frontend:
|
38
|
-
command: 'npm --prefix frontend run dev'
|
39
|
-
description: "Start the React frontend development server"
|
@@ -1,27 +0,0 @@
|
|
1
|
-
# Gemini Fullstack Agent Development Kit (ADK) Quickstart
|
2
|
-
|
3
|
-
> 🔍 **Sample Agent**: This agent is part of the [ADK Samples](https://github.com/google/adk-samples/tree/main/python/agents/gemini-fullstack) collection, showcasing agent implementations using the Agent Development Kit.
|
4
|
-
|
5
|
-
The **Gemini Fullstack Agent Development Kit (ADK) Quickstart** is a production-ready blueprint for building a sophisticated, fullstack research agent with Gemini. It's built to demonstrate how the ADK helps structure complex agentic workflows, build modular agents, and incorporate critical Human-in-the-Loop (HITL) steps.
|
6
|
-
|
7
|
-
<table>
|
8
|
-
<thead>
|
9
|
-
<tr>
|
10
|
-
<th colspan="2">Key Features</th>
|
11
|
-
</tr>
|
12
|
-
</thead>
|
13
|
-
<tbody>
|
14
|
-
<tr>
|
15
|
-
<td>🏗️</td>
|
16
|
-
<td><strong>Fullstack & Production-Ready:</strong> A complete React frontend and ADK-powered FastAPI backend, with deployment options for <a href="https://cloud.google.com/run">Google Cloud Run</a> and <a href="https://cloud.google.com/vertex-ai/generative-ai/docs/agent-engine/overview">Vertex AI Agent Engine</a>.</td>
|
17
|
-
</tr>
|
18
|
-
<tr>
|
19
|
-
<td>🧠</td>
|
20
|
-
<td><strong>Advanced Agentic Workflow:</strong> The agent uses Gemini to <strong>strategize</strong> a multi-step plan, <strong>reflect</strong> on findings to identify gaps, and <strong>synthesize</strong> a final, comprehensive report.</td>
|
21
|
-
</tr>
|
22
|
-
<tr>
|
23
|
-
<td>🔄</td>
|
24
|
-
<td><strong>Iterative & Human-in-the-Loop Research:</strong> Involves the user for plan approval, then autonomously loops through searching (via Gemini function calling) and refining its results until it has gathered sufficient information.</td>
|
25
|
-
</tr>
|
26
|
-
</tbody>
|
27
|
-
</table>
|