@yagr/agent 0.1.0 → 0.2.5

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 (66) hide show
  1. package/LICENSE +21 -201
  2. package/README.md +49 -32
  3. package/dist/cli.js +78 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/config/load-n8n-engine-config.d.ts +3 -3
  6. package/dist/config/load-n8n-engine-config.d.ts.map +1 -1
  7. package/dist/config/load-n8n-engine-config.js +3 -3
  8. package/dist/config/load-n8n-engine-config.js.map +1 -1
  9. package/dist/config/local-state.d.ts +20 -0
  10. package/dist/config/local-state.d.ts.map +1 -0
  11. package/dist/config/local-state.js +81 -0
  12. package/dist/config/local-state.js.map +1 -0
  13. package/dist/config/n8n-config-service.d.ts +25 -0
  14. package/dist/config/n8n-config-service.d.ts.map +1 -0
  15. package/dist/config/n8n-config-service.js +117 -0
  16. package/dist/config/n8n-config-service.js.map +1 -0
  17. package/dist/config/yagr-config-service.d.ts +2 -0
  18. package/dist/config/yagr-config-service.d.ts.map +1 -1
  19. package/dist/config/yagr-config-service.js +29 -4
  20. package/dist/config/yagr-config-service.js.map +1 -1
  21. package/dist/config/yagr-home.d.ts +15 -0
  22. package/dist/config/yagr-home.d.ts.map +1 -1
  23. package/dist/config/yagr-home.js +44 -4
  24. package/dist/config/yagr-home.js.map +1 -1
  25. package/dist/gateway/webui.d.ts.map +1 -1
  26. package/dist/gateway/webui.js +35 -21
  27. package/dist/gateway/webui.js.map +1 -1
  28. package/dist/index.d.ts +6 -0
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +3 -0
  31. package/dist/index.js.map +1 -1
  32. package/dist/prompt/build-system-prompt.d.ts.map +1 -1
  33. package/dist/prompt/build-system-prompt.js +3 -0
  34. package/dist/prompt/build-system-prompt.js.map +1 -1
  35. package/dist/setup.d.ts +5 -3
  36. package/dist/setup.d.ts.map +1 -1
  37. package/dist/setup.js +16 -17
  38. package/dist/setup.js.map +1 -1
  39. package/dist/tools/build-tools.d.ts +57 -28
  40. package/dist/tools/build-tools.d.ts.map +1 -1
  41. package/dist/tools/build-tools.js +2 -0
  42. package/dist/tools/build-tools.js.map +1 -1
  43. package/dist/tools/deploy.d.ts +19 -19
  44. package/dist/tools/generate-workflow.d.ts +8 -8
  45. package/dist/tools/index.d.ts +1 -0
  46. package/dist/tools/index.d.ts.map +1 -1
  47. package/dist/tools/index.js +1 -0
  48. package/dist/tools/index.js.map +1 -1
  49. package/dist/tools/manage-workflow.d.ts +3 -3
  50. package/dist/tools/n8nac.d.ts +12 -12
  51. package/dist/tools/observer.d.ts +8 -0
  52. package/dist/tools/observer.d.ts.map +1 -1
  53. package/dist/tools/observer.js.map +1 -1
  54. package/dist/tools/present-workflow-result.d.ts +32 -0
  55. package/dist/tools/present-workflow-result.d.ts.map +1 -0
  56. package/dist/tools/present-workflow-result.js +30 -0
  57. package/dist/tools/present-workflow-result.js.map +1 -0
  58. package/dist/tools/request-required-action.d.ts +3 -3
  59. package/dist/tools/validate.d.ts +19 -19
  60. package/dist/types.d.ts +8 -0
  61. package/dist/types.d.ts.map +1 -1
  62. package/dist/webui/app.js +385 -49
  63. package/dist/webui/app.js.map +3 -3
  64. package/dist/webui/styles.css +515 -102
  65. package/dist/webui/styles.css.map +2 -2
  66. package/package.json +3 -3
@@ -1,24 +1,89 @@
1
1
  /* src/webui/styles.css */
2
2
  :root {
3
3
  color-scheme: light;
4
- --bg-a: #f4fbff;
5
- --bg-b: #f7f3ff;
6
- --panel: rgba(255, 255, 255, 0.8);
7
- --panel-strong: rgba(255, 255, 255, 0.92);
8
- --panel-border: rgba(83, 128, 255, 0.16);
9
- --ink: #13233d;
10
- --muted: #53627d;
11
- --blue: #4fc4ff;
12
- --blue-deep: #2f7cff;
13
- --violet: #7f4dff;
14
- --violet-deep: #5a2eff;
15
- --shadow: 0 18px 44px rgba(48, 76, 159, 0.12);
4
+ --bg-a: #f4f5f3;
5
+ --bg-b: #ecefed;
6
+ --panel: #eff6f7;
7
+ --panel-strong: #e5f0f2;
8
+ --panel-soft: #dcebee;
9
+ --panel-border: #bfd1d7;
10
+ --panel-border-strong: #8ea8b2;
11
+ --panel-border-deep: #2c3f4a;
12
+ --panel-highlight: transparent;
13
+ --ink: #0d1020;
14
+ --muted: #4b616b;
15
+ --field-bg: #f7faf9;
16
+ --blue: #d5e7eb;
17
+ --blue-deep: #80bbc7;
18
+ --violet: #456874;
19
+ --violet-deep: #18222c;
20
+ --rose: #e63d7a;
21
+ --shadow: 0 8px 20px rgba(12, 16, 31, 0.06);
16
22
  font-family:
17
23
  "Space Grotesk",
18
24
  "Avenir Next",
19
25
  "Segoe UI",
20
26
  sans-serif;
21
27
  }
