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,1162 @@
1
+ /*
2
+ * tmux workspaces
3
+ * ---------------
4
+ * tmux topology, panes, sessions, controls, and runtime-specific presentation.
5
+ */
6
+
7
+ .tmux-section-head {
8
+ display: flex;
9
+ align-items: center;
10
+ justify-content: space-between;
11
+ gap: 28px;
12
+ }
13
+
14
+ .tmux-section-head>div {
15
+ display: flex;
16
+ align-items: center;
17
+ gap: 13px;
18
+ }
19
+
20
+ .tmux-section-head h2 {
21
+ margin: 0;
22
+ font-size: 24px;
23
+ letter-spacing: -.035em;
24
+ }
25
+
26
+ .tmux-section-head .eyebrow {
27
+ margin-bottom: 5px;
28
+ color: #56dbad;
29
+ }
30
+
31
+ .tmux-section-head>p {
32
+ max-width: 650px;
33
+ margin: 0;
34
+ color: #78879a;
35
+ font-size: 12px;
36
+ line-height: 1.6;
37
+ text-align: right;
38
+ }
39
+
40
+ .tmux-logo {
41
+ width: 48px;
42
+ height: 48px;
43
+ display: grid;
44
+ place-items: center;
45
+ border: 1px solid rgba(80,214,178,.34);
46
+ border-radius: 13px;
47
+ background: rgba(52,207,165,.08);
48
+ color: #69e4ba;
49
+ font-family: "Cascadia Code",Consolas,monospace;
50
+ font-size: 12px;
51
+ font-weight: 700;
52
+ box-shadow: 0 0 24px rgba(52,207,165,.08);
53
+ }
54
+
55
+ .tmux-stats {
56
+ display: grid;
57
+ grid-template-columns: repeat(6,minmax(0,1fr));
58
+ margin-top: 20px;
59
+ border: 1px solid #21313a;
60
+ border-radius: 13px;
61
+ background: rgba(6,11,16,.55);
62
+ overflow: hidden;
63
+ }
64
+
65
+ .tmux-stats>div {
66
+ min-width: 0;
67
+ padding: 13px 14px;
68
+ border-right: 1px solid #1a2831;
69
+ }
70
+
71
+ .tmux-stats>div:last-child {
72
+ border: 0;
73
+ }
74
+
75
+ .tmux-stats strong {
76
+ display: inline-block;
77
+ margin-top: 5px;
78
+ color: #e5edf4;
79
+ font-size: 22px;
80
+ }
81
+
82
+ .tmux-stats .accent strong {
83
+ color: #64e3b7;
84
+ }
85
+
86
+ .tmux-map-toolbar {
87
+ min-height: 48px;
88
+ display: flex;
89
+ align-items: center;
90
+ justify-content: space-between;
91
+ gap: 16px;
92
+ margin-top: 10px;
93
+ }
94
+
95
+ .tmux-map {
96
+ display: grid;
97
+ gap: 17px;
98
+ }
99
+
100
+ .tmux-empty {
101
+ min-height: 360px;
102
+ display: flex;
103
+ flex-direction: column;
104
+ align-items: center;
105
+ justify-content: center;
106
+ border: 1px dashed #29403f;
107
+ border-radius: 17px;
108
+ background: rgba(5,10,14,.48);
109
+ text-align: center;
110
+ }
111
+
112
+ .tmux-empty>span {
113
+ width: 50px;
114
+ height: 50px;
115
+ display: grid;
116
+ place-items: center;
117
+ border: 1px solid #31544e;
118
+ border-radius: 14px;
119
+ color: #5bd8af;
120
+ font-size: 22px;
121
+ }
122
+
123
+ .tmux-empty h3 {
124
+ margin: 15px 0 0;
125
+ font-size: 18px;
126
+ }
127
+
128
+ .tmux-empty p {
129
+ margin: 8px 0 0;
130
+ color: #8a98a8;
131
+ font-size: 13px;
132
+ }
133
+
134
+ .tmux-empty small {
135
+ margin-top: 6px;
136
+ color: #596878;
137
+ font-size: 11px;
138
+ }
139
+
140
+ .tmux-distro-group {
141
+ position: relative;
142
+ padding: 17px;
143
+ border: 1px solid #1d3036;
144
+ border-radius: 17px;
145
+ background: rgba(5,10,14,.56);
146
+ }
147
+
148
+ .tmux-distro-node {
149
+ width: 100%;
150
+ min-height: 64px;
151
+ display: flex;
152
+ align-items: center;
153
+ gap: 12px;
154
+ padding: 10px 13px;
155
+ border: 1px solid #29413f;
156
+ border-radius: 12px;
157
+ background: linear-gradient(90deg,rgba(54,198,158,.09),rgba(10,16,22,.7));
158
+ text-align: left;
159
+ cursor: pointer;
160
+ }
161
+
162
+ .tmux-distro-node:hover {
163
+ border-color: #3d6b61;
164
+ }
165
+
166
+ .tmux-distro-node>span {
167
+ width: 38px;
168
+ height: 38px;
169
+ display: grid;
170
+ place-items: center;
171
+ border-radius: 9px;
172
+ background: #12342d;
173
+ color: #69e6ba;
174
+ font-size: 10px;
175
+ font-weight: 800;
176
+ }
177
+
178
+ .tmux-distro-node>div {
179
+ min-width: 0;
180
+ flex: 1;
181
+ }
182
+
183
+ .tmux-distro-node strong {
184
+ display: block;
185
+ margin-top: 3px;
186
+ font-size: 16px;
187
+ }
188
+
189
+ .tmux-distro-node>b {
190
+ padding: 6px 9px;
191
+ border-radius: 8px;
192
+ background: #10221f;
193
+ color: #76cdb1;
194
+ font-size: 11px;
195
+ }
196
+
197
+ .tmux-distro-line {
198
+ width: 1px;
199
+ height: 24px;
200
+ margin-left: 32px;
201
+ background: #31534c;
202
+ }
203
+
204
+ .tmux-session-stack {
205
+ display: grid;
206
+ gap: 14px;
207
+ }
208
+
209
+ .tmux-session-tree {
210
+ display: grid;
211
+ grid-template-columns: 250px 52px minmax(0,1fr);
212
+ align-items: center;
213
+ min-width: 0;
214
+ }
215
+
216
+ .tmux-session-node.attached {
217
+ border-color: rgba(83,218,177,.34);
218
+ background: linear-gradient(145deg,rgba(53,198,156,.08),#0e151e);
219
+ }
220
+
221
+ .tmux-session-node strong {
222
+ display: block;
223
+ margin-top: 7px;
224
+ overflow: hidden;
225
+ color: #f0f5f8;
226
+ font-size: 17px;
227
+ text-overflow: ellipsis;
228
+ white-space: nowrap;
229
+ }
230
+
231
+ .tmux-link-line {
232
+ position: relative;
233
+ height: 100%;
234
+ }
235
+
236
+ .tmux-link-line:before {
237
+ content: "";
238
+ position: absolute;
239
+ left: 0;
240
+ right: 0;
241
+ top: 50%;
242
+ height: 1px;
243
+ background: #31534c;
244
+ }
245
+
246
+ .tmux-link-line i {
247
+ position: absolute;
248
+ right: 1px;
249
+ top: calc(50% - 3px);
250
+ width: 7px;
251
+ height: 7px;
252
+ border-top: 1px solid #4e756c;
253
+ border-right: 1px solid #4e756c;
254
+ transform: rotate(45deg);
255
+ }
256
+
257
+ .tmux-window-stack {
258
+ display: grid;
259
+ gap: 12px;
260
+ }
261
+
262
+ .tmux-window-tree {
263
+ display: grid;
264
+ grid-template-columns: 150px 42px minmax(0,1fr);
265
+ align-items: center;
266
+ min-width: 0;
267
+ }
268
+
269
+ .tmux-window-node.active {
270
+ border-color: rgba(83,218,177,.27);
271
+ }
272
+
273
+ .tmux-window-node strong {
274
+ display: block;
275
+ margin-top: 6px;
276
+ overflow: hidden;
277
+ font-size: 14px;
278
+ text-overflow: ellipsis;
279
+ white-space: nowrap;
280
+ }
281
+
282
+ .tmux-pane-stack {
283
+ display: grid;
284
+ grid-template-columns: repeat(auto-fit,minmax(310px,1fr));
285
+ gap: 11px;
286
+ min-width: 0;
287
+ }
288
+
289
+ .tmux-pane-node.active {
290
+ border-color: #3b5654;
291
+ }
292
+
293
+ .tmux-pane-node.has-agent {
294
+ border-color: color-mix(in srgb,var(--provider) 43%,#2d4544);
295
+ box-shadow: inset 3px 0 color-mix(in srgb,var(--provider) 75%,#53dab1);
296
+ }
297
+
298
+ .tmux-pane-node.dead {
299
+ opacity: .62;
300
+ }
301
+
302
+ .tmux-pane-main {
303
+ width: 100%;
304
+ display: block;
305
+ padding: 13px 14px 12px;
306
+ border: 0;
307
+ background: transparent;
308
+ color: inherit;
309
+ text-align: left;
310
+ cursor: pointer;
311
+ }
312
+
313
+ .tmux-pane-main:hover {
314
+ background: rgba(255,255,255,.018);
315
+ }
316
+
317
+ .tmux-pane-head {
318
+ display: flex;
319
+ align-items: center;
320
+ gap: 8px;
321
+ }
322
+
323
+ .tmux-pane-node.active .tmux-pane-head i {
324
+ background: #11332b;
325
+ color: #69dfb7;
326
+ }
327
+
328
+ .tmux-pane-command {
329
+ display: block;
330
+ margin-top: 10px;
331
+ color: #e2e9ef;
332
+ font-family: "Cascadia Code",Consolas,monospace;
333
+ font-size: 14px;
334
+ }
335
+
336
+ .tmux-agent-block {
337
+ display: grid;
338
+ grid-template-columns: 38px minmax(0,1fr);
339
+ gap: 10px;
340
+ margin-top: 13px;
341
+ padding: 11px;
342
+ border: 1px solid color-mix(in srgb,var(--provider) 20%,#23313c);
343
+ border-radius: 10px;
344
+ background: color-mix(in srgb,var(--provider) 5%,#0b1219);
345
+ }
346
+
347
+ .tmux-agent-block .provider-mark {
348
+ width: 36px;
349
+ height: 36px;
350
+ }
351
+
352
+ .tmux-agent-block strong {
353
+ display: -webkit-box;
354
+ margin-top: 4px;
355
+ overflow: hidden;
356
+ color: #e5ecf2;
357
+ font-size: 13px;
358
+ line-height: 1.35;
359
+ -webkit-line-clamp: 2;
360
+ -webkit-box-orient: vertical;
361
+ }
362
+
363
+ .tmux-agent-metrics {
364
+ display: grid;
365
+ grid-template-columns: repeat(3,1fr);
366
+ gap: 8px;
367
+ margin-top: 11px;
368
+ }
369
+
370
+ .tmux-agent-metrics b {
371
+ display: block;
372
+ margin-top: 3px;
373
+ color: #d5dfe8;
374
+ font-size: 13px;
375
+ }
376
+
377
+ .tmux-context-track {
378
+ display: block;
379
+ height: 6px;
380
+ margin-top: 9px;
381
+ border-radius: 4px;
382
+ background: #1b2631;
383
+ overflow: hidden;
384
+ }
385
+
386
+ .tmux-context-track i {
387
+ display: block;
388
+ height: 100%;
389
+ border-radius: 4px;
390
+ background: linear-gradient(90deg,#52d7aa,var(--provider));
391
+ }
392
+
393
+ .tmux-pane-node footer button {
394
+ height: 27px;
395
+ padding: 0 8px;
396
+ border: 0;
397
+ border-radius: 7px;
398
+ background: transparent;
399
+ color: #a9b8c6;
400
+ font-size: 10px;
401
+ cursor: pointer;
402
+ }
403
+
404
+ .tmux-pane-node footer button:hover {
405
+ background: #16252a;
406
+ color: #72e4ba;
407
+ }
408
+
409
+ .terminal-tmux-tools button:hover {
410
+ border-color: #416858;
411
+ background: #15231f;
412
+ color: #e8f6f0;
413
+ }
414
+
415
+ .terminal-resource-head.tmux-resources {
416
+ margin-top: 17px;
417
+ padding-top: 13px;
418
+ border-top: 1px solid #1b2934;
419
+ }
420
+
421
+ .terminal-tmux-pane>span {
422
+ min-width: 0;
423
+ flex: 1;
424
+ }
425
+
426
+ .terminal-tmux-group {
427
+ margin-top: 4px;
428
+ }
429
+
430
+ .terminal-tmux-session {
431
+ display: flex;
432
+ align-items: center;
433
+ gap: 7px;
434
+ margin: 3px 5px 3px;
435
+ padding: 6px 7px;
436
+ border-left: 1px solid #304d45;
437
+ }
438
+
439
+ .terminal-tmux-pane>i.live {
440
+ background: #11322a;
441
+ color: #64dcaf;
442
+ }
443
+
444
+ .terminal-tmux-pane>i.agent {
445
+ background: #1b3040;
446
+ color: #6fd8f0;
447
+ }
448
+
449
+ .terminal-tmux-tools button.danger {
450
+ border-color: #59323e;
451
+ color: #dd8997;
452
+ }
453
+
454
+ .terminal-tmux-tools button.danger:hover {
455
+ border-color: #78414f;
456
+ background: #29151d;
457
+ }
458
+
459
+ .tmux-stats span {
460
+ display: block;
461
+ color: #718093;
462
+ font-size: 11px;
463
+ }
464
+
465
+ .tmux-stats small {
466
+ display: inline;
467
+ margin-left: 5px;
468
+ color: #697789;
469
+ font-size: 11px;
470
+ }
471
+
472
+ .tmux-distro-node small {
473
+ display: block;
474
+ color: #59776f;
475
+ letter-spacing: .13em;
476
+ font-size: 11px;
477
+ }
478
+
479
+ .tmux-session-node small {
480
+ display: block;
481
+ color: #647588;
482
+ letter-spacing: .12em;
483
+ font-size: 11px;
484
+ }
485
+
486
+ .tmux-window-node small {
487
+ display: block;
488
+ color: #647588;
489
+ letter-spacing: .12em;
490
+ font-size: 11px;
491
+ }
492
+
493
+ .tmux-distro-node em {
494
+ display: block;
495
+ margin-top: 2px;
496
+ color: #758698;
497
+ font-style: normal;
498
+ font-size: 11px;
499
+ }
500
+
501
+ .tmux-session-node span {
502
+ display: block;
503
+ margin-top: 8px;
504
+ color: #7b899a;
505
+ font-size: 11px;
506
+ }
507
+
508
+ .tmux-window-node span {
509
+ display: block;
510
+ margin-top: 7px;
511
+ color: #708093;
512
+ font-size: 11px;
513
+ }
514
+
515
+ .tmux-pane-head b {
516
+ font-size: 13px;
517
+ }
518
+
519
+ .tmux-pane-head span {
520
+ color: #657588;
521
+ font-size: 11px;
522
+ }
523
+
524
+ .tmux-pane-head i {
525
+ margin-left: auto;
526
+ padding: 3px 6px;
527
+ border-radius: 7px;
528
+ background: #19232d;
529
+ color: #8392a3;
530
+ font-style: normal;
531
+ font-size: 11px;
532
+ }
533
+
534
+ .tmux-pane-cwd {
535
+ display: block;
536
+ margin-top: 5px;
537
+ overflow: hidden;
538
+ color: #6e7e91;
539
+ text-overflow: ellipsis;
540
+ white-space: nowrap;
541
+ font-size: 11px;
542
+ }
543
+
544
+ .tmux-agent-block small {
545
+ display: block;
546
+ color: var(--provider);
547
+ font-size: 11px;
548
+ }
549
+
550
+ .tmux-agent-block em {
551
+ display: block;
552
+ margin-top: 5px;
553
+ overflow: hidden;
554
+ color: #7e8da0;
555
+ font-style: normal;
556
+ text-overflow: ellipsis;
557
+ white-space: nowrap;
558
+ font-size: 11px;
559
+ }
560
+
561
+ .tmux-agent-metrics small {
562
+ display: block;
563
+ color: #647487;
564
+ font-size: 11px;
565
+ }
566
+
567
+ .tmux-shell-note {
568
+ display: block;
569
+ margin-top: 13px;
570
+ padding: 10px;
571
+ border: 1px dashed #25333f;
572
+ border-radius: 9px;
573
+ color: #66778a;
574
+ font-size: 11px;
575
+ }
576
+
577
+ .terminal-tmux-group>header {
578
+ display: flex;
579
+ align-items: center;
580
+ justify-content: space-between;
581
+ gap: 7px;
582
+ padding: 7px 8px;
583
+ color: #718395;
584
+ font-size: 11px;
585
+ }
586
+
587
+ .terminal-tmux-group>header b {
588
+ color: #86daba;
589
+ font-size: 11px;
590
+ }
591
+
592
+ .terminal-tmux-session strong {
593
+ min-width: 0;
594
+ flex: 1;
595
+ overflow: hidden;
596
+ color: #aab8c5;
597
+ text-overflow: ellipsis;
598
+ white-space: nowrap;
599
+ font-size: 11px;
600
+ }
601
+
602
+ .terminal-tmux-session small {
603
+ color: #566a70;
604
+ font-size: 11px;
605
+ }
606
+
607
+ .terminal-tmux-pane b {
608
+ display: block;
609
+ overflow: hidden;
610
+ text-overflow: ellipsis;
611
+ white-space: nowrap;
612
+ font-size: 12px;
613
+ }
614
+
615
+ .terminal-tmux-pane small {
616
+ display: block;
617
+ overflow: hidden;
618
+ text-overflow: ellipsis;
619
+ white-space: nowrap;
620
+ margin-top: 4px;
621
+ color: #68798b;
622
+ font-size: 11px;
623
+ }
624
+
625
+ .terminal-tmux-pane>i {
626
+ min-width: 24px;
627
+ padding: 3px 5px;
628
+ border-radius: 6px;
629
+ background: #17222c;
630
+ color: #68788a;
631
+ font-style: normal;
632
+ text-align: center;
633
+ font-size: 9px;
634
+ }
635
+
636
+ .terminal-tmux-tools label {
637
+ display: flex;
638
+ align-items: center;
639
+ gap: 6px;
640
+ color: #68798b;
641
+ font-size: 11px;
642
+ }
643
+
644
+ .terminal-tmux-tools select {
645
+ height: 31px;
646
+ padding: 0 7px;
647
+ border: 1px solid #2a3a47;
648
+ border-radius: 8px;
649
+ background: #101821;
650
+ color: #b3c0ca;
651
+ font-size: 11px;
652
+ }
653
+
654
+ .nav-group-label.tmux-only {
655
+ margin-top: 9px;
656
+ color: #63cbaa;
657
+ }
658
+
659
+ .tmux-nav-item {
660
+ background: rgba(55,196,155,.025);
661
+ }
662
+
663
+ .tmux-nav-item.active {
664
+ background: linear-gradient(90deg,rgba(55,196,155,.16),rgba(55,196,155,.05));
665
+ box-shadow: inset 2px 0 #55d6aa;
666
+ }
667
+
668
+ .tmux-section-actions {
669
+ display: flex;
670
+ align-items: center;
671
+ justify-content: flex-end;
672
+ gap: 8px;
673
+ }
674
+
675
+ .tmux-section-actions button:hover {
676
+ border-color: #4a7969;
677
+ background: #142725;
678
+ color: #e8f5f0;
679
+ }
680
+
681
+ .tmux-section-actions button.accent {
682
+ border-color: #347960;
683
+ background: #174133;
684
+ color: #8df0ca;
685
+ }
686
+
687
+ .tmux-control-section {
688
+ margin-top: 25px;
689
+ padding-top: 22px;
690
+ border-top: 1px solid #203a37;
691
+ }
692
+
693
+ .tmux-control-head {
694
+ display: flex;
695
+ align-items: flex-end;
696
+ justify-content: space-between;
697
+ gap: 24px;
698
+ margin-bottom: 12px;
699
+ }
700
+
701
+ .tmux-control-head h3 {
702
+ margin: 3px 0 0;
703
+ font-size: 18px;
704
+ }
705
+
706
+ .terminal-layout.tmux-control-layout {
707
+ border-color: #29443f;
708
+ background: #071012;
709
+ }
710
+
711
+ .tmux-resource-panel {
712
+ background: linear-gradient(180deg,#0b1818,#091218);
713
+ }
714
+
715
+ .tmux-pane-node footer {
716
+ display: flex;
717
+ align-items: center;
718
+ justify-content: space-between;
719
+ gap: 8px;
720
+ border-top: 1px solid #1c2731;
721
+ background: rgba(5,9,13,.5);
722
+ color: #6f7f91;
723
+ font-size: 10px;
724
+ height: auto;
725
+ min-height: 42px;
726
+ padding: 5px 14px;
727
+ }
728
+
729
+ .tmux-pane-actions {
730
+ display: flex;
731
+ align-items: center;
732
+ justify-content: flex-end;
733
+ gap: 4px;
734
+ }
735
+
736
+ .tmux-pane-node footer .tmux-pane-actions button {
737
+ height: 28px;
738
+ }
739
+
740
+ .tmux-pane-node footer .tmux-pane-actions button:first-child {
741
+ background: #112723;
742
+ color: #72deb8;
743
+ }
744
+
745
+ .terminal-tmux-pane:hover {
746
+ background: #121d27;
747
+ transform: translateX(3px);
748
+ }
749
+
750
+ .terminal-tmux-pane.active {
751
+ border-color: #2f6859;
752
+ background: linear-gradient(90deg,rgba(66,197,157,.12),rgba(66,197,157,.03));
753
+ color: #edf8f4;
754
+ transform: translateX(4px);
755
+ }
756
+
757
+ .tmux-pane-node:hover {
758
+ transform: translateY(-2px);
759
+ }
760
+
761
+ .tmux-session-node:hover {
762
+ border-color: #426a64;
763
+ transform: translateY(-2px);
764
+ }
765
+
766
+ .tmux-window-node:hover {
767
+ border-color: #426a64;
768
+ transform: translateY(-2px);
769
+ }
770
+
771
+ .terminal-tmux-list {
772
+ display: grid;
773
+ align-content: start;
774
+ gap: 7px;
775
+ min-height: 0;
776
+ padding: 10px;
777
+ overflow: auto;
778
+ scrollbar-color: #2a4248 transparent;
779
+ }
780
+
781
+ .terminal-tmux-tools {
782
+ display: flex;
783
+ align-items: center;
784
+ gap: 6px;
785
+ padding: 7px 12px;
786
+ border-bottom: 1px solid #1b2933;
787
+ background: #0d151b;
788
+ overflow-x: auto;
789
+ grid-row: 2;
790
+ }
791
+
792
+ .execution-mode-badge.tmux {
793
+ border-color: rgba(77,218,174,.4);
794
+ background: rgba(41,122,98,.18);
795
+ color: #73e4bd;
796
+ box-shadow: inset 0 0 0 1px rgba(77,218,174,.04);
797
+ }
798
+
799
+ .tmux-runtime {
800
+ border-color: rgba(72,211,169,.32);
801
+ background: radial-gradient(circle at 94% 0,rgba(54,198,158,.09),transparent 35%),rgba(5,12,15,.76);
802
+ }
803
+
804
+ .tmux-runtime>header {
805
+ border-color: rgba(69,176,145,.2);
806
+ background: linear-gradient(90deg,rgba(20,56,47,.6),rgba(8,19,22,.82));
807
+ }
808
+
809
+ .tmux-runtime>header small {
810
+ color: #5cd9ad;
811
+ }
812
+
813
+ .tmux-runtime>header>strong {
814
+ border-color: #2e6858;
815
+ background: #102f28;
816
+ color: #72e0b8;
817
+ }
818
+
819
+ .live-tmux-overview-open {
820
+ height: 34px;
821
+ padding: 0 11px;
822
+ border: 1px solid #347460;
823
+ border-radius: 9px;
824
+ background: #153d31;
825
+ color: #82e8c2;
826
+ font-size: 10px;
827
+ font-weight: 750;
828
+ cursor: pointer;
829
+ }
830
+
831
+ .live-tmux-overview-open:hover {
832
+ background: #1a4b3b;
833
+ }
834
+
835
+ .live-tmux-grid {
836
+ display: grid;
837
+ grid-template-columns: repeat(auto-fit,minmax(280px,1fr));
838
+ gap: 10px;
839
+ padding: 12px;
840
+ }
841
+
842
+ .live-tmux-card {
843
+ --provider: #52d9ae;
844
+ min-width: 0;
845
+ overflow: hidden;
846
+ border: 1px solid color-mix(in srgb,var(--provider) 28%,#29413d);
847
+ border-radius: 13px;
848
+ background: linear-gradient(150deg,color-mix(in srgb,var(--provider) 5%,#101820),#091017);
849
+ }
850
+
851
+ .live-tmux-card.active {
852
+ box-shadow: inset 3px 0 color-mix(in srgb,var(--provider) 76%,#55dcae);
853
+ }
854
+
855
+ .live-tmux-card.dead {
856
+ opacity: .58;
857
+ }
858
+
859
+ .live-tmux-pane {
860
+ width: 100%;
861
+ display: block;
862
+ padding: 12px;
863
+ border: 0;
864
+ background: transparent;
865
+ color: inherit;
866
+ text-align: left;
867
+ cursor: pointer;
868
+ }
869
+
870
+ .live-tmux-pane:hover {
871
+ background: rgba(255,255,255,.018);
872
+ }
873
+
874
+ .live-tmux-card-head {
875
+ display: flex;
876
+ align-items: center;
877
+ gap: 9px;
878
+ }
879
+
880
+ .live-tmux-card-head>span:nth-child(2) {
881
+ min-width: 0;
882
+ flex: 1;
883
+ }
884
+
885
+ .live-tmux-card-head small {
886
+ display: block;
887
+ overflow: hidden;
888
+ text-overflow: ellipsis;
889
+ white-space: nowrap;
890
+ color: #5ccfa8;
891
+ font-size: 8px;
892
+ letter-spacing: .1em;
893
+ }
894
+
895
+ .live-tmux-card-head b {
896
+ display: block;
897
+ overflow: hidden;
898
+ text-overflow: ellipsis;
899
+ white-space: nowrap;
900
+ margin-top: 2px;
901
+ color: #dce9e4;
902
+ font-size: 12px;
903
+ }
904
+
905
+ .live-tmux-card-head em {
906
+ padding: 4px 6px;
907
+ border-radius: 7px;
908
+ background: #12352d;
909
+ color: #69dcb6;
910
+ font-size: 8px;
911
+ font-style: normal;
912
+ white-space: nowrap;
913
+ }
914
+
915
+ .live-tmux-symbol {
916
+ width: 30px;
917
+ height: 30px;
918
+ display: grid;
919
+ place-items: center;
920
+ flex: 0 0 auto;
921
+ border-radius: 8px;
922
+ background: #123a30;
923
+ color: #76e7c0;
924
+ font-size: 12px;
925
+ }
926
+
927
+ .live-tmux-title {
928
+ display: block;
929
+ margin-top: 11px;
930
+ overflow: hidden;
931
+ color: #eef5f2;
932
+ font-size: 13px;
933
+ text-overflow: ellipsis;
934
+ white-space: nowrap;
935
+ }
936
+
937
+ .live-tmux-agent {
938
+ display: flex;
939
+ align-items: center;
940
+ gap: 6px;
941
+ margin-top: 9px;
942
+ }
943
+
944
+ .live-tmux-agent i {
945
+ width: 23px;
946
+ height: 20px;
947
+ display: grid;
948
+ place-items: center;
949
+ border-radius: 5px;
950
+ background: color-mix(in srgb,var(--provider) 12%,#17222b);
951
+ color: var(--provider);
952
+ font-size: 7px;
953
+ font-style: normal;
954
+ font-weight: 800;
955
+ }
956
+
957
+ .live-tmux-agent b {
958
+ color: #b8c7ce;
959
+ font-size: 10px;
960
+ }
961
+
962
+ .live-tmux-agent small {
963
+ color: #647687;
964
+ font-size: 9px;
965
+ }
966
+
967
+ .live-tmux-location {
968
+ display: flex;
969
+ align-items: center;
970
+ gap: 5px;
971
+ margin-top: 10px;
972
+ overflow: hidden;
973
+ color: #798b99;
974
+ font-size: 9px;
975
+ white-space: nowrap;
976
+ }
977
+
978
+ .live-tmux-location b {
979
+ color: #74dcb8;
980
+ }
981
+
982
+ .live-tmux-location i {
983
+ color: #3d5d55;
984
+ font-style: normal;
985
+ }
986
+
987
+ .live-tmux-location span {
988
+ overflow: hidden;
989
+ text-overflow: ellipsis;
990
+ }
991
+
992
+ .live-tmux-cwd {
993
+ display: block;
994
+ margin-top: 6px;
995
+ overflow: hidden;
996
+ color: #5b6d7e;
997
+ font-family: "Cascadia Code",Consolas,monospace;
998
+ font-size: 8px;
999
+ text-overflow: ellipsis;
1000
+ white-space: nowrap;
1001
+ }
1002
+
1003
+ .live-tmux-card footer {
1004
+ min-height: 36px;
1005
+ display: flex;
1006
+ align-items: center;
1007
+ justify-content: space-between;
1008
+ gap: 8px;
1009
+ padding: 5px 10px 5px 12px;
1010
+ border-top: 1px solid #1b2b31;
1011
+ background: rgba(5,10,13,.5);
1012
+ }
1013
+
1014
+ .live-tmux-card footer>span:first-child {
1015
+ color: #638074;
1016
+ font-size: 8px;
1017
+ }
1018
+
1019
+ .live-tmux-card footer>span:last-child {
1020
+ display: flex;
1021
+ gap: 5px;
1022
+ }
1023
+
1024
+ .live-tmux-card footer button {
1025
+ width: auto;
1026
+ padding: 6px 7px;
1027
+ border: 0;
1028
+ border-radius: 7px;
1029
+ background: transparent;
1030
+ color: #77d9b5;
1031
+ font-size: 8px;
1032
+ cursor: pointer;
1033
+ }
1034
+
1035
+ .live-tmux-card footer button:hover {
1036
+ background: #133229;
1037
+ color: #9af0cf;
1038
+ }
1039
+
1040
+ .live-tmux-fallback {
1041
+ padding-top: 0!important;
1042
+ }
1043
+
1044
+ .tmux-section {
1045
+ max-width: 1640px;
1046
+ margin: 24px auto 0;
1047
+ padding: 22px;
1048
+ border: 1px solid rgba(80,214,178,.22);
1049
+ border-radius: 20px;
1050
+ background: radial-gradient(circle at 8% 0,rgba(38,174,139,.12),transparent 28%),linear-gradient(145deg,#0c1719,#0a0f17 48%);
1051
+ box-shadow: inset 0 1px rgba(255,255,255,.025);
1052
+ min-width: 0;
1053
+ }
1054
+
1055
+ .tmux-control-head>p {
1056
+ max-width: 650px;
1057
+ margin: 0;
1058
+ line-height: 1.5;
1059
+ text-align: right;
1060
+ color: #98a6b5;
1061
+ font-size: 12px;
1062
+ }
1063
+
1064
+ .tmux-section-actions button {
1065
+ height: 38px;
1066
+ padding: 0 12px;
1067
+ border: 1px solid #315047;
1068
+ border-radius: 10px;
1069
+ background: #101c1d;
1070
+ color: #a8cabe;
1071
+ font-size: 11px;
1072
+ font-weight: 650;
1073
+ cursor: pointer;
1074
+ transition: transform var(--motion-fast) var(--motion-ease),background-color var(--motion-fast) ease,border-color var(--motion-fast) ease,color var(--motion-fast) ease,box-shadow var(--motion-medium) ease,opacity var(--motion-fast) ease;
1075
+ }
1076
+
1077
+ .terminal-tmux-tools button {
1078
+ height: 34px;
1079
+ padding: 0 11px;
1080
+ border: 1px solid #2a3b49;
1081
+ border-radius: 9px;
1082
+ background: #111a24;
1083
+ color: #aebbc8;
1084
+ font-weight: 650;
1085
+ cursor: pointer;
1086
+ font-size: 11px;
1087
+ transition: transform var(--motion-fast) var(--motion-ease),background-color var(--motion-fast) ease,border-color var(--motion-fast) ease,color var(--motion-fast) ease,box-shadow var(--motion-medium) ease,opacity var(--motion-fast) ease;
1088
+ }
1089
+
1090
+ .terminal-tmux-pane {
1091
+ display: flex;
1092
+ align-items: center;
1093
+ gap: 9px;
1094
+ border: 1px solid transparent;
1095
+ border-radius: 10px;
1096
+ background: transparent;
1097
+ color: #a9b6c4;
1098
+ text-align: left;
1099
+ cursor: pointer;
1100
+ margin-left: 7px;
1101
+ width: calc(100% - 7px);
1102
+ padding: 8px;
1103
+ transition: transform var(--motion-fast) var(--motion-ease),background-color var(--motion-fast) ease,border-color var(--motion-fast) ease,color var(--motion-fast) ease,box-shadow var(--motion-medium) ease,opacity var(--motion-fast) ease;
1104
+ }
1105
+
1106
+ .tmux-pane-node {
1107
+ --provider: #738296;
1108
+ min-width: 0;
1109
+ border: 1px solid #263441;
1110
+ border-radius: 13px;
1111
+ background: linear-gradient(155deg,#111923,#0a1017);
1112
+ overflow: hidden;
1113
+ transition: transform var(--motion-fast) var(--motion-ease),background-color var(--motion-fast) ease,border-color var(--motion-fast) ease,color var(--motion-fast) ease,box-shadow var(--motion-medium) ease,opacity var(--motion-fast) ease;
1114
+ }
1115
+
1116
+ .tmux-session-node {
1117
+ width: 100%;
1118
+ min-width: 0;
1119
+ border: 1px solid #273643;
1120
+ border-radius: 12px;
1121
+ background: #0e151e;
1122
+ text-align: left;
1123
+ cursor: pointer;
1124
+ min-height: 110px;
1125
+ padding: 16px;
1126
+ transition: transform var(--motion-fast) var(--motion-ease),background-color var(--motion-fast) ease,border-color var(--motion-fast) ease,color var(--motion-fast) ease,box-shadow var(--motion-medium) ease,opacity var(--motion-fast) ease;
1127
+ }
1128
+
1129
+ .tmux-window-node {
1130
+ width: 100%;
1131
+ min-width: 0;
1132
+ border: 1px solid #273643;
1133
+ border-radius: 12px;
1134
+ background: #0e151e;
1135
+ text-align: left;
1136
+ cursor: pointer;
1137
+ min-height: 92px;
1138
+ padding: 13px;
1139
+ transition: transform var(--motion-fast) var(--motion-ease),background-color var(--motion-fast) ease,border-color var(--motion-fast) ease,color var(--motion-fast) ease,box-shadow var(--motion-medium) ease,opacity var(--motion-fast) ease;
1140
+ }
1141
+
1142
+ body[data-current-view="tmux"] .topbar {
1143
+ align-items: center;
1144
+ padding-bottom: 4px;
1145
+ border-bottom: 1px solid #1d2835;
1146
+ }
1147
+
1148
+ body[data-current-view="tmux"] .topbar .eyebrow {
1149
+ display: none;
1150
+ }
1151
+
1152
+ body[data-current-view="tmux"] .topbar .subtitle {
1153
+ display: none;
1154
+ }
1155
+
1156
+ body[data-current-view="tmux"] .top-actions {
1157
+ display: none;
1158
+ }
1159
+
1160
+ body[data-current-view="tmux"] .topbar h1 {
1161
+ font-size: 22px;
1162
+ }