agentgui 1.0.930 → 1.0.932

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 (128) hide show
  1. package/AGENTS.md +35 -12
  2. package/database.js +31 -2
  3. package/lib/http-handler.js +11 -25
  4. package/lib/routes-registry.js +4 -48
  5. package/lib/server-startup.js +3 -11
  6. package/lib/ws-setup.js +2 -1
  7. package/package.json +3 -3
  8. package/server.js +7 -1
  9. package/site/app/js/app.js +64 -68
  10. package/site/app/js/backend.js +1 -1
  11. package/static/lib/xstate.umd.min.js +1 -1
  12. package/lib/db-queries-chunks.js +0 -195
  13. package/lib/db-queries-chunks2.js +0 -82
  14. package/lib/db-queries-cleanup.js +0 -74
  15. package/lib/db-queries-del.js +0 -141
  16. package/lib/db-queries-events.js +0 -68
  17. package/lib/db-queries-import.js +0 -133
  18. package/lib/db-queries-messages.js +0 -102
  19. package/lib/db-queries-sessions.js +0 -112
  20. package/lib/db-queries-streams.js +0 -100
  21. package/lib/db-queries.js +0 -89
  22. package/lib/jsonl-parser.js +0 -190
  23. package/lib/jsonl-watcher.js +0 -64
  24. package/lib/routes-agent-actions.js +0 -61
  25. package/lib/routes-auth-config.js +0 -30
  26. package/lib/routes-conversations.js +0 -96
  27. package/lib/routes-debug.js +0 -119
  28. package/lib/routes-messages.js +0 -139
  29. package/lib/routes-runs.js +0 -156
  30. package/lib/routes-scripts.js +0 -135
  31. package/lib/routes-sessions.js +0 -144
  32. package/lib/routes-threads.js +0 -100
  33. package/lib/routes-util.js +0 -110
  34. package/lib/ws-handlers-conv.js +0 -138
  35. package/lib/ws-handlers-conv2.js +0 -169
  36. package/lib/ws-handlers-msg.js +0 -121
  37. package/lib/ws-handlers-queue.js +0 -56
  38. package/lib/ws-handlers-run.js +0 -182
  39. package/lib/ws-handlers-scripts.js +0 -66
  40. package/lib/ws-handlers-session.js +0 -105
  41. package/lib/ws-handlers-session2.js +0 -85
  42. package/lib/ws-legacy-handlers.js +0 -51
  43. package/static/app.js +0 -261
  44. package/static/css/app-shell.css +0 -419
  45. package/static/css/brand-bible.css +0 -591
  46. package/static/css/colors_and_type.css +0 -568
  47. package/static/css/gmail-skin.css +0 -663
  48. package/static/css/main.css +0 -4015
  49. package/static/css/tools-popup.css +0 -472
  50. package/static/index.html +0 -418
  51. package/static/js/agent-auth.js +0 -146
  52. package/static/js/app-shortcuts.js +0 -30
  53. package/static/js/audio-recorder-processor.js +0 -18
  54. package/static/js/client-agents.js +0 -155
  55. package/static/js/client-cache.js +0 -171
  56. package/static/js/client-conv.js +0 -198
  57. package/static/js/client-events.js +0 -164
  58. package/static/js/client-exec.js +0 -160
  59. package/static/js/client-helpers.js +0 -199
  60. package/static/js/client-load.js +0 -175
  61. package/static/js/client-render.js +0 -132
  62. package/static/js/client-scroll.js +0 -178
  63. package/static/js/client-status.js +0 -167
  64. package/static/js/client-streaming.js +0 -117
  65. package/static/js/client-streaming2.js +0 -116
  66. package/static/js/client-streaming3.js +0 -153
  67. package/static/js/client-streaming4.js +0 -194
  68. package/static/js/client-ui-controls.js +0 -170
  69. package/static/js/client-ui.js +0 -128
  70. package/static/js/client-ui2.js +0 -160
  71. package/static/js/client-url.js +0 -93
  72. package/static/js/client-utils.js +0 -174
  73. package/static/js/client-ws-msg.js +0 -88
  74. package/static/js/client-ws.js +0 -161
  75. package/static/js/client.js +0 -145
  76. package/static/js/codec.js +0 -4
  77. package/static/js/conv-list-machine.js +0 -145
  78. package/static/js/conv-list-renderer.js +0 -198
  79. package/static/js/conv-machine.js +0 -110
  80. package/static/js/conv-sidebar-actions.js +0 -188
  81. package/static/js/conv-sidebar-clone.js +0 -91
  82. package/static/js/conversations.js +0 -116
  83. package/static/js/dialogs-types.js +0 -111
  84. package/static/js/dialogs.js +0 -53
  85. package/static/js/event-filter-config.js +0 -36
  86. package/static/js/event-processor.js +0 -181
  87. package/static/js/features.js +0 -187
  88. package/static/js/image-loader-element.js +0 -76
  89. package/static/js/image-loader.js +0 -146
  90. package/static/js/prompt-machine.js +0 -108
  91. package/static/js/recording-machine.js +0 -49
  92. package/static/js/script-runner.js +0 -192
  93. package/static/js/state-barrier.js +0 -105
  94. package/static/js/streaming-renderer-dispatch.js +0 -144
  95. package/static/js/streaming-renderer-events.js +0 -163
  96. package/static/js/streaming-renderer-events2.js +0 -125
  97. package/static/js/streaming-renderer-params.js +0 -38
  98. package/static/js/streaming-renderer-render-misc.js +0 -107
  99. package/static/js/streaming-renderer-render.js +0 -181
  100. package/static/js/streaming-renderer-render2.js +0 -149
  101. package/static/js/streaming-renderer-render3.js +0 -142
  102. package/static/js/streaming-renderer-static.js +0 -181
  103. package/static/js/streaming-renderer-static2.js +0 -140
  104. package/static/js/streaming-renderer-stream.js +0 -170
  105. package/static/js/streaming-renderer-text.js +0 -185
  106. package/static/js/streaming-renderer-tools.js +0 -189
  107. package/static/js/streaming-renderer-tools2.js +0 -92
  108. package/static/js/streaming-renderer.js +0 -200
  109. package/static/js/syntax-highlighter-render.js +0 -72
  110. package/static/js/syntax-highlighter.js +0 -131
  111. package/static/js/terminal-machine.js +0 -51
  112. package/static/js/terminal.js +0 -178
  113. package/static/js/ui-components-rendering.js +0 -62
  114. package/static/js/ui-components.js +0 -88
  115. package/static/js/websocket-manager.js +0 -107
  116. package/static/js/ws-client.js +0 -87
  117. package/static/js/ws-core.js +0 -162
  118. package/static/js/ws-latency.js +0 -88
  119. package/static/js/ws-machine.js +0 -68
  120. package/static/lib/msgpackr.min.js +0 -2
  121. package/static/theme.js +0 -74
  122. package/static/vendor/highlight-js.css +0 -10
  123. package/static/vendor/highlight.min.js +0 -1244
  124. package/static/vendor/prism-dark.css +0 -129
  125. package/static/vendor/rippleui.css +0 -35
  126. package/static/vendor/xterm-addon-fit.min.js +0 -8
  127. package/static/vendor/xterm.css +0 -8
  128. package/static/vendor/xterm.min.js +0 -8