28
+ @media (prefers-color-scheme: dark) {
29
+ :root {
30
+ color-scheme: dark;
31
+ --bg-a: #0f151c;
32
+ --bg-b: #131c25;
33
+ --panel: #18222c;
34
+ --panel-strong: #1d2833;
35
+ --panel-soft: #141d26;
36
+ --panel-border: #2d3f4c;
37
+ --panel-border-strong: #4d6975;
38
+ --panel-border-deep: #9ecdd7;
39
+ --ink: #edf3f5;
40
+ --muted: #9fb1b8;
41
+ --field-bg: #111922;
42
+ --blue: #23343d;
43
+ --blue-deep: #80bbc7;
44
+ --violet: #80bbc7;
45
+ --violet-deep: #80bbc7;
46
+ --shadow: 0 10px 24px rgba(0, 0, 0, 0.24);
47
+ }
48
+ }
49
+ :root[data-theme-mode=light] {
50
+ color-scheme: light;
51
+ --bg-a: #f4f5f3;
52
+ --bg-b: #ecefed;
53
+ --panel: #eff6f7;
54
+ --panel-strong: #e5f0f2;
55
+ --panel-soft: #dcebee;
56
+ --panel-border: #bfd1d7;
57
+ --panel-border-strong: #8ea8b2;
58
+ --panel-border-deep: #2c3f4a;
59
+ --ink: #0d1020;
60
+ --muted: #4b616b;
61
+ --field-bg: #f7faf9;
62
+ --blue: #d5e7eb;
63
+ --blue-deep: #80bbc7;
64
+ --violet: #456874;
65
+ --violet-deep: #18222c;
66
+ --shadow: 0 8px 20px rgba(12, 16, 31, 0.06);
67
+ }
68
+ :root[data-theme-mode=dark] {
69
+ color-scheme: dark;
70
+ --bg-a: #0f151c;
71
+ --bg-b: #131c25;
72
+ --panel: #18222c;
73
+ --panel-strong: #1d2833;
74
+ --panel-soft: #141d26;
75
+ --panel-border: #2d3f4c;
76
+ --panel-border-strong: #4d6975;
77
+ --panel-border-deep: #9ecdd7;
78
+ --ink: #edf3f5;
79
+ --muted: #9fb1b8;
80
+ --field-bg: #111922;
81
+ --blue: #23343d;
82
+ --blue-deep: #80bbc7;
83
+ --violet: #80bbc7;
84
+ --violet-deep: #80bbc7;
85
+ --shadow: 0 10px 24px rgba(0, 0, 0, 0.24);
86
+ }
22
87
  * {
23
88
  box-sizing: border-box;
24
89
  }
@@ -31,19 +96,10 @@ body,
31
96
  body {
32
97
  color: var(--ink);
33
98
  background:
34
- radial-gradient(
35
- circle at top left,
36
- rgba(79, 196, 255, 0.22),
37
- transparent 26%),
38
- radial-gradient(
39
- circle at 85% 10%,
40
- rgba(127, 77, 255, 0.2),
41
- transparent 24%),
42
99
  linear-gradient(
43
100
  180deg,
44
- var(--bg-a) 0%,
45
- #fdfcff 50%,
46
- var(--bg-b) 100%);
101
+ var(--bg-a),
102
+ var(--bg-b));
47
103
  }
48
104
  h1,
49
105
  h2,
@@ -89,10 +145,11 @@ textarea {
89
145
  }
90
146
  .sidebar {
91
147
  display: grid;
148
+ grid-template-rows: auto minmax(0, 1fr);
92
149
  gap: 1rem;
93
- align-content: start;
150
+ align-content: stretch;
94
151
  min-height: 0;
95
- overflow: auto;
152
+ overflow: hidden;
96
153
  }
