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.
Files changed (25) hide show
  1. {agent_starter_pack-0.13.1.dist-info → agent_starter_pack-0.14.1.dist-info}/METADATA +13 -4
  2. {agent_starter_pack-0.13.1.dist-info → agent_starter_pack-0.14.1.dist-info}/RECORD +23 -25
  3. agents/adk_base/notebooks/evaluating_adk_agent.ipynb +78 -71
  4. agents/agentic_rag/notebooks/evaluating_adk_agent.ipynb +78 -71
  5. llm.txt +87 -39
  6. src/base_template/Makefile +16 -1
  7. src/base_template/README.md +1 -1
  8. src/cli/commands/create.py +27 -5
  9. src/cli/commands/enhance.py +132 -6
  10. src/cli/commands/setup_cicd.py +91 -69
  11. src/cli/utils/cicd.py +105 -0
  12. src/cli/utils/gcp.py +19 -13
  13. src/cli/utils/logging.py +13 -1
  14. src/cli/utils/template.py +3 -0
  15. src/frontends/live_api_react/frontend/package-lock.json +9 -9
  16. src/frontends/live_api_react/frontend/src/App.tsx +12 -153
  17. src/frontends/live_api_react/frontend/src/components/side-panel/SidePanel.tsx +352 -3
  18. src/frontends/live_api_react/frontend/src/components/side-panel/side-panel.scss +249 -2
  19. src/frontends/live_api_react/frontend/src/utils/multimodal-live-client.ts +4 -1
  20. src/resources/docs/adk-cheatsheet.md +285 -38
  21. src/frontends/live_api_react/frontend/src/components/control-tray/ControlTray.tsx +0 -217
  22. src/frontends/live_api_react/frontend/src/components/control-tray/control-tray.scss +0 -201
  23. {agent_starter_pack-0.13.1.dist-info → agent_starter_pack-0.14.1.dist-info}/WHEEL +0 -0
  24. {agent_starter_pack-0.13.1.dist-info → agent_starter_pack-0.14.1.dist-info}/entry_points.txt +0 -0
  25. {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
- .indicators .streaming-indicator {
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(),