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,1217 @@
1
+ /*
2
+ * Agent workflows
3
+ * ---------------
4
+ * Agent relationships, process maps, collaboration state, and live topology.
5
+ */
6
+
7
+ .nav-icon.live-dot {
8
+ width: 8px;
9
+ height: 8px;
10
+ margin-left: 6px;
11
+ border-radius: 50%;
12
+ background: var(--green);
13
+ box-shadow: 0 0 10px rgba(76,227,154,.7);
14
+ }
15
+
16
+ .live-section-head>div {
17
+ display: flex;
18
+ align-items: center;
19
+ gap: 11px;
20
+ }
21
+
22
+ .live-section-head .eyebrow {
23
+ margin-bottom: 4px;
24
+ color: #63dba0;
25
+ }
26
+
27
+ .live-session-grid .session-card {
28
+ border-color: rgba(76,227,154,.18);
29
+ }
30
+
31
+ .session-card.live-card {
32
+ box-shadow: inset 0 0 50px color-mix(in srgb,var(--provider) 5%,transparent),0 12px 32px rgba(0,0,0,.15);
33
+ }
34
+
35
+ .live-section-head {
36
+ display: flex;
37
+ align-items: center;
38
+ justify-content: space-between;
39
+ gap: 28px;
40
+ margin-bottom: 17px;
41
+ }
42
+
43
+ .live-section-head h2 {
44
+ margin: 0;
45
+ letter-spacing: -.03em;
46
+ font-size: 22px;
47
+ }
48
+
49
+ .live-beacon {
50
+ border: 2px solid rgba(76,227,154,.28);
51
+ border-radius: 50%;
52
+ background: var(--green);
53
+ box-shadow: 0 0 0 5px rgba(76,227,154,.06),0 0 18px rgba(76,227,154,.58);
54
+ animation: pulse 1.4s infinite;
55
+ width: 13px;
56
+ height: 13px;
57
+ }
58
+
59
+ .agent-map-toolbar {
60
+ min-height: 38px;
61
+ display: flex;
62
+ align-items: center;
63
+ justify-content: space-between;
64
+ gap: 16px;
65
+ margin-bottom: 15px;
66
+ padding: 0 2px;
67
+ }
68
+
69
+ .live-session-grid {
70
+ grid-template-columns: repeat(2,minmax(0,1fr));
71
+ gap: 12px;
72
+ display: block;
73
+ min-width: 0;
74
+ }
75
+
76
+ .agent-forest {
77
+ display: grid;
78
+ grid-template-columns: repeat(2,minmax(0,1fr));
79
+ gap: 18px;
80
+ }
81
+
82
+ .agent-tree {
83
+ position: relative;
84
+ display: grid;
85
+ grid-template-columns: minmax(340px,430px) 72px minmax(340px,1fr);
86
+ align-items: center;
87
+ min-width: 0;
88
+ padding: 18px;
89
+ border: 1px solid rgba(94,120,139,.18);
90
+ border-radius: 17px;
91
+ background: rgba(5,9,14,.46);
92
+ }
93
+
94
+ .agent-tree:not(.solo) {
95
+ grid-column: 1/-1;
96
+ }
97
+
98
+ .agent-tree.solo {
99
+ display: block;
100
+ }
101
+
102
+ .agent-tree.solo .agent-node {
103
+ height: 100%;
104
+ }
105
+
106
+ .agent-node.running {
107
+ border-color: color-mix(in srgb,var(--provider) 48%,#285449);
108
+ box-shadow: 0 0 0 1px color-mix(in srgb,var(--provider) 8%,transparent),0 16px 42px rgba(0,0,0,.24);
109
+ }
110
+
111
+ .agent-node.running:before {
112
+ content: "";
113
+ position: absolute;
114
+ inset: 0 auto 0 0;
115
+ width: 3px;
116
+ background: var(--green);
117
+ box-shadow: 0 0 16px var(--green);
118
+ }
119
+
120
+ .agent-node.is-focus {
121
+ border-color: color-mix(in srgb,var(--provider) 70%,#557184);
122
+ box-shadow: 0 0 0 2px color-mix(in srgb,var(--provider) 13%,transparent),0 18px 50px rgba(0,0,0,.3);
123
+ }
124
+
125
+ .agent-node-main {
126
+ width: 100%;
127
+ display: block;
128
+ padding: 17px 18px 14px;
129
+ border: 0;
130
+ background: transparent;
131
+ color: inherit;
132
+ text-align: left;
133
+ cursor: pointer;
134
+ }
135
+
136
+ .agent-node-main:hover {
137
+ background: rgba(255,255,255,.018);
138
+ }
139
+
140
+ .agent-node-top {
141
+ display: flex;
142
+ align-items: center;
143
+ gap: 11px;
144
+ }
145
+
146
+ .agent-node-top .provider-mark {
147
+ width: 40px;
148
+ height: 40px;
149
+ font-size: 11px;
150
+ }
151
+
152
+ .agent-identity {
153
+ min-width: 0;
154
+ flex: 1;
155
+ }
156
+
157
+ .agent-identity b {
158
+ display: block;
159
+ overflow: hidden;
160
+ text-overflow: ellipsis;
161
+ white-space: nowrap;
162
+ color: #eef4fa;
163
+ font-size: 13px;
164
+ }
165
+
166
+ .agent-identity small {
167
+ display: block;
168
+ overflow: hidden;
169
+ text-overflow: ellipsis;
170
+ white-space: nowrap;
171
+ margin-top: 4px;
172
+ color: #7c899c;
173
+ font-size: 10px;
174
+ }
175
+
176
+ .agent-node .status-pill {
177
+ font-size: 9px;
178
+ padding: 5px 8px;
179
+ }
180
+
181
+ .agent-task-label {
182
+ display: block;
183
+ margin-top: 17px;
184
+ color: var(--provider);
185
+ font-size: 10px;
186
+ font-weight: 750;
187
+ letter-spacing: .13em;
188
+ }
189
+
190
+ .agent-task {
191
+ display: -webkit-box;
192
+ margin-top: 6px;
193
+ overflow: hidden;
194
+ color: #f3f6fa;
195
+ font-size: 18px;
196
+ font-weight: 650;
197
+ line-height: 1.42;
198
+ letter-spacing: -.025em;
199
+ -webkit-line-clamp: 2;
200
+ -webkit-box-orient: vertical;
201
+ }
202
+
203
+ .agent-current {
204
+ display: block;
205
+ margin-top: 15px;
206
+ padding: 12px 13px;
207
+ border: 1px solid rgba(76,227,154,.14);
208
+ border-radius: 11px;
209
+ background: rgba(76,227,154,.055);
210
+ }
211
+
212
+ .agent-current>span {
213
+ display: flex;
214
+ align-items: center;
215
+ gap: 7px;
216
+ }
217
+
218
+ .agent-current i {
219
+ width: 22px;
220
+ height: 22px;
221
+ display: grid;
222
+ place-items: center;
223
+ border-radius: 6px;
224
+ background: rgba(76,227,154,.1);
225
+ color: #67e9a6;
226
+ font-size: 10px;
227
+ font-style: normal;
228
+ }
229
+
230
+ .agent-current b {
231
+ color: #76e8ac;
232
+ font-size: 11px;
233
+ }
234
+
235
+ .agent-current>strong {
236
+ display: -webkit-box;
237
+ margin-top: 7px;
238
+ overflow: hidden;
239
+ color: #bdc9d6;
240
+ font-size: 13px;
241
+ font-weight: 520;
242
+ line-height: 1.45;
243
+ -webkit-line-clamp: 2;
244
+ -webkit-box-orient: vertical;
245
+ }
246
+
247
+ .agent-node-metrics {
248
+ display: grid;
249
+ grid-template-columns: repeat(3,1fr);
250
+ gap: 10px;
251
+ margin-top: 14px;
252
+ }
253
+
254
+ .agent-node-metrics>span {
255
+ min-width: 0;
256
+ }
257
+
258
+ .agent-node-metrics small {
259
+ display: block;
260
+ color: #6f7c8f;
261
+ font-size: 9px;
262
+ }
263
+
264
+ .agent-node-metrics b {
265
+ display: block;
266
+ margin-top: 4px;
267
+ overflow: hidden;
268
+ color: #d7e0e9;
269
+ font-size: 13px;
270
+ font-weight: 620;
271
+ text-overflow: ellipsis;
272
+ white-space: nowrap;
273
+ }
274
+
275
+ .agent-node-gauge {
276
+ display: block;
277
+ height: 7px;
278
+ margin-top: 12px;
279
+ border: 1px solid #263243;
280
+ border-radius: 6px;
281
+ background: #151e2a;
282
+ overflow: hidden;
283
+ }
284
+
285
+ .agent-node-footer {
286
+ height: 42px;
287
+ display: flex;
288
+ align-items: center;
289
+ justify-content: space-between;
290
+ gap: 10px;
291
+ padding: 0 18px;
292
+ border-top: 1px solid #192230;
293
+ background: rgba(5,8,13,.5);
294
+ color: #748195;
295
+ font-size: 10px;
296
+ }
297
+
298
+ .agent-node-footer button {
299
+ height: 28px;
300
+ padding: 0 9px;
301
+ border: 0;
302
+ border-radius: 7px;
303
+ background: transparent;
304
+ color: #aab7c7;
305
+ font-size: 10px;
306
+ cursor: pointer;
307
+ }
308
+
309
+ .agent-node-footer button:hover {
310
+ background: #172130;
311
+ color: #fff;
312
+ }
313
+
314
+ .agent-node-footer button b {
315
+ margin-left: 4px;
316
+ color: var(--provider);
317
+ }
318
+
319
+ .focused-agent-path {
320
+ display: flex;
321
+ align-items: center;
322
+ justify-content: center;
323
+ gap: 16px;
324
+ min-width: max-content;
325
+ padding: 20px;
326
+ overflow-x: auto;
327
+ border: 1px solid rgba(94,120,139,.18);
328
+ border-radius: 17px;
329
+ background: rgba(5,9,14,.5);
330
+ }
331
+
332
+ .current-relation>span {
333
+ color: #72e4a9;
334
+ }
335
+
336
+ .child-relation {
337
+ width: min(430px,34vw);
338
+ }
339
+
340
+ .agent-tree.overview-flow {
341
+ display: flex;
342
+ flex-direction: column;
343
+ grid-column: auto;
344
+ align-items: stretch;
345
+ padding: 12px;
346
+ }
347
+
348
+ .overview-flow>.agent-node {
349
+ flex: 1;
350
+ }
351
+
352
+ .agent-flow-lane {
353
+ --provider: #8fa2b7;
354
+ min-width: 0;
355
+ overflow: hidden;
356
+ border: 1px solid color-mix(in srgb,var(--provider) 18%,#23303f);
357
+ border-radius: 14px;
358
+ background: rgba(7,11,17,.62);
359
+ }
360
+
361
+ .agent-flow-lane-head .provider-mark {
362
+ width: 32px;
363
+ height: 32px;
364
+ font-size: 8px;
365
+ }
366
+
367
+ .agent-flow-lane-head>span:nth-child(2) {
368
+ min-width: 0;
369
+ }
370
+
371
+ .agent-flow-list {
372
+ display: grid;
373
+ }
374
+
375
+ .agent-flow-row:last-child {
376
+ border-bottom: 0;
377
+ }
378
+
379
+ .agent-flow-state {
380
+ width: 7px;
381
+ height: 7px;
382
+ border-radius: 50%;
383
+ background: #465362;
384
+ }
385
+
386
+ .agent-flow-row.running .agent-flow-state {
387
+ background: #58e1a8;
388
+ box-shadow: 0 0 9px rgba(88,225,168,.48);
389
+ }
390
+
391
+ .agent-flow-copy {
392
+ min-width: 0;
393
+ }
394
+
395
+ .agent-flow-provider {
396
+ display: grid;
397
+ justify-items: end;
398
+ gap: 4px;
399
+ }
400
+
401
+ .agent-flow-more:hover {
402
+ background: #122029;
403
+ color: #78e3bc;
404
+ }
405
+
406
+ .agent-relation-rail {
407
+ min-width: 0;
408
+ display: grid;
409
+ gap: 12px;
410
+ }
411
+
412
+ .agent-relation-block {
413
+ min-width: 0;
414
+ overflow: hidden;
415
+ border: 1px solid #21303d;
416
+ border-radius: 14px;
417
+ background: rgba(7,11,17,.55);
418
+ }
419
+
420
+ .agent-relation-block>header {
421
+ min-height: 45px;
422
+ display: flex;
423
+ align-items: center;
424
+ justify-content: space-between;
425
+ gap: 12px;
426
+ padding: 8px 11px;
427
+ border-bottom: 1px solid #1a2631;
428
+ }
429
+
430
+ .agent-relation-list {
431
+ display: grid;
432
+ max-height: 500px;
433
+ overflow: auto;
434
+ scrollbar-color: #2b3d48 transparent;
435
+ }
436
+
437
+ .agent-relation-block .agent-flow-row {
438
+ grid-template-columns: 7px minmax(0,1fr) auto;
439
+ padding: 11px 12px;
440
+ }
441
+
442
+ .agent-flow-overview {
443
+ display: grid;
444
+ align-items: start;
445
+ gap: 12px;
446
+ grid-template-columns: repeat(auto-fit,minmax(260px,1fr));
447
+ }
448
+
449
+ .agent-flow-lane-head {
450
+ display: grid;
451
+ grid-template-columns: 34px minmax(0,1fr) auto;
452
+ align-items: center;
453
+ gap: 9px;
454
+ padding: 9px 10px;
455
+ border-bottom: 1px solid #1b2733;
456
+ background: color-mix(in srgb,var(--provider) 5%,#0c131b);
457
+ min-height: 64px;
458
+ }
459
+
460
+ .agent-flow-lane-head b {
461
+ display: block;
462
+ overflow: hidden;
463
+ text-overflow: ellipsis;
464
+ white-space: nowrap;
465
+ color: #e1e9f0;
466
+ font-size: 13px;
467
+ }
468
+
469
+ .agent-flow-lane-head small {
470
+ display: block;
471
+ overflow: hidden;
472
+ text-overflow: ellipsis;
473
+ white-space: nowrap;
474
+ margin-top: 3px;
475
+ color: #667587;
476
+ font-size: 11px;
477
+ }
478
+
479
+ .agent-flow-lane-head em {
480
+ padding: 4px 6px;
481
+ border-radius: 6px;
482
+ background: rgba(76,227,154,.07);
483
+ color: #65dba9;
484
+ font-style: normal;
485
+ font-weight: 750;
486
+ font-size: 11px;
487
+ }
488
+
489
+ .agent-flow-copy small {
490
+ display: block;
491
+ overflow: hidden;
492
+ text-overflow: ellipsis;
493
+ white-space: nowrap;
494
+ margin-bottom: 3px;
495
+ color: var(--provider);
496
+ font-weight: 700;
497
+ letter-spacing: .05em;
498
+ font-size: 10px;
499
+ }
500
+
501
+ .agent-flow-copy b {
502
+ display: block;
503
+ overflow: hidden;
504
+ text-overflow: ellipsis;
505
+ white-space: nowrap;
506
+ color: #d9e2e9;
507
+ font-weight: 620;
508
+ font-size: 13px;
509
+ }
510
+
511
+ .agent-flow-copy em {
512
+ display: block;
513
+ overflow: hidden;
514
+ text-overflow: ellipsis;
515
+ white-space: nowrap;
516
+ margin-top: 4px;
517
+ color: #5f6f82;
518
+ font-style: normal;
519
+ font-size: 11px;
520
+ }
521
+
522
+ .agent-flow-provider small {
523
+ max-width: 58px;
524
+ overflow: hidden;
525
+ color: #718092;
526
+ text-overflow: ellipsis;
527
+ white-space: nowrap;
528
+ font-size: 11px;
529
+ }
530
+
531
+ .agent-flow-provider i {
532
+ display: grid;
533
+ place-items: center;
534
+ border-radius: 5px;
535
+ background: color-mix(in srgb,var(--provider) 10%,#17212b);
536
+ color: var(--provider);
537
+ font-style: normal;
538
+ font-weight: 800;
539
+ width: 27px;
540
+ height: 23px;
541
+ font-size: 9px;
542
+ }
543
+
544
+ .agent-flow-more {
545
+ width: 100%;
546
+ border: 0;
547
+ border-top: 1px solid #1b2732;
548
+ background: #0d151d;
549
+ color: #7894a1;
550
+ cursor: pointer;
551
+ height: 40px;
552
+ font-size: 11px;
553
+ }
554
+
555
+ .agent-relation-block>header b {
556
+ color: #d9e3eb;
557
+ font-size: 12px;
558
+ }
559
+
560
+ .agent-relation-block>header span {
561
+ color: #657587;
562
+ font-size: 11px;
563
+ }
564
+
565
+ .agent-relation-empty {
566
+ min-height: 78px;
567
+ display: grid;
568
+ place-items: center;
569
+ padding: 14px;
570
+ color: #596a7d;
571
+ text-align: center;
572
+ font-size: 11px;
573
+ }
574
+
575
+ .agent-relation-block .agent-flow-copy b {
576
+ font-size: 13px;
577
+ }
578
+
579
+ .agent-relation-block .agent-flow-copy em {
580
+ font-size: 11px;
581
+ }
582
+
583
+ .workflow-origin-icon {
584
+ width: 34px;
585
+ height: 34px;
586
+ display: grid;
587
+ place-items: center;
588
+ border-radius: 9px;
589
+ background: #173541;
590
+ color: #7ed9ed;
591
+ font-size: 16px;
592
+ }
593
+
594
+ .agent-flow-row {
595
+ --provider: #8fa2b7;
596
+ width: 100%;
597
+ min-width: 0;
598
+ display: grid;
599
+ grid-template-columns: 7px minmax(0,1fr) auto;
600
+ align-items: center;
601
+ gap: 9px;
602
+ border: 0;
603
+ border-bottom: 1px solid #18232e;
604
+ background: transparent;
605
+ color: inherit;
606
+ text-align: left;
607
+ cursor: pointer;
608
+ padding: 12px 11px;
609
+ transition: transform var(--motion-medium) var(--motion-ease),border-color var(--motion-medium) ease,box-shadow var(--motion-medium) ease,filter var(--motion-medium) ease;
610
+ }
611
+
612
+ .agent-node {
613
+ --provider: #8fa2b7;
614
+ position: relative;
615
+ min-width: 0;
616
+ border: 1px solid color-mix(in srgb,var(--provider) 24%,#283345);
617
+ border-radius: 16px;
618
+ background: linear-gradient(155deg,color-mix(in srgb,var(--provider) 8%,#131a25),#0b1018 68%);
619
+ box-shadow: 0 14px 34px rgba(0,0,0,.18);
620
+ overflow: hidden;
621
+ transition: transform var(--motion-medium) var(--motion-ease),border-color var(--motion-medium) ease,box-shadow var(--motion-medium) ease,filter var(--motion-medium) ease;
622
+ }
623
+
624
+ .agent-flow-row:hover {
625
+ background: color-mix(in srgb,var(--provider) 5%,#111923);
626
+ will-change: transform;
627
+ }
628
+
629
+ .agent-node:hover {
630
+ will-change: transform;
631
+ }
632
+
633
+ .agent-node-gauge i {
634
+ display: block;
635
+ height: 100%;
636
+ border-radius: 5px;
637
+ background: linear-gradient(90deg,var(--green),var(--provider));
638
+ transition: width 520ms var(--motion-ease),background-color var(--motion-medium) ease,filter var(--motion-medium) ease;
639
+ }
640
+
641
+ .agent-command-panel {
642
+ --command-accent: #55d6a8;
643
+ display: grid;
644
+ gap: 10px;
645
+ padding: 13px;
646
+ border: 1px solid #29423f;
647
+ border-radius: 13px;
648
+ background: linear-gradient(145deg,rgba(20,48,43,.78),rgba(8,17,21,.94));
649
+ box-shadow: 0 10px 28px rgba(0,0,0,.18);
650
+ }
651
+
652
+ .agent-command-panel.unavailable {
653
+ --command-accent: #647487;
654
+ border-color: #293641;
655
+ background: linear-gradient(145deg,rgba(26,35,44,.72),rgba(8,14,20,.92));
656
+ }
657
+
658
+ .agent-command-panel>header {
659
+ display: grid;
660
+ grid-template-columns: 34px minmax(0,1fr) 8px;
661
+ align-items: center;
662
+ gap: 9px;
663
+ }
664
+
665
+ .agent-command-icon {
666
+ width: 34px;
667
+ height: 34px;
668
+ display: grid;
669
+ place-items: center;
670
+ border: 1px solid color-mix(in srgb,var(--command-accent) 36%,#2a3943);
671
+ border-radius: 9px;
672
+ background: color-mix(in srgb,var(--command-accent) 10%,#111c22);
673
+ color: var(--command-accent);
674
+ font-family: "Cascadia Code",Consolas,monospace;
675
+ font-size: 11px;
676
+ font-weight: 800;
677
+ }
678
+
679
+ .agent-command-panel header b {
680
+ display: block;
681
+ overflow: hidden;
682
+ text-overflow: ellipsis;
683
+ white-space: nowrap;
684
+ font-size: 12px;
685
+ }
686
+
687
+ .agent-command-panel header small {
688
+ display: block;
689
+ overflow: hidden;
690
+ text-overflow: ellipsis;
691
+ white-space: nowrap;
692
+ margin-top: 4px;
693
+ color: #7f918f;
694
+ font-size: 10px;
695
+ }
696
+
697
+ .agent-command-panel header>i {
698
+ width: 7px;
699
+ height: 7px;
700
+ border-radius: 50%;
701
+ background: #4b5964;
702
+ }
703
+
704
+ .agent-command-panel header>i.connected {
705
+ background: var(--green);
706
+ box-shadow: 0 0 9px rgba(76,227,154,.6);
707
+ }
708
+
709
+ .agent-command-panel.control-connect {
710
+ --command-accent: #e9b85f;
711
+ border-color: #4a3d27;
712
+ background: linear-gradient(145deg,rgba(55,42,21,.72),rgba(12,15,19,.94));
713
+ }
714
+
715
+ .agent-command-panel.control-handoff {
716
+ --command-accent: #76d7bd;
717
+ border-color: #35685b;
718
+ background: linear-gradient(145deg,rgba(24,67,57,.78),rgba(8,17,21,.95));
719
+ }
720
+
721
+ .agent-command-panel.control-origin {
722
+ --command-accent: #6eb5f3;
723
+ border-color: #29445b;
724
+ background: linear-gradient(145deg,rgba(25,46,64,.74),rgba(9,15,21,.94));
725
+ }
726
+
727
+ .agent-command-panel.control-origin-resume {
728
+ --command-accent: #6eb5f3;
729
+ border-color: #29445b;
730
+ background: linear-gradient(145deg,rgba(25,46,64,.74),rgba(9,15,21,.94));
731
+ }
732
+
733
+ .agent-command-panel.control-origin-resume .agent-command-actions {
734
+ flex-wrap: wrap;
735
+ }
736
+
737
+ .agent-command-panel.control-origin-resume .agent-command-actions small {
738
+ flex: 1 0 100%;
739
+ }
740
+
741
+ .agent-command-panel.control-ended {
742
+ --command-accent: #66717f;
743
+ }
744
+
745
+ .agent-command-panel:not(.connected) .agent-command-input {
746
+ display: none;
747
+ }
748
+
749
+ .agent-command-target {
750
+ display: grid;
751
+ grid-template-columns: auto minmax(0,1fr);
752
+ align-items: center;
753
+ gap: 9px;
754
+ }
755
+
756
+ .agent-command-target>span {
757
+ color: #849493;
758
+ font-size: 10px;
759
+ }
760
+
761
+ .agent-command-target select {
762
+ min-width: 0;
763
+ height: 34px;
764
+ padding: 0 28px 0 9px;
765
+ border: 1px solid #31504c;
766
+ border-radius: 8px;
767
+ background: #0b1518;
768
+ color: #b8ccc8;
769
+ font-size: 10px;
770
+ outline: none;
771
+ }
772
+
773
+ .agent-command-target select:focus {
774
+ border-color: #4c8f7c;
775
+ box-shadow: 0 0 0 3px rgba(85,214,168,.08);
776
+ }
777
+
778
+ .agent-command-input textarea {
779
+ display: block;
780
+ width: 100%;
781
+ min-height: 72px;
782
+ max-height: 170px;
783
+ resize: vertical;
784
+ padding: 10px 11px;
785
+ border: 1px solid #2a4843;
786
+ border-radius: 10px;
787
+ background: #071013;
788
+ color: #dbe9e6;
789
+ font-size: 11px;
790
+ line-height: 1.5;
791
+ outline: none;
792
+ transition: border-color var(--motion-fast) ease,box-shadow var(--motion-medium) ease;
793
+ }
794
+
795
+ .agent-command-input textarea::placeholder {
796
+ color: #526662;
797
+ }
798
+
799
+ .agent-command-input textarea:focus {
800
+ border-color: #4b9a82;
801
+ box-shadow: 0 0 0 3px rgba(85,214,168,.08);
802
+ }
803
+
804
+ .agent-command-input textarea:disabled {
805
+ opacity: .48;
806
+ cursor: not-allowed;
807
+ }
808
+
809
+ .agent-command-actions {
810
+ display: flex;
811
+ align-items: center;
812
+ justify-content: flex-end;
813
+ gap: 7px;
814
+ }
815
+
816
+ .agent-command-actions>small {
817
+ min-width: 0;
818
+ margin-right: auto;
819
+ color: #647672;
820
+ font-size: 9px;
821
+ line-height: 1.4;
822
+ }
823
+
824
+ .agent-command-actions button {
825
+ height: 34px;
826
+ padding: 0 10px;
827
+ border: 1px solid #31514a;
828
+ border-radius: 8px;
829
+ background: #111d1f;
830
+ color: #9cc9bd;
831
+ font-size: 10px;
832
+ font-weight: 650;
833
+ cursor: pointer;
834
+ transition: transform var(--motion-fast) var(--motion-ease),border-color var(--motion-fast) ease,background-color var(--motion-fast) ease,color var(--motion-fast) ease;
835
+ }
836
+
837
+ .agent-command-actions button:last-child {
838
+ border-color: #428b73;
839
+ background: #1b4a3a;
840
+ color: #a6f2d4;
841
+ }
842
+
843
+ .agent-command-actions button:hover:not(:disabled) {
844
+ transform: translateY(-1px);
845
+ border-color: #58aa91;
846
+ color: #e8fff7;
847
+ }
848
+
849
+ .agent-command-actions button:active:not(:disabled) {
850
+ transform: translateY(1px) scale(.985);
851
+ }
852
+
853
+ .agent-command-actions button:disabled {
854
+ opacity: .38;
855
+ cursor: not-allowed;
856
+ }
857
+
858
+ .agent-flow-row.completed .agent-flow-state {
859
+ background: #6daecc;
860
+ box-shadow: 0 0 7px rgba(109,174,204,.32);
861
+ }
862
+
863
+ .agent-flow-copy .agent-flow-assignment-source {
864
+ display: block;
865
+ margin-top: 5px;
866
+ color: #6f9f91;
867
+ font-size: 8px;
868
+ letter-spacing: .01em;
869
+ }
870
+
871
+ .agent-flow-copy .agent-flow-shared {
872
+ display: block;
873
+ margin-top: 5px;
874
+ overflow: hidden;
875
+ text-overflow: ellipsis;
876
+ white-space: nowrap;
877
+ color: #71879a;
878
+ font-size: 8px;
879
+ }
880
+
881
+ .agent-flow-copy .agent-flow-outcome {
882
+ display: block;
883
+ margin-top: 5px;
884
+ overflow: hidden;
885
+ text-overflow: ellipsis;
886
+ white-space: nowrap;
887
+ padding-top: 5px;
888
+ border-top: 1px solid rgba(92,132,145,.12);
889
+ color: #9fb1bf;
890
+ font-size: 9px;
891
+ }
892
+
893
+ .agent-flow-copy .agent-flow-outcome b {
894
+ display: inline;
895
+ margin-right: 6px;
896
+ color: #67dfb0;
897
+ font-size: 8px;
898
+ }
899
+
900
+ .agent-flow-copy .agent-flow-outcome.done b {
901
+ color: #91c9e1;
902
+ }
903
+
904
+ .agent-flow-row.child-session:hover {
905
+ border-color: color-mix(in srgb,var(--provider) 52%,#31505b);
906
+ box-shadow: 0 12px 28px rgba(0,0,0,.2);
907
+ }
908
+
909
+ .child-session .agent-flow-copy {
910
+ display: grid;
911
+ align-content: start;
912
+ gap: 0;
913
+ }
914
+
915
+ .child-session .agent-flow-kicker {
916
+ display: flex;
917
+ align-items: center;
918
+ justify-content: space-between;
919
+ gap: 8px;
920
+ margin-bottom: 7px;
921
+ }
922
+
923
+ .child-session .agent-flow-kicker small {
924
+ margin: 0;
925
+ color: var(--provider);
926
+ font-size: 9px;
927
+ font-weight: 800;
928
+ letter-spacing: .08em;
929
+ }
930
+
931
+ .child-session .agent-flow-kicker time {
932
+ flex: 0 0 auto;
933
+ color: #60727e;
934
+ font-size: 8px;
935
+ }
936
+
937
+ .child-session .agent-flow-agent {
938
+ display: flex;
939
+ align-items: center;
940
+ gap: 6px;
941
+ min-width: 0;
942
+ margin-top: 8px;
943
+ }
944
+
945
+ .child-session .agent-flow-agent i {
946
+ width: 21px;
947
+ height: 18px;
948
+ display: grid;
949
+ place-items: center;
950
+ flex: 0 0 auto;
951
+ border-radius: 5px;
952
+ background: color-mix(in srgb,var(--provider) 13%,#17212b);
953
+ color: var(--provider);
954
+ font-size: 6px;
955
+ font-style: normal;
956
+ font-weight: 850;
957
+ }
958
+
959
+ .child-session .agent-flow-agent strong {
960
+ flex: 0 0 auto;
961
+ color: #b9c7cf;
962
+ font-size: 9px;
963
+ }
964
+
965
+ .child-session .agent-flow-agent small {
966
+ min-width: 0;
967
+ margin: 0;
968
+ overflow: hidden;
969
+ color: #627581;
970
+ font-size: 8px;
971
+ font-weight: 500;
972
+ letter-spacing: 0;
973
+ text-overflow: ellipsis;
974
+ white-space: nowrap;
975
+ }
976
+
977
+ .child-session .agent-flow-assignment {
978
+ display: block;
979
+ margin-top: 9px;
980
+ padding: 8px 9px;
981
+ border-radius: 8px;
982
+ background: rgba(116,151,164,.06);
983
+ }
984
+
985
+ .child-session .agent-flow-assignment small {
986
+ margin: 0 0 4px;
987
+ color: #6e8791;
988
+ font-size: 8px;
989
+ letter-spacing: .04em;
990
+ }
991
+
992
+ .child-session .agent-flow-assignment strong {
993
+ display: -webkit-box;
994
+ overflow: hidden;
995
+ color: #aebdc5;
996
+ font-size: 9px;
997
+ font-weight: 520;
998
+ line-height: 1.45;
999
+ white-space: normal;
1000
+ -webkit-box-orient: vertical;
1001
+ -webkit-line-clamp: 2;
1002
+ }
1003
+
1004
+ .child-session .agent-flow-outcome {
1005
+ display: flex;
1006
+ align-items: center;
1007
+ gap: 7px;
1008
+ min-height: 28px;
1009
+ margin-top: 10px;
1010
+ padding: 6px 8px;
1011
+ border: 1px solid rgba(109,174,204,.13);
1012
+ border-radius: 8px;
1013
+ background: rgba(109,174,204,.055);
1014
+ color: #c1d0d8;
1015
+ font-size: 10px;
1016
+ white-space: normal;
1017
+ }
1018
+
1019
+ .child-session .agent-flow-outcome b {
1020
+ display: inline;
1021
+ flex: 0 0 auto;
1022
+ margin: 0;
1023
+ color: #79dfb6;
1024
+ font-size: 8px;
1025
+ }
1026
+
1027
+ .child-session .agent-flow-outcome.done b {
1028
+ color: #91c9e1;
1029
+ }
1030
+
1031
+ .child-session .agent-flow-provider {
1032
+ padding-top: 0;
1033
+ }
1034
+
1035
+ .child-session .agent-flow-provider .status-pill {
1036
+ margin: 0;
1037
+ padding: 4px 6px;
1038
+ font-size: 8px;
1039
+ letter-spacing: 0;
1040
+ text-transform: none;
1041
+ }
1042
+
1043
+ .child-session .agent-flow-provider .status-pill:before {
1044
+ width: 4px;
1045
+ height: 4px;
1046
+ }
1047
+
1048
+ .workflow-metric-grid {
1049
+ display: grid;
1050
+ grid-template-columns: repeat(4,minmax(0,1fr));
1051
+ gap: 7px;
1052
+ }
1053
+
1054
+ .workflow-metric-grid>span {
1055
+ min-width: 0;
1056
+ padding: 8px;
1057
+ border: 1px solid #21383c;
1058
+ border-radius: 9px;
1059
+ background: rgba(13,28,30,.78);
1060
+ }
1061
+
1062
+ .workflow-metric-grid small {
1063
+ display: block;
1064
+ overflow: hidden;
1065
+ color: #7b9099;
1066
+ font-size: 8px;
1067
+ text-overflow: ellipsis;
1068
+ white-space: nowrap;
1069
+ }
1070
+
1071
+ .workflow-metric-grid b {
1072
+ display: inline-block;
1073
+ margin-top: 4px;
1074
+ color: #e5f1ef;
1075
+ font-size: 18px;
1076
+ line-height: 1;
1077
+ }
1078
+
1079
+ .workflow-metric-grid em {
1080
+ margin-left: 3px;
1081
+ color: #73918d;
1082
+ font-size: 8px;
1083
+ font-style: normal;
1084
+ }
1085
+
1086
+ .workflow-metric-grid>span:nth-child(1) b {
1087
+ color: #72e8b8;
1088
+ }
1089
+
1090
+ .workflow-metric-grid>span:nth-child(3) b {
1091
+ color: #5ee3aa;
1092
+ }
1093
+
1094
+ .workflow-metric-grid>span:nth-child(4) b {
1095
+ color: #91c9e1;
1096
+ }
1097
+
1098
+ .child-session.work-working .agent-flow-state {
1099
+ background: #4ce39a;
1100
+ box-shadow: 0 0 0 4px rgba(76,227,154,.08),0 0 12px rgba(76,227,154,.55);
1101
+ }
1102
+
1103
+ .child-session.work-resting .agent-flow-state {
1104
+ border: 2px solid #6daecc;
1105
+ background: #0c171e;
1106
+ box-shadow: 0 0 0 3px rgba(109,174,204,.06);
1107
+ }
1108
+
1109
+ .child-session.work-attention .agent-flow-state {
1110
+ background: #ff6b7f;
1111
+ box-shadow: 0 0 9px rgba(255,107,127,.45);
1112
+ }
1113
+
1114
+ .child-session .agent-flow-provider em {
1115
+ max-width: 76px;
1116
+ color: #607884;
1117
+ font-size: 7px;
1118
+ font-style: normal;
1119
+ line-height: 1.3;
1120
+ text-align: right;
1121
+ }
1122
+
1123
+ .child-session .agent-flow-child-action {
1124
+ display: block;
1125
+ margin-top: 9px;
1126
+ color: #6f9f9a;
1127
+ font-size: 8px;
1128
+ font-weight: 750;
1129
+ text-align: right;
1130
+ }
1131
+
1132
+ .child-session:hover .agent-flow-child-action {
1133
+ color: #79dfba;
1134
+ }
1135
+
1136
+ .agent-command-panel.resume-ready {
1137
+ --command-accent: #73c8a8;
1138
+ border-color: #365d50;
1139
+ background: linear-gradient(145deg,rgba(24,60,51,.76),rgba(8,17,21,.95));
1140
+ }
1141
+
1142
+ .agent-command-panel.resume-ready .agent-command-input {
1143
+ display: block;
1144
+ }
1145
+
1146
+ .agent-command-panel.resume-ready header>i {
1147
+ background: #79c7aa;
1148
+ box-shadow: 0 0 9px rgba(103,210,171,.38);
1149
+ }
1150
+
1151
+ .agent-command-panel.resume-ready .agent-command-actions button:last-child {
1152
+ border-color: #4c8f78;
1153
+ background: #1c4b3b;
1154
+ color: #aff0d6;
1155
+ }
1156
+
1157
+ .agent-flow-provider .execution-mode-badge {
1158
+ margin-bottom: 2px;
1159
+ padding: 3px 5px;
1160
+ font-size: 7px;
1161
+ }
1162
+
1163
+ .agent-node-top .execution-mode-badge {
1164
+ margin-left: auto;
1165
+ }
1166
+
1167
+ .agent-node-top .execution-mode-badge+.status-pill {
1168
+ margin-left: 0;
1169
+ }
1170
+
1171
+ .agent-goal-note {
1172
+ display: flex;
1173
+ align-items: center;
1174
+ gap: 6px;
1175
+ margin-top: 7px;
1176
+ color: #728695;
1177
+ font-size: 9px;
1178
+ line-height: 1.4;
1179
+ }
1180
+
1181
+ .agent-goal-note:before {
1182
+ content: "";
1183
+ width: 14px;
1184
+ height: 1px;
1185
+ flex: 0 0 auto;
1186
+ background: color-mix(in srgb,var(--provider) 52%,#44515d);
1187
+ }
1188
+
1189
+ .live-section {
1190
+ margin: 26px auto 0;
1191
+ border: 1px solid rgba(76,227,154,.2);
1192
+ border-radius: 18px;
1193
+ box-shadow: inset 0 1px rgba(255,255,255,.025);
1194
+ max-width: 1640px;
1195
+ margin-top: 24px;
1196
+ padding: 22px;
1197
+ border-color: rgba(76,227,154,.24);
1198
+ background: radial-gradient(circle at 18% 0,rgba(76,227,154,.08),transparent 32%),linear-gradient(145deg,rgba(15,26,27,.96),rgba(10,14,22,.94) 45%);
1199
+ overflow: hidden;
1200
+ min-width: 0;
1201
+ }
1202
+
1203
+ .live-section-head>p {
1204
+ margin: 0;
1205
+ text-align: right;
1206
+ max-width: 660px;
1207
+ line-height: 1.6;
1208
+ color: #98a6b5;
1209
+ font-size: 12px;
1210
+ }
1211
+
1212
+ @keyframes pulse {
1213
+ 50% {
1214
+ opacity: .45;
1215
+ transform: scale(.75);
1216
+ }
1217
+ }