agent-starter-pack 0.13.1__py3-none-any.whl → 0.14.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.13.1.dist-info → agent_starter_pack-0.14.1.dist-info}/METADATA +13 -4
- {agent_starter_pack-0.13.1.dist-info → agent_starter_pack-0.14.1.dist-info}/RECORD +23 -25
- agents/adk_base/notebooks/evaluating_adk_agent.ipynb +78 -71
- agents/agentic_rag/notebooks/evaluating_adk_agent.ipynb +78 -71
- llm.txt +87 -39
- src/base_template/Makefile +16 -1
- src/base_template/README.md +1 -1
- src/cli/commands/create.py +27 -5
- src/cli/commands/enhance.py +132 -6
- src/cli/commands/setup_cicd.py +91 -69
- src/cli/utils/cicd.py +105 -0
- src/cli/utils/gcp.py +19 -13
- src/cli/utils/logging.py +13 -1
- src/cli/utils/template.py +3 -0
- src/frontends/live_api_react/frontend/package-lock.json +9 -9
- src/frontends/live_api_react/frontend/src/App.tsx +12 -153
- src/frontends/live_api_react/frontend/src/components/side-panel/SidePanel.tsx +352 -3
- src/frontends/live_api_react/frontend/src/components/side-panel/side-panel.scss +249 -2
- src/frontends/live_api_react/frontend/src/utils/multimodal-live-client.ts +4 -1
- src/resources/docs/adk-cheatsheet.md +285 -38
- src/frontends/live_api_react/frontend/src/components/control-tray/ControlTray.tsx +0 -217
- src/frontends/live_api_react/frontend/src/components/control-tray/control-tray.scss +0 -201
- {agent_starter_pack-0.13.1.dist-info → agent_starter_pack-0.14.1.dist-info}/WHEEL +0 -0
- {agent_starter_pack-0.13.1.dist-info → agent_starter_pack-0.14.1.dist-info}/entry_points.txt +0 -0
- {agent_starter_pack-0.13.1.dist-info → agent_starter_pack-0.14.1.dist-info}/licenses/LICENSE +0 -0
@@ -121,9 +121,39 @@
|
|
121
121
|
transition-delay: 0.1s;
|
122
122
|
}
|
123
123
|
|
124
|
-
.
|
125
|
-
width: 30px;
|
124
|
+
.connection-settings {
|
126
125
|
opacity: 0;
|
126
|
+
display: none;
|
127
|
+
transition: all 0.2s ease-in allow-discrete;
|
128
|
+
}
|
129
|
+
|
130
|
+
.control-tray {
|
131
|
+
opacity: 0;
|
132
|
+
display: none;
|
133
|
+
transition: all 0.2s ease-in allow-discrete;
|
134
|
+
|
135
|
+
.actions-nav {
|
136
|
+
opacity: 0;
|
137
|
+
display: none;
|
138
|
+
}
|
139
|
+
|
140
|
+
.connection-status {
|
141
|
+
opacity: 0;
|
142
|
+
display: none;
|
143
|
+
}
|
144
|
+
}
|
145
|
+
|
146
|
+
.indicators {
|
147
|
+
.react-select {
|
148
|
+
opacity: 0;
|
149
|
+
display: none;
|
150
|
+
transition: all 0.2s ease-in allow-discrete;
|
151
|
+
}
|
152
|
+
|
153
|
+
.streaming-indicator {
|
154
|
+
width: 30px;
|
155
|
+
opacity: 0;
|
156
|
+
}
|
127
157
|
}
|
128
158
|
|
129
159
|
.opener {
|
@@ -135,6 +165,15 @@
|
|
135
165
|
display: none;
|
136
166
|
transition: all 0.2s ease-in allow-discrete;
|
137
167
|
}
|
168
|
+
|
169
|
+
.audio-pulse-bottom {
|
170
|
+
.pulse-container {
|
171
|
+
.pulse-label {
|
172
|
+
opacity: 0;
|
173
|
+
display: none;
|
174
|
+
}
|
175
|
+
}
|
176
|
+
}
|
138
177
|
}
|
139
178
|
|
140
179
|
.indicators {
|
@@ -178,6 +217,214 @@
|
|
178
217
|
/*scrollbar-gutter: stable both-edges;*/
|
179
218
|
}
|
180
219
|
|
220
|
+
.connection-settings {
|
221
|
+
border-bottom: 1px solid var(--Neutral-20);
|
222
|
+
|
223
|
+
.connection-expander {
|
224
|
+
background: var(--Neutral-10);
|
225
|
+
border: none;
|
226
|
+
color: var(--Neutral-90);
|
227
|
+
cursor: pointer;
|
228
|
+
font-size: 14px;
|
229
|
+
font-weight: 500;
|
230
|
+
padding: 12px 25px;
|
231
|
+
width: 100%;
|
232
|
+
text-align: left;
|
233
|
+
display: flex;
|
234
|
+
justify-content: space-between;
|
235
|
+
align-items: center;
|
236
|
+
|
237
|
+
&:hover {
|
238
|
+
background: var(--Neutral-15);
|
239
|
+
}
|
240
|
+
|
241
|
+
span {
|
242
|
+
font-size: 12px;
|
243
|
+
}
|
244
|
+
}
|
245
|
+
|
246
|
+
.connection-content {
|
247
|
+
padding: 0 25px 12px;
|
248
|
+
background: var(--Neutral-05);
|
249
|
+
|
250
|
+
.setting-group {
|
251
|
+
margin-bottom: 12px;
|
252
|
+
|
253
|
+
label {
|
254
|
+
display: block;
|
255
|
+
color: var(--Neutral-80);
|
256
|
+
font-size: 13px;
|
257
|
+
margin-bottom: 4px;
|
258
|
+
}
|
259
|
+
|
260
|
+
.setting-input {
|
261
|
+
width: 100%;
|
262
|
+
background: var(--Neutral-15);
|
263
|
+
border: 1px solid var(--Neutral-20);
|
264
|
+
border-radius: 4px;
|
265
|
+
color: var(--Neutral-90);
|
266
|
+
font-size: 13px;
|
267
|
+
padding: 8px 12px;
|
268
|
+
|
269
|
+
&:focus {
|
270
|
+
outline: none;
|
271
|
+
border-color: var(--Blue-500);
|
272
|
+
}
|
273
|
+
}
|
274
|
+
}
|
275
|
+
|
276
|
+
.feedback-button {
|
277
|
+
background: var(--Neutral-20);
|
278
|
+
border: 1px solid var(--Neutral-30);
|
279
|
+
border-radius: 4px;
|
280
|
+
color: var(--Neutral-90);
|
281
|
+
cursor: pointer;
|
282
|
+
font-size: 13px;
|
283
|
+
padding: 8px 16px;
|
284
|
+
|
285
|
+
&:hover {
|
286
|
+
background: var(--Neutral-25);
|
287
|
+
}
|
288
|
+
}
|
289
|
+
}
|
290
|
+
}
|
291
|
+
|
292
|
+
.control-tray {
|
293
|
+
border-bottom: 1px solid var(--Neutral-20);
|
294
|
+
padding: 12px 25px;
|
295
|
+
|
296
|
+
.actions-nav {
|
297
|
+
display: flex;
|
298
|
+
gap: 8px;
|
299
|
+
align-items: center;
|
300
|
+
margin-bottom: 8px;
|
301
|
+
|
302
|
+
.action-button {
|
303
|
+
background: var(--Neutral-15);
|
304
|
+
border: 1px solid var(--Neutral-20);
|
305
|
+
border-radius: 8px;
|
306
|
+
color: var(--Neutral-70);
|
307
|
+
cursor: pointer;
|
308
|
+
display: flex;
|
309
|
+
align-items: center;
|
310
|
+
justify-content: center;
|
311
|
+
height: 40px;
|
312
|
+
width: 40px;
|
313
|
+
transition: all 0.2s ease;
|
314
|
+
|
315
|
+
&:hover {
|
316
|
+
background: var(--Neutral-20);
|
317
|
+
color: var(--Neutral-90);
|
318
|
+
}
|
319
|
+
|
320
|
+
&.connect-toggle {
|
321
|
+
background: var(--Blue-600);
|
322
|
+
border-color: var(--Blue-600);
|
323
|
+
color: white;
|
324
|
+
|
325
|
+
&:hover {
|
326
|
+
background: var(--Blue-700);
|
327
|
+
}
|
328
|
+
|
329
|
+
&.connected {
|
330
|
+
background: var(--Red-600);
|
331
|
+
border-color: var(--Red-600);
|
332
|
+
|
333
|
+
&:hover {
|
334
|
+
background: var(--Red-700);
|
335
|
+
}
|
336
|
+
}
|
337
|
+
}
|
338
|
+
|
339
|
+
&.mic-button {
|
340
|
+
&:hover {
|
341
|
+
color: var(--Blue-500);
|
342
|
+
}
|
343
|
+
}
|
344
|
+
|
345
|
+
// Active state for buttons when they're "on"
|
346
|
+
&.active {
|
347
|
+
background: var(--Blue-600) !important;
|
348
|
+
border-color: var(--Blue-600) !important;
|
349
|
+
color: white !important;
|
350
|
+
|
351
|
+
&:hover {
|
352
|
+
background: var(--Blue-700) !important;
|
353
|
+
border-color: var(--Blue-700) !important;
|
354
|
+
}
|
355
|
+
}
|
356
|
+
|
357
|
+
&.no-action {
|
358
|
+
cursor: default;
|
359
|
+
border-style: dashed;
|
360
|
+
|
361
|
+
&:hover {
|
362
|
+
background: var(--Neutral-15);
|
363
|
+
color: var(--Neutral-70);
|
364
|
+
}
|
365
|
+
}
|
366
|
+
|
367
|
+
.material-symbols-outlined {
|
368
|
+
font-size: 20px;
|
369
|
+
}
|
370
|
+
}
|
371
|
+
|
372
|
+
&.disabled .action-button:not(.connect-toggle) {
|
373
|
+
opacity: 0.5;
|
374
|
+
cursor: not-allowed;
|
375
|
+
pointer-events: none;
|
376
|
+
|
377
|
+
&:hover {
|
378
|
+
background: var(--Neutral-15);
|
379
|
+
color: var(--Neutral-70);
|
380
|
+
}
|
381
|
+
}
|
382
|
+
|
383
|
+
// Ensure connect button is always clickable
|
384
|
+
.action-button.connect-toggle {
|
385
|
+
pointer-events: auto !important;
|
386
|
+
cursor: pointer !important;
|
387
|
+
}
|
388
|
+
}
|
389
|
+
|
390
|
+
.connection-status {
|
391
|
+
display: flex;
|
392
|
+
justify-content: center;
|
393
|
+
|
394
|
+
.text-indicator {
|
395
|
+
color: var(--Neutral-60);
|
396
|
+
font-size: 12px;
|
397
|
+
font-weight: 500;
|
398
|
+
|
399
|
+
&.connected {
|
400
|
+
color: var(--Blue-500);
|
401
|
+
}
|
402
|
+
}
|
403
|
+
}
|
404
|
+
}
|
405
|
+
|
406
|
+
.audio-pulse-bottom {
|
407
|
+
border-top: 1px solid var(--Neutral-20);
|
408
|
+
padding: 12px 25px;
|
409
|
+
flex-shrink: 0;
|
410
|
+
background: var(--Neutral-05);
|
411
|
+
|
412
|
+
.pulse-container {
|
413
|
+
display: flex;
|
414
|
+
align-items: center;
|
415
|
+
justify-content: center;
|
416
|
+
gap: 12px;
|
417
|
+
|
418
|
+
.pulse-label {
|
419
|
+
color: var(--Neutral-80);
|
420
|
+
font-size: 12px;
|
421
|
+
font-weight: 500;
|
422
|
+
text-transform: uppercase;
|
423
|
+
letter-spacing: 0.5px;
|
424
|
+
}
|
425
|
+
}
|
426
|
+
}
|
427
|
+
|
181
428
|
.input-container {
|
182
429
|
height: 50px;
|
183
430
|
flex-grow: 0;
|
@@ -74,7 +74,6 @@ export class MultimodalLiveClient extends EventEmitter<MultimodalLiveClientEvent
|
|
74
74
|
private userId?: string;
|
75
75
|
constructor({ url, userId, runId }: MultimodalLiveAPIClientConnection) {
|
76
76
|
super();
|
77
|
-
// Use relative URL that works with integrated setup and deployments
|
78
77
|
const defaultWsUrl = `${window.location.protocol === 'https:' ? 'wss:' : 'ws:'}//${window.location.host}/ws`;
|
79
78
|
url = url || defaultWsUrl;
|
80
79
|
this.url = new URL("ws", url).href;
|
@@ -83,6 +82,10 @@ export class MultimodalLiveClient extends EventEmitter<MultimodalLiveClientEvent
|
|
83
82
|
this.send = this.send.bind(this);
|
84
83
|
}
|
85
84
|
|
85
|
+
get currentRunId(): string {
|
86
|
+
return this.runId;
|
87
|
+
}
|
88
|
+
|
86
89
|
log(type: string, message: StreamingLog["message"]) {
|
87
90
|
const log: StreamingLog = {
|
88
91
|
date: new Date(),
|