@yagr/agent 0.1.0

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 (215) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +257 -0
  3. package/dist/agent.d.ts +21 -0
  4. package/dist/agent.d.ts.map +1 -0
  5. package/dist/agent.js +47 -0
  6. package/dist/agent.js.map +1 -0
  7. package/dist/cli.d.ts +3 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +293 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/config/init-yagr-home.d.ts +2 -0
  12. package/dist/config/init-yagr-home.d.ts.map +1 -0
  13. package/dist/config/init-yagr-home.js +6 -0
  14. package/dist/config/init-yagr-home.js.map +1 -0
  15. package/dist/config/load-env.d.ts +2 -0
  16. package/dist/config/load-env.d.ts.map +1 -0
  17. package/dist/config/load-env.js +20 -0
  18. package/dist/config/load-env.js.map +1 -0
  19. package/dist/config/load-n8n-engine-config.d.ts +6 -0
  20. package/dist/config/load-n8n-engine-config.d.ts.map +1 -0
  21. package/dist/config/load-n8n-engine-config.js +39 -0
  22. package/dist/config/load-n8n-engine-config.js.map +1 -0
  23. package/dist/config/yagr-config-service.d.ts +51 -0
  24. package/dist/config/yagr-config-service.d.ts.map +1 -0
  25. package/dist/config/yagr-config-service.js +103 -0
  26. package/dist/config/yagr-config-service.js.map +1 -0
  27. package/dist/config/yagr-home.d.ts +4 -0
  28. package/dist/config/yagr-home.d.ts.map +1 -0
  29. package/dist/config/yagr-home.js +25 -0
  30. package/dist/config/yagr-home.js.map +1 -0
  31. package/dist/engine/engine.d.ts +15 -0
  32. package/dist/engine/engine.d.ts.map +1 -0
  33. package/dist/engine/engine.js +2 -0
  34. package/dist/engine/engine.js.map +1 -0
  35. package/dist/engine/n8n-engine.d.ts +26 -0
  36. package/dist/engine/n8n-engine.d.ts.map +1 -0
  37. package/dist/engine/n8n-engine.js +200 -0
  38. package/dist/engine/n8n-engine.js.map +1 -0
  39. package/dist/engine/yagr-engine.d.ts +17 -0
  40. package/dist/engine/yagr-engine.d.ts.map +1 -0
  41. package/dist/engine/yagr-engine.js +37 -0
  42. package/dist/engine/yagr-engine.js.map +1 -0
  43. package/dist/gateway/cli.d.ts +8 -0
  44. package/dist/gateway/cli.d.ts.map +1 -0
  45. package/dist/gateway/cli.js +50 -0
  46. package/dist/gateway/cli.js.map +1 -0
  47. package/dist/gateway/history-viewport.d.ts +14 -0
  48. package/dist/gateway/history-viewport.d.ts.map +1 -0
  49. package/dist/gateway/history-viewport.js +51 -0
  50. package/dist/gateway/history-viewport.js.map +1 -0
  51. package/dist/gateway/interactive-ui.d.ts +4 -0
  52. package/dist/gateway/interactive-ui.d.ts.map +1 -0
  53. package/dist/gateway/interactive-ui.js +430 -0
  54. package/dist/gateway/interactive-ui.js.map +1 -0
  55. package/dist/gateway/manager.d.ts +25 -0
  56. package/dist/gateway/manager.d.ts.map +1 -0
  57. package/dist/gateway/manager.js +204 -0
  58. package/dist/gateway/manager.js.map +1 -0
  59. package/dist/gateway/telegram.d.ts +30 -0
  60. package/dist/gateway/telegram.d.ts.map +1 -0
  61. package/dist/gateway/telegram.js +406 -0
  62. package/dist/gateway/telegram.js.map +1 -0
  63. package/dist/gateway/types.d.ts +19 -0
  64. package/dist/gateway/types.d.ts.map +1 -0
  65. package/dist/gateway/types.js +2 -0
  66. package/dist/gateway/types.js.map +1 -0
  67. package/dist/gateway/webui.d.ts +13 -0
  68. package/dist/gateway/webui.d.ts.map +1 -0
  69. package/dist/gateway/webui.js +663 -0
  70. package/dist/gateway/webui.js.map +1 -0
  71. package/dist/index.d.ts +23 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +15 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/llm/create-language-model.d.ts +31 -0
  76. package/dist/llm/create-language-model.d.ts.map +1 -0
  77. package/dist/llm/create-language-model.js +129 -0
  78. package/dist/llm/create-language-model.js.map +1 -0
  79. package/dist/prompt/build-system-prompt.d.ts +3 -0
  80. package/dist/prompt/build-system-prompt.d.ts.map +1 -0
  81. package/dist/prompt/build-system-prompt.js +64 -0
  82. package/dist/prompt/build-system-prompt.js.map +1 -0
  83. package/dist/runtime/completion-gate.d.ts +21 -0
  84. package/dist/runtime/completion-gate.d.ts.map +1 -0
  85. package/dist/runtime/completion-gate.js +59 -0
  86. package/dist/runtime/completion-gate.js.map +1 -0
  87. package/dist/runtime/context-compaction.d.ts +25 -0
  88. package/dist/runtime/context-compaction.d.ts.map +1 -0
  89. package/dist/runtime/context-compaction.js +197 -0
  90. package/dist/runtime/context-compaction.js.map +1 -0
  91. package/dist/runtime/outcome.d.ts +23 -0
  92. package/dist/runtime/outcome.d.ts.map +1 -0
  93. package/dist/runtime/outcome.js +89 -0
  94. package/dist/runtime/outcome.js.map +1 -0
  95. package/dist/runtime/policy-hooks.d.ts +15 -0
  96. package/dist/runtime/policy-hooks.d.ts.map +1 -0
  97. package/dist/runtime/policy-hooks.js +54 -0
  98. package/dist/runtime/policy-hooks.js.map +1 -0
  99. package/dist/runtime/required-actions.d.ts +5 -0
  100. package/dist/runtime/required-actions.d.ts.map +1 -0
  101. package/dist/runtime/required-actions.js +77 -0
  102. package/dist/runtime/required-actions.js.map +1 -0
  103. package/dist/runtime/run-engine.d.ts +15 -0
  104. package/dist/runtime/run-engine.d.ts.map +1 -0
  105. package/dist/runtime/run-engine.js +624 -0
  106. package/dist/runtime/run-engine.js.map +1 -0
  107. package/dist/setup/setup-wizard.d.ts +52 -0
  108. package/dist/setup/setup-wizard.d.ts.map +1 -0
  109. package/dist/setup/setup-wizard.js +613 -0
  110. package/dist/setup/setup-wizard.js.map +1 -0
  111. package/dist/setup/start-launcher.d.ts +22 -0
  112. package/dist/setup/start-launcher.d.ts.map +1 -0
  113. package/dist/setup/start-launcher.js +76 -0
  114. package/dist/setup/start-launcher.js.map +1 -0
  115. package/dist/setup.d.ts +20 -0
  116. package/dist/setup.d.ts.map +1 -0
  117. package/dist/setup.js +247 -0
  118. package/dist/setup.js.map +1 -0
  119. package/dist/tools/build-tools.d.ts +608 -0
  120. package/dist/tools/build-tools.d.ts.map +1 -0
  121. package/dist/tools/build-tools.js +35 -0
  122. package/dist/tools/build-tools.js.map +1 -0
  123. package/dist/tools/delete-workspace-file.d.ts +38 -0
  124. package/dist/tools/delete-workspace-file.d.ts.map +1 -0
  125. package/dist/tools/delete-workspace-file.js +31 -0
  126. package/dist/tools/delete-workspace-file.js.map +1 -0
  127. package/dist/tools/deploy.d.ts +110 -0
  128. package/dist/tools/deploy.d.ts.map +1 -0
  129. package/dist/tools/deploy.js +28 -0
  130. package/dist/tools/deploy.js.map +1 -0
  131. package/dist/tools/generate-workflow.d.ts +180 -0
  132. package/dist/tools/generate-workflow.d.ts.map +1 -0
  133. package/dist/tools/generate-workflow.js +46 -0
  134. package/dist/tools/generate-workflow.js.map +1 -0
  135. package/dist/tools/index.d.ts +20 -0
  136. package/dist/tools/index.d.ts.map +1 -0
  137. package/dist/tools/index.js +20 -0
  138. package/dist/tools/index.js.map +1 -0
  139. package/dist/tools/list-directory.d.ts +48 -0
  140. package/dist/tools/list-directory.d.ts.map +1 -0
  141. package/dist/tools/list-directory.js +61 -0
  142. package/dist/tools/list-directory.js.map +1 -0
  143. package/dist/tools/list-workflows.d.ts +18 -0
  144. package/dist/tools/list-workflows.d.ts.map +1 -0
  145. package/dist/tools/list-workflows.js +17 -0
  146. package/dist/tools/list-workflows.js.map +1 -0
  147. package/dist/tools/manage-workflow.d.ts +42 -0
  148. package/dist/tools/manage-workflow.d.ts.map +1 -0
  149. package/dist/tools/manage-workflow.js +26 -0
  150. package/dist/tools/manage-workflow.js.map +1 -0
  151. package/dist/tools/move-workspace-file.d.ts +42 -0
  152. package/dist/tools/move-workspace-file.d.ts.map +1 -0
  153. package/dist/tools/move-workspace-file.js +45 -0
  154. package/dist/tools/move-workspace-file.js.map +1 -0
  155. package/dist/tools/n8nac.d.ts +144 -0
  156. package/dist/tools/n8nac.d.ts.map +1 -0
  157. package/dist/tools/n8nac.js +349 -0
  158. package/dist/tools/n8nac.js.map +1 -0
  159. package/dist/tools/node-info.d.ts +18 -0
  160. package/dist/tools/node-info.d.ts.map +1 -0
  161. package/dist/tools/node-info.js +15 -0
  162. package/dist/tools/node-info.js.map +1 -0
  163. package/dist/tools/observer.d.ts +32 -0
  164. package/dist/tools/observer.d.ts.map +1 -0
  165. package/dist/tools/observer.js +10 -0
  166. package/dist/tools/observer.js.map +1 -0
  167. package/dist/tools/read-workspace-file.d.ts +54 -0
  168. package/dist/tools/read-workspace-file.d.ts.map +1 -0
  169. package/dist/tools/read-workspace-file.js +49 -0
  170. package/dist/tools/read-workspace-file.js.map +1 -0
  171. package/dist/tools/replace-in-workspace-file.d.ts +62 -0
  172. package/dist/tools/replace-in-workspace-file.d.ts.map +1 -0
  173. package/dist/tools/replace-in-workspace-file.js +46 -0
  174. package/dist/tools/replace-in-workspace-file.js.map +1 -0
  175. package/dist/tools/report-progress.d.ts +20 -0
  176. package/dist/tools/report-progress.d.ts.map +1 -0
  177. package/dist/tools/report-progress.js +20 -0
  178. package/dist/tools/report-progress.js.map +1 -0
  179. package/dist/tools/request-required-action.d.ts +31 -0
  180. package/dist/tools/request-required-action.d.ts.map +1 -0
  181. package/dist/tools/request-required-action.js +33 -0
  182. package/dist/tools/request-required-action.js.map +1 -0
  183. package/dist/tools/search-nodes.d.ts +18 -0
  184. package/dist/tools/search-nodes.d.ts.map +1 -0
  185. package/dist/tools/search-nodes.js +15 -0
  186. package/dist/tools/search-nodes.js.map +1 -0
  187. package/dist/tools/search-templates.d.ts +18 -0
  188. package/dist/tools/search-templates.d.ts.map +1 -0
  189. package/dist/tools/search-templates.js +15 -0
  190. package/dist/tools/search-templates.js.map +1 -0
  191. package/dist/tools/search-workspace.d.ts +55 -0
  192. package/dist/tools/search-workspace.d.ts.map +1 -0
  193. package/dist/tools/search-workspace.js +86 -0
  194. package/dist/tools/search-workspace.js.map +1 -0
  195. package/dist/tools/validate.d.ts +110 -0
  196. package/dist/tools/validate.d.ts.map +1 -0
  197. package/dist/tools/validate.js +28 -0
  198. package/dist/tools/validate.js.map +1 -0
  199. package/dist/tools/workspace-utils.d.ts +10 -0
  200. package/dist/tools/workspace-utils.d.ts.map +1 -0
  201. package/dist/tools/workspace-utils.js +63 -0
  202. package/dist/tools/workspace-utils.js.map +1 -0
  203. package/dist/tools/write-workspace-file.d.ts +46 -0
  204. package/dist/tools/write-workspace-file.d.ts.map +1 -0
  205. package/dist/tools/write-workspace-file.js +39 -0
  206. package/dist/tools/write-workspace-file.js.map +1 -0
  207. package/dist/types.d.ts +243 -0
  208. package/dist/types.d.ts.map +1 -0
  209. package/dist/types.js +2 -0
  210. package/dist/types.js.map +1 -0
  211. package/dist/webui/app.js +26759 -0
  212. package/dist/webui/app.js.map +7 -0
  213. package/dist/webui/styles.css +740 -0
  214. package/dist/webui/styles.css.map +7 -0
  215. package/package.json +72 -0
