agent-starter-pack 0.6.0__py3-none-any.whl → 0.6.2__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-starter-pack
3
- Version: 0.6.0
3
+ Version: 0.6.2
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
@@ -4,9 +4,9 @@ agents/adk_base/notebooks/adk_app_testing.ipynb,sha256=kWYd-ButNGemupiPDIzhlQO0e
4
4
  agents/adk_base/notebooks/evaluating_adk_agent.ipynb,sha256=OMTiT3gAFWPvE9pPL8z7tsDwOU-l8wem5wH-OXPPlvk,56805
5
5
  agents/adk_base/template/.templateconfig.yaml,sha256=d6f_11cA0m6VMUzVPXETSoCViQe5b49ImzJAlkhskHw,893
6
6
  agents/adk_base/tests/integration/test_agent.py,sha256=VypgpEWrQegJBgc58V-BlIsbqh-Hii-hwmkwcz5feFw,1969
7
- agents/adk_gemini_fullstack/README.md,sha256=hluCNzKdwE32IQHbf0nAHKL7xMrMH2cXB6a4yaRo7uU,7473
8
- agents/adk_gemini_fullstack/app/agent.py,sha256=GNimHCEbYR70uEgHyhOLO0BkuS0sfNwUtSLPMcW9goE,15994
9
- agents/adk_gemini_fullstack/app/config.py,sha256=XND_ZTlNRze2E1IM8B5DYbhOv_iQXXAZj-CLI9YL4bo,230
7
+ agents/adk_gemini_fullstack/README.md,sha256=57Th3Mv2o0x2_6XnWMLnmZz_gNVaSY8te3--TfV9r_A,8147
8
+ agents/adk_gemini_fullstack/app/agent.py,sha256=bk67bpAge8_b-reI1VuF4PNTXFHqnD92hdVTVXslS4s,16402
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
12
12
  agents/adk_gemini_fullstack/template/.templateconfig.yaml,sha256=0vwRirGXHFw7RUVjS8umiMNu3TXvTKk9smufIOhDJn4,1658
@@ -108,9 +108,9 @@ src/frontends/adk_gemini_fullstack/frontend/package-lock.json,sha256=Pmb8NFfyEh7
108
108
  src/frontends/adk_gemini_fullstack/frontend/package.json,sha256=fsPrhf27JfN35B8015kiQGVpyil2NNi6tZiZV_B7kXk,1284
109
109
  src/frontends/adk_gemini_fullstack/frontend/tsconfig.json,sha256=LtqiCB6w68AjbIegDnbXa1YXKM_RQZZVVkAjfUNxyBo,753
110
110
  src/frontends/adk_gemini_fullstack/frontend/tsconfig.node.json,sha256=1BewvjsiZMJqSGXTqe94jo5yKdpi7yqI7UGoHgTv9mg,593
111
- src/frontends/adk_gemini_fullstack/frontend/vite.config.ts,sha256=FXGDs7HPxqgfI_zE2qfVcvsiJB66EKEH_TOH8ooSSYo,756
111
+ src/frontends/adk_gemini_fullstack/frontend/vite.config.ts,sha256=hxnoqbvxU6kljtTYOE49jhzurHiyr0cZvxugWSPvKsM,1150
112
112
  src/frontends/adk_gemini_fullstack/frontend/public/vite.svg,sha256=SnSK_UQ5GLsWWRyDTEAdrjPoeGGrXbrQgRw6O0qSFPs,1497
113
- src/frontends/adk_gemini_fullstack/frontend/src/App.tsx,sha256=BxXjPxOd0IMzfu78vO35ORvWWwmgImBHahlMWttvp-U,21518
113
+ src/frontends/adk_gemini_fullstack/frontend/src/App.tsx,sha256=X624JJ2LaDm1ztjb23r15f2fRzilVp6CNpw80HtuCAg,21473
114
114
  src/frontends/adk_gemini_fullstack/frontend/src/global.css,sha256=uNpkk45y9XVsmQs84D0KHN8B2i55ElSFZxHu6zml5E8,5037
115
115
  src/frontends/adk_gemini_fullstack/frontend/src/main.tsx,sha256=WYYxbfb0WHrY1BW7KB-pCxb3jslb1UeCDa26l9Ve0SQ,328
116
116
  src/frontends/adk_gemini_fullstack/frontend/src/utils.ts,sha256=Utm02hSGixxQ_T4hqlZqpdc8BuK1B2Mgk5X0vNK3V_4,170
