@yagr/agent 0.1.0 → 0.2.6

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 (83) 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 +27 -0
  14. package/dist/config/n8n-config-service.d.ts.map +1 -0
  15. package/dist/config/n8n-config-service.js +146 -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 +7 -2
  34. package/dist/prompt/build-system-prompt.js.map +1 -1
  35. package/dist/runtime/completion-gate.d.ts.map +1 -1
  36. package/dist/runtime/completion-gate.js +3 -2
  37. package/dist/runtime/completion-gate.js.map +1 -1
  38. package/dist/runtime/outcome.d.ts.map +1 -1
  39. package/dist/runtime/outcome.js +3 -0
  40. package/dist/runtime/outcome.js.map +1 -1
  41. package/dist/runtime/policy-hooks.d.ts +2 -0
  42. package/dist/runtime/policy-hooks.d.ts.map +1 -1
  43. package/dist/runtime/policy-hooks.js +34 -0
  44. package/dist/runtime/policy-hooks.js.map +1 -1
  45. package/dist/runtime/run-engine.d.ts +3 -0
  46. package/dist/runtime/run-engine.d.ts.map +1 -1
  47. package/dist/runtime/run-engine.js +190 -85
  48. package/dist/runtime/run-engine.js.map +1 -1
  49. package/dist/setup.d.ts +5 -3
  50. package/dist/setup.d.ts.map +1 -1
  51. package/dist/setup.js +16 -17
  52. package/dist/setup.js.map +1 -1
  53. package/dist/tools/build-tools.d.ts +57 -28
  54. package/dist/tools/build-tools.d.ts.map +1 -1
  55. package/dist/tools/build-tools.js +2 -0
  56. package/dist/tools/build-tools.js.map +1 -1
  57. package/dist/tools/deploy.d.ts +19 -19
  58. package/dist/tools/generate-workflow.d.ts +8 -8
  59. package/dist/tools/index.d.ts +1 -0
  60. package/dist/tools/index.d.ts.map +1 -1
  61. package/dist/tools/index.js +1 -0
  62. package/dist/tools/index.js.map +1 -1
  63. package/dist/tools/manage-workflow.d.ts +3 -3
  64. package/dist/tools/n8nac.d.ts +14 -12
  65. package/dist/tools/n8nac.d.ts.map +1 -1
  66. package/dist/tools/n8nac.js +24 -1
  67. package/dist/tools/n8nac.js.map +1 -1
  68. package/dist/tools/observer.d.ts +8 -0
  69. package/dist/tools/observer.d.ts.map +1 -1
  70. package/dist/tools/observer.js.map +1 -1
  71. package/dist/tools/present-workflow-result.d.ts +35 -0
  72. package/dist/tools/present-workflow-result.d.ts.map +1 -0
  73. package/dist/tools/present-workflow-result.js +112 -0
  74. package/dist/tools/present-workflow-result.js.map +1 -0
  75. package/dist/tools/request-required-action.d.ts +3 -3
  76. package/dist/tools/validate.d.ts +19 -19
  77. package/dist/types.d.ts +8 -0
  78. package/dist/types.d.ts.map +1 -1
  79. package/dist/webui/app.js +391 -50
  80. package/dist/webui/app.js.map +3 -3
  81. package/dist/webui/styles.css +577 -102
  82. package/dist/webui/styles.css.map +2 -2
  83. package/package.json +3 -3
@@ -1,24 +1,149 @@
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);
22
+ --workflow-card-bg: rgba(255, 255, 255, 0.88);
23
+ --workflow-card-bg-subtle: rgba(247, 252, 252, 0.92);
24
+ --workflow-card-border: rgba(142, 168, 178, 0.42);
25
+ --workflow-title-ink: #10202a;
26
+ --workflow-badge-ink: #f8fcfc;
27
+ --workflow-badge-bg:
28
+ linear-gradient(
29
+ 135deg,
30
+ #345766,
31
+ #80bbc7);
32
+ --workflow-graph-edge: #9eb4c1;
33
+ --workflow-graph-loop: #d38a17;
34
+ --workflow-graph-node-bg: rgba(255, 255, 255, 0.98);
35
+ --workflow-graph-node-text: #1e293b;
36
+ --workflow-graph-node-muted: #64748b;
16
37
  font-family:
17
38
  "Space Grotesk",
18
39
  "Avenir Next",
19
40
  "Segoe UI",
20
41
  sans-serif;
21
42
  }