@@ -0,0 +1,740 @@
1
+ /* src/webui/styles.css */
2
+ :root {
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);
16
+ font-family:
17
+ "Space Grotesk",
18
+ "Avenir Next",
19
+ "Segoe UI",
20
+ sans-serif;
21
+ }
22
+ * {
23
+ box-sizing: border-box;
24
+ }
25
+ html,
26
+ body,
27
+ #root {
28
+ margin: 0;
29
+ min-height: 100%;
30
+ }
31
+ body {
32
+ color: var(--ink);
33
+ 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
+ linear-gradient(
43
+ 180deg,
44
+ var(--bg-a) 0%,
45
+ #fdfcff 50%,
46
+ var(--bg-b) 100%);
47
+ }
48
+ h1,
49
+ h2,
50
+ p {
51
+ margin: 0;
52
+ }
53
+ h1,
54
+ h2 {
55
+ letter-spacing: -0.04em;
56
+ }
57
+ h1 {
58
+ font-size: clamp(1.7rem, 3vw, 2.35rem);
59
+ line-height: 1.03;
60
+ }
61
+ h2 {
62
+ font-size: clamp(1.3rem, 2.6vw, 1.85rem);
63
+ line-height: 1.08;
64
+ }
65
+ button,
66
+ input,
67
+ select,
68
+ textarea {
69
+ font: inherit;
70
+ }
71
+ .shell {
72
+ min-height: 100vh;
73
+ padding: 1.25rem;
74
+ }
75
+ .shellHome {
76
+ display: grid;
77
+ grid-template-columns: minmax(19rem, 24rem) minmax(0, 1fr);
78
+ gap: 1.25rem;
79
+ height: calc(100vh - 2.5rem);
80
+ overflow: hidden;
81
+ }
82
+ .shellSetup {
83
+ display: block;
84
+ }
85
+ .sidebar,
86
+ .chatStage,
87
+ .setupStage {
88
+ min-width: 0;
89
+ }
90
+ .sidebar {
91
+ display: grid;
92
+ gap: 1rem;
93
+ align-content: start;
94
+ min-height: 0;
95
+ overflow: auto;
96
+ }
97
+ .panel {
98
+ position: relative;
99
+ overflow: hidden;
100
+ border-radius: 1.5rem;
101
+ border: 1px solid var(--panel-border);
102
+ background: var(--panel);
103
+ backdrop-filter: blur(18px);
104
+ box-shadow: var(--shadow);
105
+ }
106
+ .panel::before {
107
+ content: "";
108
+ position: absolute;
109
+ inset: 0;
110
+ background:
111
+ linear-gradient(
112
+ 145deg,
113
+ rgba(255, 255, 255, 0.38),
114
+ rgba(255, 255, 255, 0) 42%);
115
+ pointer-events: none;
116
+ }
117
+ .brandCard,
118
+ .chatHero,
119
+ .chatPanel,
120
+ .formPanel,
121
+ .sessionPanel,
122
+ .setupHero {
123
+ padding: 1.15rem;
124
+ }
125
+ .brandCard {
126
+ display: grid;
127
+ grid-template-columns: auto 1fr;
128
+ gap: 1rem;
129
+ align-items: start;
130
+ background:
131
+ linear-gradient(
132
+ 135deg,
133
+ rgba(255, 255, 255, 0.94),
134
+ rgba(239, 248, 255, 0.82));
135
+ }
136
+ .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);
154
+ }
155
+ .eyebrow {
156
+ margin: 0 0 0.45rem;
157
+ color: var(--violet-deep);
158
+ font-size: 0.75rem;
159
+ font-weight: 700;
160
+ letter-spacing: 0.12em;
161
+ text-transform: uppercase;
162
+ }
163
+ .lede,
164
+ .muted,
165
+ .hint,
166
+ label span,
167
+ .infoLabel {
168
+ color: var(--muted);
169
+ }
170
+ .lede {
171
+ margin-top: 0.45rem;
172
+ line-height: 1.65;
173
+ }
174
+ .sectionHeader,
175
+ .chatHero,
176
+ .chatHeroActions,
177
+ .composerActions {
178
+ display: flex;
179
+ align-items: center;
180
+ justify-content: space-between;
181
+ gap: 0.75rem;
182
+ }
183
+ .chatHero,
184
+ .setupHero {
185
+ align-items: start;
186
+ background:
187
+ linear-gradient(
188
+ 135deg,
189
+ rgba(255, 255, 255, 0.94),
190
+ rgba(243, 247, 255, 0.86));
191
+ }
192
+ .setupHero {
193
+ display: grid;
194
+ gap: 1rem;
195
+ margin-bottom: 1rem;
196
+ }
197
+ .setupHeroMeta {
198
+ display: flex;
199
+ flex-wrap: wrap;
200
+ gap: 0.5rem;
201
+ }
202
+ .sessionPanel {
203
+ display: grid;
204
+ gap: 1rem;
205
+ background: var(--panel-strong);
206
+ }
207
+ .sessionFacts {
208
+ display: grid;
209
+ gap: 0.8rem;
210
+ }
211
+ .factCard {
212
+ display: grid;
213
+ gap: 0.18rem;
214
+ padding: 0.9rem 1rem;
215
+ border-radius: 1rem;
216
+ background: rgba(255, 255, 255, 0.78);
217
+ border: 1px solid rgba(91, 114, 179, 0.12);
218
+ }
219
+ .chatStage {
220
+ height: 100%;
221
+ min-height: 0;
222
+ display: grid;
223
+ grid-template-rows: auto minmax(0, 1fr);
224
+ gap: 1rem;
225
+ overflow: hidden;
226
+ }
227
+ .chatPanelSingleScroll {
228
+ height: 100%;
229
+ min-height: 0;
230
+ display: grid;
231
+ grid-template-rows: minmax(0, 1fr) auto;
232
+ gap: 1rem;
233
+ overflow: hidden;
234
+ }
235
+ .chatLog {
236
+ min-height: 0;
237
+ overflow-y: auto;
238
+ overflow-x: hidden;
239
+ display: grid;
240
+ gap: 0.9rem;
241
+ padding-right: 0.25rem;
242
+ padding-bottom: 0.2rem;
243
+ scrollbar-gutter: stable;
244
+ overscroll-behavior: contain;
245
+ }
246
+ .composerDocked {
247
+ display: grid;
248
+ gap: 0.85rem;
249
+ position: sticky;
250
+ bottom: 0;
251
+ z-index: 1;
252
+ margin: 0 -1.15rem -1.15rem;
253
+ padding: 0.95rem 1.15rem 1.15rem;
254
+ border-top: 1px solid rgba(91, 114, 179, 0.1);
255
+ background:
256
+ linear-gradient(
257
+ 180deg,
258
+ rgba(255, 255, 255, 0.45),
259
+ rgba(255, 255, 255, 0.92) 18%,
260
+ rgba(255, 255, 255, 0.96) 100%);
261
+ backdrop-filter: blur(18px);
262
+ }
263
+ .setupStage {
264
+ max-width: 1120px;
265
+ margin: 0 auto;
266
+ }
267
+ .setupGrid {
268
+ display: grid;
269
+ grid-template-columns: repeat(2, minmax(0, 1fr));
270
+ gap: 1rem;
271
+ }
272
+ .formPanel {
273
+ display: grid;
274
+ gap: 0.8rem;
275
+ background: var(--panel-strong);
276
+ }
277
+ label {
278
+ display: grid;
279
+ gap: 0.35rem;
280
+ }
281
+ label span,
282
+ .infoLabel {
283
+ font-size: 0.83rem;
284
+ font-weight: 600;
285
+ }
286
+ input,
287
+ select,
288
+ textarea {
289
+ width: 100%;
290
+ border: 1px solid rgba(91, 114, 179, 0.18);
291
+ border-radius: 1rem;
292
+ padding: 0.82rem 0.95rem;
293
+ color: var(--ink);
294
+ background: rgba(255, 255, 255, 0.92);
295
+ transition:
296
+ border-color 0.2s ease,
297
+ box-shadow 0.2s ease,
298
+ background 0.2s ease;
299
+ }
300
+ textarea {
301
+ min-height: 7rem;
302
+ resize: vertical;
303
+ }
304
+ input:focus,
305
+ select:focus,
306
+ textarea:focus {
307
+ outline: none;
308
+ border-color: rgba(90, 46, 255, 0.44);
309
+ box-shadow: 0 0 0 4px rgba(90, 46, 255, 0.12);
310
+ }
311
+ button {
312
+ border: none;
313
+ cursor: pointer;
314
+ }
315
+ .primaryButton,
316
+ .ghostButton,
317
+ .linkButton {
318
+ display: inline-flex;
319
+ align-items: center;
320
+ justify-content: center;
321
+ gap: 0.4rem;
322
+ border-radius: 999px;
323
+ font-weight: 700;
324
+ text-decoration: none;
325
+ transition:
326
+ transform 0.2s ease,
327
+ box-shadow 0.2s ease,
328
+ background 0.2s ease;
329
+ }
330
+ .primaryButton {
331
+ padding: 0.86rem 1rem;
332
+ color: white;
333
+ background:
334
+ linear-gradient(
335
+ 135deg,
336
+ var(--blue-deep),
337
+ var(--violet));
338
+ box-shadow: 0 12px 28px rgba(90, 46, 255, 0.2);
339
+ }
340
+ .ghostButton,
341
+ .linkButton {
342
+ padding: 0.72rem 0.95rem;
343
+ color: var(--ink);
344
+ background: rgba(255, 255, 255, 0.8);
345
+ border: 1px solid rgba(91, 114, 179, 0.18);
346
+ }
347
+ .dangerButton {
348
+ color: #d94778;
349
+ }
350
+ .stopButton {
351
+ min-width: 7.25rem;
352
+ }
353
+ .stopButtonSymbol {
354
+ font-size: 0.88rem;
355
+ line-height: 1;
356
+ }
357
+ .primaryButton:hover,
358
+ .ghostButton:hover,
359
+ .linkButton:hover {
360
+ transform: translateY(-1px);
361
+ }
362
+ .checkboxRow {
363
+ display: flex;
364
+ align-items: center;
365
+ gap: 0.75rem;
366
+ font-weight: 600;
367
+ }
368
+ .checkboxRow input {
369
+ width: auto;
370
+ }
371
+ .disabledRow {
372
+ opacity: 0.52;
373
+ }
374
+ .infoList {
375
+ display: grid;
376
+ gap: 0.75rem;
377
+ }
378
+ .infoList > div {
379
+ display: grid;
380
+ gap: 0.2rem;
381
+ }
382
+ .message {
383
+ display: grid;
384
+ gap: 0.7rem;
385
+ padding: 1rem;
386
+ border-radius: 1.25rem;
387
+ background: rgba(255, 255, 255, 0.86);
388
+ border: 1px solid rgba(91, 114, 179, 0.14);
389
+ }
390
+ .message.user {
391
+ background:
392
+ linear-gradient(
393
+ 135deg,
394
+ rgba(47, 124, 255, 0.14),
395
+ rgba(127, 77, 255, 0.12));
396
+ }
397
+ .message.assistant {
398
+ background:
399
+ linear-gradient(
400
+ 135deg,
401
+ rgba(255, 255, 255, 0.96),
402
+ rgba(240, 248, 255, 0.92));
403
+ }
404
+ .message.system {
405
+ background: rgba(19, 35, 61, 0.05);
406
+ }
407
+ .message.streaming {
408
+ background:
409
+ linear-gradient(
410
+ 135deg,
411
+ rgba(255, 255, 255, 0.98),
412
+ rgba(240, 248, 255, 0.94)),
413
+ linear-gradient(
414
+ 90deg,
415
+ rgba(79, 196, 255, 0.08),
416
+ rgba(127, 77, 255, 0.08));
417
+ }
418
+ .messageTopline {
419
+ display: flex;
420
+ align-items: start;
421
+ justify-content: space-between;
422
+ gap: 0.8rem;
423
+ }
424
+ .messageRole {
425
+ font-size: 0.78rem;
426
+ font-weight: 700;
427
+ letter-spacing: 0.08em;
428
+ text-transform: uppercase;
429
+ color: var(--violet-deep);
430
+ }
431
+ .messageBadges {
432
+ display: flex;
433
+ flex-wrap: wrap;
434
+ gap: 0.45rem;
435
+ justify-content: end;
436
+ }
437
+ .messageBadge {
438
+ display: inline-flex;
439
+ align-items: center;
440
+ border-radius: 999px;
441
+ padding: 0.32rem 0.62rem;
442
+ font-size: 0.75rem;
443
+ font-weight: 700;
444
+ color: var(--ink);
445
+ background: rgba(255, 255, 255, 0.88);
446
+ border: 1px solid rgba(91, 114, 179, 0.14);
447
+ }
448
+ .phaseBadge {
449
+ color: var(--violet-deep);
450
+ background: rgba(127, 77, 255, 0.1);
451
+ }
452
+ .quietBadge {
453
+ color: var(--muted);
454
+ }
455
+ .workbench {
456
+ display: grid;
457
+ grid-template-columns: auto 1fr;
458
+ gap: 0.95rem;
459
+ align-items: center;
460
+ border-radius: 1rem;
461
+ padding: 0.9rem 1rem;
462
+ background:
463
+ linear-gradient(
464
+ 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);
468
+ }
469
+ .compactWorkbench {
470
+ padding: 0.82rem 0.95rem;
471
+ }
472
+ .workMeta {
473
+ display: grid;
474
+ gap: 0.2rem;
475
+ }
476
+ .workGlyph {
477
+ position: relative;
478
+ width: 2.8rem;
479
+ height: 2.8rem;
480
+ display: grid;
481
+ place-items: center;
482
+ }
483
+ .workGlyphCore {
484
+ width: 0.9rem;
485
+ height: 0.9rem;
486
+ border-radius: 999px;
487
+ background:
488
+ linear-gradient(
489
+ 135deg,
490
+ var(--blue-deep),
491
+ var(--violet));
492
+ box-shadow: 0 0 0 0 rgba(90, 46, 255, 0.24);
493
+ animation: workPulse 1.6s ease-in-out infinite;
494
+ }
495
+ .workGlyphRing {
496
+ position: absolute;
497
+ inset: 0;
498
+ border-radius: 999px;
499
+ border: 1px solid rgba(90, 46, 255, 0.2);
500
+ }
501
+ .workGlyphRingA {
502
+ animation: workOrbit 2.2s linear infinite;
503
+ }
504
+ .workGlyphRingB {
505
+ inset: 0.34rem;
506
+ border-color: rgba(47, 124, 255, 0.28);
507
+ animation: workOrbitReverse 2.8s linear infinite;
508
+ }
509
+ .progressTicker {
510
+ display: grid;
511
+ gap: 0.45rem;
512
+ }
513
+ .progressTickerEntry {
514
+ display: grid;
515
+ grid-template-columns: auto 1fr;
516
+ gap: 0.6rem;
517
+ align-items: center;
518
+ padding: 0.62rem 0.78rem;
519
+ border-radius: 0.95rem;
520
+ background: rgba(255, 255, 255, 0.72);
521
+ border: 1px solid rgba(91, 114, 179, 0.1);
522
+ font-size: 0.93rem;
523
+ }
524
+ .progressTickerEntry.info .progressDot {
525
+ background:
526
+ linear-gradient(
527
+ 135deg,
528
+ var(--blue),
529
+ var(--blue-deep));
530
+ }
531
+ .progressTickerEntry.success .progressDot {
532
+ background:
533
+ linear-gradient(
534
+ 135deg,
535
+ #1cc98a,
536
+ #08956b);
537
+ }
538
+ .progressTickerEntry.error .progressDot {
539
+ background:
540
+ linear-gradient(
541
+ 135deg,
542
+ #ff7f9a,
543
+ #d94778);
544
+ }
545
+ .progressDot {
546
+ width: 0.72rem;
547
+ height: 0.72rem;
548
+ border-radius: 999px;
549
+ box-shadow: 0 0 0 6px rgba(79, 196, 255, 0.08);
550
+ }
551
+ .streamPreview {
552
+ display: grid;
553
+ gap: 0.32rem;
554
+ padding: 0.9rem 1rem;
555
+ border-radius: 1rem;
556
+ background: rgba(19, 35, 61, 0.03);
557
+ color: var(--muted);
558
+ font-size: 0.95rem;
559
+ line-height: 1.55;
560
+ }
561
+ .messageText {
562
+ white-space: pre-wrap;
563
+ line-height: 1.7;
564
+ }
565
+ .messageText.placeholder {
566
+ color: var(--muted);
567
+ font-style: italic;
568
+ }
569
+ .markdownBody {
570
+ display: grid;
571
+ gap: 0.7rem;
572
+ }
573
+ .markdownBody > :first-child {
574
+ margin-top: 0;
575
+ }
576
+ .markdownBody > :last-child {
577
+ margin-bottom: 0;
578
+ }
579
+ .markdownBody p,
580
+ .markdownBody ul,
581
+ .markdownBody ol,
582
+ .markdownBody blockquote,
583
+ .markdownBody pre,
584
+ .markdownBody table,
585
+ .markdownBody hr {
586
+ margin: 0;
587
+ }
588
+ .markdownBody h1,
589
+ .markdownBody h2,
590
+ .markdownBody h3,
591
+ .markdownBody h4,
592
+ .markdownBody h5,
593
+ .markdownBody h6 {
594
+ margin: 0;
595
+ line-height: 1.2;
596
+ }
597
+ .markdownBody h1 {
598
+ font-size: 1.45rem;
599
+ }
600
+ .markdownBody h2 {
601
+ font-size: 1.25rem;
602
+ }
603
+ .markdownBody h3 {
604
+ font-size: 1.08rem;
605
+ }
606
+ .markdownBody ul,
607
+ .markdownBody ol {
608
+ padding-left: 1.4rem;
609
+ }
610
+ .markdownBody li + li {
611
+ margin-top: 0.24rem;
612
+ }
613
+ .markdownBody a {
614
+ color: var(--blue-deep);
615
+ text-decoration: underline;
616
+ text-underline-offset: 0.14em;
617
+ word-break: break-word;
618
+ }
619
+ .markdownBody code {
620
+ padding: 0.12rem 0.36rem;
621
+ border-radius: 0.45rem;
622
+ background: rgba(19, 35, 61, 0.08);
623
+ font-family:
624
+ "IBM Plex Mono",
625
+ "SFMono-Regular",
626
+ Consolas,
627
+ monospace;
628
+ font-size: 0.92em;
629
+ }
630
+ .markdownBody pre {
631
+ overflow: auto;
632
+ padding: 0.9rem 1rem;
633
+ border-radius: 0.9rem;
634
+ background: rgba(19, 35, 61, 0.06);
635
+ }
636
+ .markdownBody pre code {
637
+ padding: 0;
638
+ background: transparent;
639
+ }
640
+ .markdownBody blockquote {
641
+ padding-left: 0.9rem;
642
+ border-left: 3px solid rgba(90, 46, 255, 0.24);
643
+ color: var(--muted);
644
+ }
645
+ .markdownBody hr {
646
+ border: 0;
647
+ border-top: 1px solid rgba(91, 114, 179, 0.16);
648
+ }
649
+ .notice {
650
+ position: fixed;
651
+ right: 1rem;
652
+ bottom: 1rem;
653
+ z-index: 20;
654
+ max-width: 24rem;
655
+ padding: 0.95rem 1rem;
656
+ border-radius: 1rem;
657
+ color: white;
658
+ background:
659
+ linear-gradient(
660
+ 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);
664
+ }
665
+ @keyframes workPulse {
666
+ 0%, 100% {
667
+ transform: scale(0.92);
668
+ box-shadow: 0 0 0 0 rgba(90, 46, 255, 0.16);
669
+ }
670
+ 50% {
671
+ transform: scale(1);
672
+ box-shadow: 0 0 0 12px rgba(90, 46, 255, 0);
673
+ }
674
+ }
675
+ @keyframes workOrbit {
676
+ from {
677
+ transform: rotate(0deg);
678
+ }
679
+ to {
680
+ transform: rotate(360deg);
681
+ }
682
+ }
683
+ @keyframes workOrbitReverse {
684
+ from {
685
+ transform: rotate(360deg);
686
+ }
687
+ to {
688
+ transform: rotate(0deg);
689
+ }
690
+ }
691
+ @media (max-width: 1120px) {
692
+ .shellHome {
693
+ grid-template-columns: 1fr;
694
+ height: auto;
695
+ overflow: visible;
696
+ }
697
+ .setupGrid {
698
+ grid-template-columns: 1fr;
699
+ }
700
+ .chatStage {
701
+ min-height: auto;
702
+ height: auto;
703
+ overflow: visible;
704
+ }
705
+ .chatPanelSingleScroll {
706
+ height: auto;
707
+ overflow: visible;
708
+ }
709
+ .sidebar {
710
+ overflow: visible;
711
+ }
712
+ }
713
+ @media (max-width: 720px) {
714
+ .shell {
715
+ padding: 0.85rem;
716
+ }
717
+ .brandCard {
718
+ grid-template-columns: 1fr;
719
+ }
720
+ .chatHero,
721
+ .sectionHeader,
722
+ .chatHeroActions,
723
+ .composerActions,
724
+ .messageTopline {
725
+ flex-direction: column;
726
+ align-items: stretch;
727
+ }
728
+ .workbench {
729
+ grid-template-columns: 1fr;
730
+ }
731
+ .messageBadges {
732
+ justify-content: start;
733
+ }
734
+ .primaryButton,
735
+ .ghostButton,
736
+ .linkButton {
737
+ width: 100%;
738
+ }
739
+ }
740
+ /*# sourceMappingURL=styles.css.map */