97
154
  .panel {
98
155
  position: relative;
@@ -102,6 +159,8 @@ textarea {
102
159
  background: var(--panel);
103
160
  backdrop-filter: blur(18px);
104
161
  box-shadow: var(--shadow);
162
+ outline: 1px solid var(--panel-highlight);
163
+ outline-offset: -1px;
105
164
  }
106
165
  .panel::before {
107
166
  content: "";
@@ -110,8 +169,8 @@ textarea {
110
169
  background:
111
170
  linear-gradient(
112
171
  145deg,
113
- rgba(255, 255, 255, 0.38),
114
- rgba(255, 255, 255, 0) 42%);
172
+ rgba(255, 255, 255, 0.4),
173
+ rgba(255, 255, 255, 0) 44%);
115
174
  pointer-events: none;
116
175
  }
117
176
  .brandCard,
@@ -130,27 +189,63 @@ textarea {
130
189
  background:
131
190
  linear-gradient(
132
191
  135deg,
133
- rgba(255, 255, 255, 0.94),
134
- rgba(239, 248, 255, 0.82));
192
+ rgba(255, 255, 255, 0.96),
193
+ rgba(243, 252, 252, 0.84));
194
+ }
195
+ .brandCopy {
196
+ padding-top: 0.15rem;
197
+ padding-right: 7.25rem;
135
198
  }
136
199
  .brandMark {
137
- width: 3.4rem;
138
- height: 3.4rem;
139
- border-radius: 1.2rem;
140
- background:
141
- radial-gradient(
142
- circle at 30% 30%,
143
- rgba(79, 196, 255, 0.9),
144
- transparent 34%),
145
- radial-gradient(
146
- circle at 65% 65%,
147
- rgba(127, 77, 255, 0.92),
148
- transparent 40%),
149
- linear-gradient(
150
- 135deg,
151
- rgba(79, 196, 255, 0.28),
152
- rgba(127, 77, 255, 0.26));
153
- box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.7), 0 10px 26px rgba(75, 124, 255, 0.2);
200
+ display: block;
201
+ width: clamp(3.6rem, 8vw, 5.25rem);
202
+ height: auto;
203
+ filter: drop-shadow(0 16px 24px rgba(128, 187, 199, 0.24));
204
+ }
205
+ .brandTitle {
206
+ max-width: 12ch;
207
+ }
208
+ .themeControl {
209
+ position: absolute;
210
+ top: 1rem;
211
+ right: 1rem;
212
+ display: flex;
213
+ align-items: center;
214
+ justify-content: flex-end;
215
+ max-width: calc(100% - 8.5rem);
216
+ }
217
+ .themeButton {
218
+ display: inline-flex;
219
+ align-items: center;
220
+ justify-content: center;
221
+ width: 2rem;
222
+ height: 2rem;
223
+ padding: 0;
224
+ border: 1px solid var(--panel-border);
225
+ border-radius: 999px;
226
+ background: color-mix(in srgb, var(--panel) 72%, transparent);
227
+ color: var(--muted);
228
+ }
229
+ .themeButton:hover {
230
+ background: var(--panel-soft);
231
+ border-color: var(--panel-border);
232
+ color: var(--ink);
233
+ }
234
+ .themeButton:focus-visible {
235
+ outline: 2px solid color-mix(in srgb, var(--blue-deep) 52%, transparent);
236
+ outline-offset: 2px;
237
+ }
238
+ .themeIcon {
239
+ width: 0.95rem;
240
+ height: 0.95rem;
241
+ display: block;
242
+ }
243
+ .brandTitleLine {
244
+ display: block;
245
+ white-space: nowrap;
246
+ }
247
+ .brandTitleAccent {
248
+ color: var(--violet);
154
249
  }
155
250
  .eyebrow {
156
251
  margin: 0 0 0.45rem;
@@ -186,8 +281,11 @@ label span,
186
281
  background:
187
282
  linear-gradient(
188
283
  135deg,
189
- rgba(255, 255, 255, 0.94),
190
- rgba(243, 247, 255, 0.86));
284
+ rgba(255, 255, 255, 0.96),
285
+ rgba(243, 252, 252, 0.9));
286
+ }
287
+ .chatHeroActions {
288
+ flex-wrap: wrap;
191
289
  }
192
290
  .setupHero {
193
291
  display: grid;
@@ -201,8 +299,10 @@ label span,
201
299
  }
202
300
  .sessionPanel {
203
301
  display: grid;
302
+ grid-template-rows: auto minmax(0, 1fr);
204
303
  gap: 1rem;
205
304
  background: var(--panel-strong);
305
+ min-height: 0;
206
306
  }
207
307
  .sessionFacts {
208
308
  display: grid;
@@ -213,15 +313,14 @@ label span,
213
313
  gap: 0.18rem;
214
314
  padding: 0.9rem 1rem;
215
315
  border-radius: 1rem;
216
- background: rgba(255, 255, 255, 0.78);
217
- border: 1px solid rgba(91, 114, 179, 0.12);
316
+ background: rgba(255, 255, 255, 0.8);
317
+ border: 1px solid var(--panel-border-strong);
218
318
  }
219
319
  .chatStage {
220
320
  height: 100%;
221
321
  min-height: 0;
222
322
  display: grid;
223
- grid-template-rows: auto minmax(0, 1fr);
224
- gap: 1rem;
323
+ grid-template-rows: minmax(0, 1fr);
225
324
  overflow: hidden;
226
325
  }