43
+ @media (prefers-color-scheme: dark) {
44
+ :root {
45
+ color-scheme: dark;
46
+ --bg-a: #0f151c;
47
+ --bg-b: #131c25;
48
+ --panel: #18222c;
49
+ --panel-strong: #1d2833;
50
+ --panel-soft: #141d26;
51
+ --panel-border: #2d3f4c;
52
+ --panel-border-strong: #4d6975;
53
+ --panel-border-deep: #9ecdd7;
54
+ --ink: #edf3f5;
55
+ --muted: #9fb1b8;
56
+ --field-bg: #111922;
57
+ --blue: #23343d;
58
+ --blue-deep: #80bbc7;
59
+ --violet: #80bbc7;
60
+ --violet-deep: #80bbc7;
61
+ --shadow: 0 10px 24px rgba(0, 0, 0, 0.24);
62
+ --workflow-card-bg: rgba(20, 29, 38, 0.94);
63
+ --workflow-card-bg-subtle: rgba(16, 24, 32, 0.96);
64
+ --workflow-card-border: rgba(128, 187, 199, 0.26);
65
+ --workflow-title-ink: #edf3f5;
66
+ --workflow-badge-ink: #0e171d;
67
+ --workflow-badge-bg:
68
+ linear-gradient(
69
+ 135deg,
70
+ #a7d9e3,
71
+ #7ab5c1);
72
+ --workflow-graph-edge: #5f7b89;
73
+ --workflow-graph-loop: #f3b24b;
74
+ --workflow-graph-node-bg: rgba(24, 34, 44, 0.98);
75
+ --workflow-graph-node-text: #edf3f5;
76
+ --workflow-graph-node-muted: #9fb1b8;
77
+ }
78
+ }
79
+ :root[data-theme-mode=light] {
80
+ color-scheme: light;
81
+ --bg-a: #f4f5f3;
82
+ --bg-b: #ecefed;
83
+ --panel: #eff6f7;
84
+ --panel-strong: #e5f0f2;
85
+ --panel-soft: #dcebee;
86
+ --panel-border: #bfd1d7;
87
+ --panel-border-strong: #8ea8b2;
88
+ --panel-border-deep: #2c3f4a;
89
+ --ink: #0d1020;
90
+ --muted: #4b616b;
91
+ --field-bg: #f7faf9;
92
+ --blue: #d5e7eb;
93
+ --blue-deep: #80bbc7;
94
+ --violet: #456874;
95
+ --violet-deep: #18222c;
96
+ --shadow: 0 8px 20px rgba(12, 16, 31, 0.06);
97
+ --workflow-card-bg: rgba(255, 255, 255, 0.88);
98
+ --workflow-card-bg-subtle: rgba(247, 252, 252, 0.92);
99
+ --workflow-card-border: rgba(142, 168, 178, 0.42);
100
+ --workflow-title-ink: #10202a;
101
+ --workflow-badge-ink: #f8fcfc;
102
+ --workflow-badge-bg:
103
+ linear-gradient(
104
+ 135deg,
105
+ #345766,
106
+ #80bbc7);
107
+ --workflow-graph-edge: #9eb4c1;
108
+ --workflow-graph-loop: #d38a17;
109
+ --workflow-graph-node-bg: rgba(255, 255, 255, 0.98);
110
+ --workflow-graph-node-text: #1e293b;
111
+ --workflow-graph-node-muted: #64748b;
112
+ }
113
+ :root[data-theme-mode=dark] {
114
+ color-scheme: dark;
115
+ --bg-a: #0f151c;
116
+ --bg-b: #131c25;
117
+ --panel: #18222c;
118
+ --panel-strong: #1d2833;
119
+ --panel-soft: #141d26;
120
+ --panel-border: #2d3f4c;
121
+ --panel-border-strong: #4d6975;
122
+ --panel-border-deep: #9ecdd7;
123
+ --ink: #edf3f5;
124
+ --muted: #9fb1b8;
125
+ --field-bg: #111922;
126
+ --blue: #23343d;
127
+ --blue-deep: #80bbc7;
128
+ --violet: #80bbc7;
129
+ --violet-deep: #80bbc7;
130
+ --shadow: 0 10px 24px rgba(0, 0, 0, 0.24);
131
+ --workflow-card-bg: rgba(20, 29, 38, 0.94);
132
+ --workflow-card-bg-subtle: rgba(16, 24, 32, 0.96);
133
+ --workflow-card-border: rgba(128, 187, 199, 0.26);
134
+ --workflow-title-ink: #edf3f5;
135
+ --workflow-badge-ink: #0e171d;
136
+ --workflow-badge-bg:
137
+ linear-gradient(
138
+ 135deg,
139
+ #a7d9e3,
140
+ #7ab5c1);
141
+ --workflow-graph-edge: #5f7b89;
142
+ --workflow-graph-loop: #f3b24b;
143
+ --workflow-graph-node-bg: rgba(24, 34, 44, 0.98);
144
+ --workflow-graph-node-text: #edf3f5;
145
+ --workflow-graph-node-muted: #9fb1b8;
146
+ }
22
147
  * {
23
148
  box-sizing: border-box;
24
149
  }
@@ -31,19 +156,10 @@ body,
31
156
  body {
32
157
  color: var(--ink);
33
158
  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
159
  linear-gradient(
43
160
  180deg,
44
- var(--bg-a) 0%,
45
- #fdfcff 50%,
46
- var(--bg-b) 100%);
161
+ var(--bg-a),
162
+ var(--bg-b));
47
163
  }
48
164
  h1,
49
165
  h2,
@@ -89,10 +205,11 @@ textarea {
89
205
  }
90
206
  .sidebar {
91
207
  display: grid;
208
+ grid-template-rows: auto minmax(0, 1fr);
92
209
  gap: 1rem;
93
- align-content: start;
210
+ align-content: stretch;
94
211
  min-height: 0;
95
- overflow: auto;
212
+ overflow: hidden;
96
213
  }
97
214
  .panel {
98
215
  position: relative;
@@ -102,6 +219,8 @@ textarea {
102
219
  background: var(--panel);
103
220
  backdrop-filter: blur(18px);
104
221
  box-shadow: var(--shadow);
222
+ outline: 1px solid var(--panel-highlight);
223
+ outline-offset: -1px;
105
224
  }
106
225
  .panel::before {
107
226
  content: "";
@@ -110,8 +229,8 @@ textarea {
110
229
  background:
111
230
  linear-gradient(
112
231
  145deg,
113
- rgba(255, 255, 255, 0.38),
114
- rgba(255, 255, 255, 0) 42%);
232
+ rgba(255, 255, 255, 0.4),
233
+ rgba(255, 255, 255, 0) 44%);
115
234
  pointer-events: none;
116
235
  }
117
236
  .brandCard,
@@ -130,27 +249,63 @@ textarea {
130
249
  background:
131
250
  linear-gradient(
132
251
  135deg,
133
- rgba(255, 255, 255, 0.94),
134
- rgba(239, 248, 255, 0.82));
252
+ rgba(255, 255, 255, 0.96),
253
+ rgba(243, 252, 252, 0.84));
254
+ }
255
+ .brandCopy {
256
+ padding-top: 0.15rem;
257
+ padding-right: 7.25rem;
135
258
  }
136
259
  .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);
260
+ display: block;
261
+ width: clamp(3.6rem, 8vw, 5.25rem);
262
+ height: auto;
263
+ filter: drop-shadow(0 16px 24px rgba(128, 187, 199, 0.24));
264
+ }
265
+ .brandTitle {
266
+ max-width: 12ch;
267
+ }
268
+ .themeControl {
269
+ position: absolute;
270
+ top: 1rem;
271
+ right: 1rem;
272
+ display: flex;
273
+ align-items: center;
274
+ justify-content: flex-end;
275
+ max-width: calc(100% - 8.5rem);
276
+ }
277
+ .themeButton {
278
+ display: inline-flex;
279
+ align-items: center;
280
+ justify-content: center;
281
+ width: 2rem;
282
+ height: 2rem;
283
+ padding: 0;
284
+ border: 1px solid var(--panel-border);
285
+ border-radius: 999px;
286
+ background: color-mix(in srgb, var(--panel) 72%, transparent);
287
+ color: var(--muted);
288
+ }
289
+ .themeButton:hover {
290
+ background: var(--panel-soft);
291
+ border-color: var(--panel-border);
292
+ color: var(--ink);
293
+ }
294
+ .themeButton:focus-visible {
295
+ outline: 2px solid color-mix(in srgb, var(--blue-deep) 52%, transparent);
296
+ outline-offset: 2px;
297
+ }
298
+ .themeIcon {
299
+ width: 0.95rem;
300
+ height: 0.95rem;
301
+ display: block;
302
+ }
303
+ .brandTitleLine {
304
+ display: block;
305
+ white-space: nowrap;
306
+ }
307
+ .brandTitleAccent {
308
+ color: var(--violet);
154
309
  }
