loadtoagent 1.1.0 → 1.3.2

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 +14 -5
  2. package/README.md +7 -0
  3. package/README.zh-CN.md +7 -0
  4. package/docs/PROVIDER-CONTRACTS.md +25 -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 +157 -38
  9. package/package.json +13 -4
  10. package/preload.js +13 -2
  11. package/renderer/app-agent-actions.js +125 -53
  12. package/renderer/app-bootstrap.js +54 -19
  13. package/renderer/app-dashboard.js +196 -55
  14. package/renderer/app-drawer-content.js +48 -44
  15. package/renderer/app-drawer-data.js +26 -13
  16. package/renderer/app-drawer.js +72 -54
  17. package/renderer/app-events-dialogs.js +146 -37
  18. package/renderer/app-events-filters.js +172 -13
  19. package/renderer/app-events-navigation.js +77 -30
  20. package/renderer/app-events-sessions.js +156 -9
  21. package/renderer/app-events.js +2 -1
  22. package/renderer/app-graph-model.js +20 -38
  23. package/renderer/app-graph-orchestration.js +15 -13
  24. package/renderer/app-graph-view.js +228 -113
  25. package/renderer/app-management.js +257 -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 +104 -34
  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 +52 -44
  32. package/renderer/app.js +153 -75
  33. package/renderer/i18n-messages.js +867 -37
  34. package/renderer/i18n.js +104 -0
  35. package/renderer/index.html +154 -67
  36. package/renderer/shared.js +17 -0
  37. package/renderer/styles-agent-map.css +16 -10
  38. package/renderer/styles-cards.css +44 -18
  39. package/renderer/styles-collaboration.css +23 -23
  40. package/renderer/styles-components.css +122 -45
  41. package/renderer/styles-management.css +364 -0
  42. package/renderer/styles-onboarding.css +8 -8
  43. package/renderer/styles-overlays.css +13 -7
  44. package/renderer/styles-product.css +48 -40
  45. package/renderer/styles-quality.css +312 -0
  46. package/renderer/styles-readability.css +1040 -0
  47. package/renderer/styles-responsive-product.css +84 -12
  48. package/renderer/styles-responsive-runtime.css +25 -17
  49. package/renderer/styles-responsive-shell.css +44 -48
  50. package/renderer/styles-responsive-workflows.css +39 -5
  51. package/renderer/styles-run-composer.css +28 -23
  52. package/renderer/styles-runtime-overview.css +285 -0
  53. package/renderer/styles-settings.css +176 -16
  54. package/renderer/styles-terminal.css +374 -37
  55. package/renderer/styles-tmux.css +49 -49
  56. package/renderer/styles-workflow-map.css +362 -15
  57. package/renderer/styles-workflows.css +116 -49
  58. package/renderer/styles.css +34 -19
  59. package/renderer/terminal-agent.js +17 -13
  60. package/renderer/terminal-events.js +253 -37
  61. package/renderer/terminal-workbench.js +208 -89
  62. package/renderer/terminal.js +350 -35
  63. package/src/agentMonitor/claudeParser.js +96 -7
  64. package/src/agentMonitor/codexParser.js +59 -4
  65. package/src/agentMonitor/executionActivity.js +282 -0
  66. package/src/agentMonitor/genericParser.js +56 -13
  67. package/src/agentMonitor/hierarchy.js +17 -0
  68. package/src/agentMonitor/responseIntent.js +51 -0
  69. package/src/agentMonitor.js +21 -3
  70. package/src/agentRunner.js +66 -1
  71. package/src/attentionNotifier.js +14 -10
  72. package/src/automationMonitor.js +258 -0
  73. package/src/contracts.js +10 -1
  74. package/src/ipc/registerAgentIpc.js +9 -3
  75. package/src/ipc/registerAppIpc.js +4 -1
  76. package/src/ipc/registerTerminalIpc.js +12 -14
  77. package/src/macUpdateHelper.js +210 -0
  78. package/src/monitorWorker.js +65 -6
  79. package/src/platformPath.js +80 -0
  80. package/src/processMonitor.js +80 -22
  81. package/src/providerVisibilityStore.js +45 -0
  82. package/src/sessionIntelligence.js +261 -0
  83. package/src/terminalHost.js +453 -0
  84. package/src/terminalHostDaemon.js +61 -0
  85. package/src/terminalManager.js +218 -6
  86. package/src/updateInstaller.js +175 -0
@@ -8,7 +8,7 @@
8
8
  display: block;
9
9
  margin-bottom: 6px;
10
10
  color: #7e899b;
11
- font-size: 9px;
11
+ font-size: 12px;
12
12
  }
