loadtoagent 1.0.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 (82) hide show
  1. package/README.ko.md +175 -0
  2. package/README.md +175 -0
  3. package/README.zh-CN.md +175 -0
  4. package/bin/loadtoagent.js +171 -0
  5. package/docs/ARCHITECTURE.md +30 -0
  6. package/docs/PROVIDER-CONTRACTS.md +58 -0
  7. package/docs/assets/loadtoagent-dashboard.png +0 -0
  8. package/docs/assets/loadtoagent-demo.gif +0 -0
  9. package/main.js +493 -0
  10. package/package.json +133 -0
  11. package/preload.js +75 -0
  12. package/renderer/app-agent-actions.js +285 -0
  13. package/renderer/app-bootstrap.js +95 -0
  14. package/renderer/app-dashboard.js +361 -0
  15. package/renderer/app-drawer-content.js +203 -0
  16. package/renderer/app-drawer-data.js +41 -0
  17. package/renderer/app-drawer.js +183 -0
  18. package/renderer/app-events-dialogs.js +169 -0
  19. package/renderer/app-events-filters.js +74 -0
  20. package/renderer/app-events-navigation.js +96 -0
  21. package/renderer/app-events-sessions.js +195 -0
  22. package/renderer/app-events.js +16 -0
  23. package/renderer/app-graph-layout.js +71 -0
  24. package/renderer/app-graph-model.js +107 -0
  25. package/renderer/app-graph-orchestration.js +76 -0
  26. package/renderer/app-graph-view.js +544 -0
  27. package/renderer/app-run-modal.js +221 -0
  28. package/renderer/app-session-render.js +243 -0
  29. package/renderer/app-tmux-render.js +247 -0
  30. package/renderer/app.js +608 -0
  31. package/renderer/fonts/geist-ext.woff2 +0 -0
  32. package/renderer/fonts/geist.woff2 +0 -0
  33. package/renderer/i18n-messages.js +355 -0
  34. package/renderer/i18n.js +122 -0
  35. package/renderer/index.html +386 -0
  36. package/renderer/shared.js +26 -0
  37. package/renderer/styles-agent-map.css +401 -0
  38. package/renderer/styles-cards.css +600 -0
  39. package/renderer/styles-collaboration.css +534 -0
  40. package/renderer/styles-components.css +1293 -0
  41. package/renderer/styles-onboarding.css +344 -0
  42. package/renderer/styles-overlays.css +284 -0
  43. package/renderer/styles-product.css +686 -0
  44. package/renderer/styles-responsive-product.css +689 -0
  45. package/renderer/styles-responsive-runtime.css +718 -0
  46. package/renderer/styles-responsive-shell.css +533 -0
  47. package/renderer/styles-responsive-workflows.css +778 -0
  48. package/renderer/styles-run-composer.css +695 -0
  49. package/renderer/styles-settings.css +606 -0
  50. package/renderer/styles-terminal.css +1241 -0
  51. package/renderer/styles-tmux.css +1162 -0
  52. package/renderer/styles-workflow-map.css +513 -0
  53. package/renderer/styles-workflows.css +1217 -0
  54. package/renderer/styles.css +486 -0
  55. package/renderer/terminal-agent.js +152 -0
  56. package/renderer/terminal-events.js +226 -0
  57. package/renderer/terminal-workbench.js +464 -0
  58. package/renderer/terminal.js +497 -0
  59. package/src/agentMonitor/claudeParser.js +197 -0
  60. package/src/agentMonitor/codexCollaboration.js +95 -0
  61. package/src/agentMonitor/codexParser.js +447 -0
  62. package/src/agentMonitor/genericParser.js +244 -0
  63. package/src/agentMonitor/hierarchy.js +248 -0
  64. package/src/agentMonitor/sessionFiles.js +86 -0
  65. package/src/agentMonitor.js +591 -0
  66. package/src/agentRunner.js +465 -0
  67. package/src/bridgeServer.js +246 -0
  68. package/src/contracts.js +71 -0
  69. package/src/diagnostics.js +23 -0
  70. package/src/ipc/registerAgentIpc.js +12 -0
  71. package/src/ipc/registerAppIpc.js +20 -0
  72. package/src/ipc/registerTerminalIpc.js +50 -0
  73. package/src/ipc/registerTmuxIpc.js +30 -0
  74. package/src/ipc/registerWorkspaceIpc.js +14 -0
  75. package/src/monitorWorker.js +273 -0
  76. package/src/processMonitor.js +394 -0
  77. package/src/providerRegistry.js +120 -0
  78. package/src/terminalManager.js +438 -0
  79. package/src/tmuxController.js +183 -0
  80. package/src/tmuxMonitor.js +432 -0
  81. package/src/updateManager.js +339 -0
  82. package/src/workspaceStore.js +77 -0