155
310
  .eyebrow {
156
311
  margin: 0 0 0.45rem;
@@ -186,8 +341,11 @@ label span,
186
341
  background:
187
342
  linear-gradient(
188
343
  135deg,
189
- rgba(255, 255, 255, 0.94),
190
- rgba(243, 247, 255, 0.86));
344
+ rgba(255, 255, 255, 0.96),
345
+ rgba(243, 252, 252, 0.9));
346
+ }
347
+ .chatHeroActions {
348
+ flex-wrap: wrap;
191
349
  }
192
350
  .setupHero {
193
351
  display: grid;
@@ -201,8 +359,10 @@ label span,
201
359
  }
202
360
  .sessionPanel {
203
361
  display: grid;
362
+ grid-template-rows: auto minmax(0, 1fr);
204
363
  gap: 1rem;
205
364
  background: var(--panel-strong);
365
+ min-height: 0;
206
366
  }
207
367
  .sessionFacts {
208
368
  display: grid;
@@ -213,15 +373,14 @@ label span,
213
373
  gap: 0.18rem;
214
374
  padding: 0.9rem 1rem;
215
375
  border-radius: 1rem;
216
- background: rgba(255, 255, 255, 0.78);
217
- border: 1px solid rgba(91, 114, 179, 0.12);
376
+ background: rgba(255, 255, 255, 0.8);
377
+ border: 1px solid var(--panel-border-strong);
218
378
  }