13
13
 
14
14
  .permission-toggle {
@@ -41,14 +41,14 @@
41
41
 
42
42
  .permission-toggle div strong {
43
43
  display: block;
44
- font-size: 9px;
44
+ font-size: 12px;
45
45
  }
46
46
 
47
47
  .permission-toggle div small {
48
48
  display: block;
49
49
  margin-top: 4px;
50
50
  color: #606c7e;
51
- font-size: 8px;
51
+ font-size: 12px;
52
52
  line-height: 1.45;
53
53
  }
54
54
 
@@ -63,12 +63,12 @@
63
63
  border-radius: 9px;
64
64
  background: rgba(76,227,154,.055);
65
65
  color: #8190a2;
66
- font-size: 10px;
66
+ font-size: 12px;
67
67
  }
68
68
 
69
69
  .runtime-strip b {
70
70
  color: #75e5aa;
71
- font-size: 10px;
71
+ font-size: 12px;
72
72
  white-space: nowrap;
73
73
  }
74
74
 
@@ -169,7 +169,7 @@
169
169
  .runtime-segment>header small {
170
170
  display: block;
171
171
  color: #718395;
172
- font-size: 9px;
172
+ font-size: 12px;
173
173
  font-weight: 800;
174
174
  letter-spacing: .08em;
175
175
  }
@@ -185,7 +185,7 @@
185
185
  display: block;
186
186
  margin-top: 3px;
187
187
  color: #67788a;
188
- font-size: 10px;
188
+ font-size: 12px;
189
189
  font-style: normal;
190
190
  }
191
191
 
@@ -211,7 +211,7 @@
211
211
  background: #111c26;
212
212
  color: #91a2b3;
213
213
  font-family: "Cascadia Code",Consolas,monospace;
214
- font-size: 11px;
214
+ font-size: 12px;
215
215
  font-weight: 800;
216
216
  }
217
217
 
@@ -237,7 +237,7 @@
237
237
  .runtime-segment-empty span {
238
238
  margin-top: 6px;
239
239
  color: #617183;
240
- font-size: 10px;
240
+ font-size: 12px;
241
241
  }
242
242
 
243
243
  .tmux-runtime .runtime-segment-icon {
@@ -294,7 +294,7 @@
294
294
  border-radius: 9px;
295
295
  background: color-mix(in srgb,var(--drawer-provider) 14%,#17212a);
296
296
  color: var(--drawer-provider);
297
- font-size: 8px;
297
+ font-size: 12px;
298
298
  font-weight: 850;
299
299
  letter-spacing: .08em;
300
300
  }
@@ -319,7 +319,7 @@
319
319
  white-space: nowrap;
320
320
  margin-top: 4px;
321
321
  color: #738394;
322
- font-size: 10px;
322
+ font-size: 12px;
323
323
  }
324
324
 
325
325
  .chat-roadmap>summary>i {
@@ -353,7 +353,7 @@
353
353
  min-width: 0;
354
354
  overflow: hidden;
355
355
  color: #aebbc5;
356
- font-size: 11px;
356
+ font-size: 12px;
357
357
  line-height: 1.5;
358
358
  text-overflow: ellipsis;
359
359
  white-space: nowrap;
@@ -372,7 +372,7 @@
372
372
  border-radius: 6px;
373
373
  background: #17232b;
374
374
  color: #6fcfae;
375
- font-size: 8px;
375
+ font-size: 12px;
376
376
  font-weight: 800;
377
377
  }
378
378
 
@@ -405,7 +405,7 @@
405
405
  .run-shortcut-hint {
406
406
  margin-right: auto;
407
407
  color: #627484;
408
- font-size: 9px;
408
+ font-size: 12px;
409
409
  }
410
410
 
411
411
  .run-shortcut-hint kbd {
@@ -456,7 +456,7 @@
456
456
  letter-spacing: .14em;
457
457
  text-transform: uppercase;
458
458
  color: #8998aa;
459
- font-size: 11px;
459
+ font-size: 12px;
460
460
  }
461
461
 
462
462
  .icon-button {
@@ -466,8 +466,8 @@
466
466
  background: transparent;
467
467
  color: #7f8ba0;
468
468
  cursor: pointer;
469
- width: 34px;
470
- height: 34px;
469
+ width: 40px;
470
+ height: 40px;
471
471
  font-size: 17px;
472
472
  }
473
473
 
@@ -487,7 +487,7 @@
487
487
  .provider-rail-item small {
488
488
  margin-left: auto;
489
489
  color: #93a1b1;
490
- font-size: 11px;
490
+ font-size: 12px;
491
491
  }