@@ -195,8 +195,8 @@ src/resources/setup_cicd/providers.tf,sha256=Km4z6IJt7x7PLaa0kyZbBrO2m3lpuIJZFD5
195
195
  src/utils/generate_locks.py,sha256=6V1B8V2BEuevWnXUsxZVTrLjXwFRII8UfsIGrQqZxVs,4320
196
196
  src/utils/lock_utils.py,sha256=RSE6n3hBkH64xNm3Q5wrR0Pqbeo-oc7xaTOhA9yzHjk,2275
197
197
  src/utils/watch_and_rebuild.py,sha256=vP4yIiA7E_lj5sfQdJUl8TXas6V7msDg8XWUutAC05Q,6679
198
- agent_starter_pack-0.6.0.dist-info/METADATA,sha256=Fy5UgrxC0GnfacJgU9hwZPRfcRbvk7nCKuq344mwVh0,10454
199
- agent_starter_pack-0.6.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
200
- agent_starter_pack-0.6.0.dist-info/entry_points.txt,sha256=U7uCxR7YulIhZ0L8R8Hui0Bsy6J7oyESBeDYJYMrQjA,56
201
- agent_starter_pack-0.6.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
202
- agent_starter_pack-0.6.0.dist-info/RECORD,,
198
+ agent_starter_pack-0.6.2.dist-info/METADATA,sha256=-d0y3Ev6PpkXjlulqO676U5XhPjLB1Y-aWXaMgbJD_8,10454
199
+ agent_starter_pack-0.6.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
200
+ agent_starter_pack-0.6.2.dist-info/entry_points.txt,sha256=U7uCxR7YulIhZ0L8R8Hui0Bsy6J7oyESBeDYJYMrQjA,56
201
+ agent_starter_pack-0.6.2.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
202
+ agent_starter_pack-0.6.2.dist-info/RECORD,,
@@ -45,7 +45,7 @@ This command uses the [Agent Starter Pack](goo.gle/agent-starter-pack) to create
45
45
  python -m venv .venv && source .venv/bin/activate # On Windows: .venv\Scripts\activate
46
46
 
47
47
  # Install the starter pack and create your project
48
- pip install agent-starter-pack
48
+ pip install --upgrade agent-starter-pack
49
49
  agent-starter-pack create my-fullstack-agent -a adk_gemini_fullstack
50
50
  ```
51
51
 
@@ -75,6 +75,30 @@ Your agent should now be running!
75
75
  * Backend API: `http://localhost:8000`
76
76
  * Frontend UI: `http://localhost:5173`
77
77
 