227
326
  .chatPanelSingleScroll {
@@ -237,11 +336,28 @@ label span,
237
336
  overflow-y: auto;
238
337
  overflow-x: hidden;
239
338
  display: grid;
339
+ align-content: start;
340
+ align-items: start;
341
+ grid-auto-rows: max-content;
240
342
  gap: 0.9rem;
241
- padding-right: 0.25rem;
343
+ margin-right: -0.7rem;
344
+ padding-right: 0.7rem;
242
345
  padding-bottom: 0.2rem;
243
- scrollbar-gutter: stable;
244
346
  overscroll-behavior: contain;
347
+ scrollbar-width: thin;
348
+ scrollbar-color: var(--panel-border-strong) transparent;
349
+ }
350
+ .chatLog::-webkit-scrollbar {
351
+ width: 10px;
352
+ }
353
+ .chatLog::-webkit-scrollbar-track {
354
+ background: transparent;
355
+ }
356
+ .chatLog::-webkit-scrollbar-thumb {
357
+ background: var(--panel-border-strong);
358
+ border: 3px solid transparent;
359
+ border-radius: 999px;
360
+ background-clip: padding-box;
245
361
  }
246
362
  .composerDocked {
247
363
  display: grid;
@@ -251,12 +367,12 @@ label span,
251
367
  z-index: 1;
252
368
  margin: 0 -1.15rem -1.15rem;
253
369
  padding: 0.95rem 1.15rem 1.15rem;
254
- border-top: 1px solid rgba(91, 114, 179, 0.1);
370
+ border-top: 1px solid var(--panel-border);
255
371
  background:
256
372
  linear-gradient(
257
373
  180deg,
258
374
  rgba(255, 255, 255, 0.45),
259
- rgba(255, 255, 255, 0.92) 18%,
375
+ rgba(255, 255, 255, 0.9) 18%,
260
376
  rgba(255, 255, 255, 0.96) 100%);
261
377
  backdrop-filter: blur(18px);
262
378
  }
@@ -287,16 +403,20 @@ input,
287
403
  select,
288
404
  textarea {
289
405
  width: 100%;
290
- border: 1px solid rgba(91, 114, 179, 0.18);
406
+ border: 1px solid var(--panel-border-strong);
291
407
  border-radius: 1rem;
292
408
  padding: 0.82rem 0.95rem;
293
409
  color: var(--ink);
294
- background: rgba(255, 255, 255, 0.92);
410
+ background: var(--field-bg);
295
411
  transition:
296
412
  border-color 0.2s ease,
297
413
  box-shadow 0.2s ease,
298
414
  background 0.2s ease;
299
415
  }