@@ -1,663 +0,0 @@
1
- /*
2
- * gmail-skin.css — Gmail-inspired layout and visual theme.
3
- * Loaded LAST — wins over brand-bible.css.
4
- */
5
-
6
- /* ── Design tokens ─────────────────────────────────────────── */
7
- :root {
8
- --gm-blue: #1a73e8;
9
- --gm-blue-hover: #1557b0;
10
- --gm-red: #ea4335;
11
- --gm-surface: #f6f8fc;
12
- --gm-panel: #ffffff;
13
- --gm-hover: #f1f3f4;
14
- --gm-active-bg: #d3e3fd;
15
- --gm-active-text: #0b57d0;
16
- --gm-border: #e0e0e0;
17
- --gm-text-1: #202124;
18
- --gm-text-2: #5f6368;
19
- --gm-text-3: #9aa0a6;
20
- --gm-rail-w: 72px;
21
- --gm-sidebar-w: 280px;
22
- --gm-header-h: 64px;
23
- --gm-radius-pill: 9999px;
24
- --gm-radius-lg: 16px;
25
- --gm-radius-md: 8px;
26
- --gm-shadow-1: 0 1px 2px rgba(60,64,67,.3), 0 1px 3px 1px rgba(60,64,67,.15);
27
- --gm-shadow-2: 0 1px 3px rgba(60,64,67,.3), 0 4px 8px 3px rgba(60,64,67,.15);
28
- --gm-font: 'Google Sans', 'Roboto', -apple-system, BlinkMacSystemFont, 'Segoe UI', Arial, sans-serif;
29
- }
30
-
31
- html.dark, [data-theme="dark"] {
32
- --gm-surface: #202124;
33
- --gm-panel: #292a2d;
34
- --gm-hover: #35363a;
35
- --gm-active-bg: #1e3a5f;
36
- --gm-active-text: #8ab4f8;
37
- --gm-border: #3c4043;
38
- --gm-text-1: #e8eaed;
39
- --gm-text-2: #bdc1c6;
40
- --gm-text-3: #9aa0a6;
41
- --gm-shadow-1: 0 1px 2px rgba(0,0,0,.4), 0 1px 3px 1px rgba(0,0,0,.2);
42
- --gm-shadow-2: 0 1px 3px rgba(0,0,0,.4), 0 4px 8px 3px rgba(0,0,0,.2);
43
- }
44
-
45
- /* ── Base ───────────────────────────────────────────────────── */
46
- html, body {
47
- font-family: var(--gm-font) !important;
48
- background: var(--gm-surface) !important;
49
- color: var(--gm-text-1) !important;
50
- -webkit-font-smoothing: antialiased;
51
- }
52
-
53
- /* Kill brand-bible flat border mandate for gmail layout elements */
54
- .app-shell,
55
- .nav-rail,
56
- .sidebar,
57
- .main-header,
58
- .main-panel,
59
- .sidebar-header,
60
- .sidebar-search-bar,
61
- .input-section,
62
- .input-card,
63
- .status-badge,
64
- .sidebar-list,
65
- .streaming-status-bar {
66
- border: none !important;
67
- border-radius: 0 !important;
68
- box-shadow: none !important;
69
- }
70
-
71
- /* ── App shell: rail + sidebar + main ──────────────────────── */
72
- .app-shell {
73
- display: grid !important;
74
- grid-template-columns: var(--gm-rail-w) var(--gm-sidebar-w) 1fr;
75
- grid-template-rows: 1fr;
76
- background: var(--gm-surface) !important;
77
- }
78
-
79
- /* When sidebar collapsed: collapse the sidebar column */
80
- .app-shell:has(.sidebar.collapsed) {
81
- grid-template-columns: var(--gm-rail-w) 0 1fr;
82
- }
83
-
84
- /* ── Nav Rail ───────────────────────────────────────────────── */
85
- .nav-rail {
86
- width: var(--gm-rail-w);
87
- display: flex !important;
88
- flex-direction: column;
89
- align-items: center;
90
- padding: 8px 0;
91
- background: var(--gm-surface) !important;
92
- border-right: none !important;
93
- gap: 4px;
94
- overflow: hidden;
95
- flex-shrink: 0;
96
- }
97
-
98
- .nav-rail-item {
99
- display: flex;
100
- flex-direction: column;
101
- align-items: center;
102
- justify-content: center;
103
- gap: 4px;
104
- width: 56px;
105
- min-height: 56px;
106
- padding: 8px 4px;
107
- background: transparent;
108
- border: none !important;
109
- border-radius: var(--gm-radius-lg) !important;
110
- cursor: pointer;
111
- color: var(--gm-text-2);
112
- transition: background-color 0.15s;
113
- }
114
-
115
- .nav-rail-item:hover {
116
- background: var(--gm-hover) !important;
117
- color: var(--gm-text-1);
118
- }
119
-
120
- .nav-rail-item.active {
121
- background: var(--gm-active-bg) !important;
122
- color: var(--gm-active-text);
123
- }
124
-
125
- .nav-rail-item svg {
126
- width: 20px;
127
- height: 20px;
128
- flex-shrink: 0;
129
- }
130
-
131
- .nav-rail-label {
132
- font-size: 10px;
133
- font-family: var(--gm-font);
134
- font-weight: 500;
135
- letter-spacing: 0;
136
- line-height: 1;
137
- text-align: center;
138
- white-space: nowrap;
139
- }
140
-
141
- /* Compose button: pill FAB style */
142
- .nav-rail-compose {
143
- width: 56px;
144
- min-height: 56px;
145
- background: var(--gm-panel) !important;
146
- box-shadow: var(--gm-shadow-1) !important;
147
- border-radius: var(--gm-radius-lg) !important;
148
- margin-bottom: 8px;
149
- color: var(--gm-text-1) !important;
150
- }
151
-
152
- .nav-rail-compose:hover {
153
- box-shadow: var(--gm-shadow-2) !important;
154
- background: var(--gm-hover) !important;
155
- }
156
-
157
- /* ── Sidebar ────────────────────────────────────────────────── */
158
- .sidebar {
159
- width: var(--gm-sidebar-w) !important;
160
- background: var(--gm-surface) !important;
161
- border-right: none !important;
162
- padding-top: 4px;
163
- overflow: hidden;
164
- }
165
-
166
- .sidebar.collapsed {
167
- width: 0 !important;
168
- min-width: 0 !important;
169
- }
170
-
171
- .sidebar-header {
172
- padding: 12px 8px 8px !important;
173
- background: transparent !important;
174
- min-height: unset !important;
175
- border: none !important;
176
- }
177
-
178
- .sidebar-header h2, .sidebar-header .brand-line {
179
- font-family: var(--gm-font) !important;
180
- font-size: 18px !important;
181
- font-weight: 400 !important;
182
- color: var(--gm-text-2) !important;
183
- letter-spacing: 0 !important;
184
- text-transform: none !important;
185
- }
186
-
187
- /* Hide the new-conversation button in sidebar header — compose is in rail */
188
- .sidebar-new-btn {
189
- display: none !important;
190
- }
191
-
192
- /* Sidebar overflow button */
193
- .sidebar-overflow-btn {
194
- background: transparent !important;
195
- border: none !important;
196
- border-radius: var(--gm-radius-pill) !important;
197
- width: 32px;
198
- height: 32px;
199
- color: var(--gm-text-2) !important;
200
- }
201
- .sidebar-overflow-btn:hover {
202
- background: var(--gm-hover) !important;
203
- }
204
-
205
- .sidebar-overflow-menu {
206
- background: var(--gm-panel) !important;
207
- box-shadow: var(--gm-shadow-2) !important;
208
- border: none !important;
209
- border-radius: var(--gm-radius-md) !important;
210
- padding: 8px 0 !important;
211
- }
212
-
213
- .sidebar-overflow-menu-item {
214
- padding: 8px 16px !important;
215
- font-size: 13px !important;
216
- font-family: var(--gm-font) !important;
217
- color: var(--gm-text-1) !important;
218
- border-radius: 0 !important;
219
- border: none !important;
220
- }
221
- .sidebar-overflow-menu-item:hover {
222
- background: var(--gm-hover) !important;
223
- }
224
- .sidebar-overflow-menu-item.danger { color: var(--gm-red) !important; }
225
-
226
- /* Sidebar search */
227
- .sidebar-search-bar {
228
- padding: 4px 12px 8px !important;
229
- background: transparent !important;
230
- border: none !important;
231
- }
232
-
233
- .sidebar-search-input {
234
- background: var(--gm-panel) !important;
235
- border: 1px solid var(--gm-border) !important;
236
- border-radius: var(--gm-radius-pill) !important;
237
- height: 36px !important;
238
- padding: 0 16px !important;
239
- font-size: 13px !important;
240
- font-family: var(--gm-font) !important;
241
- color: var(--gm-text-1) !important;
242
- box-shadow: var(--gm-shadow-1) !important;
243
- transition: box-shadow 0.15s;
244
- }
245
- .sidebar-search-input:focus {
246
- outline: none !important;
247
- box-shadow: var(--gm-shadow-2) !important;
248
- }
249
-
250
- /* ── Conversation list ─────────────────────────────────────── */
251
- .sidebar-list {
252
- padding: 4px 0 !important;
253
- border: none !important;
254
- }
255
-
256
- .conversation-item {
257
- display: grid !important;
258
- grid-template-columns: 1fr auto auto auto auto !important;
259
- align-items: center;
260
- padding: 0 16px !important;
261
- margin: 0 8px !important;
262
- height: 56px;
263
- border-radius: var(--gm-radius-pill) !important;
264
- border: none !important;
265
- border-left: none !important;
266
- cursor: pointer;
267
- gap: 0;
268
- transition: background-color 0.1s;
269
- }
270
-
271
- .conversation-item:hover {
272
- background: var(--gm-hover) !important;
273
- transform: none !important;
274
- }
275
-
276
- .conversation-item.active {
277
- background: var(--gm-active-bg) !important;
278
- color: var(--gm-active-text) !important;
279
- }
280
-
281
- .conversation-item-content {
282
- flex: 1;
283
- min-width: 0;
284
- overflow: hidden;
285
- padding-right: 8px;
286
- }
287
-
288
- .conversation-item-title {
289
- font-size: 13px !important;
290
- font-family: var(--gm-font) !important;
291
- font-weight: 600 !important;
292
- color: var(--gm-text-1);
293
- white-space: nowrap;
294
- overflow: hidden;
295
- text-overflow: ellipsis;
296
- line-height: 1.4;
297
- }
298
-
299
- .conversation-item.active .conversation-item-title {
300
- color: var(--gm-active-text);
301
- }
302
-
303
- .conversation-item-meta {
304
- font-size: 11px !important;
305
- font-family: var(--gm-font) !important;
306
- color: var(--gm-text-3) !important;
307
- white-space: nowrap;
308
- overflow: hidden;
309
- text-overflow: ellipsis;
310
- margin-top: 2px;
311
- }
312
-
313
- .conversation-item.active .conversation-item-meta {
314
- color: var(--gm-active-text) !important;
315
- opacity: 0.75;
316
- }
317
-
318
- /* Action buttons on conversation items */
319
- .conversation-item-delete,
320
- .conversation-item-archive,
321
- .conversation-item-export {
322
- width: 24px !important;
323
- height: 24px !important;
324
- border-radius: var(--gm-radius-pill) !important;
325
- border: none !important;
326
- }
327
- .conversation-item-delete:hover { background: rgba(234,67,53,.15) !important; color: var(--gm-red) !important; }
328
- .conversation-item-archive:hover { background: rgba(251,188,4,.15) !important; color: #b36f00 !important; }
329
- .conversation-item-export:hover { background: rgba(26,115,232,.15) !important; color: var(--gm-blue) !important; }
330
-
331
- .conversation-item.active .conversation-item-delete,
332
- .conversation-item.active .conversation-item-archive,
333
- .conversation-item.active .conversation-item-export {
334
- color: var(--gm-active-text) !important;
335
- }
336
-
337
- .sidebar-empty {
338
- padding: 32px 16px !important;
339
- font-size: 13px !important;
340
- font-family: var(--gm-font) !important;
341
- color: var(--gm-text-3) !important;
342
- border: none !important;
343
- }
344
-
345
- /* ── Main header ────────────────────────────────────────────── */
346
- .main-header {
347
- height: var(--gm-header-h) !important;
348
- min-height: var(--gm-header-h) !important;
349
- background: var(--gm-surface) !important;
350
- border-bottom: 1px solid var(--gm-border) !important;
351
- padding: 0 16px !important;
352
- gap: 8px !important;
353
- display: flex;
354
- align-items: center;
355
- }
356
-
357
- /* Search bar in header — Gmail style, centered, expands */
358
- .header-search-wrap {
359
- flex: 1;
360
- max-width: 720px;
361
- margin: 0 auto;
362
- position: relative;
363
- display: flex;
364
- align-items: center;
365
- }
366
-
367
- .header-search-icon {
368
- position: absolute;
369
- left: 12px;
370
- width: 18px;
371
- height: 18px;
372
- color: var(--gm-text-2);
373
- pointer-events: none;
374
- }
375
-
376
- .header-search-input {
377
- width: 100%;
378
- height: 40px;
379
- background: var(--gm-panel) !important;
380
- border: 1px solid var(--gm-border) !important;
381
- border-radius: var(--gm-radius-pill) !important;
382
- padding: 0 16px 0 42px !important;
383
- font-size: 14px !important;
384
- font-family: var(--gm-font) !important;
385
- color: var(--gm-text-1) !important;
386
- outline: none;
387
- box-shadow: var(--gm-shadow-1) !important;
388
- transition: box-shadow 0.15s, background 0.15s;
389
- }
390
-
391
- .header-search-input:focus {
392
- box-shadow: var(--gm-shadow-2) !important;
393
- background: var(--gm-panel) !important;
394
- }
395
-
396
- /* Hide the brand title in header when search is present */
397
- .header-title {
398
- display: none !important;
399
- }
400
-
401
- .sidebar-toggle-btn,
402
- .theme-toggle-btn,
403
- .header-icon-btn {
404
- width: 40px !important;
405
- height: 40px !important;
406
- border-radius: var(--gm-radius-pill) !important;
407
- background: transparent !important;
408
- border: none !important;
409
- color: var(--gm-text-2) !important;
410
- flex-shrink: 0;
411
- }
412
-
413
- .sidebar-toggle-btn:hover,
414
- .theme-toggle-btn:hover,
415
- .header-icon-btn:hover {
416
- background: var(--gm-hover) !important;
417
- color: var(--gm-text-1) !important;
418
- }
419
-
420
- .status-badge {
421
- background: transparent !important;
422
- border: none !important;
423
- font-size: 11px !important;
424
- font-family: var(--gm-font) !important;
425
- color: var(--gm-text-3) !important;
426
- }
427
-
428
- /* ── View toggle bar ────────────────────────────────────────── */
429
- .view-toggle-bar {
430
- background: var(--gm-panel) !important;
431
- border-bottom: 1px solid var(--gm-border) !important;
432
- padding: 0 16px !important;
433
- }
434
-
435
- .view-toggle-btn {
436
- border-radius: 0 !important;
437
- border: none !important;
438
- border-bottom: 2px solid transparent !important;
439
- color: var(--gm-text-2) !important;
440
- font-family: var(--gm-font) !important;
441
- font-size: 13px !important;
442
- }
443
- .view-toggle-btn:hover { color: var(--gm-text-1) !important; background: transparent !important; }
444
- .view-toggle-btn.active {
445
- color: var(--gm-blue) !important;
446
- border-bottom-color: var(--gm-blue) !important;
447
- background: transparent !important;
448
- }
449
-
450
- /* ── Messages area ──────────────────────────────────────────── */
451
- .main-panel {
452
- background: var(--gm-panel) !important;
453
- }
454
-
455
- #output-scroll,
456
- .messages-wrapper {
457
- background: var(--gm-panel) !important;
458
- border: none !important;
459
- }
460
-
461
- #output {
462
- max-width: 860px;
463
- margin: 0 auto;
464
- padding: 16px 24px 24px;
465
- }
466
-
467
- /* Messages: Gmail thread-like, no chat bubbles */
468
- .message {
469
- margin-bottom: 8px !important;
470
- padding: 12px 16px !important;
471
- border: 1px solid var(--gm-border) !important;
472
- border-radius: var(--gm-radius-md) !important;
473
- background: var(--gm-panel) !important;
474
- max-width: 100% !important;
475
- box-shadow: var(--gm-shadow-1) !important;
476
- }
477
-
478
- .message-user {
479
- background: #e8f0fe !important;
480
- border-color: #c5d6f9 !important;
481
- margin-left: auto;
482
- max-width: 80% !important;
483
- }
484
- html.dark .message-user {
485
- background: #1e3a5f !important;
486
- border-color: #2d5a9e !important;
487
- }
488
-
489
- .message-assistant {
490
- margin-right: auto;
491
- max-width: 100% !important;
492
- }
493
-
494
- .message-role {
495
- font-size: 11px !important;
496
- font-family: var(--gm-font) !important;
497
- font-weight: 600 !important;
498
- text-transform: uppercase !important;
499
- letter-spacing: 0.05em !important;
500
- color: var(--gm-text-2) !important;
501
- }
502
-
503
- .message-content, .message-text {
504
- font-family: var(--gm-font) !important;
505
- font-size: 14px !important;
506
- line-height: 1.6 !important;
507
- color: var(--gm-text-1) !important;
508
- }
509
-
510
- /* ── Input area ─────────────────────────────────────────────── */
511
- .input-section {
512
- padding: 12px 24px 20px !important;
513
- background: var(--gm-panel) !important;
514
- border-top: 1px solid var(--gm-border) !important;
515
- }
516
-
517
- .input-card {
518
- background: var(--gm-panel) !important;
519
- border: 1px solid var(--gm-border) !important;
520
- border-radius: var(--gm-radius-lg) !important;
521
- box-shadow: var(--gm-shadow-1) !important;
522
- overflow: hidden;
523
- transition: box-shadow 0.15s;
524
- }
525
-
526
- .input-card:focus-within {
527
- box-shadow: var(--gm-shadow-2) !important;
528
- border-color: transparent !important;
529
- }
530
-
531
- .input-card-textarea {
532
- background: transparent !important;
533
- border: none !important;
534
- padding: 14px 16px !important;
535
- font-size: 14px !important;
536
- font-family: var(--gm-font) !important;
537
- color: var(--gm-text-1) !important;
538
- min-height: 52px;
539
- }
540
- .input-card-textarea::placeholder { color: var(--gm-text-3) !important; }
541
- .input-card-textarea:focus { outline: none !important; box-shadow: none !important; }
542
-
543
- .input-card-toolbar {
544
- padding: 6px 10px !important;
545
- border-top: 1px solid var(--gm-hover) !important;
546
- background: transparent !important;
547
- }
548
-
549
- .input-icon-btn {
550
- width: 36px !important;
551
- height: 36px !important;
552
- border-radius: var(--gm-radius-pill) !important;
553
- background: transparent !important;
554
- border: none !important;
555
- color: var(--gm-text-2) !important;
556
- }
557
- .input-icon-btn:hover { background: var(--gm-hover) !important; color: var(--gm-text-1) !important; }
558
-
559
- .input-send-btn {
560
- background: var(--gm-blue) !important;
561
- color: #fff !important;
562
- border-radius: var(--gm-radius-pill) !important;
563
- width: auto !important;
564
- min-width: 40px !important;
565
- padding: 0 16px !important;
566
- border: none !important;
567
- }
568
- .input-send-btn:hover { filter: brightness(1.1); box-shadow: var(--gm-shadow-1) !important; }
569
-
570
- .input-chip-select {
571
- background: var(--gm-hover) !important;
572
- border: none !important;
573
- border-radius: var(--gm-radius-pill) !important;
574
- height: 28px !important;
575
- padding: 0 10px !important;
576
- font-size: 12px !important;
577
- font-family: var(--gm-font) !important;
578
- color: var(--gm-text-1) !important;
579
- }
580
-
581
- /* ── Streaming status bar ───────────────────────────────────── */
582
- .streaming-status-bar {
583
- background: var(--gm-text-1) !important;
584
- color: var(--gm-surface) !important;
585
- border: none !important;
586
- border-radius: var(--gm-radius-pill) !important;
587
- box-shadow: var(--gm-shadow-2) !important;
588
- padding: 10px 20px !important;
589
- font-family: var(--gm-font) !important;
590
- font-size: 13px !important;
591
- }
592
- .status-agent-name { color: #8ab4f8 !important; }
593
- .status-cancel-btn {
594
- background: transparent !important;
595
- border: none !important;
596
- color: #8ab4f8 !important;
597
- font-weight: 500;
598
- font-family: var(--gm-font) !important;
599
- }
600
-
601
- /* ── Modals ─────────────────────────────────────────────────── */
602
- .folder-modal,
603
- .tools-popup-content {
604
- border-radius: var(--gm-radius-lg) !important;
605
- box-shadow: var(--gm-shadow-2) !important;
606
- border: none !important;
607
- font-family: var(--gm-font) !important;
608
- }
609
-
610
- /* ── Scrollbars ─────────────────────────────────────────────── */
611
- .sidebar-list::-webkit-scrollbar { width: 8px; }
612
- .sidebar-list::-webkit-scrollbar-thumb { background: var(--gm-border); border-radius: 4px; }
613
- #output-scroll::-webkit-scrollbar { width: 8px; }
614
- #output-scroll::-webkit-scrollbar-thumb { background: var(--gm-border); border-radius: 4px; }
615
-
616
- /* ── Welcome screen ─────────────────────────────────────────── */
617
- .welcome-logo {
618
- background: linear-gradient(135deg, #4285f4 0%, #34a853 33%, #fbbc04 66%, #ea4335 100%) !important;
619
- color: #fff !important;
620
- width: 80px;
621
- height: 80px;
622
- border-radius: 50% !important;
623
- font-family: var(--gm-font) !important;
624
- font-size: 48px !important;
625
- border: none !important;
626
- }
627
- .welcome-title {
628
- font-family: var(--gm-font) !important;
629
- font-weight: 400 !important;
630
- font-size: 28px !important;
631
- color: var(--gm-text-1) !important;
632
- }
633
- .welcome-subtitle {
634
- font-family: var(--gm-font) !important;
635
- font-size: 14px !important;
636
- color: var(--gm-text-2) !important;
637
- }
638
-
639
- /* ── Typography fixes in output ─────────────────────────────── */
640
- #output h1, #output h2, #output h3, #output h4 {
641
- font-family: var(--gm-font) !important;
642
- font-weight: 500;
643
- margin: 1em 0 .5em;
644
- }
645
- #output p { margin: .5em 0; font-family: var(--gm-font) !important; }
646
- #output ul { list-style: disc; padding-left: 1.5em; }
647
- #output ol { list-style: decimal; padding-left: 1.5em; }
648
- #output a { color: var(--gm-blue); text-decoration: none; }
649
- #output a:hover { text-decoration: underline; }
650
-
651
- /* ── Focus ring ─────────────────────────────────────────────── */
652
- :focus-visible {
653
- outline: 2px solid var(--gm-blue) !important;
654
- outline-offset: 2px;
655
- }
656
-
657
- /* ── Mobile: hide nav rail ──────────────────────────────────── */
658
- @media (max-width: 768px) {
659
- .app-shell {
660
- grid-template-columns: 0 1fr !important;
661
- }
662
- .nav-rail { display: none !important; }
663
- }