loadtoagent 1.0.0 → 1.3.1

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 (86) hide show
  1. package/README.ko.md +7 -0
  2. package/README.md +7 -0
  3. package/README.zh-CN.md +7 -0
  4. package/docs/PROVIDER-CONTRACTS.md +23 -1
  5. package/docs/UI-AUDIT-100.md +118 -0
  6. package/docs/UI-AUDIT-101-200.md +120 -0
  7. package/docs/UI-AUDIT-201-300.md +120 -0
  8. package/main.js +183 -37
  9. package/package.json +15 -4
  10. package/preload.js +11 -0
  11. package/renderer/app-agent-actions.js +125 -53
  12. package/renderer/app-bootstrap.js +54 -9
  13. package/renderer/app-dashboard.js +197 -58
  14. package/renderer/app-drawer-content.js +103 -86
  15. package/renderer/app-drawer-data.js +26 -13
  16. package/renderer/app-drawer.js +79 -55
  17. package/renderer/app-events-dialogs.js +146 -37
  18. package/renderer/app-events-filters.js +172 -9
  19. package/renderer/app-events-navigation.js +78 -31
  20. package/renderer/app-events-sessions.js +171 -4
  21. package/renderer/app-events.js +2 -1
  22. package/renderer/app-graph-model.js +32 -4
  23. package/renderer/app-graph-orchestration.js +16 -13
  24. package/renderer/app-graph-view.js +228 -112
  25. package/renderer/app-management.js +211 -0
  26. package/renderer/app-provider-visibility.js +124 -0
  27. package/renderer/app-quality.js +568 -0
  28. package/renderer/app-run-modal.js +103 -33
  29. package/renderer/app-runtime-overview.js +312 -0
  30. package/renderer/app-session-render.js +94 -37
  31. package/renderer/app-tmux-render.js +119 -38
  32. package/renderer/app.js +155 -76
  33. package/renderer/i18n-messages.js +833 -15
  34. package/renderer/i18n.js +104 -0
  35. package/renderer/index.html +162 -75
  36. package/renderer/shared.js +17 -0
  37. package/renderer/styles-agent-map.css +50 -1
  38. package/renderer/styles-cards.css +26 -0
  39. package/renderer/styles-collaboration.css +18 -88
  40. package/renderer/styles-components.css +126 -14
  41. package/renderer/styles-management.css +355 -0
  42. package/renderer/styles-overlays.css +13 -2
  43. package/renderer/styles-product.css +24 -16
  44. package/renderer/styles-quality.css +312 -0
  45. package/renderer/styles-readability.css +862 -0
  46. package/renderer/styles-responsive-product.css +84 -12
  47. package/renderer/styles-responsive-runtime.css +31 -14
  48. package/renderer/styles-responsive-shell.css +44 -48
  49. package/renderer/styles-responsive-workflows.css +37 -17
  50. package/renderer/styles-run-composer.css +5 -0
  51. package/renderer/styles-runtime-overview.css +285 -0
  52. package/renderer/styles-settings.css +160 -0
  53. package/renderer/styles-terminal.css +339 -2
  54. package/renderer/styles-tmux.css +154 -0
  55. package/renderer/styles-workflow-map.css +362 -15
  56. package/renderer/styles-workflows.css +69 -2
  57. package/renderer/styles.css +27 -12
  58. package/renderer/terminal-agent.js +17 -13
  59. package/renderer/terminal-events.js +233 -40
  60. package/renderer/terminal-workbench.js +176 -78
  61. package/renderer/terminal.js +350 -37
  62. package/src/agentMonitor/claudeParser.js +96 -7
  63. package/src/agentMonitor/codexParser.js +59 -4
  64. package/src/agentMonitor/executionActivity.js +282 -0
  65. package/src/agentMonitor/genericParser.js +56 -13
  66. package/src/agentMonitor/hierarchy.js +17 -0
  67. package/src/agentMonitor/responseIntent.js +51 -0
  68. package/src/agentMonitor.js +21 -3
  69. package/src/agentRunner.js +66 -1
  70. package/src/attentionNotifier.js +71 -0
  71. package/src/automationMonitor.js +258 -0
  72. package/src/contracts.js +10 -1
  73. package/src/ipc/registerAgentIpc.js +9 -3
  74. package/src/ipc/registerAppIpc.js +4 -1
  75. package/src/ipc/registerTerminalIpc.js +12 -6
  76. package/src/macUpdateHelper.js +210 -0
  77. package/src/monitorWorker.js +65 -6
  78. package/src/platformPath.js +80 -0
  79. package/src/processMonitor.js +81 -23
  80. package/src/providerVisibilityStore.js +45 -0
  81. package/src/sessionIntelligence.js +247 -0
  82. package/src/terminalHost.js +381 -0
  83. package/src/terminalHostDaemon.js +60 -0
  84. package/src/terminalManager.js +158 -3
  85. package/src/tmuxMonitor.js +2 -2
  86. package/src/updateInstaller.js +175 -0