416
+ input::placeholder,
417
+ textarea::placeholder {
418
+ color: var(--muted);
419
+ }
300
420
  textarea {
301
421
  min-height: 7rem;
302
422
  resize: vertical;
@@ -305,8 +425,8 @@ input:focus,
305
425
  select:focus,
306
426
  textarea:focus {
307
427
  outline: none;
308
- border-color: rgba(90, 46, 255, 0.44);
309
- box-shadow: 0 0 0 4px rgba(90, 46, 255, 0.12);
428
+ border-color: rgba(128, 187, 199, 0.56);
429
+ box-shadow: 0 0 0 4px rgba(184, 236, 239, 0.34);
310
430
  }
311
431
  button {
312
432
  border: none;
@@ -319,30 +439,67 @@ button {
319
439
  align-items: center;
320
440
  justify-content: center;
321
441
  gap: 0.4rem;
442
+ position: relative;
443
+ overflow: hidden;
322
444
  border-radius: 999px;
323
445
  font-weight: 700;
324
446
  text-decoration: none;
447
+ backdrop-filter: blur(16px);
448
+ -webkit-backdrop-filter: blur(16px);
449
+ box-shadow: 0 12px 28px rgba(12, 16, 31, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.2);
325
450
  transition:
326
451
  transform 0.2s ease,
327
452
  box-shadow 0.2s ease,
328
- background 0.2s ease;
453
+ background 0.2s ease,
454
+ border-color 0.2s ease;
455
+ }
456
+ .primaryButton::before,
457
+ .ghostButton::before,
458
+ .linkButton::before {
459
+ content: "";
460
+ position: absolute;
461
+ inset: 0;
462
+ border-radius: inherit;
463
+ background:
464
+ linear-gradient(
465
+ 180deg,
466
+ rgba(255, 255, 255, 0.18),
467
+ rgba(255, 255, 255, 0) 42%);
468
+ pointer-events: none;
469
+ }
470
+ .primaryButton::after,
471
+ .ghostButton::after,
472
+ .linkButton::after {
473
+ content: "";
474
+ position: absolute;
475
+ inset: 1px;
476
+ border-radius: inherit;
477
+ border: 1px solid rgba(255, 255, 255, 0.14);
478
+ pointer-events: none;
329
479
  }
330
480
  .primaryButton {
331
481
  padding: 0.86rem 1rem;
332
- color: white;
482
+ color: #f7fbfb;
333
483
  background:
334
484
  linear-gradient(
335
485
  135deg,
336
- var(--blue-deep),
337
- var(--violet));
338
- box-shadow: 0 12px 28px rgba(90, 46, 255, 0.2);
486
+ #12182a 0%,
487
+ #1f3144 56%,
488
+ #7fb9c5 100%);
489
+ border: 1px solid rgba(140, 198, 211, 0.22);
490
+ box-shadow: 0 14px 34px rgba(12, 16, 31, 0.22), inset 0 1px 0 rgba(255, 255, 255, 0.18);
339
491
  }
340
492
  .ghostButton,
341
493
  .linkButton {
342
494
  padding: 0.72rem 0.95rem;
343
495
  color: var(--ink);
344
- background: rgba(255, 255, 255, 0.8);
345
- border: 1px solid rgba(91, 114, 179, 0.18);
496
+ background:
497
+ linear-gradient(
498
+ 180deg,
499
+ rgba(255, 255, 255, 0.7),
500
+ rgba(228, 238, 241, 0.52));
501
+ border: 1px solid rgba(128, 187, 199, 0.2);
502
+ box-shadow: 0 10px 24px rgba(12, 16, 31, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.24);
346
503
  }
347
504
  .dangerButton {
348
505
  color: #d94778;
@@ -358,6 +515,7 @@ button {
358
515
  .ghostButton:hover,
359
516
  .linkButton:hover {
360
517
  transform: translateY(-1px);
518
+ box-shadow: 0 16px 36px rgba(12, 16, 31, 0.16), inset 0 1px 0 rgba(255, 255, 255, 0.22);
361
519
  }
362
520
  .checkboxRow {
363
521
  display: flex;
@@ -384,36 +542,48 @@ button {
384
542
  gap: 0.7rem;
385
543
  padding: 1rem;
386
544
  border-radius: 1.25rem;
387
- background: rgba(255, 255, 255, 0.86);
388
- border: 1px solid rgba(91, 114, 179, 0.14);
545
+ background: rgba(255, 255, 255, 0.88);
546
+ border: 1px solid var(--panel-border-strong);
389
547
  }
390
548
  .message.user {
391
549
  background:
392
550
  linear-gradient(
393
551
  135deg,
394
- rgba(47, 124, 255, 0.14),
395
- rgba(127, 77, 255, 0.12));
552
+ rgba(184, 236, 239, 0.4),
553
+ rgba(128, 187, 199, 0.22));
396
554
  }
397
555
  .message.assistant {
398
556
  background:
399
557
  linear-gradient(
400
558
  135deg,
401
- rgba(255, 255, 255, 0.96),
402
- rgba(240, 248, 255, 0.92));
559
+ rgba(255, 255, 255, 0.97),
560
+ rgba(243, 252, 252, 0.92));
403
561
  }
404
562
  .message.system {
405
- background: rgba(19, 35, 61, 0.05);
563
+ background: rgba(13, 16, 32, 0.04);
564
+ }
565
+ .message.system {
566
+ padding: 0.1rem 0;
567
+ border: 0;
568
+ border-radius: 0;
569
+ background: transparent;
570
+ }
571
+ .message.system .messageTopline {
572
+ margin-bottom: 0.15rem;
573
+ }
574
+ .message.system .messageText {
575
+ max-width: 70ch;
406
576
  }
407
577
  .message.streaming {
408
578
  background:
409
579
  linear-gradient(
410
580
  135deg,
411
581
  rgba(255, 255, 255, 0.98),
412
- rgba(240, 248, 255, 0.94)),
582
+ rgba(243, 252, 252, 0.94)),
413
583
  linear-gradient(
414
584
  90deg,
415
- rgba(79, 196, 255, 0.08),
416
- rgba(127, 77, 255, 0.08));
585
+ rgba(184, 236, 239, 0.14),
586
+ rgba(69, 104, 116, 0.08));
417
587
  }
418
588
  .messageTopline {
419
589
  display: flex;
@@ -426,7 +596,7 @@ button {
426
596
  font-weight: 700;
427
597
  letter-spacing: 0.08em;
428
598
  text-transform: uppercase;
429
- color: var(--violet-deep);
599
+ color: var(--violet);
430
600
  }
431
601
  .messageBadges {
432
602
  display: flex;
@@ -442,12 +612,12 @@ button {
442
612
  font-size: 0.75rem;
443
613
  font-weight: 700;
444
614
  color: var(--ink);
445
- background: rgba(255, 255, 255, 0.88);
446
- border: 1px solid rgba(91, 114, 179, 0.14);
615
+ background: var(--panel-soft);
616
+ border: 1px solid var(--panel-border);
447
617
  }
448
618
  .phaseBadge {
449
619
  color: var(--violet-deep);
450
- background: rgba(127, 77, 255, 0.1);
620
+ background: rgba(128, 187, 199, 0.16);
451
621
  }
452
622
  .quietBadge {
453
623
  color: var(--muted);
@@ -462,9 +632,9 @@ button {
462
632
  background:
463
633
  linear-gradient(
464
634
  135deg,
465
- rgba(47, 124, 255, 0.08),
466
- rgba(127, 77, 255, 0.08));
467
- border: 1px solid rgba(91, 114, 179, 0.12);
635
+ rgba(184, 236, 239, 0.16),
636
+ rgba(69, 104, 116, 0.08));
637
+ border: 1px solid var(--panel-border);
468
638
  }
469
639
  .compactWorkbench {
470
640
  padding: 0.82rem 0.95rem;
@@ -489,21 +659,21 @@ button {
489
659
  135deg,
490
660
  var(--blue-deep),
491
661
  var(--violet));
492
- box-shadow: 0 0 0 0 rgba(90, 46, 255, 0.24);
662
+ box-shadow: 0 0 0 0 rgba(128, 187, 199, 0.26);
493
663
  animation: workPulse 1.6s ease-in-out infinite;
494
664
  }
495
665
  .workGlyphRing {
496
666
  position: absolute;
497
667
  inset: 0;
498
668
  border-radius: 999px;
499
- border: 1px solid rgba(90, 46, 255, 0.2);
669
+ border: 1px solid rgba(69, 104, 116, 0.22);
500
670
  }
501
671
  .workGlyphRingA {
502
672
  animation: workOrbit 2.2s linear infinite;
503
673
  }
504
674
  .workGlyphRingB {
505
675
  inset: 0.34rem;
506
- border-color: rgba(47, 124, 255, 0.28);
676
+ border-color: rgba(128, 187, 199, 0.34);
507
677
  animation: workOrbitReverse 2.8s linear infinite;
508
678
  }
509
679
  .progressTicker {
@@ -517,8 +687,8 @@ button {
517
687
  align-items: center;
518
688
  padding: 0.62rem 0.78rem;
519
689
  border-radius: 0.95rem;
520
- background: rgba(255, 255, 255, 0.72);
521
- border: 1px solid rgba(91, 114, 179, 0.1);
690
+ background: rgba(255, 255, 255, 0.74);
691
+ border: 1px solid var(--panel-border);
522
692
  font-size: 0.93rem;
523
693
  }
524
694
  .progressTickerEntry.info .progressDot {
@@ -546,14 +716,14 @@ button {
546
716
  width: 0.72rem;
547
717
  height: 0.72rem;
548
718
  border-radius: 999px;
549
- box-shadow: 0 0 0 6px rgba(79, 196, 255, 0.08);
719
+ box-shadow: 0 0 0 6px rgba(184, 236, 239, 0.18);
550
720
  }
551
721
  .streamPreview {
552
722
  display: grid;
553
723
  gap: 0.32rem;
554
724
  padding: 0.9rem 1rem;
555
725
  border-radius: 1rem;
556
- background: rgba(19, 35, 61, 0.03);
726
+ background: rgba(13, 16, 32, 0.03);
557
727
  color: var(--muted);
558
728
  font-size: 0.95rem;
559
729
  line-height: 1.55;
@@ -611,7 +781,7 @@ button {
611
781
  margin-top: 0.24rem;
612
782
  }
613
783
  .markdownBody a {
614
- color: var(--blue-deep);
784
+ color: var(--violet);
615
785
  text-decoration: underline;
616
786
  text-underline-offset: 0.14em;
617
787
  word-break: break-word;
@@ -619,7 +789,7 @@ button {
619
789
  .markdownBody code {
620
790
  padding: 0.12rem 0.36rem;
621
791
  border-radius: 0.45rem;
622
- background: rgba(19, 35, 61, 0.08);
792
+ background: rgba(13, 16, 32, 0.08);
623
793
  font-family:
624
794
  "IBM Plex Mono",
625
795
  "SFMono-Regular",
@@ -631,7 +801,7 @@ button {
631
801
  overflow: auto;
632
802
  padding: 0.9rem 1rem;
633
803
  border-radius: 0.9rem;
634
- background: rgba(19, 35, 61, 0.06);
804
+ background: rgba(13, 16, 32, 0.06);
635
805
  }
636
806
  .markdownBody pre code {
637
807
  padding: 0;
@@ -639,12 +809,12 @@ button {
639
809
  }
640
810
  .markdownBody blockquote {
641
811
  padding-left: 0.9rem;
642
- border-left: 3px solid rgba(90, 46, 255, 0.24);
812
+ border-left: 3px solid rgba(128, 187, 199, 0.38);
643
813
  color: var(--muted);
644
814
  }
645
815
  .markdownBody hr {
646
816
  border: 0;
647
- border-top: 1px solid rgba(91, 114, 179, 0.16);
817
+ border-top: 1px solid var(--panel-border);
648
818
  }
649
819
  .notice {
650
820
  position: fixed;
@@ -654,22 +824,192 @@ button {
654
824
  max-width: 24rem;
655
825
  padding: 0.95rem 1rem;
656
826
  border-radius: 1rem;
657
- color: white;
827
+ color: #f7fbfb;
658
828
  background:
659
829
  linear-gradient(
660
830
  135deg,
661
- rgba(19, 35, 61, 0.94),
662
- rgba(90, 46, 255, 0.94));
663
- box-shadow: 0 12px 30px rgba(19, 35, 61, 0.24);
831
+ rgba(13, 16, 32, 0.96),
832
+ rgba(69, 104, 116, 0.96),
833
+ rgba(128, 187, 199, 0.94));
834
+ box-shadow: 0 12px 30px rgba(12, 16, 31, 0.24);
835
+ }
836
+ .panel,
837
+ .brandCard,
838
+ .chatHero,
839
+ .setupHero,
840
+ .sessionPanel,
841
+ .formPanel,
842
+ .factCard,
843
+ .composerDocked,
844
+ .message,
845
+ .message.user,
846
+ .message.assistant,
847
+ .message.system,
848
+ .message.streaming,
849
+ .workbench,
850
+ .progressTickerEntry,
851
+ .streamPreview,
852
+ .workflowCard,
853
+ .workflowGraphWrap {
854
+ background: var(--panel);
855
+ box-shadow: none;
856
+ }
857
+ .panel {
858
+ backdrop-filter: none;
859
+ outline: none;
860
+ }
861
+ .sessionPanel {
862
+ background: var(--panel);
863
+ }
864
+ .panel::before,
865
+ .primaryButton::before,
866
+ .ghostButton::before,
867
+ .linkButton::before,
868
+ .primaryButton::after,
869
+ .ghostButton::after,
870
+ .linkButton::after {
871
+ content: none;
872
+ }
873
+ .brandCard,
874
+ .chatHero,
875
+ .setupHero,
876
+ .sessionPanel,
877
+ .formPanel,
878
+ .factCard,
879
+ .composerDocked,
880
+ .message,
881
+ .workbench,
882
+ .progressTickerEntry,
883
+ .streamPreview,
884
+ .workflowCard,
885
+ .workflowGraphWrap {
886
+ border-color: var(--panel-border);
887
+ }
888
+ .composerDocked {
889
+ backdrop-filter: none;
890
+ }
891
+ .brandTitleAccent,
892
+ .messageRole,
893
+ .markdownBody a {
894
+ color: var(--blue-deep);
895
+ }
896
+ .primaryButton,
897
+ .ghostButton,
898
+ .linkButton {
899
+ backdrop-filter: none;
900
+ -webkit-backdrop-filter: none;
901
+ box-shadow: none;
902
+ }
903
+ .primaryButton {
904
+ background: var(--violet-deep);
905
+ border: 1px solid var(--panel-border-deep);
906
+ color: #f3f7f8;
907
+ }
908
+ .ghostButton,
909
+ .linkButton {
910
+ background: var(--panel);
911
+ border: 1px solid var(--panel-border-strong);
912
+ color: var(--ink);
913
+ }
914
+ .primaryButton:hover,
915
+ .ghostButton:hover,
916
+ .linkButton:hover {
917
+ box-shadow: none;
918
+ filter: brightness(0.96);
919
+ }
920
+ .composerButtonGroup {
921
+ display: inline-flex;
922
+ align-items: center;
923
+ gap: 0.65rem;
924
+ }
925
+ .resetChatButton {
926
+ background: transparent;
927
+ }
928
+ .sessionFacts {
929
+ gap: 0;
930
+ border-top: 1px solid var(--panel-border);
931
+ }
932
+ .factCard {
933
+ padding: 0.9rem 0;
934
+ border: 0;
935
+ border-radius: 0;
936
+ background: transparent;
937
+ }
938
+ .factCard + .factCard {
939
+ border-top: 1px solid var(--panel-border);
940
+ }
941
+ .message,
942
+ .message.user,
943
+ .message.assistant,
944
+ .message.system,
945
+ .message.streaming,
946
+ .progressTickerEntry,
947
+ .workbench,
948
+ .streamPreview {
949
+ background: var(--panel-soft);
950
+ border-color: transparent;
951
+ }
952
+ .composerDocked {
953
+ background: var(--panel);
954
+ border-top-color: var(--panel-border);
955
+ }
956
+ .sessionPanel .sectionHeader .primaryButton {
957
+ padding: 0.72rem 0.96rem;
958
+ border-radius: 1.35rem;
959
+ background: var(--panel-soft);
960
+ border-color: var(--panel-border-strong);
961
+ color: var(--ink);
962
+ }
963
+ .sessionPanel .sectionHeader .primaryButton:hover {
964
+ filter: brightness(0.98);
965
+ }
966
+ .message.user,
967
+ .workbench,
968
+ .phaseBadge {
969
+ background: var(--panel-strong);
970
+ }
971
+ .message.system,
972
+ .streamPreview,
973
+ .markdownBody code,
974
+ .markdownBody pre {
975
+ background: var(--panel-strong);
976
+ }
977
+ .message.system {
978
+ background: transparent;
979
+ border-color: transparent;
980
+ }
981
+ .message.system .messageText,
982
+ .message.system .markdownBody,
983
+ .message.system .markdownBody p {
984
+ background: transparent;
985
+ }
986
+ .messageBadge.quietBadge {
987
+ color: var(--muted);
988
+ background: var(--panel);
989
+ }
990
+ .progressTickerEntry.info .progressDot,
991
+ .workflowBadge {
992
+ background: var(--blue-deep);
993
+ }
994
+ .progressTickerEntry.success .progressDot {
995
+ background: #1f8f64;
996
+ }
997
+ .progressTickerEntry.error .progressDot {
998
+ background: #c94d72;
999
+ }
1000
+ .notice {
1001
+ background: var(--violet-deep);
1002
+ color: #f3f7f8;
1003
+ box-shadow: none;
664
1004
  }
665
1005
  @keyframes workPulse {
666
1006
  0%, 100% {
667
1007
  transform: scale(0.92);
668
- box-shadow: 0 0 0 0 rgba(90, 46, 255, 0.16);
1008
+ box-shadow: 0 0 0 0 rgba(128, 187, 199, 0.18);
669
1009
  }
670
1010
  50% {
671
1011
  transform: scale(1);
672
- box-shadow: 0 0 0 12px rgba(90, 46, 255, 0);
1012
+ box-shadow: 0 0 0 12px rgba(128, 187, 199, 0);
673
1013
  }
674
1014
  }
675
1015
  @keyframes workOrbit {
@@ -709,6 +1049,12 @@ button {
709
1049
  .sidebar {
710
1050
  overflow: visible;
711
1051
  }
1052
+ .brandTitle {
1053
+ max-width: none;
1054
+ }
1055
+ .brandTitleLine {
1056
+ white-space: normal;
1057
+ }
712
1058
  }
713
1059
  @media (max-width: 720px) {
714
1060
  .shell {
@@ -717,6 +1063,15 @@ button {
717
1063
  .brandCard {
718
1064
  grid-template-columns: 1fr;
719
1065
  }
1066
+ .brandCopy {
1067
+ padding-right: 0;
1068
+ padding-top: 0;
1069
+ }
1070
+ .themeControl {
1071
+ position: static;
1072
+ margin-top: 0.9rem;
1073
+ max-width: none;
1074
+ }
720
1075
  .chatHero,
721
1076
  .sectionHeader,
722
1077
  .chatHeroActions,
@@ -737,4 +1092,62 @@ button {
737
1092
  width: 100%;
738
1093
  }
739
1094
  }
1095
+ .workflowCard {
1096
+ margin-top: 0.75rem;
1097
+ border-radius: 12px;
1098
+ background: var(--surface-elevated, rgba(255, 255, 255, 0.88));
1099
+ border: 1px solid var(--border, var(--panel-border));
1100
+ overflow: hidden;
1101
+ }
1102
+ .workflowHeader {
1103
+ display: flex;
1104
+ align-items: center;
1105
+ justify-content: space-between;
1106
+ gap: 0.75rem;
1107
+ padding: 0.625rem 0.875rem;
1108
+ }
1109
+ .workflowHeaderLeft {
1110
+ display: flex;
1111
+ align-items: center;
1112
+ gap: 0.625rem;
1113
+ min-width: 0;
1114
+ }
1115
+ .workflowBadge {
1116
+ display: inline-block;
1117
+ padding: 0.15rem 0.55rem;
1118
+ border-radius: 999px;
1119
+ font-size: 0.72rem;
1120
+ font-weight: 600;
1121
+ text-transform: uppercase;
1122
+ letter-spacing: 0.03em;
1123
+ white-space: nowrap;
1124
+ color: #fff;
1125
+ background:
1126
+ linear-gradient(
1127
+ 135deg,
1128
+ var(--violet-deep),
1129
+ var(--blue-deep));
1130
+ }
1131
+ .workflowTitle {
1132
+ font-size: 0.9rem;
1133
+ font-weight: 500;
1134
+ overflow: hidden;
1135
+ text-overflow: ellipsis;
1136
+ white-space: nowrap;
1137
+ }
1138
+ .workflowHeader .primaryButton {
1139
+ flex-shrink: 0;
1140
+ width: auto;
1141
+ }
1142
+ .workflowGraphWrap {
1143
+ padding: 0.75rem 1rem;
1144
+ border-top: 1px solid var(--border, var(--panel-border));
1145
+ overflow-x: auto;
1146
+ background: var(--surface-elevated, rgba(247, 252, 252, 0.92));
1147
+ max-height: 640px;
1148
+ overflow-y: auto;
1149
+ }
1150
+ .workflowGraph {
1151
+ display: block;
1152
+ }
740
1153
  /*# sourceMappingURL=styles.css.map */