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,718 @@
1
+ /*
2
+ * Responsive terminal and tmux workspaces
3
+ * ---------------------------------------
4
+ * Terminal workbench, tmux resources, command controls, and runtime panes.
5
+ * Breakpoints are ordered wide-to-narrow, followed by height and motion rules.
6
+ */
7
+
8
+ /* Compact screens ≤ 1380px: stack terminal toolbars while retaining side resources. */
9
+ @media (max-width:1380px) {
10
+ .tmux-stats {
11
+ grid-template-columns: repeat(3,1fr);
12
+ }
13
+
14
+ .tmux-session-tree {
15
+ grid-template-columns: 220px 38px minmax(0,1fr);
16
+ }
17
+
18
+ .tmux-window-tree {
19
+ grid-template-columns: 130px 30px minmax(0,1fr);
20
+ }
21
+
22
+ .tmux-pane-stack {
23
+ grid-template-columns: 1fr;
24
+ }
25
+
26
+ .terminal-target-meta {
27
+ width: 100%;
28
+ }
29
+
30
+ #terminalSection .terminal-layout {
31
+ grid-template-columns: 240px minmax(0,1fr);
32
+ }
33
+
34
+ .terminal-controlbar {
35
+ display: grid;
36
+ grid-template-columns: minmax(0,1fr);
37
+ align-items: flex-start;
38
+ flex-direction: column;
39
+ gap: 9px;
40
+ }
41
+
42
+ .terminal-target-meta span {
43
+ max-width: 820px;
44
+ }
45
+
46
+ #terminalSection .terminal-controlbar {
47
+ display: grid;
48
+ grid-template-columns: minmax(0,1fr);
49
+ align-items: start;
50
+ }
51
+
52
+ .terminal-workspace-actions {
53
+ justify-content: space-between;
54
+ width: 100%;
55
+ display: grid;
56
+ grid-template-columns: minmax(0,1fr);
57
+ justify-items: start;
58
+ gap: 7px;
59
+ }
60
+
61
+ .terminal-key-actions {
62
+ width: 100%;
63
+ max-width: 100%;
64
+ display: flex;
65
+ flex-wrap: wrap;
66
+ justify-content: flex-start;
67
+ }
68
+
69
+ .terminal-key-actions button {
70
+ flex: 0 0 auto;
71
+ }
72
+ }
73
+
74
+ /* Compact screens ≤ 1280px: move resource lists above the workbench and preserve console height. */
75
+ @media (max-width:1280px) {
76
+ .terminal-layout {
77
+ grid-template-columns: 235px minmax(0,1fr);
78
+ }
79
+
80
+ .terminal-controlbar {
81
+ align-items: flex-start;
82
+ flex-direction: column;
83
+ gap: 9px;
84
+ }
85
+
86
+ .terminal-key-actions {
87
+ width: 100%;
88
+ justify-content: flex-start;
89
+ }
90
+
91
+ .tmux-section-head {
92
+ align-items: flex-start;
93
+ flex-direction: column;
94
+ }
95
+
96
+ .tmux-section-actions {
97
+ width: 100%;
98
+ justify-content: flex-start;
99
+ }
100
+
101
+ .tmux-control-head {
102
+ align-items: flex-start;
103
+ flex-direction: column;
104
+ gap: 7px;
105
+ }
106
+
107
+ .tmux-control-head>p {
108
+ text-align: left;
109
+ }
110
+
111
+ #terminalSection .terminal-layout {
112
+ height: auto;
113
+ min-height: 0;
114
+ display: block;
115
+ }
116
+
117
+ .terminal-resource-panel {
118
+ max-height: none;
119
+ display: grid;
120
+ grid-template-columns: 205px minmax(0,1fr);
121
+ grid-template-rows: 92px;
122
+ border-right: 0;
123
+ border-bottom: 1px solid #1d2d38;
124
+ }
125
+
126
+ .terminal-resource-head {
127
+ min-height: 92px;
128
+ border-right: 1px solid #1d2d38;
129
+ border-bottom: 0;
130
+ }
131
+
132
+ .terminal-session-list {
133
+ grid-template-columns: repeat(2,minmax(0,1fr));
134
+ max-height: 92px;
135
+ padding: 9px;
136
+ }
137
+
138
+ .terminal-session-item {
139
+ min-height: 72px;
140
+ }
141
+
142
+ .terminal-resource-tip {
143
+ display: none;
144
+ }
145
+
146
+ #terminalSection .terminal-workbench {
147
+ height: 495px;
148
+ min-height: 495px;
149
+ }
150
+ }
151
+
152
+ /* Compact screens ≤ 1100px: move resource lists above the workbench and preserve console height. */
153
+ @media (max-width:1100px) {
154
+ .tmux-control-layout {
155
+ display: block;
156
+ }
157
+
158
+ .tmux-control-layout .terminal-resource-panel {
159
+ max-height: 240px;
160
+ border-right: 0;
161
+ border-bottom: 1px solid #1c2a34;
162
+ }
163
+ }
164
+
165
+ /* Compact screens ≤ 1040px: move resource lists above the workbench and preserve console height. */
166
+ @media (max-width:1040px) {
167
+ #terminalSection .terminal-workbench {
168
+ height: auto;
169
+ min-height: 720px;
170
+ }
171
+
172
+ .terminal-stage {
173
+ grid-template-columns: 1fr;
174
+ grid-template-rows: minmax(210px,34vh) minmax(470px,1fr);
175
+ }
176
+
177
+ .terminal-stage:has(.terminal-history-panel.hidden) {
178
+ grid-template-rows: minmax(560px,1fr);
179
+ }
180
+
181
+ .terminal-stage.history-collapsed {
182
+ grid-template-columns: 1fr;
183
+ grid-template-rows: 52px minmax(560px,1fr);
184
+ }
185
+
186
+ .terminal-history-panel {
187
+ border-right: 0;
188
+ border-bottom: 1px solid #243844;
189
+ }
190
+
191
+ .terminal-console-pane {
192
+ min-height: 470px;
193
+ }
194
+ }
195
+
196
+ /* Compact screens ≤ 980px: move resource lists above the workbench and preserve console height. */
197
+ @media (max-width:980px) {
198
+ .tmux-section {
199
+ padding: 16px;
200
+ }
201
+
202
+ .tmux-section-head>p {
203
+ display: none;
204
+ }
205
+
206
+ .tmux-session-tree {
207
+ display: block;
208
+ }
209
+
210
+ .tmux-window-tree {
211
+ display: block;
212
+ }
213
+
214
+ .tmux-link-line {
215
+ width: 1px;
216
+ height: 28px;
217
+ margin-left: 24px;
218
+ background: #31534c;
219
+ }
220
+
221
+ .tmux-link-line:before {
222
+ display: none;
223
+ }
224
+
225
+ .tmux-link-line i {
226
+ display: none;
227
+ }
228
+
229
+ .tmux-window-stack {
230
+ padding-left: 22px;
231
+ }
232
+
233
+ .tmux-window-tree+.tmux-window-tree {
234
+ margin-top: 12px;
235
+ }
236
+
237
+ .tmux-pane-stack {
238
+ padding-left: 22px;
239
+ margin-top: 0;
240
+ }
241
+
242
+ .tmux-stats {
243
+ grid-template-columns: repeat(2,1fr);
244
+ }
245
+
246
+ .terminal-section-head {
247
+ align-items: flex-start;
248
+ flex-direction: column;
249
+ }
250
+
251
+ .terminal-layout {
252
+ display: block;
253
+ }
254
+
255
+ .terminal-resource-panel {
256
+ max-height: 240px;
257
+ border-right: 0;
258
+ border-bottom: 1px solid #1c2a34;
259
+ }
260
+
261
+ .terminal-workbench {
262
+ min-height: 650px;
263
+ }
264
+
265
+ .terminal-tmux-tools {
266
+ flex-wrap: wrap;
267
+ }
268
+
269
+ .terminal-tabs-row {
270
+ align-items: stretch;
271
+ flex-direction: column;
272
+ }
273
+
274
+ .terminal-connection-state {
275
+ min-height: 28px;
276
+ border-top: 1px solid #18252e;
277
+ }
278
+
279
+ .terminal-stage {
280
+ grid-template-columns: 1fr;
281
+ grid-template-rows: minmax(190px,34vh) minmax(360px,1fr);
282
+ }
283
+
284
+ .terminal-stage:has(.terminal-history-panel.hidden) {
285
+ grid-template-rows: minmax(360px,1fr);
286
+ }
287
+
288
+ .terminal-history-panel {
289
+ border-right: 0;
290
+ border-bottom: 1px solid #20323c;
291
+ }
292
+
293
+ .terminal-history-panel.collapsed {
294
+ width: auto;
295
+ height: 52px;
296
+ grid-template-rows: 52px;
297
+ }
298
+
299
+ .terminal-history-panel.collapsed .terminal-history-head {
300
+ min-height: 52px;
301
+ }
302
+
303
+ .terminal-viewport {
304
+ min-height: 360px;
305
+ }
306
+
307
+ .terminal-stage.history-collapsed {
308
+ grid-template-columns: 1fr;
309
+ grid-template-rows: 52px minmax(360px,1fr);
310
+ }
311
+ }
312
+
313
+ /* Compact screens ≤ 900px: move resource lists above the workbench and preserve console height. */
314
+ @media (max-width:900px) {
315
+ .live-tmux-overview-open {
316
+ margin-left: 51px;
317
+ }
318
+
319
+ .live-tmux-grid {
320
+ grid-template-columns: 1fr;
321
+ }
322
+ }
323
+
324
+ /* Compact screens ≤ 720px: turn runtime panes into a vertical workbench with wrapped controls. */
325
+ @media (max-width:720px) {
326
+ #terminalSection .terminal-section-head {
327
+ gap: 14px;
328
+ }
329
+
330
+ .terminal-resource-head {
331
+ min-height: 66px;
332
+ border-right: 0;
333
+ border-bottom: 1px solid #1d2d38;
334
+ }
335
+
336
+ .terminal-session-list {
337
+ grid-template-columns: 1fr;
338
+ max-height: 176px;
339
+ }
340
+
341
+ .terminal-key-actions button span {
342
+ display: none;
343
+ }
344
+
345
+ .terminal-command-label>span {
346
+ display: none;
347
+ }
348
+
349
+ .terminal-command-form button span {
350
+ display: none;
351
+ }
352
+
353
+ .terminal-command-form button {
354
+ width: 42px;
355
+ padding: 0;
356
+ justify-content: center;
357
+ }
358
+
359
+ .terminal-console-head {
360
+ align-items: flex-start;
361
+ }
362
+
363
+ .terminal-console-state {
364
+ margin-top: 1px;
365
+ }
366
+
367
+ .tmux-nav-item.active {
368
+ background: linear-gradient(180deg,rgba(55,196,155,.15),rgba(55,196,155,.04));
369
+ box-shadow: inset 0 2px #55d6aa;
370
+ }
371
+
372
+ .tmux-section {
373
+ padding: 13px;
374
+ border-radius: 15px;
375
+ }
376
+
377
+ .tmux-section-head {
378
+ gap: 14px;
379
+ }
380
+
381
+ .tmux-section-head>div {
382
+ min-width: 0;
383
+ align-items: flex-start;
384
+ }
385
+
386
+ .tmux-logo {
387
+ width: 42px;
388
+ height: 42px;
389
+ flex: 0 0 auto;
390
+ }
391
+
392
+ .terminal-logo {
393
+ width: 42px;
394
+ height: 42px;
395
+ flex: 0 0 auto;
396
+ }
397
+
398
+ .tmux-section-head h2 {
399
+ overflow-wrap: anywhere;
400
+ }
401
+
402
+ .terminal-section-head h2 {
403
+ overflow-wrap: anywhere;
404
+ }
405
+
406
+ .tmux-section-actions {
407
+ display: grid;
408
+ grid-template-columns: repeat(2,minmax(0,1fr));
409
+ gap: 7px;
410
+ }
411
+
412
+ .terminal-create-actions {
413
+ display: grid;
414
+ grid-template-columns: repeat(2,minmax(0,1fr));
415
+ gap: 7px;
416
+ }
417
+
418
+ .tmux-section-actions button {
419
+ width: 100%;
420
+ min-width: 0;
421
+ padding-inline: 8px;
422
+ white-space: nowrap;
423
+ }
424
+
425
+ .terminal-create-actions button {
426
+ width: 100%;
427
+ min-width: 0;
428
+ padding-inline: 8px;
429
+ white-space: nowrap;
430
+ }
431
+
432
+ .tmux-session-node {
433
+ max-width: 100%;
434
+ min-width: 0;
435
+ }
436
+
437
+ .tmux-window-node {
438
+ max-width: 100%;
439
+ min-width: 0;
440
+ }
441
+
442
+ .tmux-pane-node {
443
+ max-width: 100%;
444
+ min-width: 0;
445
+ }
446
+
447
+ .tmux-window-stack {
448
+ padding-left: 8px;
449
+ }
450
+
451
+ .tmux-pane-stack {
452
+ padding-left: 8px;
453
+ }
454
+
455
+ .tmux-pane-main {
456
+ padding-inline: 11px;
457
+ }
458
+
459
+ .tmux-pane-node footer {
460
+ padding-inline: 11px;
461
+ }
462
+
463
+ .tmux-map {
464
+ max-width: 100%;
465
+ overflow: hidden;
466
+ }
467
+
468
+ #terminalSection .terminal-layout {
469
+ width: 100%;
470
+ }
471
+
472
+ #terminalSection .terminal-workbench {
473
+ width: 100%;
474
+ min-width: 0;
475
+ }
476
+
477
+ .terminal-section-head>div:first-child {
478
+ min-width: 0;
479
+ align-items: flex-start;
480
+ }
481
+
482
+ .terminal-resource-panel {
483
+ display: block;
484
+ min-width: 0;
485
+ }
486
+
487
+ .terminal-session-item {
488
+ max-width: 100%;
489
+ min-width: 0;
490
+ }
491
+
492
+ .terminal-target-cluster {
493
+ max-width: 100%;
494
+ min-width: 0;
495
+ }
496
+
497
+ .terminal-workspace-actions {
498
+ align-items: flex-start;
499
+ flex-direction: column;
500
+ max-width: 100%;
501
+ min-width: 0;
502
+ }
503
+
504
+ .terminal-key-actions {
505
+ width: 100%;
506
+ justify-content: flex-start;
507
+ flex-wrap: wrap;
508
+ max-width: 100%;
509
+ min-width: 0;
510
+ }
511
+
512
+ .terminal-controlbar {
513
+ min-width: 0;
514
+ }
515
+
516
+ .terminal-target-meta {
517
+ max-width: 100%;
518
+ }
519
+
520
+ .terminal-target-meta span {
521
+ white-space: normal;
522
+ overflow-wrap: anywhere;
523
+ word-break: break-word;
524
+ }
525
+
526
+ .terminal-key-actions button {
527
+ min-width: 0;
528
+ padding-inline: 8px;
529
+ }
530
+
531
+ .terminal-key-actions kbd {
532
+ display: none;
533
+ }
534
+
535
+ .terminal-tmux-tools {
536
+ max-width: 100%;
537
+ overscroll-behavior-inline: contain;
538
+ }
539
+
540
+ .terminal-stage {
541
+ max-width: 100%;
542
+ }
543
+
544
+ .terminal-empty {
545
+ padding-inline: 14px;
546
+ }
547
+
548
+ .terminal-empty p {
549
+ margin-inline: 0;
550
+ }
551
+
552
+ .terminal-command-composer {
553
+ grid-template-columns: minmax(0,1fr) 42px;
554
+ }
555
+
556
+ .sidebar .nav-item[data-view="terminal"] {
557
+ display: none;
558
+ }
559
+
560
+ .sidebar .nav-item[data-view="tmux"] {
561
+ display: none;
562
+ }
563
+
564
+ body[data-current-view="terminal"] .topbar {
565
+ margin-bottom: 10px;
566
+ padding-bottom: 10px;
567
+ }
568
+
569
+ body[data-current-view="tmux"] .topbar {
570
+ margin-bottom: 10px;
571
+ padding-bottom: 10px;
572
+ }
573
+
574
+ body[data-current-view="terminal"] .topbar h1 {
575
+ font-size: 19px;
576
+ }
577
+
578
+ body[data-current-view="tmux"] .topbar h1 {
579
+ font-size: 19px;
580
+ }
581
+ }
582
+
583
+ /* Compact screens ≤ 640px: turn runtime panes into a vertical workbench with wrapped controls. */
584
+ @media (max-width:640px) {
585
+ .tmux-section-head h2 {
586
+ font-size: 20px;
587
+ }
588
+
589
+ .tmux-stats {
590
+ grid-template-columns: 1fr;
591
+ }
592
+
593
+ .tmux-stats>div {
594
+ border-right: 0;
595
+ border-bottom: 1px solid #1a2831;
596
+ }
597
+
598
+ .tmux-window-stack {
599
+ padding-left: 12px;
600
+ }
601
+
602
+ .tmux-pane-stack {
603
+ padding-left: 12px;
604
+ }
605
+
606
+ .tmux-agent-metrics {
607
+ grid-template-columns: repeat(2,1fr);
608
+ }
609
+
610
+ .tmux-agent-metrics>span:last-child {
611
+ display: none;
612
+ }
613
+
614
+ .terminal-create-actions {
615
+ width: 100%;
616
+ flex-wrap: wrap;
617
+ }
618
+
619
+ .terminal-create-actions button {
620
+ flex: 1;
621
+ }
622
+
623
+ .terminal-section-head h2 {
624
+ font-size: 20px;
625
+ }
626
+
627
+ .terminal-layout {
628
+ border-radius: 13px;
629
+ }
630
+
631
+ .terminal-controlbar {
632
+ padding: 8px;
633
+ }
634
+
635
+ .terminal-key-actions {
636
+ justify-content: flex-start;
637
+ flex-wrap: wrap;
638
+ }
639
+
640
+ .terminal-command-form {
641
+ grid-template-columns: 1fr;
642
+ }
643
+
644
+ .terminal-command-form label {
645
+ display: none;
646
+ }
647
+
648
+ .terminal-command-form button {
649
+ width: 100%;
650
+ }
651
+
652
+ .terminal-viewport {
653
+ min-height: 360px;
654
+ }
655
+
656
+ .tmux-section-actions {
657
+ flex-wrap: wrap;
658
+ }
659
+
660
+ .tmux-section-actions button {
661
+ flex: 1;
662
+ }
663
+
664
+ .tmux-pane-node footer {
665
+ align-items: flex-start;
666
+ flex-direction: column;
667
+ }
668
+
669
+ .tmux-pane-actions {
670
+ width: 100%;
671
+ justify-content: flex-start;
672
+ flex-wrap: wrap;
673
+ }
674
+ }
675
+
676
+ /* Compact screens ≤ 420px: prioritize the console and primary runtime actions. */
677
+ @media (max-width:420px) {
678
+ .tmux-section {
679
+ padding: 10px;
680
+ }
681
+
682
+ .terminal-create-actions {
683
+ grid-template-columns: 1fr;
684
+ }
685
+
686
+ .tmux-section-actions {
687
+ grid-template-columns: 1fr;
688
+ }
689
+
690
+ .terminal-key-actions {
691
+ gap: 4px;
692
+ }
693
+
694
+ .terminal-controlbar .terminal-key-actions button {
695
+ padding-inline: 7px;
696
+ font-size: 9px;
697
+ }
698
+
699
+ .terminal-console-head small {
700
+ font-size: 8px;
701
+ }
702
+
703
+ .terminal-console-state {
704
+ font-size: 8px;
705
+ }
706
+
707
+ .terminal-command-form {
708
+ padding-inline: 8px;
709
+ }
710
+
711
+ .live-tmux-title {
712
+ display: -webkit-box;
713
+ white-space: normal;
714
+ -webkit-box-orient: vertical;
715
+ -webkit-line-clamp: 2;
716
+ line-height: 1.4;
717
+ }
718
+ }