@@ -0,0 +1,1293 @@
1
+ /*
2
+ * Shared components
3
+ * -----------------
4
+ * Reusable buttons, cards, lists, drawers, dialogs, and data presentation.
5
+ */
6
+
7
+ input {
8
+ font: inherit;
9
+ }
10
+
11
+ textarea {
12
+ font: inherit;
13
+ }
14
+
15
+ select {
16
+ font: inherit;
17
+ }
18
+
19
+ .empty-orbit:before {
20
+ content: "";
21
+ position: absolute;
22
+ inset: 6px;
23
+ border: 1px solid #263849;
24
+ border-radius: 50%;
25
+ }
26
+
27
+ button {
28
+ font: inherit;
29
+ color: inherit;
30
+ }
31
+
32
+ .workspace-section {
33
+ display: flex;
34
+ flex: 1;
35
+ flex-direction: column;
36
+ overflow: hidden;
37
+ }
38
+
39
+ .icon-button:hover {
40
+ background: #1a2230;
41
+ color: white;
42
+ }
43
+
44
+ .provider-rail {
45
+ display: grid;
46
+ gap: 3px;
47
+ }
48
+
49
+ .provider-rail-item:hover {
50
+ background: #121824;
51
+ }
52
+
53
+ .provider-rail-item strong {
54
+ overflow: hidden;
55
+ text-overflow: ellipsis;
56
+ white-space: nowrap;
57
+ font-weight: 550;
58
+ }
59
+
60
+ .workspace-item strong {
61
+ overflow: hidden;
62
+ text-overflow: ellipsis;
63
+ white-space: nowrap;
64
+ font-weight: 550;
65
+ }
66
+
67
+ .provider-mini-mark {
68
+ width: 22px;
69
+ height: 22px;
70
+ display: grid;
71
+ place-items: center;
72
+ border-radius: 7px;
73
+ background: color-mix(in srgb,var(--provider) 12%,#121720);
74
+ border: 1px solid color-mix(in srgb,var(--provider) 30%,#202938);
75
+ color: var(--provider);
76
+ font-size: 8px;
77
+ font-weight: 800;
78
+ }
79
+
80
+ .connection-dot {
81
+ width: 6px;
82
+ height: 6px;
83
+ border-radius: 50%;
84
+ background: #424b59;
85
+ }
86
+
87
+ .provider-rail-item.connected .connection-dot {
88
+ background: var(--green);
89
+ box-shadow: 0 0 8px rgba(76,227,154,.55);
90
+ }
91
+
92
+ .workspace-item:before {
93
+ content: "";
94
+ width: 6px;
95
+ height: 6px;
96
+ border-radius: 2px;
97
+ border: 1px solid #526075;
98
+ }
99
+
100
+ .workspace-item button {
101
+ opacity: 0;
102
+ margin-left: auto;
103
+ border: 0;
104
+ background: transparent;
105
+ color: #718096;
106
+ cursor: pointer;
107
+ }
108
+
109
+ .workspace-item:hover button {
110
+ opacity: 1;
111
+ }
112
+
113
+ .workspace-empty {
114
+ padding: 9px;
115
+ color: #536074;
116
+ font-size: 10px;
117
+ line-height: 1.5;
118
+ }
119
+
120
+ .workspace-item.projectless:before {
121
+ border-radius: 50%;
122
+ border-color: #718096;
123
+ background: transparent;
124
+ }
125
+
126
+ .workspace-item.projectless small {
127
+ margin-left: auto;
128
+ min-width: 20px;
129
+ padding: 2px 6px;
130
+ border-radius: 999px;
131
+ background: #1a2530;
132
+ color: #91a0ad;
133
+ font-size: 9px;
134
+ font-weight: 700;
135
+ text-align: center;
136
+ }
137
+
138
+ .workspace-item.projectless.selected small {
139
+ background: rgba(79,209,167,.15);
140
+ color: #6ee0b8;
141
+ }
142
+
143
+ .privacy-light {
144
+ width: 8px;
145
+ height: 8px;
146
+ border-radius: 50%;
147
+ background: var(--green);
148
+ box-shadow: 0 0 9px rgba(76,227,154,.55);
149
+ }
150
+
151
+ .sync-state {
152
+ display: flex;
153
+ align-items: center;
154
+ gap: 9px;
155
+ padding: 7px 12px;
156
+ border: 1px solid var(--line);
157
+ border-radius: 11px;
158
+ background: rgba(15,20,30,.72);
159
+ }
160
+
161
+ .sync-state>span {
162
+ width: 7px;
163
+ height: 7px;
164
+ border-radius: 50%;
165
+ background: var(--green);
166
+ box-shadow: 0 0 9px rgba(76,227,154,.7);
167
+ animation: pulse 1.7s infinite;
168
+ }
169
+
170
+ .primary-button:hover {
171
+ transform: translateY(-1px);
172
+ box-shadow: 0 10px 30px rgba(93,164,196,.22);
173
+ }
174
+
175
+ .primary-button:disabled {
176
+ opacity: .45;
177
+ cursor: not-allowed;
178
+ transform: none;
179
+ }
180
+
181
+ .ghost-button:hover {
182
+ background: #18202d;
183
+ color: white;
184
+ }
185
+
186
+ .sessions-heading {
187
+ display: flex;
188
+ align-items: end;
189
+ justify-content: space-between;
190
+ gap: 20px;
191
+ }
192
+
193
+ .search-box input::placeholder {
194
+ color: #536074;
195
+ }
196
+
197
+ .activity-strip {
198
+ height: 47px;
199
+ margin: 13px 16px 0;
200
+ padding: 8px 10px;
201
+ display: flex;
202
+ align-items: center;
203
+ gap: 9px;
204
+ border: 1px solid var(--line-soft);
205
+ border-radius: 10px;
206
+ background: #090d14;
207
+ }
208
+
209
+ .activity-icon {
210
+ width: 24px;
211
+ height: 24px;
212
+ display: grid;
213
+ place-items: center;
214
+ border-radius: 7px;
215
+ background: color-mix(in srgb,var(--provider) 10%,#131822);
216
+ color: var(--provider);
217
+ font-size: 10px;
218
+ }
219
+
220
+ .activity-copy {
221
+ min-width: 0;
222
+ }
223
+
224
+ .activity-copy b {
225
+ display: block;
226
+ white-space: nowrap;
227
+ overflow: hidden;
228
+ text-overflow: ellipsis;
229
+ font-size: 9px;
230
+ font-weight: 580;
231
+ color: #bec8d5;
232
+ }
233
+
234
+ .activity-copy span {
235
+ display: block;
236
+ white-space: nowrap;
237
+ overflow: hidden;
238
+ text-overflow: ellipsis;
239
+ margin-top: 3px;
240
+ color: #5f6a7b;
241
+ font-size: 8px;
242
+ }
243
+
244
+ .activity-wave {
245
+ display: flex;
246
+ align-items: center;
247
+ gap: 2px;
248
+ margin-left: auto;
249
+ height: 19px;
250
+ }
251
+
252
+ .activity-wave i {
253
+ width: 2px;
254
+ border-radius: 2px;
255
+ background: var(--provider);
256
+ opacity: .65;
257
+ animation: wave 1.1s ease-in-out infinite;
258
+ }
259
+
260
+ .activity-wave i:nth-child(1) {
261
+ height: 5px;
262
+ }
263
+
264
+ .activity-wave i:nth-child(2) {
265
+ height: 13px;
266
+ animation-delay: .12s;
267
+ }
268
+
269
+ .activity-wave i:nth-child(3) {
270
+ height: 8px;
271
+ animation-delay: .24s;
272
+ }
273
+
274
+ .activity-wave i:nth-child(4) {
275
+ height: 16px;
276
+ animation-delay: .36s;
277
+ }
278
+
279
+ .activity-wave i:nth-child(5) {
280
+ height: 6px;
281
+ animation-delay: .48s;
282
+ }
283
+
284
+ .metric-label {
285
+ display: flex;
286
+ justify-content: space-between;
287
+ gap: 8px;
288
+ color: #657186;
289
+ font-size: 8px;
290
+ }
291
+
292
+ .metric-label b {
293
+ color: #b9c4d0;
294
+ font-size: 9px;
295
+ }
296
+
297
+ .context-track {
298
+ height: 4px;
299
+ margin-top: 7px;
300
+ border-radius: 3px;
301
+ background: #1d2531;
302
+ overflow: hidden;
303
+ }
304
+
305
+ .child-row b {
306
+ color: var(--provider);
307
+ }
308
+
309
+ .child-dots {
310
+ display: flex;
311
+ margin-left: auto;
312
+ }
313
+
314
+ .child-dots i {
315
+ width: 16px;
316
+ height: 16px;
317
+ margin-left: -4px;
318
+ border: 1px solid #0e121a;
319
+ border-radius: 50%;
320
+ background: color-mix(in srgb,var(--provider) 16%,#19202b);
321
+ }
322
+
323
+ .source-tag {
324
+ display: flex;
325
+ align-items: center;
326
+ gap: 5px;
327
+ }
328
+
329
+ .source-tag:before {
330
+ content: "";
331
+ width: 5px;
332
+ height: 5px;
333
+ border-radius: 50%;
334
+ background: #596576;
335
+ }
336
+
337
+ .conversation-preview {
338
+ display: grid;
339
+ gap: 6px;
340
+ margin: 10px 16px 0;
341
+ padding: 9px 10px;
342
+ border: 1px solid #171f2c;
343
+ border-radius: 10px;
344
+ background: rgba(7,10,15,.7);
345
+ }
346
+
347
+ .load-more:hover {
348
+ border-color: #344154;
349
+ background: #131b27;
350
+ color: #d1d9e3;
351
+ }
352
+
353
+ .empty-state {
354
+ margin-top: 14px;
355
+ min-height: 310px;
356
+ display: flex;
357
+ flex-direction: column;
358
+ align-items: center;
359
+ justify-content: center;
360
+ border: 1px dashed #242d3b;
361
+ border-radius: 17px;
362
+ background: rgba(12,16,24,.44);
363
+ text-align: center;
364
+ }
365
+
366
+ .empty-state h3 {
367
+ margin: 15px 0 0;
368
+ font-size: 15px;
369
+ }
370
+
371
+ .empty-state p {
372
+ max-width: 470px;
373
+ margin: 8px 0 17px;
374
+ color: #657185;
375
+ font-size: 10px;
376
+ line-height: 1.6;
377
+ }
378
+
379
+ .empty-orbit {
380
+ position: relative;
381
+ border: 1px solid #365169;
382
+ border-radius: 50%;
383
+ box-shadow: inset 0 0 14px rgba(77,190,232,.09);
384
+ width: 48px;
385
+ height: 48px;
386
+ }
387
+
388
+ .empty-orbit span {
389
+ position: absolute;
390
+ width: 7px;
391
+ height: 7px;
392
+ border-radius: 50%;
393
+ background: var(--cyan);
394
+ box-shadow: 0 0 14px var(--cyan);
395
+ top: 4px;
396
+ left: 4px;
397
+ animation: orbit 2.5s linear infinite;
398
+ transform-origin: 19px 19px;
399
+ }
400
+
401
+ .meta-chip b {
402
+ color: #b7c1ce;
403
+ font-weight: 550;
404
+ overflow: hidden;
405
+ text-overflow: ellipsis;
406
+ white-space: nowrap;
407
+ }
408
+
409
+ .chat-row {
410
+ display: grid;
411
+ grid-template-columns: 33px minmax(0,1fr);
412
+ gap: 10px;
413
+ }
414
+
415
+ .chat-avatar {
416
+ width: 29px;
417
+ height: 29px;
418
+ display: grid;
419
+ place-items: center;
420
+ border: 1px solid var(--line);
421
+ border-radius: 9px;
422
+ background: #141a24;
423
+ color: #8592a5;
424
+ font-size: 8px;
425
+ font-weight: 750;
426
+ }
427
+
428
+ .chat-row.assistant .chat-avatar {
429
+ border-color: color-mix(in srgb,var(--drawer-provider) 30%,#253044);
430
+ background: color-mix(in srgb,var(--drawer-provider) 8%,#141a24);
431
+ color: var(--drawer-provider);
432
+ }
433
+
434
+ .chat-row.tool .chat-avatar {
435
+ color: #b19ae9;
436
+ }
437
+
438
+ .chat-bubble {
439
+ min-width: 0;
440
+ }
441
+
442
+ .chat-row.assistant pre {
443
+ background: color-mix(in srgb,var(--drawer-provider) 3%,#0b0f16);
444
+ }
445
+
446
+ .chat-content.markdown {
447
+ padding: 12px 13px;
448
+ border: 1px solid var(--line-soft);
449
+ border-radius: 11px;
450
+ background: #0b0f16;
451
+ color: #bcc7d3;
452
+ font-size: 12px;
453
+ line-height: 1.65;
454
+ overflow-wrap: anywhere;
455
+ }
456
+
457
+ .chat-content.markdown p {
458
+ margin: 0 0 8px;
459
+ }
460
+
461
+ .chat-content.markdown p:last-child {
462
+ margin-bottom: 0;
463
+ }
464
+
465
+ .chat-content.markdown h3 {
466
+ margin: 13px 0 6px;
467
+ color: #e2e9f0;
468
+ }
469
+
470
+ .chat-content.markdown h4 {
471
+ margin: 13px 0 6px;
472
+ color: #e2e9f0;
473
+ }
474
+
475
+ .chat-content.markdown h5 {
476
+ margin: 13px 0 6px;
477
+ color: #e2e9f0;
478
+ }
479
+
480
+ .chat-content.markdown ul {
481
+ margin: 6px 0 10px;
482
+ padding-left: 22px;
483
+ }
484
+
485
+ .chat-content.markdown ol {
486
+ margin: 6px 0 10px;
487
+ padding-left: 22px;
488
+ }
489
+
490
+ .chat-content.markdown code {
491
+ padding: 2px 5px;
492
+ border-radius: 5px;
493
+ background: #17212b;
494
+ color: #8fe4c4;
495
+ font-family: "Cascadia Code",Consolas,monospace;
496
+ font-size: .9em;
497
+ }
498
+
499
+ .chat-content.markdown pre {
500
+ max-height: 360px;
501
+ overflow: auto;
502
+ font-family: "Cascadia Code",Consolas,monospace;
503
+ }
504
+
505
+ .chat-truncated {
506
+ margin-bottom: 10px;
507
+ padding: 9px 11px;
508
+ border: 1px solid #3d3424;
509
+ border-radius: 9px;
510
+ background: #1d1810;
511
+ color: #d6b578;
512
+ font-size: 10px;
513
+ }
514
+
515
+ .chat-activities {
516
+ margin-top: 6px;
517
+ border: 1px solid #26313e;
518
+ border-radius: 11px;
519
+ background: #0a0f16;
520
+ overflow: hidden;
521
+ }
522
+
523
+ .chat-activities>summary {
524
+ padding: 11px 13px;
525
+ color: #91a0b1;
526
+ font-size: 11px;
527
+ cursor: pointer;
528
+ }
529
+
530
+ .chat-activities>div {
531
+ display: grid;
532
+ gap: 8px;
533
+ padding: 0 10px 10px;
534
+ }
535
+
536
+ .chat-activities article {
537
+ padding: 9px;
538
+ border: 1px solid #202a36;
539
+ border-radius: 9px;
540
+ background: #0d141d;
541
+ }
542
+
543
+ .chat-activities article header {
544
+ display: flex;
545
+ justify-content: space-between;
546
+ gap: 10px;
547
+ margin-bottom: 7px;
548
+ color: #8997a8;
549
+ font-size: 9px;
550
+ }
551
+
552
+ .chat-activities .chat-content {
553
+ font-size: 10px;
554
+ }
555
+
556
+ .stop-run:disabled {
557
+ opacity: .55;
558
+ cursor: wait;
559
+ }
560
+
561
+ .lifecycle-list {
562
+ position: relative;
563
+ display: grid;
564
+ gap: 0;
565
+ }
566
+
567
+ .lifecycle-list:before {
568
+ content: "";
569
+ position: absolute;
570
+ left: 11px;
571
+ top: 13px;
572
+ bottom: 13px;
573
+ width: 1px;
574
+ background: #26303e;
575
+ }
576
+
577
+ .lifecycle-event {
578
+ position: relative;
579
+ display: grid;
580
+ grid-template-columns: 23px minmax(0,1fr) auto;
581
+ gap: 10px;
582
+ align-items: start;
583
+ padding: 8px 0;
584
+ }
585
+
586
+ .life-node {
587
+ position: relative;
588
+ z-index: 1;
589
+ width: 23px;
590
+ height: 23px;
591
+ display: grid;
592
+ place-items: center;
593
+ border: 1px solid #303a49;
594
+ border-radius: 50%;
595
+ background: #111721;
596
+ color: #788599;
597
+ font-size: 7px;
598
+ }
599
+
600
+ .lifecycle-event.running .life-node {
601
+ border-color: rgba(76,227,154,.4);
602
+ background: #12231f;
603
+ color: var(--green);
604
+ box-shadow: 0 0 11px rgba(76,227,154,.1);
605
+ }
606
+
607
+ .lifecycle-event.failed .life-node {
608
+ border-color: rgba(255,107,127,.4);
609
+ color: var(--red);
610
+ }
611
+
612
+ .big-context {
613
+ height: 8px;
614
+ margin-top: 12px;
615
+ border-radius: 5px;
616
+ background: #1d2633;
617
+ overflow: hidden;
618
+ }
619
+
620
+ .context-scale {
621
+ display: flex;
622
+ justify-content: space-between;
623
+ margin-top: 7px;
624
+ color: #566174;
625
+ font-size: 7px;
626
+ }
627
+
628
+ .form-grid {
629
+ display: grid;
630
+ grid-template-columns: 1.4fr 1fr;
631
+ gap: 10px;
632
+ margin-bottom: 12px;
633
+ }
634
+
635
+ .path-field {
636
+ display: flex;
637
+ }
638
+
639
+ .path-field input {
640
+ border-radius: 9px 0 0 9px;
641
+ }
642
+
643
+ .path-field button {
644
+ width: 51px;
645
+ border: 1px solid var(--line);
646
+ border-left: 0;
647
+ border-radius: 0 9px 9px 0;
648
+ background: #151c27;
649
+ color: #8995a7;
650
+ font-size: 9px;
651
+ cursor: pointer;
652
+ }
653
+
654
+ .toggle-track {
655
+ position: relative;
656
+ width: 29px;
657
+ height: 16px;
658
+ margin-top: 1px;
659
+ border-radius: 10px;
660
+ background: #293241;
661
+ }
662
+
663
+ .toggle-track:after {
664
+ content: "";
665
+ position: absolute;
666
+ left: 3px;
667
+ top: 3px;
668
+ width: 10px;
669
+ height: 10px;
670
+ border-radius: 50%;
671
+ background: #7a8799;
672
+ transition: .15s;
673
+ }
674
+
675
+ .form-error {
676
+ margin-top: 10px;
677
+ padding: 9px 11px;
678
+ border: 1px solid rgba(255,107,127,.22);
679
+ border-radius: 9px;
680
+ background: rgba(255,107,127,.07);
681
+ color: #ff8c9b;
682
+ font-size: 9px;
683
+ }
684
+
685
+ .sync-state b {
686
+ color: #79eeb0;
687
+ letter-spacing: .14em;
688
+ display: block;
689
+ font-size: 10px;
690
+ }
691
+
692
+ .sync-state small {
693
+ margin-top: 2px;
694
+ color: #687487;
695
+ white-space: nowrap;
696
+ display: block;
697
+ font-size: 10px;
698
+ }
699
+
700
+ .map-hint {
701
+ color: #8795a8;
702
+ font-size: 12px;
703
+ }
704
+
705
+ .map-hint b {
706
+ color: #e0e8f1;
707
+ font-size: 14px;
708
+ }
709
+
710
+ .more-branches {
711
+ padding: 10px 13px;
712
+ border: 1px dashed #2a3748;
713
+ border-radius: 10px;
714
+ color: #7c899b;
715
+ font-size: 12px;
716
+ }
717
+
718
+ .sessions-heading h2 {
719
+ margin: 0;
720
+ letter-spacing: -.03em;
721
+ font-size: 22px;
722
+ }
723
+
724
+ .search-box {
725
+ display: flex;
726
+ align-items: center;
727
+ gap: 7px;
728
+ padding: 0 10px;
729
+ border: 1px solid var(--line);
730
+ border-radius: 9px;
731
+ background: #0d121b;
732
+ color: #657186;
733
+ height: 40px;
734
+ width: 290px;
735
+ }
736
+
737
+ .search-box input {
738
+ min-width: 0;
739
+ flex: 1;
740
+ border: 0;
741
+ outline: 0;
742
+ background: transparent;
743
+ color: #dbe4ef;
744
+ font-size: 12px;
745
+ }
746
+
747
+ .session-tools select {
748
+ padding: 0 28px 0 10px;
749
+ border: 1px solid var(--line);
750
+ border-radius: 9px;
751
+ background: #0d121b;
752
+ color: #8793a6;
753
+ outline: 0;
754
+ height: 40px;
755
+ font-size: 11px;
756
+ }
757
+
758
+ .provider-filter {
759
+ display: flex;
760
+ align-items: center;
761
+ gap: 5px;
762
+ min-height: 40px;
763
+ padding: 4px;
764
+ border: 1px solid var(--line);
765
+ border-radius: 9px;
766
+ background: #0d121b;
767
+ }
768
+
769
+ .provider-filter-chip {
770
+ display: inline-flex;
771
+ align-items: center;
772
+ gap: 5px;
773
+ min-height: 30px;
774
+ padding: 0 9px;
775
+ border: 1px solid transparent;
776
+ border-radius: 7px;
777
+ background: transparent;
778
+ color: #7f8da1;
779
+ white-space: nowrap;
780
+ cursor: pointer;
781
+ transition: color var(--motion-fast) ease, background-color var(--motion-fast) ease, border-color var(--motion-fast) ease;
782
+ }
783
+
784
+ .provider-filter-chip span {
785
+ font-family: "Cascadia Code", Consolas, monospace;
786
+ font-size: 9px;
787
+ }
788
+
789
+ .provider-filter-chip b {
790
+ font-size: 10px;
791
+ }
792
+
793
+ .provider-filter-chip:hover {
794
+ color: #cbd7e6;
795
+ background: #151d29;
796
+ }
797
+
798
+ .provider-filter-chip.selected {
799
+ color: #e7f8f2;
800
+ border-color: #315f54;
801
+ background: rgba(66,207,164,.13);
802
+ }
803
+
804
+ .session-grid {
805
+ display: grid;
806
+ margin-top: 14px;
807
+ grid-template-columns: repeat(2,minmax(340px,1fr));
808
+ gap: 16px;
809
+ }
810
+
811
+ .chat-bubble pre {
812
+ margin: 0;
813
+ padding: 11px 12px;
814
+ border: 1px solid var(--line-soft);
815
+ border-radius: 10px;
816
+ background: #0b0f16;
817
+ color: #b8c3d1;
818
+ font-family: Geist,"Segoe UI",sans-serif;
819
+ line-height: 1.6;
820
+ white-space: pre-wrap;
821
+ overflow-wrap: anywhere;
822
+ font-size: 13px;
823
+ }
824
+
825
+ .chat-row.tool pre {
826
+ font-family: "Cascadia Code",Consolas,monospace;
827
+ color: #9da9b8;
828
+ font-size: 11px;
829
+ }
830
+
831
+ .life-copy b {
832
+ display: block;
833
+ color: #bcc6d2;
834
+ font-size: 12px;
835
+ }
836
+
837
+ .life-copy span {
838
+ display: block;
839
+ margin-top: 4px;
840
+ color: #5f6b7d;
841
+ line-height: 1.4;
842
+ font-size: 11px;
843
+ }
844
+
845
+ .lifecycle-event time {
846
+ color: #4f5a6b;
847
+ font-size: 9px;
848
+ }
849
+
850
+ .chat-history-head {
851
+ position: sticky;
852
+ z-index: 2;
853
+ top: -18px;
854
+ display: flex;
855
+ align-items: center;
856
+ justify-content: space-between;
857
+ gap: 12px;
858
+ margin: -18px -2px 16px;
859
+ padding: 13px 2px 10px;
860
+ border-bottom: 1px solid #1d2835;
861
+ background: linear-gradient(180deg,#101620 78%,rgba(16,22,32,.94));
862
+ }
863
+
864
+ .chat-history-head span {
865
+ color: #79879a;
866
+ font-size: 11px;
867
+ }
868
+
869
+ .chat-history-head button {
870
+ height: 30px;
871
+ padding: 0 10px;
872
+ border: 1px solid #2a394b;
873
+ border-radius: 8px;
874
+ background: #121b27;
875
+ color: #aab7c6;
876
+ font-size: 10px;
877
+ cursor: pointer;
878
+ }
879
+
880
+ .chat-history-head button:hover {
881
+ border-color: #416278;
882
+ color: #e5edf5;
883
+ }
884
+
885
+ .chat-list {
886
+ display: grid;
887
+ gap: 18px;
888
+ }
889
+
890
+ .chat-row.system .chat-avatar {
891
+ color: #67d6b0;
892
+ }
893
+
894
+ .chat-bubble-head {
895
+ display: flex;
896
+ align-items: center;
897
+ gap: 8px;
898
+ margin: 1px 0 5px;
899
+ margin-bottom: 7px;
900
+ }
901
+
902
+ .chat-content.plain {
903
+ white-space: pre-wrap;
904
+ overflow-wrap: anywhere;
905
+ }
906
+
907
+ .chat-content.empty {
908
+ color: #687589;
909
+ }
910
+
911
+ .structured-heading {
912
+ display: flex;
913
+ align-items: center;
914
+ justify-content: space-between;
915
+ gap: 10px;
916
+ margin-bottom: 11px;
917
+ padding-bottom: 9px;
918
+ border-bottom: 1px solid #1d2835;
919
+ }
920
+
921
+ .structured-heading b {
922
+ color: #dde6ef;
923
+ font-size: 12px;
924
+ }
925
+
926
+ .structured-heading span {
927
+ color: #728196;
928
+ font-size: 10px;
929
+ }
930
+
931
+ .json-object {
932
+ display: grid;
933
+ gap: 8px;
934
+ margin: 0;
935
+ }
936
+
937
+ .json-object>div {
938
+ display: grid;
939
+ grid-template-columns: minmax(92px,30%) minmax(0,1fr);
940
+ gap: 10px;
941
+ align-items: start;
942
+ }
943
+
944
+ .json-object dt {
945
+ color: #7f90a5;
946
+ font-size: 10px;
947
+ font-weight: 650;
948
+ overflow-wrap: anywhere;
949
+ }
950
+
951
+ .json-object dd {
952
+ min-width: 0;
953
+ margin: 0;
954
+ color: #c1ccd8;
955
+ overflow-wrap: anywhere;
956
+ }
957
+
958
+ .json-object .json-object {
959
+ padding-left: 10px;
960
+ border-left: 1px solid #263444;
961
+ }
962
+
963
+ .json-array {
964
+ display: grid;
965
+ gap: 8px;
966
+ margin: 0;
967
+ padding-left: 22px;
968
+ }
969
+
970
+ .json-array>li {
971
+ padding-left: 3px;
972
+ color: #77879a;
973
+ }
974
+
975
+ .json-array>li::marker {
976
+ color: #4d6074;
977
+ }
978
+
979
+ .json-string {
980
+ color: #c1ccd8;
981
+ white-space: pre-wrap;
982
+ overflow-wrap: anywhere;
983
+ }
984
+
985
+ .json-primitive {
986
+ color: #c1ccd8;
987
+ white-space: pre-wrap;
988
+ overflow-wrap: anywhere;
989
+ }
990
+
991
+ .json-empty {
992
+ color: #68768a;
993
+ }
994
+
995
+ .json-more {
996
+ color: #68768a;
997
+ }
998
+
999
+ .chat-latest-anchor {
1000
+ height: 1px;
1001
+ }
1002
+
1003
+ .overview-branches {
1004
+ margin-top: 10px;
1005
+ padding: 10px 11px;
1006
+ border: 1px solid #223040;
1007
+ border-radius: 10px;
1008
+ background: rgba(7,11,17,.5);
1009
+ }
1010
+
1011
+ .overview-branches>span {
1012
+ display: block;
1013
+ margin-bottom: 7px;
1014
+ color: #718095;
1015
+ font-size: 9px;
1016
+ font-weight: 700;
1017
+ letter-spacing: .06em;
1018
+ }
1019
+
1020
+ .overview-branches>div {
1021
+ display: flex;
1022
+ align-items: center;
1023
+ gap: 6px;
1024
+ min-width: 0;
1025
+ }
1026
+
1027
+ .overview-branches button {
1028
+ min-width: 0;
1029
+ flex: 1;
1030
+ padding: 7px 8px;
1031
+ border: 1px solid #283647;
1032
+ border-radius: 8px;
1033
+ background: #101721;
1034
+ color: #aebbc9;
1035
+ text-align: left;
1036
+ cursor: pointer;
1037
+ }
1038
+
1039
+ .overview-branches button:hover {
1040
+ border-color: #40576d;
1041
+ background: #141e2a;
1042
+ }
1043
+
1044
+ .overview-branches button b {
1045
+ display: block;
1046
+ overflow: hidden;
1047
+ text-overflow: ellipsis;
1048
+ white-space: nowrap;
1049
+ font-size: 9px;
1050
+ }
1051
+
1052
+ .overview-branches button small {
1053
+ display: block;
1054
+ overflow: hidden;
1055
+ text-overflow: ellipsis;
1056
+ white-space: nowrap;
1057
+ margin-top: 3px;
1058
+ color: #6f7d90;
1059
+ font-size: 8px;
1060
+ }
1061
+
1062
+ .overview-branches em {
1063
+ flex: 0 0 auto;
1064
+ color: #718095;
1065
+ font-size: 10px;
1066
+ font-style: normal;
1067
+ }
1068
+
1069
+ .session-lock-dot {
1070
+ width: 7px;
1071
+ height: 7px;
1072
+ border-radius: 50%;
1073
+ background: #5ce2a9;
1074
+ box-shadow: 0 0 8px rgba(92,226,169,.55);
1075
+ }
1076
+
1077
+ .motion-section-in {
1078
+ animation: motion-section-in var(--motion-slow) var(--motion-ease) both;
1079
+ animation-delay: var(--motion-section-delay,0ms);
1080
+ }
1081
+
1082
+ .motion-updated {
1083
+ animation: motion-live-update 620ms var(--motion-standard);
1084
+ }
1085
+
1086
+ .motion-content-in {
1087
+ animation: motion-content-in var(--motion-medium) var(--motion-ease) both;
1088
+ }
1089
+
1090
+ .motion-content-in .chat-row {
1091
+ animation: motion-item-in 360ms var(--motion-ease) both;
1092
+ }
1093
+
1094
+ .motion-content-in .lifecycle-event {
1095
+ animation: motion-item-in 360ms var(--motion-ease) both;
1096
+ }
1097
+
1098
+ .motion-content-in .chat-row:nth-child(2) {
1099
+ animation-delay: 34ms;
1100
+ }
1101
+
1102
+ .motion-content-in .lifecycle-event:nth-child(2) {
1103
+ animation-delay: 34ms;
1104
+ }
1105
+
1106
+ .motion-content-in .chat-row:nth-child(3) {
1107
+ animation-delay: 68ms;
1108
+ }
1109
+
1110
+ .motion-content-in .lifecycle-event:nth-child(3) {
1111
+ animation-delay: 68ms;
1112
+ }
1113
+
1114
+ .motion-content-in .chat-row:nth-child(n+4) {
1115
+ animation-delay: 92ms;
1116
+ }
1117
+
1118
+ .motion-content-in .lifecycle-event:nth-child(n+4) {
1119
+ animation-delay: 92ms;
1120
+ }
1121
+
1122
+ .sr-only {
1123
+ position: absolute!important;
1124
+ width: 1px!important;
1125
+ height: 1px!important;
1126
+ padding: 0!important;
1127
+ margin: -1px!important;
1128
+ overflow: hidden!important;
1129
+ clip: rect(0,0,0,0)!important;
1130
+ white-space: nowrap!important;
1131
+ border: 0!important;
1132
+ }
1133
+
1134
+ .child-session.work-working {
1135
+ border-color: rgba(76,227,154,.42);
1136
+ background: linear-gradient(150deg,rgba(31,85,67,.22),#091612 78%);
1137
+ box-shadow: inset 3px 0 #4ce39a,0 10px 24px rgba(0,0,0,.16);
1138
+ }
1139
+
1140
+ .child-session.work-resting {
1141
+ border-color: rgba(109,174,204,.27);
1142
+ background: linear-gradient(150deg,rgba(42,72,88,.17),#0a1118 78%);
1143
+ box-shadow: inset 3px 0 rgba(109,174,204,.5),0 8px 20px rgba(0,0,0,.13);
1144
+ }
1145
+
1146
+ .child-session.work-attention {
1147
+ border-color: rgba(255,107,127,.34);
1148
+ box-shadow: inset 3px 0 rgba(255,107,127,.65);
1149
+ }
1150
+
1151
+ .execution-mode-badge {
1152
+ display: inline-flex;
1153
+ align-items: center;
1154
+ gap: 5px;
1155
+ flex: 0 0 auto;
1156
+ min-height: 23px;
1157
+ padding: 3px 7px;
1158
+ border: 1px solid #2b3a47;
1159
+ border-radius: 7px;
1160
+ background: #101821;
1161
+ color: #8192a3;
1162
+ font-size: 8px;
1163
+ font-weight: 750;
1164
+ line-height: 1;
1165
+ white-space: nowrap;
1166
+ }
1167
+
1168
+ .execution-mode-badge i {
1169
+ width: auto!important;
1170
+ height: auto!important;
1171
+ display: inline!important;
1172
+ border-radius: 0!important;
1173
+ background: transparent!important;
1174
+ color: inherit!important;
1175
+ font-family: "Cascadia Code",Consolas,monospace;
1176
+ font-size: 9px!important;
1177
+ font-style: normal!important;
1178
+ }
1179
+
1180
+ .execution-mode-badge b {
1181
+ color: inherit!important;
1182
+ font-size: inherit!important;
1183
+ line-height: 1!important;
1184
+ }
1185
+
1186
+ .execution-mode-badge small {
1187
+ color: inherit;
1188
+ font-size: 8px;
1189
+ }
1190
+
1191
+ .execution-mode-badge.standard {
1192
+ border-color: #30404d;
1193
+ background: #111a23;
1194
+ color: #8c9bad;
1195
+ }
1196
+
1197
+ .completed-disclosure-icon {
1198
+ width: 30px;
1199
+ height: 30px;
1200
+ display: grid;
1201
+ place-items: center;
1202
+ border: 1px solid #35505a;
1203
+ border-radius: 9px;
1204
+ background: #13232a;
1205
+ color: #7db3c3;
1206
+ font-size: 12px;
1207
+ }
1208
+
1209
+ img {
1210
+ max-width: 100%;
1211
+ }
1212
+
1213
+ svg {
1214
+ max-width: 100%;
1215
+ }
1216
+
1217
+ video {
1218
+ max-width: 100%;
1219
+ }
1220
+
1221
+ canvas {
1222
+ max-width: 100%;
1223
+ }
1224
+
1225
+ pre {
1226
+ overflow-wrap: anywhere;
1227
+ }
1228
+
1229
+ code {
1230
+ overflow-wrap: anywhere;
1231
+ }
1232
+
1233
+ .chat-content {
1234
+ padding: 12px 14px;
1235
+ border: 1px solid var(--line-soft);
1236
+ border-radius: 11px;
1237
+ background: #0b0f16;
1238
+ color: #bec9d6;
1239
+ font-size: 13px;
1240
+ line-height: 1.68;
1241
+ }
1242
+
1243
+ .chat-row.assistant .chat-content {
1244
+ background: color-mix(in srgb,var(--drawer-provider) 3%,#0b0f16);
1245
+ }
1246
+
1247
+ .chat-row.assistant .structured-json {
1248
+ background: color-mix(in srgb,var(--drawer-provider) 3%,#0b0f16);
1249
+ }
1250
+
1251
+ .structured-json {
1252
+ border: 1px solid var(--line-soft);
1253
+ border-radius: 11px;
1254
+ background: #0b0f16;
1255
+ color: #bec9d6;
1256
+ font-size: 13px;
1257
+ line-height: 1.68;
1258
+ padding: 13px;
1259
+ }
1260
+
1261
+ button:not(:disabled):active {
1262
+ transform: translateY(1px) scale(.985);
1263
+ }
1264
+
1265
+ .context-track span {
1266
+ display: block;
1267
+ height: 100%;
1268
+ border-radius: 3px;
1269
+ background: linear-gradient(90deg,var(--provider),color-mix(in srgb,var(--provider) 55%,white));
1270
+ box-shadow: 0 0 9px color-mix(in srgb,var(--provider) 35%,transparent);
1271
+ transition: width 520ms var(--motion-ease),background-color var(--motion-medium) ease,filter var(--motion-medium) ease;
1272
+ }
1273
+
1274
+ .big-context span {
1275
+ height: 100%;
1276
+ display: block;
1277
+ border-radius: 5px;
1278
+ background: linear-gradient(90deg,var(--drawer-provider),#d6edf4);
1279
+ transition: width 520ms var(--motion-ease),background-color var(--motion-medium) ease,filter var(--motion-medium) ease;
1280
+ }
1281
+
1282
+ .sessions-section {
1283
+ max-width: 1640px;
1284
+ margin: 30px auto 0;
1285
+ min-width: 0;
1286
+ }
1287
+
1288
+ .session-tools {
1289
+ display: flex;
1290
+ gap: 8px;
1291
+ align-items: center;
1292
+ min-width: 0;
1293
+ }