78
+ ## 🔑 Using Google AI Studio API Keys
79
+
80
+ If you prefer to use [AI Studio](https://aistudio.google.com/) API keys:
81
+
82
+ 1. Create a `.env` file in the `/app` directory with:
83
+ ```
84
+ GOOGLE_GENAI_USE_VERTEXAI=FALSE
85
+ GOOGLE_API_KEY=YOUR_AI_STUDIO_API_KEY
86
+ ```
87
+
88
+ <details>
89
+ <summary>Or export the variables directly</summary>
90
+
91
+ ```bash
92
+ export GOOGLE_GENAI_USE_VERTEXAI=FALSE
93
+ export GOOGLE_API_KEY=YOUR_AI_STUDIO_API_KEY
94
+ ```
95
+ </details>
96
+
97
+
98
+ 2. Replace `YOUR_AI_STUDIO_API_KEY` with your actual key from [AI Studio](https://aistudio.google.com/app/apikey)
99
+
100
+ 3. This setting will use your API key instead of the default Vertex AI configuration.
101
+
78
102
  ## ☁️ Deployment
79
103
 
80
104
  You can quickly deploy your agent to a **development environment** on Google Cloud. You can deploy your latest code at any time with:
@@ -1,11 +1,23 @@
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
+
1
15
  import datetime
2
16
  import logging
3
- import os
4
17
  import re
5
18
  from collections.abc import AsyncGenerator
6
19
  from typing import Literal
7
20
 
8
- import google.auth
9
21
  from google.adk.agents import BaseAgent, LlmAgent, LoopAgent, SequentialAgent
10
22
  from google.adk.agents.callback_context import CallbackContext
11
23
  from google.adk.agents.invocation_context import InvocationContext
@@ -18,11 +30,6 @@ from pydantic import BaseModel, Field
18
30
 
19
31
  from .config import config
20
32
 
21
- _, project_id = google.auth.default()
22
- os.environ.setdefault("GOOGLE_CLOUD_PROJECT", project_id)
23
- os.environ.setdefault("GOOGLE_CLOUD_LOCATION", "global")
24
- os.environ.setdefault("GOOGLE_GENAI_USE_VERTEXAI", "True")
25
-
26
33
 
27
34
  # --- Structured Output Models ---
28
35
  class SearchQuery(BaseModel):
@@ -249,6 +256,8 @@ research_evaluator = LlmAgent(
249
256
  Your response must be a single, raw JSON object validating against the 'Feedback' schema.
250
257
  """,
251
258
  output_schema=Feedback,
259
+ disallow_transfer_to_parent=True,
260
+ disallow_transfer_to_peers=True,
252
261
  output_key="research_evaluation",
253
262
  )
254
263
 
@@ -1,8 +1,43 @@
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
+ import os
1
16
  from dataclasses import dataclass
2
17
 
18
+ import google.auth
19
+
20
+ # To use AI Studio credentials:
21
+ # 1. Create a .env file in the /app directory with:
22
+ # GOOGLE_GENAI_USE_VERTEXAI=FALSE
23
+ # GOOGLE_API_KEY=PASTE_YOUR_ACTUAL_API_KEY_HERE
24
+ # 2. This will override the default Vertex AI configuration
25
+ _, project_id = google.auth.default()
26
+ os.environ.setdefault("GOOGLE_CLOUD_PROJECT", project_id)
27
+ os.environ.setdefault("GOOGLE_CLOUD_LOCATION", "global")
28
+ os.environ.setdefault("GOOGLE_GENAI_USE_VERTEXAI", "True")
29
+
3
30
 
4
31
  @dataclass
5
32
  class ResearchConfiguration:
33
+ """Configuration for research-related models and parameters.
34
+
35
+ Attributes:
36
+ critic_model (str): Model for evaluation tasks.
37
+ worker_model (str): Model for working/generation tasks.
38
+ max_search_iterations (int): Maximum search iterations allowed.
39
+ """
40
+
6
41
  critic_model: str = "gemini-2.5-pro"
7
42
  worker_model: str = "gemini-2.5-flash"
8
43
  max_search_iterations: int = 5
@@ -82,7 +82,7 @@ export default function App() {
82
82
 
83
83
  const createSession = async (): Promise<{userId: string, sessionId: string, appName: string}> => {
84
84
  const generatedSessionId = uuidv4();
85
- const response = await fetch(`http://0.0.0.0:8000/apps/app/users/u_999/sessions/${generatedSessionId}`, {
85
+ const response = await fetch(`/api/apps/app/users/u_999/sessions/${generatedSessionId}`, {
86
86
  method: "POST",
87
87
  headers: {
88
88
  "Content-Type": "application/json"
@@ -104,7 +104,7 @@ export default function App() {
104
104
  const checkBackendHealth = async (): Promise<boolean> => {
105
105
  try {
106
106
  // Use the docs endpoint or root endpoint to check if backend is ready
107
- const response = await fetch("http://0.0.0.0:8000/docs", {
107
+ const response = await fetch("/api/docs", {
108
108
  method: "GET",
109
109
  headers: {
110
110
  "Content-Type": "application/json"
@@ -323,7 +323,7 @@ export default function App() {
323
323
 
324
324
  // Send the message with retry logic
325
325
  const sendMessage = async () => {
326
- const response = await fetch("http://0.0.0.0:8000/run_sse", {
326
+ const response = await fetch("/api/run_sse", {
327
327
  method: "POST",
328
328
  headers: {
329
329
  "Content-Type": "application/json",
@@ -18,8 +18,19 @@ export default defineConfig({
18
18
  "/api": {
19
19
  target: "http://127.0.0.1:8000", // Default backend address
20
20
  changeOrigin: true,
21
- // Optionally rewrite path if needed (e.g., remove /api prefix if backend doesn't expect it)
22
- // rewrite: (path) => path.replace(/^\/api/, ''),
21
+ secure: false,
22
+ rewrite: (path) => path.replace(/^\/api/, ''),
23
+ configure: (proxy, options) => {
24
+ proxy.on('error', (err, req, res) => {
25
+ console.log('proxy error', err);
26
+ });
27
+ proxy.on('proxyReq', (proxyReq, req, res) => {
28
+ console.log('Sending Request to the Target:', req.method, req.url);
29
+ });
30
+ proxy.on('proxyRes', (proxyRes, req, res) => {
31
+ console.log('Received Response from the Target:', proxyRes.statusCode, req.url);
32
+ });
33
+ },
23
34
  },
24
35
  },
25
36
  },