219
379
  .chatStage {
220
380
  height: 100%;
221
381
  min-height: 0;
222
382
  display: grid;
223
- grid-template-rows: auto minmax(0, 1fr);
224
- gap: 1rem;
383
+ grid-template-rows: minmax(0, 1fr);
225
384
  overflow: hidden;
226
385
  }
227
386
  .chatPanelSingleScroll {
@@ -237,11 +396,28 @@ label span,
237
396
  overflow-y: auto;
238
397
  overflow-x: hidden;
239
398
  display: grid;
399
+ align-content: start;
400
+ align-items: start;
401
+ grid-auto-rows: max-content;
240
402
  gap: 0.9rem;
241
- padding-right: 0.25rem;
403
+ margin-right: -0.7rem;
404
+ padding-right: 0.7rem;
242
405
  padding-bottom: 0.2rem;
243
- scrollbar-gutter: stable;
244
406
  overscroll-behavior: contain;
407
+ scrollbar-width: thin;
408
+ scrollbar-color: var(--panel-border-strong) transparent;
409
+ }
410
+ .chatLog::-webkit-scrollbar {
411
+ width: 10px;
412
+ }
413
+ .chatLog::-webkit-scrollbar-track {
414
+ background: transparent;
415
+ }
416
+ .chatLog::-webkit-scrollbar-thumb {
417
+ background: var(--panel-border-strong);
418
+ border: 3px solid transparent;
419
+ border-radius: 999px;
420
+ background-clip: padding-box;
245
421
  }
246
422
  .composerDocked {
247
423
  display: grid;
@@ -251,12 +427,12 @@ label span,
251
427
  z-index: 1;
252
428
  margin: 0 -1.15rem -1.15rem;
253
429
  padding: 0.95rem 1.15rem 1.15rem;
254
- border-top: 1px solid rgba(91, 114, 179, 0.1);
430
+ border-top: 1px solid var(--panel-border);
255
431
  background:
256
432
  linear-gradient(
257
433
  180deg,
258
434
  rgba(255, 255, 255, 0.45),
259
- rgba(255, 255, 255, 0.92) 18%,
435
+ rgba(255, 255, 255, 0.9) 18%,
260
436
  rgba(255, 255, 255, 0.96) 100%);
261
437
  backdrop-filter: blur(18px);
262
438
  }
@@ -287,16 +463,20 @@ input,
287
463
  select,
288
464
  textarea {
289
465
  width: 100%;
290
- border: 1px solid rgba(91, 114, 179, 0.18);
466
+ border: 1px solid var(--panel-border-strong);
291
467
  border-radius: 1rem;
292
468
  padding: 0.82rem 0.95rem;
293
469
  color: var(--ink);
294
- background: rgba(255, 255, 255, 0.92);
470
+ background: var(--field-bg);
295
471
  transition:
296
472
  border-color 0.2s ease,
297
473
  box-shadow 0.2s ease,
298
474
  background 0.2s ease;
299
475
  }