492
492
 
493
493
  .runtime-disclosure {
@@ -523,12 +523,12 @@
523
523
  display: block;
524
524
  margin-top: 4px;
525
525
  color: #91a39f;
526
- font-size: 11px;
526
+ font-size: 12px;
527
527
  }
528
528
 
529
529
  .runtime-disclosure>summary em {
530
530
  color: #7de0ba;
531
- font-size: 11px;
531
+ font-size: 12px;
532
532
  font-style: normal;
533
533
  font-weight: 750;
534
534
  }
@@ -551,15 +551,18 @@
551
551
 
552
552
  .workspace-list {
553
553
  display: grid;
554
- overflow: auto;
555
- padding-right: 2px;
556
- gap: 5px;
554
+ overflow-x: hidden;
555
+ overflow-y: auto;
556
+ padding-right: 4px;
557
+ gap: 3px;
558
+ scrollbar-width: thin;
559
+ scrollbar-color: #314352 transparent;
557
560
  }
558
561
 
559
562
  .workspace-row {
560
563
  position: relative;
561
564
  display: grid;
562
- grid-template-columns: minmax(0,1fr) 34px;
565
+ grid-template-columns: minmax(0,1fr) 44px;
563
566
  align-items: center;
564
567
  gap: 4px;
565
568
  }
@@ -573,14 +576,15 @@
573
576
  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;
574
577
  display: flex;
575
578
  align-items: center;
576
- gap: 9px;
577
- padding: 0 8px;
579
+ gap: 8px;
580
+ padding: 0 9px;
578
581
  border-radius: 9px;
579
- min-height: 42px;
582
+ min-height: 44px;
580
583
  height: auto;
581
584
  font-size: 13px;
582
585
  position: relative;
583
586
  width: 100%;
587
+ min-width: 0;
584
588
  border: 1px solid transparent;
585
589
  background: transparent;
586
590
  color: #b4bfcc;
@@ -607,19 +611,23 @@
607
611
  }
608
612
 
609
613
  .workspace-remove {
610
- width: 34px;
611
- height: 34px;
612
- border: 0;
613
- border-radius: 9px;
614
- background: #131c27;
615
- color: #94a2b2;
616
- font-size: 15px;
614
+ width: 44px;
615
+ height: 44px;
616
+ padding: 0;
617
+ border: 1px solid transparent;
618
+ border-radius: 8px;
619
+ background: transparent;
620
+ color: #8292a1;
621
+ font-size: 14px;
617
622
  cursor: pointer;
623
+ opacity: .72;
618
624
  }
619
625
 
620
626
  .workspace-remove:hover {
627
+ border-color: rgba(255, 107, 127, .25);
621
628
  background: #2d1d24;
622
629
  color: #ff9baa;
630
+ opacity: 1;
623
631
  }
624
632
 
625
633
  .child-row {
@@ -630,11 +638,11 @@
630
638
  padding-top: 9px;
631
639
  border-top: 1px solid var(--line-soft);
632
640
  color: #909eaf;
633
- font-size: 11px;
641
+ font-size: 12px;
634
642
  }
635
643
 
636
644
  .chat-bubble-head b {
637
- font-size: 11px;
645
+ font-size: 12px;
638
646
  }
639
647
 
640
648
  .meta-chip {
@@ -647,13 +655,13 @@
647
655
  border: 1px solid var(--line);
648
656
  border-radius: 8px;
649
657
  background: #0b0f17;
650
- font-size: 8px;
658
+ font-size: 12px;
651
659
  min-height: 32px;
652
660
  color: #98a6b6;
653
661
  }
654
662
 
655
663
  .chat-bubble-head span {
656
- font-size: 10px;
664
+ font-size: 12px;
657
665
  color: #8997a8;
658
666
  }
659
667
 
@@ -665,7 +673,7 @@
665
673
  border-radius: 9px;
666
674
  background: #2c2314;
667
675
  color: #f0ce8b;
668
- font-size: 11px;
676
+ font-size: 12px;
669
677
  font-weight: 750;
670
678
  cursor: pointer;
671
679
  }
@@ -677,7 +685,7 @@
677
685
  border-radius: 10px;
678
686
  background: #211a10;
679
687
  color: #e7c681;
680
- font-size: 11px;
688
+ font-size: 12px;
681
689
  line-height: 1.55;
682
690
  }
683
691
 
