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.
- {agent_starter_pack-0.6.0.dist-info → agent_starter_pack-0.6.2.dist-info}/METADATA +1 -1
- {agent_starter_pack-0.6.0.dist-info → agent_starter_pack-0.6.2.dist-info}/RECORD +10 -10
- agents/adk_gemini_fullstack/README.md +25 -1
- agents/adk_gemini_fullstack/app/agent.py +16 -7
- agents/adk_gemini_fullstack/app/config.py +35 -0
- src/frontends/adk_gemini_fullstack/frontend/src/App.tsx +3 -3
- src/frontends/adk_gemini_fullstack/frontend/vite.config.ts +13 -2
- {agent_starter_pack-0.6.0.dist-info → agent_starter_pack-0.6.2.dist-info}/WHEEL +0 -0
- {agent_starter_pack-0.6.0.dist-info → agent_starter_pack-0.6.2.dist-info}/entry_points.txt +0 -0
- {agent_starter_pack-0.6.0.dist-info → agent_starter_pack-0.6.2.dist-info}/licenses/LICENSE +0 -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=
|
8
|
-
agents/adk_gemini_fullstack/app/agent.py,sha256=
|
9
|
-
agents/adk_gemini_fullstack/app/config.py,sha256=
|
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=
|
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=
|
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.
|
199
|
-
agent_starter_pack-0.6.
|
200
|
-
agent_starter_pack-0.6.
|
201
|
-
agent_starter_pack-0.6.
|
202
|
-
agent_starter_pack-0.6.
|
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(
|
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("
|
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("
|
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
|
-
|
22
|
-
|
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
|
},
|
File without changes
|
File without changes
|
File without changes
|