@@ -199,7 +199,7 @@
199
199
  }
200
200
 
201
201
  .settings-head p:last-child {
202
- font-size: 10px;
202
+ font-size: 12px;
203
203
  }
204
204
 
205
205
  .settings-emblem {
@@ -317,34 +317,62 @@
317
317
  left: 10px;
318
318
  max-width: 430px;
319
319
  margin-left: auto;
320
+ max-height: calc(100dvh - 96px - env(safe-area-inset-bottom));
321
+ overflow-y: auto;
320
322
  padding: 12px;
321
323
  border: 1px solid #324456;
322
324
  border-radius: 16px;
323
325
  background: #111925;
324
- box-shadow: 0 24px 70px rgba(0,0,0,.62);
326
+ scrollbar-width: thin;
327
+ scrollbar-color: #516272 #111925;
328
+ box-shadow: 0 0 0 100vmax rgba(3,7,12,.62), 0 24px 70px rgba(0,0,0,.62);
325
329
  }
326
330
 
331
+ .mobile-tools-menu::-webkit-scrollbar { width: 7px; }
332
+ .mobile-tools-menu::-webkit-scrollbar-track { background: #111925; border-radius: 999px; }
333
+ .mobile-tools-menu::-webkit-scrollbar-thumb { border: 2px solid #111925; border-radius: 999px; background: #607181; }
334
+
327
335
  .mobile-tools-menu:not(.hidden) {
328
336
  display: grid;
329
337
  gap: 7px;
330
338
  }
331
339
 
332
- .mobile-tools-menu>div {
333
- padding: 4px 5px 8px;
340
+ .mobile-tools-menu>.mobile-tools-head {
341
+ min-height: 48px;
342
+ display: grid;
343
+ grid-template-columns: minmax(0, 1fr) 44px;
344
+ align-items: center;
345
+ gap: 10px;
346
+ padding: 0 2px 6px 5px;
334
347
  }
335
348
 
336
- .mobile-tools-menu>div b {
349
+ .mobile-tools-menu>.mobile-tools-head>span { min-width: 0; margin: 0; }
350
+
351
+ .mobile-tools-menu>.mobile-tools-head b {
337
352
  display: block;
338
353
  font-size: 14px;
339
354
  }
340
355
 
341
- .mobile-tools-menu>div span {
356
+ .mobile-tools-menu>.mobile-tools-head small {
342
357
  display: block;
343
358
  margin-top: 3px;
344
359
  color: #9ba9b8;
345
- font-size: 11px;
360
+ font-size: 12px;
346
361
  }
347
362
 
363
+ #mobileToolsCloseBtn {
364
+ width: 44px;
365
+ min-height: 44px;
366
+ border: 1px solid #304557;
367
+ border-radius: 10px;
368
+ background: #0d1620;
369
+ color: #c9d7df;
370
+ font-size: 20px;
371
+ cursor: pointer;
372
+ }
373
+
374
+ #mobileToolsCloseBtn:hover { border-color: #5b778c; background: #172532; color: #fff; }
375
+
348
376
  .mobile-tools-menu>button {
349
377
  min-height: 58px;
350
378
  display: grid;
@@ -365,6 +393,50 @@
365
393
  background: #152230;
366
394
  }
367
395
 
396
+ .mobile-project-picker {
397
+ border: 1px solid #2b4050;
398
+ border-radius: 12px;
399
+ background: #0d161f;
400
+ overflow: hidden;
401
+ }
402
+
403
+ .mobile-project-picker>summary {
404
+ min-height: 58px;
405
+ display: grid;
406
+ grid-template-columns: 40px minmax(0,1fr) 18px;
407
+ align-items: center;
408
+ gap: 10px;
409
+ padding: 8px 10px;
410
+ color: #dce6ee;
411
+ cursor: pointer;
412
+ list-style: none;
413
+ }
414
+
415
+ .mobile-project-picker>summary::-webkit-details-marker { display: none; }
416
+ .mobile-project-picker>summary:hover { background: #152230; }
417
+ .mobile-project-picker>summary em { color: #94a8b6; font-style: normal; transition: transform .18s ease; }
418
+ .mobile-project-picker[open]>summary em { transform: rotate(180deg); }
419
+
420
+ .mobile-project-picker-body {
421
+ padding: 8px;
422
+ border-top: 1px solid #263947;
423
+ background: #0a111a;
424
+ }
425
+
426
+ .mobile-project-picker .workspace-list { max-height: none; overflow: visible; padding-right: 0; }
427
+ .mobile-project-picker .workspace-item { min-height: 44px; }
428
+ .mobile-project-picker .workspace-item[aria-pressed="true"],
429
+ .mobile-project-picker .workspace-row:has(.workspace-item[aria-pressed="true"]) { display: none; }
430
+ .mobile-project-picker-body>#mobileAddWorkspaceBtn {
431
+ width: 100%;
432
+ min-height: 44px;
433
+ margin-top: 8px;
434
+ border: 1px dashed #3a5668;
435
+ border-radius: 9px;
436
+ background: #111e29;
437
+ color: #9edff2;
438
+ }
439
+
368
440
  .mobile-tools-menu i {
369
441
  width: 38px;
370
442
  height: 38px;
@@ -385,7 +457,7 @@
385
457
  display: block;
386
458
  margin-top: 4px;
387
459
  color: #94a3b3;
388
- font-size: 10px;
460
+ font-size: 12px;
389
461
  }
390
462
 
391
463
  .guide-toggle {
@@ -554,11 +626,11 @@
554
626
  /* Compact screens ≤ 420px: keep compact forms and dialog actions inside the safe area. */
555
627
  @media (max-width:420px) {
556
628
  .primary-button {
557
- font-size: 11px;
629
+ font-size: 12px;
558
630
  }
559
631
 
560
632
  .ghost-button {
561
- font-size: 11px;
633
+ font-size: 12px;
562
634
  }
563
635
 
564
636
  .beginner-guide li {
@@ -591,7 +663,7 @@
591
663
  }
592
664
 
593
665
  .new-run-cta-copy b {
594
- font-size: 11px;
666
+ font-size: 12px;
595
667
  }
596
668
 
597
669
  .run-composer .modal-head {
@@ -647,7 +719,7 @@
647
719
  }
648
720
 
649
721
  .guide-toggle b {
650
- font-size: 11px;
722
+ font-size: 12px;
651
723
  }
652
724
 
653
725
  .run-provider-docs {
@@ -117,26 +117,31 @@
117
117
  .terminal-resource-panel {
118
118
  max-height: none;
119
119
  display: grid;
120
- grid-template-columns: 205px minmax(0,1fr);
121
- grid-template-rows: 92px;
120
+ grid-template-columns: 220px minmax(0,1fr);
121
+ grid-template-rows: 106px;
122
122
  border-right: 0;
123
123
  border-bottom: 1px solid #1d2d38;
124
124
  }
125
125
 
126
126
  .terminal-resource-head {
127
- min-height: 92px;
127
+ min-height: 106px;
128
128
  border-right: 1px solid #1d2d38;
129
129
  border-bottom: 0;
130
130
  }
131
131
 
132
132
  .terminal-session-list {
133
- grid-template-columns: repeat(2,minmax(0,1fr));
134
- max-height: 92px;
135
- padding: 9px;
133
+ display: grid;
134
+ grid-template-columns: none;
135
+ grid-auto-columns: minmax(250px,310px);
136
+ grid-auto-flow: column;
137
+ max-height: 106px;
138
+ padding: 10px;
139
+ overflow-x: auto;
140
+ overflow-y: hidden;
136
141
  }
137
142
 
138
143
  .terminal-session-item {
139
- min-height: 72px;
144
+ min-height: 84px;
140
145
  }
141
146
 
142
147
  .terminal-resource-tip {
@@ -144,8 +149,8 @@
144
149
  }
145
150
 
146
151
  #terminalSection .terminal-workbench {
147
- height: 495px;
148
- min-height: 495px;
152
+ height: clamp(620px,calc(100vh - 270px),760px);
153
+ min-height: 620px;
149
154
  }
150
155
  }
151
156
 
@@ -335,11 +340,11 @@
335
340
 
336
341
  .terminal-session-list {
337
342
  grid-template-columns: 1fr;
338
- max-height: 176px;
339
- }
340
-
341
- .terminal-key-actions button span {
342
- display: none;
343
+ grid-auto-columns: auto;
344
+ grid-auto-flow: row;
345
+ max-height: 260px;
346
+ overflow-x: hidden;
347
+ overflow-y: auto;
343
348
  }
344
349
 
345
350
  .terminal-command-label>span {
@@ -358,8 +363,11 @@
358
363
 
359
364
  .terminal-console-head {
360
365
  align-items: flex-start;
366
+ flex-direction: column;
361
367
  }
362
368
 
369
+ .terminal-console-tools { width: 100%; justify-content: flex-start; flex-wrap: wrap; }
370
+
363
371
  .terminal-console-state {
364
372
  margin-top: 1px;
365
373
  }
@@ -666,6 +674,15 @@
666
674
  flex-direction: column;
667
675
  }
668
676
 
677
+ .tmux-subagent-row {
678
+ grid-template-columns: 26px minmax(0,1fr);
679
+ }
680
+
681
+ .tmux-subagent-row>button {
682
+ grid-column: 2;
683
+ justify-self: start;
684
+ }
685
+
669
686
  .tmux-pane-actions {
670
687
  width: 100%;
671
688
  justify-content: flex-start;
@@ -41,56 +41,28 @@
41
41
  }
42
42
  }
43
43
 
44
- /* Compact screens ≤ 980px: collapse content columns and simplify the side rail. */
44
+ /* Compact screens ≤ 980px: keep project filtering readable while reducing the side rail. */
45
45
  @media (max-width:980px) {
46
46
  :root {
47
- --sidebar: 76px;
48
- }
49
- }
50
-
51
- /* Compact screens ≤ 900px: collapse content columns and simplify the side rail. */
52
- @media (max-width:900px) {
53
- :root {
54
- --sidebar: 72px;
55
- }
56
-
57
- .brand>div:last-child {
58
- display: none;
59
- }
60
-
61
- .nav-item span:not(.nav-icon) {
62
- display: none;
63
- }
64
-
65
- .nav-item b {
66
- display: none;
47
+ --sidebar: 220px;
67
48
  }
68
49
 
69
- .section-title span {
50
+ .brand small,
51
+ .provider-rail-item small,
52
+ .sidebar-footer small,
53
+ .sidebar-app-version {
70
54
  display: none;
71
55
  }
72
56
 
73
- .provider-rail-item strong {
74
- display: none;
75
- }
76
-
77
- .workspace-section {
78
- display: none;
79
- }
80
-
81
- .sidebar-footer div {
82
- display: none;
83
- }
84
-
85
- .brand {
86
- justify-content: center;
87
- padding-left: 0;
88
- padding-right: 0;
89
- }
57
+ .sidebar { padding: 20px 13px 16px; }
58
+ .brand { padding-bottom: 18px; }
59
+ .sidebar-section { margin-top: 19px; }
60
+ }
90
61
 
91
- .nav-item {
92
- grid-template-columns: 1fr;
93
- place-items: center;
62
+ /* Compact screens ≤ 900px: collapse content columns and simplify the side rail. */
63
+ @media (max-width:900px) {
64
+ :root {
65
+ --sidebar: 210px;
94
66
  }
95
67
 
96
68
  .topbar {
@@ -150,6 +122,10 @@
150
122
  overscroll-behavior: contain;
151
123
  }
152
124
 
125
+ body[data-current-view="terminal"] .main-stage {
126
+ padding-bottom: calc(92px + env(safe-area-inset-bottom));
127
+ }
128
+
153
129
  .sidebar {
154
130
  position: fixed;
155
131
  z-index: 18;
@@ -180,6 +156,26 @@
180
156
  display: none!important;
181
157
  }
182
158
 
159
+ .advanced-tools-nav {
160
+ display: contents;
161
+ }
162
+
163
+ .advanced-tools-nav > summary {
164
+ display: none;
165
+ }
166
+
167
+ .advanced-tools-list {
168
+ display: contents!important;
169
+ }
170
+
171
+ .advanced-tools-list .nav-item {
172
+ display: none;
173
+ }
174
+
175
+ .advanced-tools-list .runtime-nav-item {
176
+ display: grid;
177
+ }
178
+
183
179
  .nav-item {
184
180
  min-width: 0;
185
181
  height: 54px;
@@ -198,7 +194,7 @@
198
194
  max-width: 100%;
199
195
  overflow: hidden;
200
196
  color: inherit;
201
- font-size: 9px;
197
+ font-size: 12px;
202
198
  font-weight: 700;
203
199
  letter-spacing: -.04em;
204
200
  text-overflow: ellipsis;
@@ -337,7 +333,7 @@
337
333
  height: 60px;
338
334
  display: grid;
339
335
  gap: 2px;
340
- grid-template-columns: repeat(4,minmax(0,1fr));
336
+ grid-template-columns: repeat(5,minmax(0,1fr));
341
337
  }
342
338
 
343
339
  .topbar {
@@ -379,7 +375,7 @@
379
375
  /* Compact screens ≤ 640px: replace the side rail with bottom navigation and protect horizontal space. */
380
376
  @media (max-width:640px) {
381
377
  .main-stage {
382
- padding: 22px 15px 40px;
378
+ padding: 22px 15px calc(92px + env(safe-area-inset-bottom));
383
379
  }
384
380
 
385
381
  .sessions-heading {
@@ -414,7 +410,7 @@
414
410
  /* Compact screens ≤ 430px: trim labels and spacing for the narrowest supported window. */
415
411
  @media (max-width:430px) {
416
412
  .sidebar .nav-item>span:nth-child(2) {
417
- font-size: 8px;
413
+ font-size: 12px;
418
414
  }
419
415
  }
420
416
 
@@ -456,11 +452,11 @@
456
452
  }
457
453
 
458
454
  .token-row span {
459
- font-size: 8px;
455
+ font-size: 12px;
460
456
  }
461
457
 
462
458
  .token-row b {
463
- font-size: 11px;
459
+ font-size: 12px;
464
460
  }
465
461
 
466
462
  .chat-row {
@@ -227,7 +227,7 @@
227
227
  align-items: flex-start;
228
228
  }
229
229
 
230
- .live-section-head>p {
230
+ .live-section-description {
231
231
  display: none;
232
232
  }
233
233
  }
@@ -375,20 +375,6 @@
375
375
  grid-column: 1/-1;
376
376
  }
377
377
 
378
- .subagent-conversation-summary {
379
- grid-template-columns: 1fr;
380
- }
381
-
382
- .subagent-dialog-list .chat-row.assistant {
383
- padding-left: 0;
384
- padding-right: 0;
385
- }
386
-
387
- .subagent-dialog-list .chat-row.user {
388
- padding-left: 0;
389
- padding-right: 0;
390
- }
391
-
392
378
  .completed-subagent-list {
393
379
  grid-template-columns: 1fr;
394
380
  }
@@ -563,7 +549,7 @@
563
549
  gap: 14px;
564
550
  }
565
551
 
566
- .live-section-head>div {
552
+ .live-section-title {
567
553
  min-width: 0;
568
554
  align-items: flex-start;
569
555
  }
@@ -633,6 +619,37 @@
633
619
 
634
620
  /* Compact screens ≤ 640px: stack relationship cards and route connectors vertically. */
635
621
  @media (max-width:640px) {
622
+ .execution-activity-card>summary {
623
+ grid-template-columns: 30px minmax(0,1fr);
624
+ }
625
+
626
+ .execution-activity-state {
627
+ grid-column: 2;
628
+ align-items: flex-start;
629
+ max-width: 100%;
630
+ text-align: left;
631
+ }
632
+
633
+ .execution-activity-state>span:first-child,
634
+ .execution-activity-disclosure { justify-content: flex-start; }
635
+
636
+ .execution-activity-detail { padding: 12px; }
637
+
638
+ .execution-activity-detail dl { grid-template-columns: 1fr; }
639
+
640
+ .execution-activity-panel>header {
641
+ flex-direction: column;
642
+ }
643
+ .live-section-head {
644
+ flex-wrap: wrap;
645
+ }
646
+
647
+ .live-section-tools {
648
+ width: 100%;
649
+ justify-content: flex-start;
650
+ margin-left: 0;
651
+ }
652
+
636
653
  .global-stat {
637
654
  border-right: 0;
638
655
  border-bottom: 1px solid var(--line-soft);
@@ -772,7 +789,10 @@
772
789
 
773
790
  /* Reduced motion: preserve state changes while removing decorative movement. */
774
791
  @media (prefers-reduced-motion:reduce) {
775
- .live-beacon {
792
+ .live-beacon,
793
+ .execution-activity-card.running .execution-activity-state>span:first-child i {
776
794
  animation: none!important;
777
795
  }
796
+
797
+ .execution-activity-disclosure i { transition: none; }
778
798
  }
@@ -615,6 +615,11 @@
615
615
  font-size: 11px;
616
616
  }
617
617
 
618
+ .run-prompt-count.warning {
619
+ color: #ffbd68;
620
+ font-weight: 700;
621
+ }
622
+
618
623
  .run-advanced>summary small {
619
624
  display: block;
620
625
  margin-top: 3px;