@flowdrop/flowdrop 1.8.1 → 1.10.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.
- package/dist/api/enhanced-client.js +5 -1
- package/dist/components/PipelineStatus.svelte +31 -8
- package/dist/components/PipelineStatus.svelte.d.ts +5 -0
- package/dist/components/WorkflowEditor.svelte +26 -0
- package/dist/components/chat/AIChatPanel.svelte +16 -5
- package/dist/components/playground/ChatPanel.svelte +31 -108
- package/dist/components/playground/ChatPanel.svelte.d.ts +3 -1
- package/dist/components/playground/ExecutionList.svelte +138 -0
- package/dist/components/playground/ExecutionList.svelte.d.ts +10 -0
- package/dist/components/playground/MessageBubble.svelte +281 -156
- package/dist/components/playground/PipelinePanel.svelte +382 -0
- package/dist/components/playground/PipelinePanel.svelte.d.ts +20 -0
- package/dist/components/playground/Playground.svelte +707 -174
- package/dist/components/playground/Playground.svelte.d.ts +6 -0
- package/dist/components/playground/PlaygroundStudio.svelte +404 -0
- package/dist/components/playground/PlaygroundStudio.svelte.d.ts +30 -0
- package/dist/editor/index.d.ts +1 -1
- package/dist/editor/index.js +1 -1
- package/dist/playground/index.d.ts +7 -3
- package/dist/playground/index.js +14 -5
- package/dist/playground/mount.d.ts +7 -0
- package/dist/playground/mount.js +78 -81
- package/dist/services/globalSave.d.ts +7 -0
- package/dist/services/globalSave.js +5 -1
- package/dist/services/nodeExecutionService.js +4 -2
- package/dist/services/playgroundService.d.ts +11 -4
- package/dist/services/playgroundService.js +22 -12
- package/dist/stores/pipelinePanelStore.svelte.d.ts +6 -0
- package/dist/stores/pipelinePanelStore.svelte.js +24 -0
- package/dist/stores/playgroundStore.svelte.d.ts +26 -21
- package/dist/stores/playgroundStore.svelte.js +134 -55
- package/dist/svelte-app.js +25 -2
- package/dist/types/playground.d.ts +15 -5
- package/package.json +1 -1
|
@@ -153,23 +153,50 @@
|
|
|
153
153
|
|
|
154
154
|
{#if useCompactMode}
|
|
155
155
|
<!-- Compact system message: minimal inline text without bubble -->
|
|
156
|
-
<div
|
|
157
|
-
|
|
156
|
+
<div
|
|
157
|
+
class="system-notice"
|
|
158
|
+
class:system-notice--last={isLast}
|
|
159
|
+
class:system-notice--warning={message.metadata?.level === 'warning'}
|
|
160
|
+
class:system-notice--error={message.metadata?.level === 'error'}
|
|
161
|
+
class:system-notice--debug={message.metadata?.level === 'debug'}
|
|
162
|
+
>
|
|
163
|
+
<Icon icon={getLogLevelIcon()} class="system-notice__icon" />
|
|
164
|
+
{#if message.metadata?.source}
|
|
165
|
+
<span class="system-notice__source">{message.metadata.source}</span>
|
|
166
|
+
{/if}
|
|
158
167
|
<span class="system-notice__text">{message.content}</span>
|
|
159
168
|
{#if showTimestamp}
|
|
160
169
|
<span class="system-notice__timestamp">{formatTimestamp(message.timestamp)}</span>
|
|
161
170
|
{/if}
|
|
162
171
|
</div>
|
|
172
|
+
{:else if message.role === 'log'}
|
|
173
|
+
<!-- Compact log row: terminal-style entry, visually distinct from chat bubbles -->
|
|
174
|
+
<div
|
|
175
|
+
class="log-row"
|
|
176
|
+
class:log-row--error={message.metadata?.level === 'error'}
|
|
177
|
+
class:log-row--warning={message.metadata?.level === 'warning'}
|
|
178
|
+
class:log-row--debug={message.metadata?.level === 'debug'}
|
|
179
|
+
>
|
|
180
|
+
<div class="log-row__level">
|
|
181
|
+
<Icon icon={getLogLevelIcon()} />
|
|
182
|
+
</div>
|
|
183
|
+
<div class="log-row__body">
|
|
184
|
+
{#if message.metadata?.source}
|
|
185
|
+
<span class="log-row__source">{message.metadata.source}</span>
|
|
186
|
+
{/if}
|
|
187
|
+
<span class="log-row__node">{message.metadata?.nodeLabel ?? message.nodeId ?? 'log'}</span>
|
|
188
|
+
<span class="log-row__text">{message.content}</span>
|
|
189
|
+
</div>
|
|
190
|
+
{#if showTimestamp}
|
|
191
|
+
<span class="log-row__timestamp">{formatTimestamp(message.timestamp)}</span>
|
|
192
|
+
{/if}
|
|
193
|
+
</div>
|
|
163
194
|
{:else}
|
|
164
195
|
<div
|
|
165
196
|
class="message-bubble"
|
|
166
197
|
class:message-bubble--user={message.role === 'user'}
|
|
167
198
|
class:message-bubble--assistant={message.role === 'assistant'}
|
|
168
199
|
class:message-bubble--system={message.role === 'system'}
|
|
169
|
-
class:message-bubble--log={message.role === 'log'}
|
|
170
|
-
class:message-bubble--log-error={message.role === 'log' && message.metadata?.level === 'error'}
|
|
171
|
-
class:message-bubble--log-warning={message.role === 'log' &&
|
|
172
|
-
message.metadata?.level === 'warning'}
|
|
173
200
|
class:message-bubble--last={isLast}
|
|
174
201
|
>
|
|
175
202
|
<!-- Avatar / Icon -->
|
|
@@ -182,14 +209,6 @@
|
|
|
182
209
|
<!-- Header -->
|
|
183
210
|
<div class="message-bubble__header">
|
|
184
211
|
<span class="message-bubble__role">{getRoleLabel(message.role, message.metadata)}</span>
|
|
185
|
-
{#if message.role === 'log' && message.metadata?.level}
|
|
186
|
-
<span
|
|
187
|
-
class="message-bubble__log-level message-bubble__log-level--{message.metadata.level}"
|
|
188
|
-
>
|
|
189
|
-
<Icon icon={getLogLevelIcon()} />
|
|
190
|
-
{message.metadata.level.toUpperCase()}
|
|
191
|
-
</span>
|
|
192
|
-
{/if}
|
|
193
212
|
{#if showTimestamp}
|
|
194
213
|
<span class="message-bubble__timestamp">{formatTimestamp(message.timestamp)}</span>
|
|
195
214
|
{/if}
|
|
@@ -197,7 +216,7 @@
|
|
|
197
216
|
|
|
198
217
|
<!-- Message Text -->
|
|
199
218
|
<div class="message-bubble__text">
|
|
200
|
-
{#if enableMarkdown
|
|
219
|
+
{#if enableMarkdown}
|
|
201
220
|
<!-- Markdown content - sanitized with DOMPurify to prevent XSS -->
|
|
202
221
|
<!-- eslint-disable-next-line svelte/no-at-html-tags -->
|
|
203
222
|
{@html renderedContent}
|
|
@@ -214,8 +233,8 @@
|
|
|
214
233
|
class="message-bubble__node"
|
|
215
234
|
title={m().playground.messageTooltips.nodeId({ id: message.nodeId })}
|
|
216
235
|
>
|
|
217
|
-
<Icon icon="mdi:
|
|
218
|
-
{message.metadata?.nodeLabel ?? message.nodeId}
|
|
236
|
+
<Icon icon="mdi:vector-square" />
|
|
237
|
+
via {message.metadata?.nodeLabel ?? message.nodeId}
|
|
219
238
|
</span>
|
|
220
239
|
{/if}
|
|
221
240
|
{#if message.metadata?.duration !== undefined}
|
|
@@ -234,19 +253,22 @@
|
|
|
234
253
|
{/if}
|
|
235
254
|
|
|
236
255
|
<style>
|
|
256
|
+
/* ============================================================
|
|
257
|
+
Bubble container — layout only, no background
|
|
258
|
+
============================================================ */
|
|
237
259
|
.message-bubble {
|
|
238
260
|
display: flex;
|
|
239
|
-
gap: var(--fd-space-
|
|
240
|
-
padding:
|
|
241
|
-
margin-bottom:
|
|
242
|
-
|
|
243
|
-
animation: fadeIn 0.
|
|
261
|
+
gap: var(--fd-space-sm);
|
|
262
|
+
padding: 2px var(--fd-space-xl);
|
|
263
|
+
margin-bottom: 2px;
|
|
264
|
+
align-items: flex-end;
|
|
265
|
+
animation: fadeIn 0.18s ease-out;
|
|
244
266
|
}
|
|
245
267
|
|
|
246
268
|
@keyframes fadeIn {
|
|
247
269
|
from {
|
|
248
270
|
opacity: 0;
|
|
249
|
-
transform: translateY(
|
|
271
|
+
transform: translateY(6px);
|
|
250
272
|
}
|
|
251
273
|
to {
|
|
252
274
|
opacity: 1;
|
|
@@ -254,75 +276,37 @@
|
|
|
254
276
|
}
|
|
255
277
|
}
|
|
256
278
|
|
|
257
|
-
/* Role-specific styling - Neutral theme */
|
|
258
279
|
.message-bubble--user {
|
|
259
|
-
background-color: var(--fd-muted);
|
|
260
|
-
border: 1px solid var(--fd-border);
|
|
261
|
-
color: var(--fd-foreground);
|
|
262
|
-
margin-left: var(--fd-space-4xl);
|
|
263
280
|
flex-direction: row-reverse;
|
|
264
281
|
}
|
|
265
282
|
|
|
266
|
-
.message-bubble--assistant {
|
|
267
|
-
background-color: var(--fd-card);
|
|
268
|
-
border: 1px solid var(--fd-border);
|
|
269
|
-
color: var(--fd-card-foreground);
|
|
270
|
-
margin-right: var(--fd-space-4xl);
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
.message-bubble--system {
|
|
274
|
-
background-color: var(--fd-muted);
|
|
275
|
-
border: 1px solid var(--fd-border);
|
|
276
|
-
color: var(--fd-muted-foreground);
|
|
277
|
-
margin: 0 var(--fd-space-xl);
|
|
278
|
-
font-size: var(--fd-text-sm);
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
.message-bubble--log {
|
|
282
|
-
background-color: var(--fd-muted);
|
|
283
|
-
border: 1px solid var(--fd-border);
|
|
284
|
-
color: var(--fd-muted-foreground);
|
|
285
|
-
margin: 0 var(--fd-space-xl);
|
|
286
|
-
font-size: var(--fd-text-sm);
|
|
287
|
-
font-family: var(--fd-font-mono);
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
.message-bubble--log-error {
|
|
291
|
-
background-color: var(--fd-error-muted);
|
|
292
|
-
border-color: var(--fd-error);
|
|
293
|
-
color: var(--fd-error);
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
.message-bubble--log-warning {
|
|
297
|
-
background-color: var(--fd-warning-muted);
|
|
298
|
-
border-color: var(--fd-warning);
|
|
299
|
-
color: var(--fd-warning);
|
|
300
|
-
}
|
|
301
|
-
|
|
302
283
|
.message-bubble--last {
|
|
303
284
|
margin-bottom: var(--fd-space-xl);
|
|
304
285
|
}
|
|
305
286
|
|
|
306
|
-
/*
|
|
287
|
+
/* ============================================================
|
|
288
|
+
Avatar — smaller, aligned to bubble bottom
|
|
289
|
+
============================================================ */
|
|
307
290
|
.message-bubble__avatar {
|
|
308
291
|
flex-shrink: 0;
|
|
309
|
-
width:
|
|
310
|
-
height:
|
|
292
|
+
width: 1.875rem;
|
|
293
|
+
height: 1.875rem;
|
|
311
294
|
display: flex;
|
|
312
295
|
align-items: center;
|
|
313
296
|
justify-content: center;
|
|
314
297
|
border-radius: var(--fd-radius-full);
|
|
315
|
-
font-size:
|
|
298
|
+
font-size: 1rem;
|
|
316
299
|
}
|
|
317
300
|
|
|
318
301
|
.message-bubble--user .message-bubble__avatar {
|
|
319
|
-
background-color: var(--fd-
|
|
320
|
-
color: var(--fd-
|
|
302
|
+
background-color: var(--fd-primary);
|
|
303
|
+
color: var(--fd-primary-foreground);
|
|
321
304
|
}
|
|
322
305
|
|
|
323
306
|
.message-bubble--assistant .message-bubble__avatar {
|
|
324
307
|
background-color: var(--fd-secondary);
|
|
325
308
|
color: var(--fd-secondary-foreground);
|
|
309
|
+
border: 1px solid var(--fd-border);
|
|
326
310
|
}
|
|
327
311
|
|
|
328
312
|
.message-bubble--system .message-bubble__avatar {
|
|
@@ -330,21 +314,41 @@
|
|
|
330
314
|
color: var(--fd-muted-foreground);
|
|
331
315
|
}
|
|
332
316
|
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
width: var(--fd-space-3xl);
|
|
337
|
-
height: var(--fd-space-3xl);
|
|
338
|
-
font-size: var(--fd-text-sm);
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
/* Content */
|
|
317
|
+
/* ============================================================
|
|
318
|
+
Content — the actual visible bubble
|
|
319
|
+
============================================================ */
|
|
342
320
|
.message-bubble__content {
|
|
343
|
-
flex: 1;
|
|
344
321
|
min-width: 0;
|
|
322
|
+
max-width: 78%;
|
|
323
|
+
padding: var(--fd-space-sm) var(--fd-space-md);
|
|
324
|
+
border-radius: var(--fd-radius-2xl);
|
|
345
325
|
}
|
|
346
326
|
|
|
347
|
-
|
|
327
|
+
.message-bubble--user .message-bubble__content {
|
|
328
|
+
background-color: var(--fd-primary);
|
|
329
|
+
color: var(--fd-primary-foreground);
|
|
330
|
+
border-bottom-right-radius: var(--fd-radius-sm);
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
.message-bubble--assistant .message-bubble__content {
|
|
334
|
+
background-color: var(--fd-card);
|
|
335
|
+
border: 1px solid var(--fd-border);
|
|
336
|
+
color: var(--fd-card-foreground);
|
|
337
|
+
box-shadow: 0 1px 3px 0 oklch(0% 0 0 / 0.06), 0 1px 2px -1px oklch(0% 0 0 / 0.04);
|
|
338
|
+
border-bottom-left-radius: var(--fd-radius-sm);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
.message-bubble--system .message-bubble__content {
|
|
342
|
+
background-color: var(--fd-muted);
|
|
343
|
+
border: 1px solid var(--fd-border);
|
|
344
|
+
color: var(--fd-muted-foreground);
|
|
345
|
+
font-size: var(--fd-text-sm);
|
|
346
|
+
max-width: 88%;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
/* ============================================================
|
|
350
|
+
Header — role label + timestamp
|
|
351
|
+
============================================================ */
|
|
348
352
|
.message-bubble__header {
|
|
349
353
|
display: flex;
|
|
350
354
|
align-items: center;
|
|
@@ -358,77 +362,47 @@
|
|
|
358
362
|
|
|
359
363
|
.message-bubble__role {
|
|
360
364
|
font-weight: 600;
|
|
361
|
-
font-size: var(--fd-text-sm);
|
|
362
|
-
color: var(--fd-foreground);
|
|
363
|
-
}
|
|
364
|
-
|
|
365
|
-
.message-bubble--user .message-bubble__role {
|
|
366
|
-
color: var(--fd-foreground);
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
.message-bubble--assistant .message-bubble__role {
|
|
370
|
-
color: var(--fd-foreground);
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
.message-bubble--log .message-bubble__role {
|
|
374
|
-
font-weight: 500;
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
.message-bubble__log-level {
|
|
378
|
-
display: flex;
|
|
379
|
-
align-items: center;
|
|
380
|
-
gap: var(--fd-space-3xs);
|
|
381
365
|
font-size: var(--fd-text-xs);
|
|
382
|
-
font-weight: 600;
|
|
383
|
-
padding: 0.125rem var(--fd-space-3xs);
|
|
384
|
-
border-radius: var(--fd-radius-sm);
|
|
385
366
|
text-transform: uppercase;
|
|
386
367
|
letter-spacing: 0.05em;
|
|
387
368
|
}
|
|
388
369
|
|
|
389
|
-
.message-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
.message-bubble__log-level--warning {
|
|
395
|
-
background-color: var(--fd-warning-muted);
|
|
396
|
-
color: var(--fd-warning);
|
|
370
|
+
.message-bubble--user .message-bubble__role {
|
|
371
|
+
color: var(--fd-primary-foreground);
|
|
372
|
+
opacity: 0.75;
|
|
397
373
|
}
|
|
398
374
|
|
|
399
|
-
.message-
|
|
400
|
-
|
|
401
|
-
color: var(--fd-error);
|
|
375
|
+
.message-bubble--assistant .message-bubble__role {
|
|
376
|
+
color: var(--fd-muted-foreground);
|
|
402
377
|
}
|
|
403
378
|
|
|
404
|
-
.message-
|
|
405
|
-
|
|
406
|
-
color: var(--fd-accent);
|
|
379
|
+
.message-bubble--system .message-bubble__role {
|
|
380
|
+
color: var(--fd-muted-foreground);
|
|
407
381
|
}
|
|
408
382
|
|
|
409
383
|
.message-bubble__timestamp {
|
|
410
|
-
font-size:
|
|
411
|
-
color: var(--fd-muted-foreground);
|
|
384
|
+
font-size: 0.6875rem;
|
|
412
385
|
font-family: var(--fd-font-mono);
|
|
386
|
+
opacity: 0.55;
|
|
413
387
|
}
|
|
414
388
|
|
|
415
389
|
.message-bubble--user .message-bubble__timestamp {
|
|
390
|
+
color: var(--fd-primary-foreground);
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
.message-bubble--assistant .message-bubble__timestamp {
|
|
416
394
|
color: var(--fd-muted-foreground);
|
|
417
395
|
}
|
|
418
396
|
|
|
419
|
-
/*
|
|
397
|
+
/* ============================================================
|
|
398
|
+
Message text
|
|
399
|
+
============================================================ */
|
|
420
400
|
.message-bubble__text {
|
|
421
401
|
line-height: var(--fd-leading-relaxed);
|
|
422
402
|
word-break: break-word;
|
|
423
403
|
}
|
|
424
404
|
|
|
425
|
-
|
|
426
|
-
font-size: var(--fd-text-sm);
|
|
427
|
-
line-height: var(--fd-leading-tight);
|
|
428
|
-
white-space: pre-wrap;
|
|
429
|
-
}
|
|
430
|
-
|
|
431
|
-
/* Markdown styling for message content */
|
|
405
|
+
/* Markdown — shared */
|
|
432
406
|
.message-bubble__text :global(p) {
|
|
433
407
|
margin: 0 0 var(--fd-space-md) 0;
|
|
434
408
|
}
|
|
@@ -457,17 +431,9 @@
|
|
|
457
431
|
margin-top: 0;
|
|
458
432
|
}
|
|
459
433
|
|
|
460
|
-
.message-bubble__text :global(h1) {
|
|
461
|
-
|
|
462
|
-
}
|
|
463
|
-
|
|
464
|
-
.message-bubble__text :global(h2) {
|
|
465
|
-
font-size: var(--fd-text-lg);
|
|
466
|
-
}
|
|
467
|
-
|
|
468
|
-
.message-bubble__text :global(h3) {
|
|
469
|
-
font-size: var(--fd-text-base);
|
|
470
|
-
}
|
|
434
|
+
.message-bubble__text :global(h1) { font-size: var(--fd-text-xl); }
|
|
435
|
+
.message-bubble__text :global(h2) { font-size: var(--fd-text-lg); }
|
|
436
|
+
.message-bubble__text :global(h3) { font-size: var(--fd-text-base); }
|
|
471
437
|
|
|
472
438
|
.message-bubble__text :global(ul),
|
|
473
439
|
.message-bubble__text :global(ol) {
|
|
@@ -548,26 +514,51 @@
|
|
|
548
514
|
font-weight: 600;
|
|
549
515
|
}
|
|
550
516
|
|
|
551
|
-
.message-bubble__text :global(strong) {
|
|
552
|
-
|
|
517
|
+
.message-bubble__text :global(strong) { font-weight: 600; }
|
|
518
|
+
.message-bubble__text :global(em) { font-style: italic; }
|
|
519
|
+
|
|
520
|
+
/* Markdown overrides for primary-bg (user) bubbles */
|
|
521
|
+
.message-bubble--user .message-bubble__text :global(code) {
|
|
522
|
+
background-color: color-mix(in srgb, var(--fd-primary-foreground) 18%, transparent);
|
|
523
|
+
color: var(--fd-primary-foreground);
|
|
553
524
|
}
|
|
554
525
|
|
|
555
|
-
.message-bubble__text :global(
|
|
556
|
-
|
|
526
|
+
.message-bubble--user .message-bubble__text :global(pre) {
|
|
527
|
+
background-color: rgb(0 0 0 / 0.25);
|
|
528
|
+
color: var(--fd-primary-foreground);
|
|
557
529
|
}
|
|
558
530
|
|
|
559
|
-
|
|
531
|
+
.message-bubble--user .message-bubble__text :global(a) {
|
|
532
|
+
color: var(--fd-primary-foreground);
|
|
533
|
+
text-decoration: underline;
|
|
534
|
+
opacity: 0.85;
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
.message-bubble--user .message-bubble__text :global(blockquote) {
|
|
538
|
+
border-left-color: color-mix(in srgb, var(--fd-primary-foreground) 40%, transparent);
|
|
539
|
+
color: var(--fd-primary-foreground);
|
|
540
|
+
opacity: 0.8;
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
/* ============================================================
|
|
544
|
+
Footer — node / duration metadata
|
|
545
|
+
============================================================ */
|
|
560
546
|
.message-bubble__footer {
|
|
561
547
|
display: flex;
|
|
562
548
|
align-items: center;
|
|
563
549
|
gap: var(--fd-space-md);
|
|
564
550
|
margin-top: var(--fd-space-xs);
|
|
551
|
+
padding-top: var(--fd-space-3xs);
|
|
552
|
+
border-top: 1px solid var(--fd-border);
|
|
565
553
|
font-size: var(--fd-text-xs);
|
|
566
554
|
color: var(--fd-muted-foreground);
|
|
567
555
|
}
|
|
568
556
|
|
|
569
557
|
.message-bubble--user .message-bubble__footer {
|
|
570
558
|
justify-content: flex-end;
|
|
559
|
+
border-top-color: color-mix(in srgb, var(--fd-primary-foreground) 20%, transparent);
|
|
560
|
+
color: var(--fd-primary-foreground);
|
|
561
|
+
opacity: 0.75;
|
|
571
562
|
}
|
|
572
563
|
|
|
573
564
|
.message-bubble__node,
|
|
@@ -577,25 +568,128 @@
|
|
|
577
568
|
gap: var(--fd-space-3xs);
|
|
578
569
|
}
|
|
579
570
|
|
|
580
|
-
/*
|
|
571
|
+
/* ============================================================
|
|
572
|
+
Responsive
|
|
573
|
+
============================================================ */
|
|
581
574
|
@media (max-width: 640px) {
|
|
582
|
-
.message-
|
|
583
|
-
|
|
584
|
-
margin-left: 0;
|
|
585
|
-
margin-right: 0;
|
|
575
|
+
.message-bubble__content {
|
|
576
|
+
max-width: 88%;
|
|
586
577
|
}
|
|
587
578
|
|
|
588
579
|
.message-bubble__avatar {
|
|
589
|
-
width: 1.
|
|
590
|
-
height: 1.
|
|
591
|
-
font-size: var(--fd-text-
|
|
580
|
+
width: 1.625rem;
|
|
581
|
+
height: 1.625rem;
|
|
582
|
+
font-size: var(--fd-text-sm);
|
|
592
583
|
}
|
|
593
584
|
}
|
|
594
585
|
|
|
595
586
|
/* ========================================
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
587
|
+
Log Row Styles
|
|
588
|
+
Compact terminal-style entry, distinct from chat bubbles
|
|
589
|
+
======================================== */
|
|
590
|
+
|
|
591
|
+
.log-row {
|
|
592
|
+
display: flex;
|
|
593
|
+
align-items: center;
|
|
594
|
+
gap: var(--fd-space-sm);
|
|
595
|
+
padding: 0.1875rem var(--fd-space-xl);
|
|
596
|
+
border-left: 2px solid var(--fd-info);
|
|
597
|
+
margin: 1px 0;
|
|
598
|
+
font-family: var(--fd-font-mono);
|
|
599
|
+
font-size: var(--fd-text-xs);
|
|
600
|
+
color: var(--fd-muted-foreground);
|
|
601
|
+
line-height: var(--fd-leading-normal);
|
|
602
|
+
background-color: transparent;
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
.log-row:hover {
|
|
606
|
+
background-color: var(--fd-muted);
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
.log-row--error {
|
|
610
|
+
border-left-color: var(--fd-error);
|
|
611
|
+
color: var(--fd-error);
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
.log-row--warning {
|
|
615
|
+
border-left-color: var(--fd-warning);
|
|
616
|
+
color: var(--fd-warning);
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
.log-row--debug {
|
|
620
|
+
border-left-color: var(--fd-border-strong);
|
|
621
|
+
color: var(--fd-border-strong);
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
.log-row__level {
|
|
625
|
+
flex-shrink: 0;
|
|
626
|
+
display: flex;
|
|
627
|
+
align-items: center;
|
|
628
|
+
font-size: var(--fd-text-sm);
|
|
629
|
+
opacity: 0.7;
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
.log-row--error .log-row__level {
|
|
633
|
+
color: var(--fd-error);
|
|
634
|
+
opacity: 1;
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
.log-row--warning .log-row__level {
|
|
638
|
+
color: var(--fd-warning);
|
|
639
|
+
opacity: 1;
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
.log-row__body {
|
|
643
|
+
flex: 1;
|
|
644
|
+
min-width: 0;
|
|
645
|
+
display: flex;
|
|
646
|
+
align-items: baseline;
|
|
647
|
+
gap: var(--fd-space-sm);
|
|
648
|
+
overflow: hidden;
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
.log-row__source {
|
|
652
|
+
flex-shrink: 0;
|
|
653
|
+
font-size: 0.6rem;
|
|
654
|
+
text-transform: uppercase;
|
|
655
|
+
letter-spacing: 0.06em;
|
|
656
|
+
color: var(--fd-muted-foreground);
|
|
657
|
+
opacity: 0.6;
|
|
658
|
+
background-color: var(--fd-muted);
|
|
659
|
+
border: 1px solid var(--fd-border);
|
|
660
|
+
border-radius: var(--fd-radius-sm);
|
|
661
|
+
padding: 0 0.25rem;
|
|
662
|
+
line-height: 1.4;
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
.log-row__node {
|
|
666
|
+
flex-shrink: 0;
|
|
667
|
+
font-weight: 600;
|
|
668
|
+
color: var(--fd-foreground);
|
|
669
|
+
opacity: 0.5;
|
|
670
|
+
font-size: 0.65rem;
|
|
671
|
+
text-transform: uppercase;
|
|
672
|
+
letter-spacing: 0.04em;
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
.log-row__text {
|
|
676
|
+
flex: 1;
|
|
677
|
+
min-width: 0;
|
|
678
|
+
white-space: pre-wrap;
|
|
679
|
+
word-break: break-word;
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
.log-row__timestamp {
|
|
683
|
+
flex-shrink: 0;
|
|
684
|
+
font-size: 0.625rem;
|
|
685
|
+
color: var(--fd-border-strong);
|
|
686
|
+
opacity: 0.8;
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
/* ========================================
|
|
690
|
+
Compact System Notice Styles
|
|
691
|
+
Minimal inline display for system messages
|
|
692
|
+
======================================== */
|
|
599
693
|
|
|
600
694
|
.system-notice {
|
|
601
695
|
display: flex;
|
|
@@ -620,11 +714,42 @@
|
|
|
620
714
|
color: var(--fd-border-strong);
|
|
621
715
|
}
|
|
622
716
|
|
|
623
|
-
.system-
|
|
717
|
+
.system-notice__source {
|
|
718
|
+
flex-shrink: 0;
|
|
719
|
+
font-size: 0.6rem;
|
|
720
|
+
text-transform: uppercase;
|
|
721
|
+
letter-spacing: 0.06em;
|
|
624
722
|
color: var(--fd-muted-foreground);
|
|
723
|
+
background-color: var(--fd-muted);
|
|
724
|
+
border: 1px solid var(--fd-border);
|
|
725
|
+
border-radius: var(--fd-radius-sm);
|
|
726
|
+
padding: 0 0.25rem;
|
|
727
|
+
line-height: 1.4;
|
|
728
|
+
}
|
|
729
|
+
|
|
730
|
+
.system-notice__text {
|
|
625
731
|
line-height: var(--fd-leading-tight);
|
|
626
732
|
}
|
|
627
733
|
|
|
734
|
+
.system-notice--warning {
|
|
735
|
+
color: var(--fd-warning);
|
|
736
|
+
}
|
|
737
|
+
.system-notice--warning :global(.system-notice__icon) {
|
|
738
|
+
color: var(--fd-warning);
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
.system-notice--error {
|
|
742
|
+
color: var(--fd-error);
|
|
743
|
+
}
|
|
744
|
+
.system-notice--error :global(.system-notice__icon) {
|
|
745
|
+
color: var(--fd-error);
|
|
746
|
+
}
|
|
747
|
+
|
|
748
|
+
.system-notice--debug {
|
|
749
|
+
color: var(--fd-border-strong);
|
|
750
|
+
opacity: 0.6;
|
|
751
|
+
}
|
|
752
|
+
|
|
628
753
|
.system-notice__timestamp {
|
|
629
754
|
flex-shrink: 0;
|
|
630
755
|
font-size: 0.625rem;
|