ai-agent-inspector 1.0.0__py3-none-any.whl → 1.1.1__py3-none-any.whl

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.
@@ -1,630 +1,1203 @@
1
1
  :root {
2
- --bg: #f3f0ea;
3
- --bg-2: #f9f7f3;
4
- --ink: #1f1d1a;
5
- --muted: #6e6a63;
6
- --panel: #ffffffcc;
7
- --panel-strong: #ffffff;
8
- --line: #e3ddd2;
9
- --accent: #0f6f5c;
10
- --accent-2: #d1774f;
11
- --accent-3: #2d6cdf;
12
- --chip: #e6f3ef;
13
- --shadow: 0 10px 30px rgba(32, 26, 17, 0.12);
14
- --radius: 16px;
15
- }
16
-
17
- * {
18
- margin: 0;
19
- padding: 0;
20
- box-sizing: border-box;
21
- }
22
-
23
- body {
24
- font-family: "Space Grotesk", "SF Pro Text", "Segoe UI", system-ui, -apple-system, sans-serif;
25
- color: var(--ink);
26
- background:
27
- radial-gradient(1000px 600px at 10% -10%, #ffe8d1 0%, transparent 60%),
28
- radial-gradient(900px 500px at 110% 0%, #dff4ff 0%, transparent 55%),
29
- linear-gradient(180deg, var(--bg), var(--bg-2));
30
- height: 100vh;
31
- overflow: hidden;
32
- }
33
-
34
- .container {
35
- display: grid;
36
- grid-template-columns: 28% 46% 26%;
37
- height: 100vh;
38
- gap: 16px;
39
- padding: 16px;
40
- }
41
-
42
- .panel {
43
- background-color: var(--panel);
44
- border: 1px solid var(--line);
45
- border-radius: var(--radius);
46
- overflow-y: auto;
47
- display: flex;
48
- flex-direction: column;
49
- box-shadow: var(--shadow);
50
- backdrop-filter: blur(10px);
51
- }
52
-
53
- .panel:last-child {
54
- border-right: 1px solid var(--line);
55
- }
56
-
57
- .panel-header {
58
- padding: 16px 18px;
59
- border-bottom: 1px solid var(--line);
60
- background-color: var(--panel-strong);
61
- font-weight: 700;
62
- color: var(--ink);
63
- font-family: "Fraunces", "Iowan Old Style", "Palatino", "Times New Roman", serif;
64
- letter-spacing: 0.2px;
65
- position: sticky;
66
- top: 0;
67
- z-index: 10;
68
- }
69
-
70
- .panel-content {
71
- flex: 1;
72
- overflow-y: auto;
73
- padding: 16px 18px 22px 18px;
74
- }
75
-
76
- /* Left Panel - Run List */
77
- .filters {
78
- padding: 12px 14px 14px 14px;
79
- background-color: var(--panel-strong);
80
- border-bottom: 1px solid var(--line);
81
- }
82
-
83
- .search-input {
84
- width: 100%;
85
- padding: 10px 12px;
86
- border: 1px solid var(--line);
87
- border-radius: 10px;
88
- margin-bottom: 8px;
89
- font-size: 14px;
90
- background-color: #fff;
91
- transition: border-color 0.2s ease, box-shadow 0.2s ease;
92
- }
93
-
94
- .search-input:focus {
95
- outline: none;
96
- border-color: var(--accent);
97
- box-shadow: 0 0 0 3px rgba(15, 111, 92, 0.15);
98
- }
99
-
100
- .filter-select {
101
- width: 100%;
102
- padding: 10px 12px;
103
- border: 1px solid var(--line);
104
- border-radius: 10px;
105
- margin-bottom: 8px;
106
- font-size: 14px;
107
- background-color: #fff;
108
- }
109
-
110
- .run-list {
111
- list-style: none;
112
- display: flex;
113
- flex-direction: column;
114
- gap: 10px;
115
- }
116
-
117
- .run-item {
118
- padding: 14px 16px;
119
- border: 1px solid var(--line);
120
- border-radius: 12px;
121
- cursor: pointer;
122
- transition: transform 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease;
123
- background: #fff;
124
- }
125
-
126
- .run-item:hover {
127
- transform: translateY(-1px);
128
- box-shadow: 0 6px 18px rgba(21, 16, 10, 0.08);
129
- border-color: #d7cfc1;
130
- }
131
-
132
- .run-item.active {
133
- border-color: var(--accent);
134
- box-shadow: 0 0 0 2px rgba(15, 111, 92, 0.2);
135
- }
136
-
137
- .run-name {
138
- font-weight: 600;
139
- color: var(--accent-3);
140
- margin-bottom: 4px;
141
- }
142
-
143
- .run-meta {
144
- font-size: 12px;
145
- color: var(--muted);
146
- }
147
-
148
- .run-status {
149
- display: inline-block;
150
- padding: 4px 10px;
151
- border-radius: 999px;
152
- font-size: 11px;
153
- font-weight: 600;
154
- margin-left: 8px;
155
- }
156
-
157
- .run-status.completed {
158
- background-color: #e1f3e9;
159
- color: #1f6e4c;
160
- }
161
-
162
- .run-status.running {
163
- background-color: #e4eefc;
164
- color: #1f4ca3;
165
- }
166
-
167
- .run-status.failed {
168
- background-color: #fde4e2;
169
- color: #b43c2f;
170
- }
171
-
172
- /* Center Panel - Timeline */
173
- .timeline {
174
- position: relative;
175
- }
176
-
177
- .timeline-event {
178
- display: flex;
179
- align-items: flex-start;
180
- padding: 12px;
181
- border-radius: 12px;
182
- margin-bottom: 10px;
183
- border: 1px solid var(--line);
184
- background: #fff;
185
- }
186
-
187
- .timeline-event:hover {
188
- box-shadow: 0 6px 16px rgba(21, 16, 10, 0.08);
189
- }
190
-
191
- .event-icon {
192
- width: 40px;
193
- height: 40px;
194
- border-radius: 50%;
195
- display: flex;
196
- align-items: center;
197
- justify-content: center;
198
- margin-right: 12px;
199
- flex-shrink: 0;
200
- font-weight: bold;
201
- color: white;
202
- font-size: 14px;
203
- }
204
-
205
- .event-icon.llm_call {
206
- background-color: #1f8f6f;
207
- }
208
-
209
- .event-icon.tool_call {
210
- background-color: #2d6cdf;
211
- }
212
-
213
- .event-icon.memory_read {
214
- background-color: #d1774f;
215
- }
216
-
217
- .event-icon.memory_write {
218
- background-color: #d1774f;
219
- }
220
-
221
- .event-icon.error {
222
- background-color: #d84b4b;
223
- }
224
-
225
- .event-icon.final_answer {
226
- background-color: #7a5bd6;
227
- }
228
-
229
- .event-content {
230
- flex: 1;
231
- }
232
-
233
- .event-type {
234
- font-weight: 600;
235
- color: var(--ink);
236
- margin-bottom: 4px;
237
- }
238
-
239
- .event-timestamp {
240
- font-size: 12px;
241
- color: var(--muted);
242
- margin-bottom: 4px;
243
- }
244
-
245
- .event-summary {
246
- font-size: 13px;
247
- color: #4b4741;
248
- white-space: nowrap;
249
- overflow: hidden;
250
- text-overflow: ellipsis;
251
- }
252
-
253
- .event-connector {
254
- position: absolute;
255
- left: 20px;
256
- top: 0;
257
- bottom: 0;
258
- width: 2px;
259
- background-color: #e6dfd1;
260
- z-index: 0;
261
- }
262
-
263
- /* Right Panel - Detail View */
264
- .detail-content {
265
- font-size: 13px;
266
- color: var(--ink);
267
- }
268
-
269
- .detail-section {
270
- margin-bottom: 16px;
271
- }
272
-
273
- .detail-label {
274
- font-weight: 600;
275
- color: var(--muted);
276
- margin-bottom: 4px;
277
- font-size: 11px;
278
- text-transform: uppercase;
279
- letter-spacing: 0.4px;
280
- }
281
-
282
- .detail-value {
283
- background-color: #fff;
284
- padding: 10px 12px;
285
- border-radius: 10px;
286
- border: 1px solid var(--line);
287
- font-family: 'Courier New', monospace;
288
- font-size: 12px;
289
- word-wrap: break-word;
290
- }
291
-
292
- .detail-chat {
293
- background-color: #fff;
294
- padding: 10px 12px;
295
- border-radius: 10px;
296
- border: 1px solid var(--line);
297
- font-size: 12px;
298
- display: flex;
299
- flex-direction: column;
300
- gap: 8px;
301
- }
302
-
303
- .chat-row {
304
- display: grid;
305
- grid-template-columns: 80px 1fr;
306
- gap: 8px;
307
- align-items: start;
308
- padding: 6px 8px;
309
- border-radius: 6px;
310
- background-color: #fff;
311
- border: 1px solid #ece7dd;
312
- }
313
-
314
- .chat-row.system {
315
- background-color: #eef6ff;
316
- border-color: #d6e7ff;
317
- }
318
-
319
- .chat-row.user {
320
- background-color: #f3f7f0;
321
- border-color: #e1ebda;
322
- }
323
-
324
- .chat-row.assistant {
325
- background-color: #fff6e9;
326
- border-color: #ffe6c9;
327
- }
328
-
329
- .chat-role {
330
- font-weight: 600;
331
- text-transform: uppercase;
332
- font-size: 10px;
333
- color: #666;
334
- }
335
-
336
- .chat-content {
337
- white-space: pre-wrap;
338
- line-height: 1.4;
339
- color: #333;
340
- }
341
-
342
- .detail-empty {
343
- color: #999;
344
- font-style: italic;
345
- }
346
-
347
- /* Loading state */
348
- .loading {
349
- text-align: center;
350
- padding: 40px;
351
- color: var(--muted);
352
- }
353
-
354
- /* Error state */
355
- .error {
356
- color: #d84b4b;
357
- text-align: center;
358
- padding: 40px;
359
- }
360
-
361
- @keyframes fadeUp {
362
- from { opacity: 0; transform: translateY(6px); }
363
- to { opacity: 1; transform: translateY(0); }
364
- }
365
-
366
- .panel, .run-item, .timeline-event, .detail-section {
367
- animation: fadeUp 0.3s ease both;
368
- }
369
-
370
- @media (max-width: 900px) {
371
- .container {
372
- grid-template-columns: 1fr;
373
- grid-template-rows: auto auto auto;
374
- height: auto;
375
- overflow: auto;
376
- }
377
-
378
- body {
379
- overflow: auto;
380
- }
381
- }
382
-
383
- .theme-toggle {
384
- position: fixed;
385
- top: 16px;
386
- right: 16px;
387
- z-index: 50;
388
- background: #ffffff;
389
- border: 1px solid var(--line);
390
- border-radius: 999px;
391
- padding: 8px 14px;
392
- font-size: 12px;
393
- font-weight: 600;
394
- color: var(--ink);
395
- box-shadow: 0 6px 16px rgba(21, 16, 10, 0.12);
396
- cursor: pointer;
397
- transition: transform 0.15s ease, box-shadow 0.15s ease;
398
- }
399
-
400
- .theme-toggle:hover {
401
- transform: translateY(-1px);
402
- box-shadow: 0 10px 20px rgba(21, 16, 10, 0.16);
403
- }
404
-
405
- html.theme-dark .theme-toggle {
406
- background: #1e1b17;
407
- border-color: #3b362f;
408
- color: #efe9df;
409
- }
410
-
411
- html.theme-light .theme-toggle {
412
- background: #ffffff;
413
- }
414
-
415
- html.theme-dark body {
416
- background:
417
- radial-gradient(1000px 600px at 10% -10%, #2f2a23 0%, transparent 60%),
418
- radial-gradient(900px 500px at 110% 0%, #1f2d3a 0%, transparent 55%),
419
- linear-gradient(180deg, #141311, #1c1915);
420
- }
421
-
422
- html.theme-dark .panel {
423
- background-color: rgba(34, 32, 28, 0.92);
424
- border-color: #3b362f;
425
- }
426
-
427
- html.theme-dark .panel-header {
428
- background-color: #1d1b18;
429
- color: #efe9df;
430
- }
431
-
432
- html.theme-dark .run-item,
433
- html.theme-dark .timeline-event {
434
- background-color: #1b1916;
435
- border-color: #2f2a23;
436
- box-shadow: none;
437
- }
438
-
439
- html.theme-dark .event-connector {
440
- background-color: #2b261f;
441
- }
442
-
443
- html.theme-dark .run-item:hover {
444
- background-color: #25221d;
445
- }
446
-
447
- html.theme-dark .run-name {
448
- color: #86b7ff;
449
- }
450
-
451
- html.theme-dark .run-meta {
452
- color: #b6b0a8;
453
- }
454
-
455
- html.theme-dark .filters {
456
- background-color: #1d1b18;
457
- border-bottom-color: #3b362f;
458
- }
459
-
460
- html.theme-dark .search-input,
461
- html.theme-dark .filter-select {
462
- background-color: #151311;
463
- border-color: #3b362f;
464
- color: #efe9df;
465
- }
466
-
467
- html.theme-dark .event-type {
468
- color: #efe9df;
469
- }
470
-
471
- html.theme-dark .event-timestamp {
472
- color: #b6b0a8;
473
- }
474
-
475
- html.theme-dark .event-summary {
476
- color: #cfc7bb;
477
- }
478
-
479
- html.theme-dark .detail-label {
480
- color: #b6b0a8;
481
- }
482
-
483
- html.theme-dark .detail-value {
484
- background-color: #151311;
485
- border-color: #3b362f;
486
- color: #efe9df;
487
- }
488
-
489
- html.theme-dark .detail-chat {
490
- background-color: #151311;
491
- border-color: #3b362f;
492
- }
493
-
494
- html.theme-dark .chat-row {
495
- background-color: #1e1b17;
496
- border-color: #2f2a23;
497
- }
498
-
499
- html.theme-dark .chat-row.system {
500
- background-color: #233045;
501
- border-color: #2f3f5c;
502
- }
503
-
504
- html.theme-dark .chat-row.user {
505
- background-color: #263122;
506
- border-color: #33412d;
507
- }
508
-
509
- html.theme-dark .chat-row.assistant {
510
- background-color: #3a2f1f;
511
- border-color: #4a3a25;
512
- }
513
-
514
- html.theme-dark .chat-role {
515
- color: #cfc7bb;
516
- }
517
-
518
- html.theme-dark .chat-content {
519
- color: #efe9df;
520
- }
521
-
522
- /* Dark mode support (auto when no manual light override) */
523
- @media (prefers-color-scheme: dark) {
524
- html:not(.theme-light) body {
525
- background:
526
- radial-gradient(1000px 600px at 10% -10%, #2f2a23 0%, transparent 60%),
527
- radial-gradient(900px 500px at 110% 0%, #1f2d3a 0%, transparent 55%),
528
- linear-gradient(180deg, #141311, #1c1915);
529
- }
530
-
531
- html:not(.theme-light) .panel {
532
- background-color: rgba(34, 32, 28, 0.92);
533
- border-color: #3b362f;
534
- }
535
-
536
- html:not(.theme-light) .panel-header {
537
- background-color: #1d1b18;
538
- color: #efe9df;
539
- }
540
-
541
- html:not(.theme-light) .run-item,
542
- html:not(.theme-light) .timeline-event {
543
- background-color: #1b1916;
544
- border-color: #2f2a23;
545
- box-shadow: none;
546
- }
547
-
548
- html:not(.theme-light) .event-connector {
549
- background-color: #2b261f;
550
- }
551
-
552
- html:not(.theme-light) .run-item:hover {
553
- background-color: #25221d;
554
- }
555
-
556
- html:not(.theme-light) .run-name {
557
- color: #86b7ff;
558
- }
559
-
560
- html:not(.theme-light) .run-meta {
561
- color: #b6b0a8;
562
- }
563
-
564
- html:not(.theme-light) .filters {
565
- background-color: #1d1b18;
566
- border-bottom-color: #3b362f;
567
- }
568
-
569
- html:not(.theme-light) .search-input,
570
- html:not(.theme-light) .filter-select {
571
- background-color: #151311;
572
- border-color: #3b362f;
573
- color: #efe9df;
574
- }
575
-
576
- html:not(.theme-light) .event-type {
577
- color: #efe9df;
578
- }
579
-
580
- html:not(.theme-light) .event-timestamp {
581
- color: #b6b0a8;
582
- }
583
-
584
- html:not(.theme-light) .event-summary {
585
- color: #cfc7bb;
586
- }
587
-
588
- html:not(.theme-light) .detail-label {
589
- color: #b6b0a8;
590
- }
591
-
592
- html:not(.theme-light) .detail-value {
593
- background-color: #151311;
594
- border-color: #3b362f;
595
- color: #efe9df;
596
- }
597
-
598
- html:not(.theme-light) .detail-chat {
599
- background-color: #151311;
600
- border-color: #3b362f;
601
- }
602
-
603
- html:not(.theme-light) .chat-row {
604
- background-color: #1e1b17;
605
- border-color: #2f2a23;
606
- }
607
-
608
- html:not(.theme-light) .chat-row.system {
609
- background-color: #233045;
610
- border-color: #2f3f5c;
611
- }
612
-
613
- html:not(.theme-light) .chat-row.user {
614
- background-color: #263122;
615
- border-color: #33412d;
616
- }
617
-
618
- html:not(.theme-light) .chat-row.assistant {
619
- background-color: #3a2f1f;
620
- border-color: #4a3a25;
621
- }
622
-
623
- html:not(.theme-light) .chat-role {
624
- color: #cfc7bb;
625
- }
626
-
627
- html:not(.theme-light) .chat-content {
628
- color: #efe9df;
629
- }
630
- }
2
+ /* Modern color palette inspired by the reference image */
3
+ --bg-primary: #f5f7f6;
4
+ --bg-secondary: #e8eeec;
5
+ --bg-tertiary: #ffffff;
6
+ --text-primary: #1a1f1e;
7
+ --text-secondary: #5a6b66;
8
+ --text-muted: #8a9a94;
9
+ --border-light: #d4e0da;
10
+ --border-medium: #b8ccc4;
11
+
12
+ /* Accent colors for event types */
13
+ --accent-teal: #0d9488;
14
+ --accent-teal-light: #ccfbf1;
15
+ --accent-teal-bg: #f0fdfa;
16
+ --accent-orange: #ea580c;
17
+ --accent-orange-light: #ffedd5;
18
+ --accent-orange-bg: #fff7ed;
19
+ --accent-purple: #7c3aed;
20
+ --accent-purple-light: #ede9fe;
21
+ --accent-purple-bg: #f5f3ff;
22
+ --accent-green: #16a34a;
23
+ --accent-green-light: #dcfce7;
24
+ --accent-red: #dc2626;
25
+ --accent-red-light: #fee2e2;
26
+ --accent-blue: #2563eb;
27
+ --accent-blue-light: #dbeafe;
28
+
29
+ /* Status colors */
30
+ --status-completed: #16a34a;
31
+ --status-completed-bg: #dcfce7;
32
+ --status-running: #2563eb;
33
+ --status-running-bg: #dbeafe;
34
+ --status-failed: #dc2626;
35
+ --status-failed-bg: #fee2e2;
36
+ --status-pending: #ca8a04;
37
+ --status-pending-bg: #fef9c3;
38
+
39
+ /* Shadows */
40
+ --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
41
+ --shadow-md:
42
+ 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
43
+ --shadow-lg:
44
+ 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
45
+ --shadow-xl:
46
+ 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
47
+
48
+ /* Border radius */
49
+ --radius-sm: 6px;
50
+ --radius-md: 10px;
51
+ --radius-lg: 16px;
52
+ --radius-xl: 20px;
53
+
54
+ /* Text colors for colored card backgrounds (both light and dark mode) */
55
+ --text-on-teal-bg: #0f5f56;
56
+ --text-on-orange-bg: #c2410c;
57
+ --text-on-purple-bg: #6d28d9;
58
+ --text-on-red-bg: #b91c1c;
59
+ --text-on-green-bg: #15803d;
60
+ --text-on-teal-bg-secondary: #0a4a42;
61
+ --text-on-orange-bg-secondary: #9a3412;
62
+ --text-on-purple-bg-secondary: #5b21b6;
63
+ --text-on-red-bg-secondary: #991b1b;
64
+ --text-on-green-bg-secondary: #166534;
65
+ }
66
+
67
+ * {
68
+ margin: 0;
69
+ padding: 0;
70
+ box-sizing: border-box;
71
+ }
72
+
73
+ body {
74
+ font-family:
75
+ -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue",
76
+ Arial, sans-serif;
77
+ color: var(--text-primary);
78
+ background: linear-gradient(135deg, #f0f4f3 0%, #e6edeb 100%);
79
+ height: 100vh;
80
+ overflow: hidden;
81
+ line-height: 1.5;
82
+ }
83
+
84
+ /* Header */
85
+ .app-header {
86
+ background: var(--bg-tertiary);
87
+ border-bottom: 1px solid var(--border-light);
88
+ padding: 16px 24px;
89
+ display: flex;
90
+ align-items: center;
91
+ justify-content: space-between;
92
+ box-shadow: var(--shadow-sm);
93
+ position: relative;
94
+ z-index: 100;
95
+ }
96
+
97
+ .app-header h1 {
98
+ font-size: 20px;
99
+ font-weight: 600;
100
+ display: flex;
101
+ align-items: center;
102
+ gap: 10px;
103
+ color: var(--text-primary);
104
+ }
105
+
106
+ .app-header h1::before {
107
+ content: "";
108
+ width: 28px;
109
+ height: 28px;
110
+ background: linear-gradient(135deg, var(--accent-teal) 0%, #14b8a6 100%);
111
+ border-radius: 50%;
112
+ display: flex;
113
+ align-items: center;
114
+ justify-content: center;
115
+ box-shadow: 0 2px 8px rgba(13, 148, 136, 0.3);
116
+ }
117
+
118
+ /* Main container */
119
+ .container {
120
+ display: grid;
121
+ grid-template-columns: 320px 1fr 420px;
122
+ height: calc(100vh - 65px);
123
+ gap: 0;
124
+ }
125
+
126
+ /* Panel styling */
127
+ .panel {
128
+ background: var(--bg-tertiary);
129
+ display: flex;
130
+ flex-direction: column;
131
+ overflow: hidden;
132
+ position: relative;
133
+ }
134
+
135
+ .panel:not(:last-child) {
136
+ border-right: 1px solid var(--border-light);
137
+ }
138
+
139
+ .panel-header {
140
+ padding: 16px 20px;
141
+ background: var(--bg-tertiary);
142
+ border-bottom: 1px solid var(--border-light);
143
+ font-weight: 600;
144
+ font-size: 15px;
145
+ color: var(--text-primary);
146
+ display: flex;
147
+ align-items: center;
148
+ gap: 8px;
149
+ position: sticky;
150
+ top: 0;
151
+ z-index: 10;
152
+ }
153
+
154
+ .panel-header::before {
155
+ content: "";
156
+ width: 4px;
157
+ height: 18px;
158
+ background: var(--accent-teal);
159
+ border-radius: 2px;
160
+ }
161
+
162
+ .panel-content {
163
+ flex: 1;
164
+ overflow-y: auto;
165
+ padding: 16px;
166
+ }
167
+
168
+ /* Scrollbar styling */
169
+ .panel-content::-webkit-scrollbar {
170
+ width: 6px;
171
+ }
172
+
173
+ .panel-content::-webkit-scrollbar-track {
174
+ background: transparent;
175
+ }
176
+
177
+ .panel-content::-webkit-scrollbar-thumb {
178
+ background: var(--border-medium);
179
+ border-radius: 3px;
180
+ }
181
+
182
+ .panel-content::-webkit-scrollbar-thumb:hover {
183
+ background: var(--text-muted);
184
+ }
185
+
186
+ /* Filters */
187
+ .filters {
188
+ padding: 0 0 16px 0;
189
+ display: flex;
190
+ flex-direction: column;
191
+ gap: 10px;
192
+ }
193
+
194
+ .search-input {
195
+ width: 100%;
196
+ padding: 10px 14px;
197
+ border: 1px solid var(--border-light);
198
+ border-radius: var(--radius-md);
199
+ font-size: 14px;
200
+ background: var(--bg-primary);
201
+ transition: all 0.2s ease;
202
+ color: var(--text-primary);
203
+ }
204
+
205
+ .search-input:focus {
206
+ outline: none;
207
+ border-color: var(--accent-teal);
208
+ box-shadow: 0 0 0 3px rgba(13, 148, 136, 0.1);
209
+ background: var(--bg-tertiary);
210
+ }
211
+
212
+ .search-input::placeholder {
213
+ color: var(--text-muted);
214
+ }
215
+
216
+ .filter-row {
217
+ display: grid;
218
+ grid-template-columns: 1fr 1fr;
219
+ gap: 10px;
220
+ }
221
+
222
+ .filter-select {
223
+ width: 100%;
224
+ padding: 8px 12px;
225
+ border: 1px solid var(--border-light);
226
+ border-radius: var(--radius-md);
227
+ font-size: 13px;
228
+ background: var(--bg-primary);
229
+ color: var(--text-primary);
230
+ cursor: pointer;
231
+ transition: all 0.2s ease;
232
+ }
233
+
234
+ .filter-select:focus {
235
+ outline: none;
236
+ border-color: var(--accent-teal);
237
+ }
238
+
239
+ /* Run list */
240
+ .run-list {
241
+ list-style: none;
242
+ display: flex;
243
+ flex-direction: column;
244
+ gap: 10px;
245
+ }
246
+
247
+ .run-card {
248
+ padding: 14px 16px;
249
+ border: 1px solid var(--border-light);
250
+ border-radius: var(--radius-md);
251
+ cursor: pointer;
252
+ transition: all 0.2s ease;
253
+ background: var(--bg-tertiary);
254
+ position: relative;
255
+ overflow: hidden;
256
+ }
257
+
258
+ .run-card::before {
259
+ content: "";
260
+ position: absolute;
261
+ left: 0;
262
+ top: 0;
263
+ bottom: 0;
264
+ width: 3px;
265
+ background: var(--border-medium);
266
+ transition: background 0.2s ease;
267
+ }
268
+
269
+ .run-card:hover {
270
+ border-color: var(--border-medium);
271
+ box-shadow: var(--shadow-md);
272
+ transform: translateY(-1px);
273
+ }
274
+
275
+ .run-card.active {
276
+ border-color: var(--accent-teal);
277
+ box-shadow:
278
+ 0 0 0 3px rgba(13, 148, 136, 0.1),
279
+ var(--shadow-md);
280
+ }
281
+
282
+ .run-card.active::before {
283
+ background: var(--accent-teal);
284
+ }
285
+
286
+ .run-card.completed::before {
287
+ background: var(--status-completed);
288
+ }
289
+
290
+ .run-card.running::before {
291
+ background: var(--status-running);
292
+ }
293
+
294
+ .run-card.failed::before {
295
+ background: var(--status-failed);
296
+ }
297
+
298
+ .run-header {
299
+ display: flex;
300
+ align-items: flex-start;
301
+ justify-content: space-between;
302
+ gap: 10px;
303
+ margin-bottom: 6px;
304
+ }
305
+
306
+ .run-id {
307
+ font-weight: 600;
308
+ font-size: 14px;
309
+ color: var(--text-primary);
310
+ display: flex;
311
+ align-items: center;
312
+ gap: 8px;
313
+ }
314
+
315
+ .run-status-badge {
316
+ display: inline-flex;
317
+ align-items: center;
318
+ gap: 4px;
319
+ padding: 4px 10px;
320
+ border-radius: 20px;
321
+ font-size: 11px;
322
+ font-weight: 600;
323
+ text-transform: uppercase;
324
+ letter-spacing: 0.3px;
325
+ }
326
+
327
+ .run-status-badge.completed {
328
+ background: var(--status-completed-bg);
329
+ color: var(--status-completed);
330
+ }
331
+
332
+ .run-status-badge.running {
333
+ background: var(--status-running-bg);
334
+ color: var(--status-running);
335
+ animation: pulse 2s infinite;
336
+ }
337
+
338
+ .run-status-badge.failed {
339
+ background: var(--status-failed-bg);
340
+ color: var(--status-failed);
341
+ }
342
+
343
+ .run-status-badge.pending {
344
+ background: var(--status-pending-bg);
345
+ color: var(--status-pending);
346
+ }
347
+
348
+ @keyframes pulse {
349
+ 0%,
350
+ 100% {
351
+ opacity: 1;
352
+ }
353
+ 50% {
354
+ opacity: 0.7;
355
+ }
356
+ }
357
+
358
+ .run-description {
359
+ font-size: 13px;
360
+ color: var(--text-secondary);
361
+ line-height: 1.4;
362
+ margin-bottom: 8px;
363
+ display: -webkit-box;
364
+ -webkit-line-clamp: 2;
365
+ -webkit-box-orient: vertical;
366
+ overflow: hidden;
367
+ }
368
+
369
+ .run-meta {
370
+ display: flex;
371
+ align-items: center;
372
+ gap: 12px;
373
+ font-size: 12px;
374
+ color: var(--text-muted);
375
+ }
376
+
377
+ .run-time {
378
+ display: flex;
379
+ align-items: center;
380
+ gap: 4px;
381
+ }
382
+
383
+ /* Timeline */
384
+ .timeline,
385
+ .timeline-container {
386
+ position: relative;
387
+ padding-left: 60px;
388
+ }
389
+
390
+ .timeline-connector {
391
+ position: absolute;
392
+ left: 22px;
393
+ top: 0;
394
+ bottom: 0;
395
+ width: 2px;
396
+ background: linear-gradient(
397
+ to bottom,
398
+ var(--border-medium),
399
+ var(--border-light)
400
+ );
401
+ z-index: 0;
402
+ }
403
+
404
+ .timeline-event {
405
+ position: relative;
406
+ margin-bottom: 12px;
407
+ cursor: pointer;
408
+ transition: transform 0.15s ease;
409
+ }
410
+
411
+ .timeline-event:hover {
412
+ transform: translateX(4px);
413
+ }
414
+
415
+ .timeline-event-time {
416
+ position: absolute;
417
+ left: -58px;
418
+ top: 14px;
419
+ font-size: 11px;
420
+ color: var(--text-muted);
421
+ font-weight: 500;
422
+ text-align: right;
423
+ width: 46px;
424
+ }
425
+
426
+ .timeline-event-card {
427
+ display: flex;
428
+ gap: 12px;
429
+ padding: 14px 16px;
430
+ border: 1px solid var(--border-light);
431
+ border-radius: var(--radius-md);
432
+ background: var(--bg-tertiary);
433
+ transition: all 0.2s ease;
434
+ position: relative;
435
+ }
436
+
437
+ .timeline-event-card::before {
438
+ content: "";
439
+ position: absolute;
440
+ left: -40px;
441
+ top: 18px;
442
+ width: 10px;
443
+ height: 10px;
444
+ border-radius: 50%;
445
+ border: 2px solid var(--bg-tertiary);
446
+ z-index: 1;
447
+ transition: all 0.2s ease;
448
+ }
449
+
450
+ .timeline-event:hover .timeline-event-card::before {
451
+ transform: scale(1.2);
452
+ }
453
+
454
+ .timeline-event.llm .timeline-event-card {
455
+ background: var(--accent-teal-bg);
456
+ border-color: var(--accent-teal-light);
457
+ }
458
+
459
+ .timeline-event.llm .timeline-event-card::before {
460
+ background: var(--accent-teal);
461
+ box-shadow: 0 0 0 3px var(--accent-teal-light);
462
+ }
463
+
464
+ .timeline-event.tool .timeline-event-card {
465
+ background: var(--accent-orange-bg);
466
+ border-color: var(--accent-orange-light);
467
+ }
468
+
469
+ .timeline-event.tool .timeline-event-card::before {
470
+ background: var(--accent-orange);
471
+ box-shadow: 0 0 0 3px var(--accent-orange-light);
472
+ }
473
+
474
+ .timeline-event.memory .timeline-event-card {
475
+ background: var(--accent-purple-bg);
476
+ border-color: var(--accent-purple-light);
477
+ }
478
+
479
+ .timeline-event.memory .timeline-event-card::before {
480
+ background: var(--accent-purple);
481
+ box-shadow: 0 0 0 3px var(--accent-purple-light);
482
+ }
483
+
484
+ .timeline-event.error .timeline-event-card {
485
+ background: var(--accent-red-light);
486
+ border-color: #fecaca;
487
+ }
488
+
489
+ .timeline-event.error .timeline-event-card::before {
490
+ background: var(--accent-red);
491
+ box-shadow: 0 0 0 3px var(--accent-red-light);
492
+ }
493
+
494
+ .timeline-event.final .timeline-event-card {
495
+ background: var(--accent-green-light);
496
+ border-color: #bbf7d0;
497
+ }
498
+
499
+ .timeline-event.final .timeline-event-card::before {
500
+ background: var(--accent-green);
501
+ box-shadow: 0 0 0 3px var(--accent-green-light);
502
+ }
503
+
504
+ .event-icon-wrapper {
505
+ width: 38px;
506
+ height: 38px;
507
+ border-radius: 10px;
508
+ display: flex;
509
+ align-items: center;
510
+ justify-content: center;
511
+ font-size: 18px;
512
+ flex-shrink: 0;
513
+ }
514
+
515
+ .timeline-event.llm .event-icon-wrapper {
516
+ background: var(--accent-teal-light);
517
+ }
518
+
519
+ .timeline-event.tool .event-icon-wrapper {
520
+ background: var(--accent-orange-light);
521
+ }
522
+
523
+ .timeline-event.memory .event-icon-wrapper {
524
+ background: var(--accent-purple-light);
525
+ }
526
+
527
+ .timeline-event.error .event-icon-wrapper {
528
+ background: var(--accent-red-light);
529
+ }
530
+
531
+ .timeline-event.final .event-icon-wrapper {
532
+ background: var(--accent-green-light);
533
+ }
534
+
535
+ /* Multi-agent event styles */
536
+ .timeline-event.agent .timeline-event-card {
537
+ background: #e0f2fe;
538
+ border-color: #bae6fd;
539
+ }
540
+
541
+ .timeline-event.agent .timeline-event-card::before {
542
+ background: #0284c7;
543
+ box-shadow: 0 0 0 3px #bae6fd;
544
+ }
545
+
546
+ .timeline-event.agent .event-icon-wrapper {
547
+ background: #bae6fd;
548
+ }
549
+
550
+ .timeline-event.agent .event-type-badge {
551
+ background: #bae6fd;
552
+ color: #0284c7;
553
+ }
554
+
555
+ .timeline-event.communication .timeline-event-card {
556
+ background: #fef3c7;
557
+ border-color: #fde68a;
558
+ }
559
+
560
+ .timeline-event.communication .timeline-event-card::before {
561
+ background: #f59e0b;
562
+ box-shadow: 0 0 0 3px #fde68a;
563
+ }
564
+
565
+ .timeline-event.communication .event-icon-wrapper {
566
+ background: #fde68a;
567
+ }
568
+
569
+ .timeline-event.communication .event-type-badge {
570
+ background: #fde68a;
571
+ color: #d97706;
572
+ }
573
+
574
+ .timeline-event.handoff .timeline-event-card {
575
+ background: #e9d5ff;
576
+ border-color: #d8b4fe;
577
+ }
578
+
579
+ .timeline-event.handoff .timeline-event-card::before {
580
+ background: #a855f7;
581
+ box-shadow: 0 0 0 3px #d8b4fe;
582
+ }
583
+
584
+ .timeline-event.handoff .event-icon-wrapper {
585
+ background: #d8b4fe;
586
+ }
587
+
588
+ .timeline-event.handoff .event-type-badge {
589
+ background: #d8b4fe;
590
+ color: #7c3aed;
591
+ }
592
+
593
+ .timeline-event.task .timeline-event-card {
594
+ background: #fce7f3;
595
+ border-color: #fbcfe8;
596
+ }
597
+
598
+ .timeline-event.task .timeline-event-card::before {
599
+ background: #ec4899;
600
+ box-shadow: 0 0 0 3px #fbcfe8;
601
+ }
602
+
603
+ .timeline-event.task .event-icon-wrapper {
604
+ background: #fbcfe8;
605
+ }
606
+
607
+ .timeline-event.task .event-type-badge {
608
+ background: #fbcfe8;
609
+ color: #db2777;
610
+ }
611
+
612
+ .event-details {
613
+ flex: 1;
614
+ min-width: 0;
615
+ }
616
+
617
+ .event-type-label {
618
+ font-weight: 600;
619
+ font-size: 14px;
620
+ color: var(--text-primary);
621
+ margin-bottom: 4px;
622
+ display: flex;
623
+ align-items: center;
624
+ gap: 8px;
625
+ }
626
+
627
+ .event-type-badge {
628
+ font-size: 10px;
629
+ padding: 2px 8px;
630
+ border-radius: 12px;
631
+ font-weight: 600;
632
+ text-transform: uppercase;
633
+ letter-spacing: 0.3px;
634
+ }
635
+
636
+ .timeline-event.llm .event-type-badge {
637
+ background: var(--accent-teal-light);
638
+ color: var(--accent-teal);
639
+ }
640
+
641
+ .timeline-event.tool .event-type-badge {
642
+ background: var(--accent-orange-light);
643
+ color: var(--accent-orange);
644
+ }
645
+
646
+ .timeline-event.memory .event-type-badge {
647
+ background: var(--accent-purple-light);
648
+ color: var(--accent-purple);
649
+ }
650
+
651
+ .timeline-event.error .event-type-badge {
652
+ background: var(--accent-red-light);
653
+ color: var(--accent-red);
654
+ }
655
+
656
+ .event-summary {
657
+ font-size: 13px;
658
+ color: var(--text-secondary);
659
+ line-height: 1.4;
660
+ white-space: nowrap;
661
+ overflow: hidden;
662
+ text-overflow: ellipsis;
663
+ }
664
+
665
+ .event-data-preview {
666
+ font-size: 12px;
667
+ color: var(--text-muted);
668
+ margin-top: 6px;
669
+ padding-top: 6px;
670
+ border-top: 1px solid rgba(0, 0, 0, 0.05);
671
+ font-family: "Monaco", "Menlo", monospace;
672
+ white-space: nowrap;
673
+ overflow: hidden;
674
+ text-overflow: ellipsis;
675
+ }
676
+
677
+ /* Detail panel */
678
+ .detail-empty {
679
+ color: var(--text-muted);
680
+ font-style: italic;
681
+ text-align: center;
682
+ padding: 40px 20px;
683
+ }
684
+
685
+ .detail-content {
686
+ font-size: 13px;
687
+ }
688
+
689
+ .detail-section {
690
+ margin-bottom: 20px;
691
+ background: var(--bg-primary);
692
+ border-radius: var(--radius-md);
693
+ padding: 16px;
694
+ border: 1px solid var(--border-light);
695
+ }
696
+
697
+ .detail-section-header {
698
+ display: flex;
699
+ align-items: center;
700
+ justify-content: space-between;
701
+ margin-bottom: 12px;
702
+ padding-bottom: 10px;
703
+ border-bottom: 1px solid var(--border-light);
704
+ }
705
+
706
+ .detail-section-title {
707
+ font-weight: 600;
708
+ font-size: 12px;
709
+ color: var(--text-secondary);
710
+ text-transform: uppercase;
711
+ letter-spacing: 0.5px;
712
+ }
713
+
714
+ .detail-grid {
715
+ display: grid;
716
+ grid-template-columns: 120px 1fr;
717
+ gap: 12px;
718
+ }
719
+
720
+ .detail-label {
721
+ font-size: 12px;
722
+ color: var(--text-muted);
723
+ font-weight: 500;
724
+ }
725
+
726
+ .detail-value {
727
+ font-size: 13px;
728
+ color: var(--text-primary);
729
+ word-break: break-word;
730
+ }
731
+
732
+ .detail-value.code {
733
+ font-family: "Monaco", "Menlo", "Ubuntu Mono", monospace;
734
+ background: var(--bg-tertiary);
735
+ padding: 12px;
736
+ border-radius: var(--radius-sm);
737
+ border: 1px solid var(--border-light);
738
+ font-size: 12px;
739
+ line-height: 1.5;
740
+ white-space: pre-wrap;
741
+ overflow-x: auto;
742
+ }
743
+
744
+ /* JSON Syntax Highlighting */
745
+ .json-key {
746
+ color: #0066cc;
747
+ font-weight: 600;
748
+ }
749
+
750
+ .json-string {
751
+ color: #0d9488;
752
+ }
753
+
754
+ .json-number {
755
+ color: #ea580c;
756
+ }
757
+
758
+ .json-boolean {
759
+ color: #7c3aed;
760
+ font-weight: 600;
761
+ }
762
+
763
+ .json-null {
764
+ color: #dc2626;
765
+ font-style: italic;
766
+ }
767
+
768
+ /* Chat messages in details */
769
+ .chat-container {
770
+ display: flex;
771
+ flex-direction: column;
772
+ gap: 12px;
773
+ }
774
+
775
+ .chat-message {
776
+ padding: 12px 14px;
777
+ border-radius: var(--radius-md);
778
+ border: 1px solid var(--border-light);
779
+ }
780
+
781
+ .chat-message.system {
782
+ background: #f1f5f9;
783
+ border-color: #e2e8f0;
784
+ }
785
+
786
+ .chat-message.user {
787
+ background: var(--accent-teal-bg);
788
+ border-color: var(--accent-teal-light);
789
+ }
790
+
791
+ .chat-message.assistant {
792
+ background: #fef3c7;
793
+ border-color: #fde68a;
794
+ }
795
+
796
+ .chat-role {
797
+ font-size: 11px;
798
+ font-weight: 600;
799
+ text-transform: uppercase;
800
+ letter-spacing: 0.4px;
801
+ margin-bottom: 6px;
802
+ color: var(--text-secondary);
803
+ }
804
+
805
+ .chat-content {
806
+ font-size: 13px;
807
+ line-height: 1.5;
808
+ color: var(--text-primary);
809
+ white-space: pre-wrap;
810
+ }
811
+
812
+ /* Loading and error states */
813
+ .loading {
814
+ text-align: center;
815
+ padding: 40px;
816
+ color: var(--text-muted);
817
+ }
818
+
819
+ .loading::after {
820
+ content: "";
821
+ display: inline-block;
822
+ width: 20px;
823
+ height: 20px;
824
+ border: 2px solid var(--border-light);
825
+ border-top-color: var(--accent-teal);
826
+ border-radius: 50%;
827
+ animation: spin 1s linear infinite;
828
+ margin-left: 10px;
829
+ vertical-align: middle;
830
+ }
831
+
832
+ @keyframes spin {
833
+ to {
834
+ transform: rotate(360deg);
835
+ }
836
+ }
837
+
838
+ .error {
839
+ color: var(--accent-red);
840
+ text-align: center;
841
+ padding: 40px;
842
+ background: var(--accent-red-light);
843
+ border-radius: var(--radius-md);
844
+ margin: 10px;
845
+ }
846
+
847
+ /* Theme toggle */
848
+ .theme-toggle {
849
+ background: var(--bg-primary);
850
+ border: 1px solid var(--border-light);
851
+ border-radius: 20px;
852
+ padding: 8px 16px;
853
+ font-size: 13px;
854
+ font-weight: 500;
855
+ color: var(--text-secondary);
856
+ cursor: pointer;
857
+ transition: all 0.2s ease;
858
+ display: flex;
859
+ align-items: center;
860
+ gap: 6px;
861
+ }
862
+
863
+ .theme-toggle:hover {
864
+ background: var(--bg-secondary);
865
+ border-color: var(--border-medium);
866
+ }
867
+
868
+ /* Animations */
869
+ @keyframes fadeIn {
870
+ from {
871
+ opacity: 0;
872
+ transform: translateY(10px);
873
+ }
874
+ to {
875
+ opacity: 1;
876
+ transform: translateY(0);
877
+ }
878
+ }
879
+
880
+ .run-card,
881
+ .timeline-event,
882
+ .detail-section {
883
+ animation: fadeIn 0.3s ease-out forwards;
884
+ }
885
+
886
+ /* Responsive */
887
+ @media (max-width: 1200px) {
888
+ .container {
889
+ grid-template-columns: 280px 1fr 360px;
890
+ }
891
+ }
892
+
893
+ @media (max-width: 900px) {
894
+ .container {
895
+ grid-template-columns: 1fr;
896
+ grid-template-rows: auto 1fr auto;
897
+ height: auto;
898
+ overflow: auto;
899
+ }
900
+
901
+ .panel {
902
+ min-height: 300px;
903
+ }
904
+
905
+ body {
906
+ overflow: auto;
907
+ height: auto;
908
+ }
909
+ }
910
+
911
+ /* Dark mode */
912
+ html.theme-dark {
913
+ --bg-primary: #1a1f1e;
914
+ --bg-secondary: #232a28;
915
+ --bg-tertiary: #2a3230;
916
+ --text-primary: #e8eeec;
917
+ --text-secondary: #a8b8b2;
918
+ --text-muted: #6a7a74;
919
+ --border-light: #3a4a44;
920
+ --border-medium: #4a5a54;
921
+ }
922
+
923
+ html.theme-dark .detail-section {
924
+ background: var(--bg-secondary);
925
+ border-color: var(--border-medium);
926
+ }
927
+
928
+ html.theme-dark .timeline-event.llm .event-type-label {
929
+ color: var(--text-on-teal-bg);
930
+ }
931
+
932
+ html.theme-dark .timeline-event.llm .event-summary {
933
+ color: var(--text-on-teal-bg-secondary);
934
+ }
935
+
936
+ html.theme-dark .timeline-event.tool .event-type-label {
937
+ color: var(--text-on-orange-bg);
938
+ }
939
+
940
+ html.theme-dark .timeline-event.tool .event-summary {
941
+ color: var(--text-on-orange-bg-secondary);
942
+ }
943
+
944
+ html.theme-dark .timeline-event.memory .event-type-label {
945
+ color: var(--text-on-purple-bg);
946
+ }
947
+
948
+ html.theme-dark .timeline-event.memory .event-summary {
949
+ color: var(--text-on-purple-bg-secondary);
950
+ }
951
+
952
+ html.theme-dark .timeline-event.error .event-type-label {
953
+ color: var(--text-on-red-bg);
954
+ }
955
+
956
+ html.theme-dark .timeline-event.error .event-summary {
957
+ color: var(--text-on-red-bg-secondary);
958
+ }
959
+
960
+ html.theme-dark .timeline-event.final .event-type-label {
961
+ color: var(--text-on-green-bg);
962
+ }
963
+
964
+ html.theme-dark .timeline-event.final .event-summary {
965
+ color: var(--text-on-green-bg-secondary);
966
+ }
967
+
968
+ /* Dark mode for multi-agent events */
969
+ html.theme-dark .timeline-event.agent .timeline-event-card {
970
+ background: #0c4a6e;
971
+ border-color: #075985;
972
+ }
973
+
974
+ html.theme-dark .timeline-event.agent .event-icon-wrapper {
975
+ background: #075985;
976
+ }
977
+
978
+ html.theme-dark .timeline-event.agent .event-type-label {
979
+ color: #bae6fd;
980
+ }
981
+
982
+ html.theme-dark .timeline-event.agent .event-summary {
983
+ color: #7dd3fc;
984
+ }
985
+
986
+ html.theme-dark .timeline-event.communication .timeline-event-card {
987
+ background: #713f12;
988
+ border-color: #854d0e;
989
+ }
990
+
991
+ html.theme-dark .timeline-event.communication .event-icon-wrapper {
992
+ background: #854d0e;
993
+ }
994
+
995
+ html.theme-dark .timeline-event.communication .event-type-label {
996
+ color: #fde68a;
997
+ }
998
+
999
+ html.theme-dark .timeline-event.communication .event-summary {
1000
+ color: #fcd34d;
1001
+ }
1002
+
1003
+ html.theme-dark .timeline-event.handoff .timeline-event-card {
1004
+ background: #581c87;
1005
+ border-color: #6b21a8;
1006
+ }
1007
+
1008
+ html.theme-dark .timeline-event.handoff .event-icon-wrapper {
1009
+ background: #6b21a8;
1010
+ }
1011
+
1012
+ html.theme-dark .timeline-event.handoff .event-type-label {
1013
+ color: #e9d5ff;
1014
+ }
1015
+
1016
+ html.theme-dark .timeline-event.handoff .event-summary {
1017
+ color: #d8b4fe;
1018
+ }
1019
+
1020
+ html.theme-dark .timeline-event.task .timeline-event-card {
1021
+ background: #831843;
1022
+ border-color: #9d174d;
1023
+ }
1024
+
1025
+ html.theme-dark .timeline-event.task .event-icon-wrapper {
1026
+ background: #9d174d;
1027
+ }
1028
+
1029
+ html.theme-dark .timeline-event.task .event-type-label {
1030
+ color: #fbcfe8;
1031
+ }
1032
+
1033
+ html.theme-dark .timeline-event.task .event-summary {
1034
+ color: #f9a8d4;
1035
+ }
1036
+
1037
+ html.theme-dark body {
1038
+ background: linear-gradient(135deg, #1a1f1e 0%, #232a28 100%);
1039
+ }
1040
+
1041
+ html.theme-dark .json-key {
1042
+ color: #60a5fa;
1043
+ }
1044
+
1045
+ html.theme-dark .json-string {
1046
+ color: #34d399;
1047
+ }
1048
+
1049
+ html.theme-dark .json-number {
1050
+ color: #fb923c;
1051
+ }
1052
+
1053
+ html.theme-dark .json-boolean {
1054
+ color: #a78bfa;
1055
+ }
1056
+
1057
+ /* Auto dark mode */
1058
+ @media (prefers-color-scheme: dark) {
1059
+ html:not(.theme-light) {
1060
+ --bg-primary: #1a1f1e;
1061
+ --bg-secondary: #232a28;
1062
+ --bg-tertiary: #2a3230;
1063
+ --text-primary: #e8eeec;
1064
+ --text-secondary: #a8b8b2;
1065
+ --text-muted: #6a7a74;
1066
+ --border-light: #3a4a44;
1067
+ --border-medium: #4a5a54;
1068
+ }
1069
+
1070
+ html:not(.theme-light) body {
1071
+ background: linear-gradient(135deg, #1a1f1e 0%, #232a28 100%);
1072
+ }
1073
+
1074
+ html:not(.theme-light) .json-key {
1075
+ color: #60a5fa;
1076
+ }
1077
+
1078
+ html:not(.theme-light) .json-string {
1079
+ color: #34d399;
1080
+ }
1081
+
1082
+ html:not(.theme-light) .json-number {
1083
+ color: #fb923c;
1084
+ }
1085
+
1086
+ html:not(.theme-light) .json-boolean {
1087
+ color: #a78bfa;
1088
+ }
1089
+
1090
+ html:not(.theme-light) .detail-section {
1091
+ background: var(--bg-secondary);
1092
+ border-color: var(--border-medium);
1093
+ }
1094
+
1095
+ html:not(.theme-light) .timeline-event.llm .event-type-label {
1096
+ color: var(--text-on-teal-bg);
1097
+ }
1098
+
1099
+ html:not(.theme-light) .timeline-event.llm .event-summary {
1100
+ color: var(--text-on-teal-bg-secondary);
1101
+ }
1102
+
1103
+ html:not(.theme-light) .timeline-event.tool .event-type-label {
1104
+ color: var(--text-on-orange-bg);
1105
+ }
1106
+
1107
+ html:not(.theme-light) .timeline-event.tool .event-summary {
1108
+ color: var(--text-on-orange-bg-secondary);
1109
+ }
1110
+
1111
+ html:not(.theme-light) .timeline-event.memory .event-type-label {
1112
+ color: var(--text-on-purple-bg);
1113
+ }
1114
+
1115
+ html:not(.theme-light) .timeline-event.memory .event-summary {
1116
+ color: var(--text-on-purple-bg-secondary);
1117
+ }
1118
+
1119
+ html:not(.theme-light) .timeline-event.error .event-type-label {
1120
+ color: var(--text-on-red-bg);
1121
+ }
1122
+
1123
+ html:not(.theme-light) .timeline-event.error .event-summary {
1124
+ color: var(--text-on-red-bg-secondary);
1125
+ }
1126
+
1127
+ html:not(.theme-light) .timeline-event.final .event-type-label {
1128
+ color: var(--text-on-green-bg);
1129
+ }
1130
+
1131
+ html:not(.theme-light) .timeline-event.final .event-summary {
1132
+ color: var(--text-on-green-bg-secondary);
1133
+ }
1134
+
1135
+ /* Auto dark mode for multi-agent events */
1136
+ html:not(.theme-light) .timeline-event.agent .timeline-event-card {
1137
+ background: #0c4a6e;
1138
+ border-color: #075985;
1139
+ }
1140
+
1141
+ html:not(.theme-light) .timeline-event.agent .event-icon-wrapper {
1142
+ background: #075985;
1143
+ }
1144
+
1145
+ html:not(.theme-light) .timeline-event.agent .event-type-label {
1146
+ color: #bae6fd;
1147
+ }
1148
+
1149
+ html:not(.theme-light) .timeline-event.agent .event-summary {
1150
+ color: #7dd3fc;
1151
+ }
1152
+
1153
+ html:not(.theme-light) .timeline-event.communication .timeline-event-card {
1154
+ background: #713f12;
1155
+ border-color: #854d0e;
1156
+ }
1157
+
1158
+ html:not(.theme-light) .timeline-event.communication .event-icon-wrapper {
1159
+ background: #854d0e;
1160
+ }
1161
+
1162
+ html:not(.theme-light) .timeline-event.communication .event-type-label {
1163
+ color: #fde68a;
1164
+ }
1165
+
1166
+ html:not(.theme-light) .timeline-event.communication .event-summary {
1167
+ color: #fcd34d;
1168
+ }
1169
+
1170
+ html:not(.theme-light) .timeline-event.handoff .timeline-event-card {
1171
+ background: #581c87;
1172
+ border-color: #6b21a8;
1173
+ }
1174
+
1175
+ html:not(.theme-light) .timeline-event.handoff .event-icon-wrapper {
1176
+ background: #6b21a8;
1177
+ }
1178
+
1179
+ html:not(.theme-light) .timeline-event.handoff .event-type-label {
1180
+ color: #e9d5ff;
1181
+ }
1182
+
1183
+ html:not(.theme-light) .timeline-event.handoff .event-summary {
1184
+ color: #d8b4fe;
1185
+ }
1186
+
1187
+ html:not(.theme-light) .timeline-event.task .timeline-event-card {
1188
+ background: #831843;
1189
+ border-color: #9d174d;
1190
+ }
1191
+
1192
+ html:not(.theme-light) .timeline-event.task .event-icon-wrapper {
1193
+ background: #9d174d;
1194
+ }
1195
+
1196
+ html:not(.theme-light) .timeline-event.task .event-type-label {
1197
+ color: #fbcfe8;
1198
+ }
1199
+
1200
+ html:not(.theme-light) .timeline-event.task .event-summary {
1201
+ color: #f9a8d4;
1202
+ }
1203
+ }