@@ -0,0 +1,312 @@
1
+ /* Quality pass 101–200: command navigation, persistent filters, and stateful controls. */
2
+ /* Quality pass 201–300: control telemetry, resilient focus, and small-screen safeguards. */
3
+
4
+ body.dialog-open {
5
+ overflow: hidden;
6
+ }
7
+
8
+ body.quality-keyboard-mode :focus-visible {
9
+ outline: 3px solid #77e2c2;
10
+ outline-offset: 3px;
11
+ }
12
+
13
+ [data-quality-control] {
14
+ touch-action: manipulation;
15
+ }
16
+
17
+ [data-quality-pressed="true"] {
18
+ transform: translateY(1px);
19
+ filter: brightness(.96);
20
+ }
21
+
22
+ [data-quality-disabled="true"] {
23
+ cursor: not-allowed;
24
+ }
25
+
26
+ [data-quality-touch-target="padded"] {
27
+ position: relative;
28
+ }
29
+
30
+ [data-quality-touch-target="padded"]::after {
31
+ content: "";
32
+ position: absolute;
33
+ inset: 0;
34
+ outline: 6px solid transparent;
35
+ }
36
+
37
+ [data-quality-density="compact"] .session-grid,
38
+ [data-quality-density="compact"] .terminal-layout {
39
+ gap: 10px;
40
+ }
41
+
42
+ [data-quality-motion="reduced"] *,
43
+ [data-quality-motion="reduced"] *::before,
44
+ [data-quality-motion="reduced"] *::after {
45
+ scroll-behavior: auto !important;
46
+ transition-duration: .01ms !important;
47
+ animation-duration: .01ms !important;
48
+ animation-iteration-count: 1 !important;
49
+ }
50
+
51
+ [data-quality-viewport="mobile"] .quality-modal {
52
+ border-radius: 14px 14px 0 0;
53
+ }
54
+
55
+ .top-icon-action {
56
+ width: 44px;
57
+ height: 44px;
58
+ flex: 0 0 44px;
59
+ border: 1px solid #2a3544;
60
+ border-radius: 12px;
61
+ background: #101722;
62
+ color: #91a1b5;
63
+ cursor: pointer;
64
+ }
65
+
66
+ .top-icon-action:hover,
67
+ .top-icon-action:focus-visible {
68
+ border-color: #4b6b78;
69
+ color: #d7e6ee;
70
+ background: #16212d;
71
+ }
72
+
73
+ .quality-dialog {
74
+ z-index: 45;
75
+ }
76
+
77
+ .quality-modal {
78
+ width: min(620px, 94vw);
79
+ max-height: min(760px, 90vh);
80
+ overflow: auto;
81
+ padding: 20px;
82
+ border: 1px solid #314151;
83
+ border-radius: 18px;
84
+ background: linear-gradient(160deg, #131c28, #0b1018 72%);
85
+ box-shadow: 0 32px 110px rgba(0, 0, 0, .58);
86
+ }
87
+
88
+ .quality-modal-head {
89
+ display: flex;
90
+ align-items: flex-start;
91
+ gap: 18px;
92
+ margin-bottom: 16px;
93
+ }
94
+
95
+ .quality-modal-head p {
96
+ margin: 0 0 4px;
97
+ color: #5de0b5;
98
+ font-size: 12px;
99
+ font-weight: 800;
100
+ letter-spacing: .12em;
101
+ text-transform: uppercase;
102
+ }
103
+
104
+ .quality-modal-head h2 {
105
+ margin: 0;
106
+ color: #eef5f8;
107
+ font-size: 20px;
108
+ }
109
+
110
+ .quality-search {
111
+ display: flex;
112
+ align-items: center;
113
+ gap: 10px;
114
+ padding: 0 14px;
115
+ border: 1px solid #34505d;
116
+ border-radius: 13px;
117
+ background: #080e15;
118
+ color: #5de0b5;
119
+ }
120
+
121
+ .quality-search:focus-within {
122
+ border-color: #66dcb7;
123
+ box-shadow: 0 0 0 3px rgba(93, 224, 181, .1);
124
+ }
125
+
126
+ .quality-search input {
127
+ width: 100%;
128
+ height: 50px;
129
+ border: 0;
130
+ outline: 0;
131
+ background: transparent;
132
+ color: #e2edf1;
133
+ font-size: 14px;
134
+ }
135
+
136
+ .quality-command-list {
137
+ display: grid;
138
+ gap: 5px;
139
+ margin-top: 12px;
140
+ }
141
+
142
+ .quality-command-list button {
143
+ display: grid;
144
+ grid-template-columns: 34px minmax(0, 1fr) auto auto;
145
+ align-items: center;
146
+ gap: 10px;
147
+ width: 100%;
148
+ min-height: 48px;
149
+ padding: 7px 12px;
150
+ border: 1px solid transparent;
151
+ border-radius: 11px;
152
+ background: transparent;
153
+ color: #bdc8d2;
154
+ text-align: left;
155
+ cursor: pointer;
156
+ }
157
+
158
+ .quality-command-list button > span {
159
+ display: grid;
160
+ place-items: center;
161
+ width: 32px;
162
+ height: 32px;
163
+ border-radius: 9px;
164
+ background: #172331;
165
+ color: #76dfbf;
166
+ }
167
+
168
+ .quality-command-list button small {
169
+ color: #647386;
170
+ }
171
+
172
+ .quality-command-list button i {
173
+ opacity: 0;
174
+ color: #92e7cc;
175
+ }
176
+
177
+ .quality-command-list button.active,
178
+ .quality-command-list button:hover {
179
+ border-color: #31594e;
180
+ background: #14231f;
181
+ color: #eff8f5;
182
+ }
183
+
184
+ .quality-command-list button.active i {
185
+ opacity: 1;
186
+ }
187
+
188
+ .quality-dialog-status {
189
+ min-height: 18px;
190
+ margin: 10px 3px 0;
191
+ color: #748497;
192
+ font-size: 12px;
193
+ }
194
+
195
+ .shortcut-help-list {
196
+ display: grid;
197
+ gap: 7px;
198
+ margin: 0;
199
+ }
200
+
201
+ .shortcut-help-list > div {
202
+ display: flex;
203
+ align-items: center;
204
+ justify-content: space-between;
205
+ gap: 20px;
206
+ min-height: 49px;
207
+ padding: 8px 12px;
208
+ border: 1px solid #253241;
209
+ border-radius: 10px;
210
+ background: #0c131c;
211
+ }
212
+
213
+ .shortcut-help-list dt {
214
+ display: flex;
215
+ gap: 5px;
216
+ }
217
+
218
+ .shortcut-help-list dd {
219
+ margin: 0;
220
+ color: #9caabb;
221
+ font-size: 12px;
222
+ }
223
+
224
+ .session-result-summary {
225
+ min-height: 22px;
226
+ margin: 8px 2px 0;
227
+ color: #708094;
228
+ font-size: 12px;
229
+ }
230
+
231
+ .empty-state .ghost-button {
232
+ margin-bottom: 9px;
233
+ }
234
+
235
+ .drawer-meta .meta-copy {
236
+ font: inherit;
237
+ cursor: pointer;
238
+ }
239
+
240
+ .drawer-meta .meta-copy:hover,
241
+ .drawer-meta .meta-copy:focus-visible {
242
+ border-color: #3e6d61;
243
+ background: #13251f;
244
+ color: #c5f4e4;
245
+ }
246
+
247
+ .drawer-meta .meta-copy > span {
248
+ color: #72d8b8;
249
+ }
250
+
251
+ .clipboard-fallback {
252
+ position: fixed;
253
+ left: -10000px;
254
+ top: -10000px;
255
+ width: 1px;
256
+ height: 1px;
257
+ opacity: 0;
258
+ }
259
+
260
+ .terminal-command-composer {
261
+ grid-template-columns: minmax(0, 1fr) auto auto;
262
+ }
263
+
264
+ .terminal-command-form .terminal-command-clear {
265
+ width: 38px;
266
+ min-width: 38px;
267
+ padding: 0;
268
+ justify-content: center;
269
+ border-color: #394755;
270
+ background: #111923;
271
+ color: #8292a4;
272
+ }
273
+
274
+ .terminal-command-count.warning {
275
+ color: #f4b862;
276
+ font-weight: 800;
277
+ }
278
+
279
+ @media (max-width: 760px) {
280
+ .top-icon-action {
281
+ width: 42px;
282
+ height: 42px;
283
+ flex-basis: 42px;
284
+ }
285
+
286
+ .quality-modal {
287
+ width: 100%;
288
+ max-height: 92vh;
289
+ padding: 16px;
290
+ }
291
+
292
+ .quality-command-list button {
293
+ grid-template-columns: 34px minmax(0, 1fr) auto;
294
+ }
295
+
296
+ .quality-command-list button small {
297
+ display: none;
298
+ }
299
+
300
+ .terminal-command-composer {
301
+ grid-template-columns: minmax(0, 1fr) auto;
302
+ }
303
+
304
+ .terminal-command-form .terminal-command-clear {
305
+ grid-row: 1;
306
+ grid-column: 2;
307
+ }
308
+
309
+ .terminal-command-form button[type="submit"] {
310
+ grid-column: 1 / -1;
311
+ }
312
+ }