476
+ input::placeholder,
477
+ textarea::placeholder {
478
+ color: var(--muted);
479
+ }
300
480
  textarea {
301
481
  min-height: 7rem;
302
482
  resize: vertical;
@@ -305,8 +485,8 @@ input:focus,
305
485
  select:focus,
306
486
  textarea:focus {
307
487
  outline: none;
308
- border-color: rgba(90, 46, 255, 0.44);
309
- box-shadow: 0 0 0 4px rgba(90, 46, 255, 0.12);
488
+ border-color: rgba(128, 187, 199, 0.56);
489
+ box-shadow: 0 0 0 4px rgba(184, 236, 239, 0.34);
310
490
  }
311
491
  button {
312
492
  border: none;
@@ -319,30 +499,67 @@ button {
319
499
  align-items: center;
320
500
  justify-content: center;
321
501
  gap: 0.4rem;
502
+ position: relative;
503
+ overflow: hidden;
322
504
  border-radius: 999px;
323
505
  font-weight: 700;
324
506
  text-decoration: none;
507
+ backdrop-filter: blur(16px);
508
+ -webkit-backdrop-filter: blur(16px);
509
+ box-shadow: 0 12px 28px rgba(12, 16, 31, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.2);
325
510
  transition:
326
511
  transform 0.2s ease,
327
512
  box-shadow 0.2s ease,
328
- background 0.2s ease;
513
+ background 0.2s ease,
514
+ border-color 0.2s ease;
515
+ }
516
+ .primaryButton::before,
517
+ .ghostButton::before,
518
+ .linkButton::before {
519
+ content: "";
520
+ position: absolute;
521
+ inset: 0;
522
+ border-radius: inherit;
523
+ background:
524
+ linear-gradient(
525
+ 180deg,
526
+ rgba(255, 255, 255, 0.18),
527
+ rgba(255, 255, 255, 0) 42%);
528
+ pointer-events: none;
529
+ }
530
+ .primaryButton::after,
531
+ .ghostButton::after,
532
+ .linkButton::after {
533
+ content: "";
534
+ position: absolute;
535
+ inset: 1px;
536
+ border-radius: inherit;
537
+ border: 1px solid rgba(255, 255, 255, 0.14);
538
+ pointer-events: none;
329
539
  }
330
540
  .primaryButton {
331
541
  padding: 0.86rem 1rem;
332
- color: white;
542
+ color: #f7fbfb;
333
543
  background:
334
544
  linear-gradient(
335
545
  135deg,
336
- var(--blue-deep),
337
- var(--violet));
338
- box-shadow: 0 12px 28px rgba(90, 46, 255, 0.2);
546
+ #12182a 0%,
547
+ #1f3144 56%,
548
+ #7fb9c5 100%);
549
+ border: 1px solid rgba(140, 198, 211, 0.22);
550
+ box-shadow: 0 14px 34px rgba(12, 16, 31, 0.22), inset 0 1px 0 rgba(255, 255, 255, 0.18);
339
551
  }
340
552
  .ghostButton,
341
553
  .linkButton {
342
554
  padding: 0.72rem 0.95rem;
343
555
  color: var(--ink);
344
- background: rgba(255, 255, 255, 0.8);
345
- border: 1px solid rgba(91, 114, 179, 0.18);
556
+ background:
557
+ linear-gradient(
558
+ 180deg,
559
+ rgba(255, 255, 255, 0.7),
560
+ rgba(228, 238, 241, 0.52));
561
+ border: 1px solid rgba(128, 187, 199, 0.2);
562
+ box-shadow: 0 10px 24px rgba(12, 16, 31, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.24);
346
563
  }
347
564
  .dangerButton {
348
565
  color: #d94778;
@@ -358,6 +575,7 @@ button {
358
575
  .ghostButton:hover,
359
576
  .linkButton:hover {
360
577
  transform: translateY(-1px);
578
+ box-shadow: 0 16px 36px rgba(12, 16, 31, 0.16), inset 0 1px 0 rgba(255, 255, 255, 0.22);
361
579
  }
362
580
  .checkboxRow {
363
581
  display: flex;
@@ -384,36 +602,48 @@ button {
384
602
  gap: 0.7rem;
385
603
  padding: 1rem;
386
604
  border-radius: 1.25rem;
387
- background: rgba(255, 255, 255, 0.86);
388
- border: 1px solid rgba(91, 114, 179, 0.14);
605
+ background: rgba(255, 255, 255, 0.88);
606
+ border: 1px solid var(--panel-border-strong);
389
607
  }
390
608
  .message.user {
391
609
  background:
392
610
  linear-gradient(
393
611
  135deg,
394
- rgba(47, 124, 255, 0.14),
395
- rgba(127, 77, 255, 0.12));
612
+ rgba(184, 236, 239, 0.4),
613
+ rgba(128, 187, 199, 0.22));
396
614
  }
397
615
  .message.assistant {
398
616
  background:
399
617
  linear-gradient(
400
618
  135deg,
401
- rgba(255, 255, 255, 0.96),
402
- rgba(240, 248, 255, 0.92));
619
+ rgba(255, 255, 255, 0.97),
620
+ rgba(243, 252, 252, 0.92));
403
621
  }
404
622
  .message.system {
405
- background: rgba(19, 35, 61, 0.05);
623
+ background: rgba(13, 16, 32, 0.04);
624
+ }
625
+ .message.system {
626
+ padding: 0.1rem 0;
627
+ border: 0;
628
+ border-radius: 0;
629
+ background: transparent;
630
+ }
631
+ .message.system .messageTopline {
632
+ margin-bottom: 0.15rem;
633
+ }
634
+ .message.system .messageText {
635
+ max-width: 70ch;
406
636
  }
407
637
  .message.streaming {
408
638
  background:
409
639
  linear-gradient(
410
640
  135deg,
411
641
  rgba(255, 255, 255, 0.98),
412
- rgba(240, 248, 255, 0.94)),
642
+ rgba(243, 252, 252, 0.94)),
413
643
  linear-gradient(
414
644
  90deg,
415
- rgba(79, 196, 255, 0.08),
416
- rgba(127, 77, 255, 0.08));
645
+ rgba(184, 236, 239, 0.14),
646
+ rgba(69, 104, 116, 0.08));
417
647
  }
418
648
  .messageTopline {
419
649
  display: flex;
@@ -426,7 +656,7 @@ button {
426
656
  font-weight: 700;
427
657
  letter-spacing: 0.08em;
428
658
  text-transform: uppercase;
429
- color: var(--violet-deep);
659
+ color: var(--violet);
430
660
  }
431
661
  .messageBadges {
432
662
  display: flex;
@@ -442,12 +672,12 @@ button {
442
672
  font-size: 0.75rem;
443
673
  font-weight: 700;
444
674
  color: var(--ink);
445
- background: rgba(255, 255, 255, 0.88);
446
- border: 1px solid rgba(91, 114, 179, 0.14);
675
+ background: var(--panel-soft);
676
+ border: 1px solid var(--panel-border);
447
677
  }
448
678
  .phaseBadge {
449
679
  color: var(--violet-deep);
450
- background: rgba(127, 77, 255, 0.1);
680
+ background: rgba(128, 187, 199, 0.16);
451
681
  }
452
682
  .quietBadge {
453
683
  color: var(--muted);
@@ -462,9 +692,9 @@ button {
462
692
  background:
463
693
  linear-gradient(
464
694
  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);
695
+ rgba(184, 236, 239, 0.16),
696
+ rgba(69, 104, 116, 0.08));
697
+ border: 1px solid var(--panel-border);
468
698
  }
469
699
  .compactWorkbench {
470
700
  padding: 0.82rem 0.95rem;
@@ -489,21 +719,21 @@ button {
489
719
  135deg,
490
720
  var(--blue-deep),
491
721
  var(--violet));
492
- box-shadow: 0 0 0 0 rgba(90, 46, 255, 0.24);
722
+ box-shadow: 0 0 0 0 rgba(128, 187, 199, 0.26);
493
723
  animation: workPulse 1.6s ease-in-out infinite;
494
724
  }
495
725
  .workGlyphRing {
496
726
  position: absolute;
497
727
  inset: 0;
498
728
  border-radius: 999px;
499
- border: 1px solid rgba(90, 46, 255, 0.2);
729
+ border: 1px solid rgba(69, 104, 116, 0.22);
500
730
  }
501
731
  .workGlyphRingA {
502
732
  animation: workOrbit 2.2s linear infinite;
503
733
  }
504
734
  .workGlyphRingB {
505
735
  inset: 0.34rem;
506
- border-color: rgba(47, 124, 255, 0.28);
736
+ border-color: rgba(128, 187, 199, 0.34);
507
737
  animation: workOrbitReverse 2.8s linear infinite;
508
738
  }
509
739
  .progressTicker {
@@ -517,8 +747,8 @@ button {
517
747
  align-items: center;
518
748
  padding: 0.62rem 0.78rem;
519
749
  border-radius: 0.95rem;
520
- background: rgba(255, 255, 255, 0.72);
521
- border: 1px solid rgba(91, 114, 179, 0.1);
750
+ background: rgba(255, 255, 255, 0.74);
751
+ border: 1px solid var(--panel-border);
522
752
  font-size: 0.93rem;
523
753
  }
524
754
  .progressTickerEntry.info .progressDot {
@@ -546,14 +776,14 @@ button {
546
776
  width: 0.72rem;
547
777
  height: 0.72rem;
548
778
  border-radius: 999px;
549
- box-shadow: 0 0 0 6px rgba(79, 196, 255, 0.08);
779
+ box-shadow: 0 0 0 6px rgba(184, 236, 239, 0.18);
550
780
  }
551
781
  .streamPreview {
552
782
  display: grid;
553
783
  gap: 0.32rem;
554
784
  padding: 0.9rem 1rem;
555
785
  border-radius: 1rem;
556
- background: rgba(19, 35, 61, 0.03);
786
+ background: rgba(13, 16, 32, 0.03);
557
787
  color: var(--muted);
558
788
  font-size: 0.95rem;
559
789
  line-height: 1.55;
@@ -611,7 +841,7 @@ button {
611
841
  margin-top: 0.24rem;
612
842
  }
613
843
  .markdownBody a {
614
- color: var(--blue-deep);
844
+ color: var(--violet);
615
845
  text-decoration: underline;
616
846
  text-underline-offset: 0.14em;
617
847
  word-break: break-word;
@@ -619,7 +849,7 @@ button {
619
849
  .markdownBody code {
620
850
  padding: 0.12rem 0.36rem;
621
851
  border-radius: 0.45rem;
622
- background: rgba(19, 35, 61, 0.08);
852
+ background: rgba(13, 16, 32, 0.08);
623
853
  font-family:
624
854
  "IBM Plex Mono",
625
855
  "SFMono-Regular",
@@ -631,7 +861,7 @@ button {
631
861
  overflow: auto;
632
862
  padding: 0.9rem 1rem;
633
863
  border-radius: 0.9rem;
634
- background: rgba(19, 35, 61, 0.06);
864
+ background: rgba(13, 16, 32, 0.06);
635
865
  }
636
866
  .markdownBody pre code {
637
867
  padding: 0;
@@ -639,12 +869,12 @@ button {
639
869
  }
640
870
  .markdownBody blockquote {
641
871
  padding-left: 0.9rem;
642
- border-left: 3px solid rgba(90, 46, 255, 0.24);
872
+ border-left: 3px solid rgba(128, 187, 199, 0.38);
643
873
  color: var(--muted);
644
874
  }
645
875
  .markdownBody hr {
646
876
  border: 0;
647
- border-top: 1px solid rgba(91, 114, 179, 0.16);
877
+ border-top: 1px solid var(--panel-border);
648
878
  }
649
879
  .notice {
650
880
  position: fixed;
@@ -654,22 +884,192 @@ button {
654
884
  max-width: 24rem;
655
885
  padding: 0.95rem 1rem;
656
886
  border-radius: 1rem;
657
- color: white;
887
+ color: #f7fbfb;
658
888
  background:
659
889
  linear-gradient(
660
890
  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);
891
+ rgba(13, 16, 32, 0.96),
892
+ rgba(69, 104, 116, 0.96),
893
+ rgba(128, 187, 199, 0.94));
894
+ box-shadow: 0 12px 30px rgba(12, 16, 31, 0.24);
895
+ }
896
+ .panel,
897
+ .brandCard,
898
+ .chatHero,
899
+ .setupHero,
900
+ .sessionPanel,
901
+ .formPanel,
902
+ .factCard,
903
+ .composerDocked,
904
+ .message,
905
+ .message.user,
906
+ .message.assistant,
907
+ .message.system,
908
+ .message.streaming,
909
+ .workbench,
910
+ .progressTickerEntry,
911
+ .streamPreview,
912
+ .workflowCard,
913
+ .workflowGraphWrap {
914
+ background: var(--panel);
915
+ box-shadow: none;
916
+ }
917
+ .panel {
918
+ backdrop-filter: none;
919
+ outline: none;
920
+ }
921
+ .sessionPanel {
922
+ background: var(--panel);
923
+ }
924
+ .panel::before,
925
+ .primaryButton::before,
926
+ .ghostButton::before,
927
+ .linkButton::before,
928
+ .primaryButton::after,
929
+ .ghostButton::after,
930
+ .linkButton::after {
931
+ content: none;
932
+ }
933
+ .brandCard,
934
+ .chatHero,
935
+ .setupHero,
936
+ .sessionPanel,
937
+ .formPanel,
938
+ .factCard,
939
+ .composerDocked,
940
+ .message,
941
+ .workbench,
942
+ .progressTickerEntry,
943
+ .streamPreview,
944
+ .workflowCard,
945
+ .workflowGraphWrap {
946
+ border-color: var(--panel-border);
947
+ }
948
+ .composerDocked {
949
+ backdrop-filter: none;
950
+ }
951
+ .brandTitleAccent,
952
+ .messageRole,
953
+ .markdownBody a {
954
+ color: var(--blue-deep);
955
+ }
956
+ .primaryButton,
957
+ .ghostButton,
958
+ .linkButton {
959
+ backdrop-filter: none;
960
+ -webkit-backdrop-filter: none;
961
+ box-shadow: none;
962
+ }
963
+ .primaryButton {
964
+ background: var(--violet-deep);
965
+ border: 1px solid var(--panel-border-deep);
966
+ color: #f3f7f8;
967
+ }
968
+ .ghostButton,
969
+ .linkButton {
970
+ background: var(--panel);
971
+ border: 1px solid var(--panel-border-strong);
972
+ color: var(--ink);
973
+ }
974
+ .primaryButton:hover,
975
+ .ghostButton:hover,
976
+ .linkButton:hover {
977
+ box-shadow: none;
978
+ filter: brightness(0.96);
979
+ }
980
+ .composerButtonGroup {
981
+ display: inline-flex;
982
+ align-items: center;
983
+ gap: 0.65rem;
984
+ }
985
+ .resetChatButton {
986
+ background: transparent;
987
+ }
988
+ .sessionFacts {
989
+ gap: 0;
990
+ border-top: 1px solid var(--panel-border);
991
+ }
992
+ .factCard {
993
+ padding: 0.9rem 0;
994
+ border: 0;
995
+ border-radius: 0;
996
+ background: transparent;
997
+ }
998
+ .factCard + .factCard {
999
+ border-top: 1px solid var(--panel-border);
1000
+ }
1001
+ .message,
1002
+ .message.user,
1003
+ .message.assistant,
1004
+ .message.system,
1005
+ .message.streaming,
1006
+ .progressTickerEntry,
1007
+ .workbench,
1008
+ .streamPreview {
1009
+ background: var(--panel-soft);
1010
+ border-color: transparent;
1011
+ }
1012
+ .composerDocked {
1013
+ background: var(--panel);
1014
+ border-top-color: var(--panel-border);
1015
+ }
1016
+ .sessionPanel .sectionHeader .primaryButton {
1017
+ padding: 0.72rem 0.96rem;
1018
+ border-radius: 1.35rem;
1019
+ background: var(--panel-soft);
1020
+ border-color: var(--panel-border-strong);
1021
+ color: var(--ink);
1022
+ }
1023
+ .sessionPanel .sectionHeader .primaryButton:hover {
1024
+ filter: brightness(0.98);
1025
+ }
1026
+ .message.user,
1027
+ .workbench,
1028
+ .phaseBadge {
1029
+ background: var(--panel-strong);
1030
+ }
1031
+ .message.system,
1032
+ .streamPreview,
1033
+ .markdownBody code,
1034
+ .markdownBody pre {
1035
+ background: var(--panel-strong);
1036
+ }
1037
+ .message.system {
1038
+ background: transparent;
1039
+ border-color: transparent;
1040
+ }
1041
+ .message.system .messageText,
1042
+ .message.system .markdownBody,
1043
+ .message.system .markdownBody p {
1044
+ background: transparent;
1045
+ }
1046
+ .messageBadge.quietBadge {
1047
+ color: var(--muted);
1048
+ background: var(--panel);
1049
+ }
1050
+ .progressTickerEntry.info .progressDot,
1051
+ .workflowBadge {
1052
+ background: var(--blue-deep);
1053
+ }
1054
+ .progressTickerEntry.success .progressDot {
1055
+ background: #1f8f64;
1056
+ }
1057
+ .progressTickerEntry.error .progressDot {
1058
+ background: #c94d72;
1059
+ }
1060
+ .notice {
1061
+ background: var(--violet-deep);
1062
+ color: #f3f7f8;
1063
+ box-shadow: none;
664
1064
  }
665
1065
  @keyframes workPulse {
666
1066
  0%, 100% {
667
1067
  transform: scale(0.92);
668
- box-shadow: 0 0 0 0 rgba(90, 46, 255, 0.16);
1068
+ box-shadow: 0 0 0 0 rgba(128, 187, 199, 0.18);
669
1069
  }
670
1070
  50% {
671
1071
  transform: scale(1);
672
- box-shadow: 0 0 0 12px rgba(90, 46, 255, 0);
1072
+ box-shadow: 0 0 0 12px rgba(128, 187, 199, 0);
673
1073
  }
674
1074
  }
675
1075
  @keyframes workOrbit {
@@ -709,6 +1109,12 @@ button {
709
1109
  .sidebar {
710
1110
  overflow: visible;
711
1111
  }
1112
+ .brandTitle {
1113
+ max-width: none;
1114
+ }
1115
+ .brandTitleLine {
1116
+ white-space: normal;
1117
+ }
712
1118
  }
713
1119
  @media (max-width: 720px) {
714
1120
  .shell {
@@ -717,6 +1123,15 @@ button {
717
1123
  .brandCard {
718
1124
  grid-template-columns: 1fr;
719
1125
  }
1126
+ .brandCopy {
1127
+ padding-right: 0;
1128
+ padding-top: 0;
1129
+ }
1130
+ .themeControl {
1131
+ position: static;
1132
+ margin-top: 0.9rem;
1133
+ max-width: none;
1134
+ }
720
1135
  .chatHero,
721
1136
  .sectionHeader,
722
1137
  .chatHeroActions,
@@ -737,4 +1152,64 @@ button {
737
1152
  width: 100%;
738
1153
  }
739
1154
  }
1155
+ .workflowCard {
1156
+ margin-top: 0.75rem;
1157
+ border-radius: 12px;
1158
+ background: var(--workflow-card-bg);
1159
+ border: 1px solid var(--workflow-card-border);
1160
+ box-shadow: 0 12px 28px rgba(12, 16, 31, 0.12);
1161
+ overflow: hidden;
1162
+ }
1163
+ .workflowHeader {
1164
+ display: flex;
1165
+ align-items: center;
1166
+ justify-content: space-between;
1167
+ gap: 0.75rem;
1168
+ padding: 0.625rem 0.875rem;
1169
+ }
1170
+ .workflowHeaderLeft {
1171
+ display: flex;
1172
+ align-items: center;
1173
+ gap: 0.625rem;
1174
+ min-width: 0;
1175
+ }
1176
+ .workflowBadge {
1177
+ display: inline-block;
1178
+ padding: 0.15rem 0.55rem;
1179
+ border-radius: 999px;
1180
+ font-size: 0.72rem;
1181
+ font-weight: 600;
1182
+ text-transform: uppercase;
1183
+ letter-spacing: 0.03em;
1184
+ white-space: nowrap;
1185
+ color: var(--workflow-badge-ink);
1186
+ background: var(--workflow-badge-bg);
1187
+ }
1188
+ .workflowTitle {
1189
+ font-size: 0.9rem;
1190
+ font-weight: 500;
1191
+ color: var(--workflow-title-ink);
1192
+ overflow: hidden;
1193
+ text-overflow: ellipsis;
1194
+ white-space: nowrap;
1195
+ }
1196
+ .workflowHeader .primaryButton {
1197
+ flex-shrink: 0;
1198
+ width: auto;
1199
+ }
1200
+ .workflowGraphWrap {
1201
+ padding: 0.75rem 1rem;
1202
+ border-top: 1px solid var(--workflow-card-border);
1203
+ overflow-x: auto;
1204
+ background: var(--workflow-card-bg-subtle);
1205
+ max-height: 640px;
1206
+ overflow-y: auto;
1207
+ }
1208
+ .workflowGraph {
1209
+ display: block;
1210
+ }
1211
+ .workflowDiagram {
1212
+ margin: 0;
1213
+ color: var(--workflow-title-ink);
1214
+ }
740
1215
  /*# sourceMappingURL=styles.css.map */