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
@@ -311,6 +311,12 @@
311
311
  box-shadow: 0 0 0 6px rgba(138,232,255,.14)!important;
312
312
  }
313
313
 
314
+ @media (pointer:coarse) {
315
+ :where(button,[role="button"],summary) {
316
+ min-height: 44px;
317
+ }
318
+ }
319
+
314
320
  .provider-overview-card {
315
321
  --provider: #8fa2b7;
316
322
  position: relative;
@@ -330,7 +336,50 @@
330
336
 
331
337
  .provider-overview-card.selected {
332
338
  border-color: color-mix(in srgb,var(--provider) 66%,#344151);
333
- box-shadow: inset 0 0 0 1px color-mix(in srgb,var(--provider) 28%,transparent),0 10px 30px rgba(0,0,0,.2);
339
+ background: linear-gradient(145deg,color-mix(in srgb,var(--provider) 15%,#10151f),#0d111a 68%);
340
+ box-shadow: inset 0 0 0 2px color-mix(in srgb,var(--provider) 30%,transparent),0 10px 30px rgba(0,0,0,.28),0 0 24px color-mix(in srgb,var(--provider) 10%,transparent);
341
+ }
342
+
343
+ .provider-overview-card.selected:before {
344
+ width: 5px;
345
+ opacity: 1;
346
+ }
347
+
348
+ .poc-head-states {
349
+ display: grid;
350
+ justify-items: end;
351
+ gap: 4px;
352
+ margin-left: auto;
353
+ }
354
+
355
+ .poc-head-states .poc-state {
356
+ margin-left: 0;
357
+ }
358
+
359
+ .poc-filter-state {
360
+ display: none;
361
+ padding: 3px 7px;
362
+ border: 1px solid color-mix(in srgb,var(--provider) 58%,#28483f);
363
+ border-radius: 999px;
364
+ background: color-mix(in srgb,var(--provider) 16%,#0b1515);
365
+ color: color-mix(in srgb,var(--provider) 72%,#eafff8);
366
+ font-size: 9px;
367
+ font-weight: 800;
368
+ white-space: nowrap;
369
+ }
370
+
371
+ .poc-filter-state.visible {
372
+ display: inline-flex;
373
+ }
374
+
375
+ .provider-overview-card.filter-clicked {
376
+ animation: provider-card-confirm .38s cubic-bezier(.22,1,.36,1);
377
+ }
378
+
379
+ @keyframes provider-card-confirm {
380
+ 0% { transform: scale(.97); }
381
+ 60% { transform: translateY(-3px) scale(1.015); }
382
+ 100% { transform: translateY(0) scale(1); }
334
383
  }
335
384
 
336
385
  .poc-head strong {
@@ -109,6 +109,32 @@
109
109
  flex: 0 0 auto;
110
110
  }
111
111
 
112
+ .card-subtitle .origin-project {
113
+ display: inline-flex;
114
+ align-items: center;
115
+ min-width: 0;
116
+ gap: 5px;
117
+ }
118
+
119
+ .card-subtitle .origin-project small {
120
+ flex: 0 0 auto;
121
+ padding: 2px 5px;
122
+ border: 1px solid rgba(89,216,255,.18);
123
+ border-radius: 5px;
124
+ background: rgba(89,216,255,.06);
125
+ color: #76c8df;
126
+ font-size: 8px;
127
+ font-weight: 750;
128
+ letter-spacing: .02em;
129
+ }
130
+
131
+ .card-subtitle .origin-project b {
132
+ overflow: hidden;
133
+ color: #b8c6d4;
134
+ font-weight: 600;
135
+ text-overflow: ellipsis;
136
+ }
137
+
112
138
  .card-usage {
113
139
  display: grid;
114
140
  grid-template-columns: 1.1fr .9fr;
@@ -336,103 +336,33 @@
336
336
  font-size: 10px;
337
337
  }
338
338
 
339
- .subagent-conversation-summary {
339
+ .subagent-work-source {
340
340
  display: grid;
341
- grid-template-columns: repeat(3,minmax(0,1fr));
342
- gap: 8px;
343
- margin-bottom: 12px;
344
- }
345
-
346
- .subagent-conversation-summary>span {
347
- padding: 11px;
348
- border: 1px solid #263b45;
349
- border-radius: 10px;
350
- background: #0c171e;
351
- }
352
-
353
- .subagent-conversation-summary small {
354
- display: block;
355
- color: #718591;
356
- font-size: 9px;
357
- }
358
-
359
- .subagent-conversation-summary b {
360
- display: block;
361
- margin-top: 5px;
362
- color: #dce8ec;
363
- font-size: 17px;
364
- }
365
-
366
- .subagent-conversation-summary>span:nth-child(1) b {
367
- color: #76dfb8;
368
- }
369
-
370
- .subagent-conversation-summary>span:nth-child(2) b {
371
- color: #8fc8df;
372
- }
373
-
374
- .subagent-dialog-row.user .chat-bubble {
375
- background: #10231e;
376
- }
377
-
378
- .subagent-dialog-row.assistant .chat-bubble {
379
- background: #111d28;
380
- }
381
-
382
- .subagent-dialog-row.system .chat-bubble {
383
- background: #0d151c;
384
- }
385
-
386
- .subagent-dialog-list .chat-row.assistant {
387
- padding-left: 28px;
388
- }
389
-
390
- .subagent-dialog-list .chat-row.user {
391
- padding-right: 28px;
392
- }
393
-
394
- .subagent-dialog-row .chat-bubble {
395
- border-color: #283c46;
396
- min-width: 0;
397
- max-width: 100%;
398
- overflow: hidden;
341
+ gap: 5px;
342
+ margin: 0 0 14px;
343
+ padding: 11px 13px;
344
+ border: 1px solid color-mix(in srgb,var(--drawer-provider) 28%,#263844);
345
+ border-radius: 11px;
346
+ background: color-mix(in srgb,var(--drawer-provider) 6%,#0c151d);
399
347
  }
400
348
 
401
- .subagent-dialog-row .chat-bubble-head {
402
- gap: 7px;
403
- min-width: 0;
349
+ .subagent-work-source b {
350
+ color: #dbe8e9;
351
+ font-size: 11px;
404
352
  }
405
353
 
406
- .subagent-dialog-row .chat-bubble-head b {
407
- min-width: 0;
408
- overflow: hidden;
409
- text-overflow: ellipsis;
410
- white-space: nowrap;
354
+ .subagent-work-source span {
355
+ color: #78909a;
356
+ font-size: 10px;
357
+ line-height: 1.55;
411
358
  }
412
359
 
413
- .subagent-dialog-row .subagent-route {
414
- margin-right: auto;
415
- padding: 3px 6px;
416
- border-radius: 6px;
417
- background: #13242a;
418
- color: #6fa89b;
419
- font-size: 8px;
420
- min-width: 0;
421
- overflow: hidden;
422
- text-overflow: ellipsis;
423
- white-space: nowrap;
360
+ .subagent-coordination {
361
+ margin-top: 16px;
424
362
  }
425
363
 
426
- .subagent-event-label {
427
- display: block;
428
- margin: 6px 0 -2px;
429
- color: #6b8f8a;
430
- font-size: 8px;
431
- font-weight: 750;
432
- min-width: 0;
433
- overflow: hidden;
434
- text-overflow: ellipsis;
435
- white-space: nowrap;
364
+ .subagent-coordination .subagent-message-preview p {
365
+ margin: 0;
436
366
  }
437
367
 
438
368
  .subagent-message-preview {
@@ -29,6 +29,16 @@ button {
29
29
  color: inherit;
30
30
  }
31
31
 
32
+ button[aria-busy="true"] {
33
+ cursor: progress;
34
+ opacity: .72;
35
+ }
36
+
37
+ [aria-invalid="true"] {
38
+ border-color: #ff7188!important;
39
+ box-shadow: 0 0 0 3px rgba(255,113,136,.14)!important;
40
+ }
41
+
32
42
  .workspace-section {
33
43
  display: flex;
34
44
  flex: 1;
@@ -58,10 +68,13 @@ button {
58
68
  }
59
69
 
60
70
  .workspace-item strong {
71
+ min-width: 0;
72
+ flex: 1 1 auto;
61
73
  overflow: hidden;
62
74
  text-overflow: ellipsis;
63
75
  white-space: nowrap;
64
- font-weight: 550;
76
+ font-size: 13px;
77
+ font-weight: 620;
65
78
  }
66
79
 
67
80
  .provider-mini-mark {
@@ -93,8 +106,9 @@ button {
93
106
  content: "";
94
107
  width: 6px;
95
108
  height: 6px;
109
+ flex: 0 0 7px;
96
110
  border-radius: 2px;
97
- border: 1px solid #526075;
111
+ border: 1px solid #718296;
98
112
  }
99
113
 
100
114
  .workspace-item button {
@@ -111,10 +125,10 @@ button {
111
125
  }
112
126
 
113
127
  .workspace-empty {
114
- padding: 9px;
115
- color: #536074;
116
- font-size: 10px;
117
- line-height: 1.5;
128
+ padding: 10px;
129
+ color: #93a3b2;
130
+ font-size: 12px;
131
+ line-height: 1.55;
118
132
  }
119
133
 
120
134
  .workspace-item.projectless:before {
@@ -129,12 +143,31 @@ button {
129
143
  padding: 2px 6px;
130
144
  border-radius: 999px;
131
145
  background: #1a2530;
132
- color: #91a0ad;
133
- font-size: 9px;
146
+ color: #afbdc8;
147
+ font-size: 12px;
134
148
  font-weight: 700;
135
149
  text-align: center;
136
150
  }
137
151
 
152
+ .workspace-item.observed-project small,
153
+ .workspace-item[data-workspace="all"] small {
154
+ margin-left: auto;
155
+ min-width: 20px;
156
+ padding: 2px 6px;
157
+ border-radius: 999px;
158
+ background: #1a2530;
159
+ color: #afbdc8;
160
+ font-size: 12px;
161
+ font-weight: 700;
162
+ text-align: center;
163
+ }
164
+
165
+ .workspace-item.observed-project.selected small,
166
+ .workspace-item[data-workspace="all"].selected small {
167
+ background: rgba(89,216,255,.14);
168
+ color: #81ddf8;
169
+ }
170
+
138
171
  .workspace-item.projectless.selected small {
139
172
  background: rgba(79,209,167,.15);
140
173
  color: #6ee0b8;
@@ -744,6 +777,25 @@ button {
744
777
  font-size: 12px;
745
778
  }
746
779
 
780
+ .search-clear {
781
+ width: 40px;
782
+ height: 40px;
783
+ flex: 0 0 40px;
784
+ display: grid;
785
+ place-items: center;
786
+ padding: 0;
787
+ border: 0;
788
+ border-radius: 7px;
789
+ background: transparent;
790
+ color: #8fa0b2;
791
+ cursor: pointer;
792
+ }
793
+
794
+ .search-clear:hover {
795
+ background: #1a2431;
796
+ color: #f0f6fb;
797
+ }
798
+
747
799
  .session-tools select {
748
800
  padding: 0 28px 0 10px;
749
801
  border: 1px solid var(--line);
@@ -770,7 +822,7 @@ button {
770
822
  display: inline-flex;
771
823
  align-items: center;
772
824
  gap: 5px;
773
- min-height: 30px;
825
+ min-height: 36px;
774
826
  padding: 0 9px;
775
827
  border: 1px solid transparent;
776
828
  border-radius: 7px;
@@ -778,14 +830,56 @@ button {
778
830
  color: #7f8da1;
779
831
  white-space: nowrap;
780
832
  cursor: pointer;
781
- transition: color var(--motion-fast) ease, background-color var(--motion-fast) ease, border-color var(--motion-fast) ease;
833
+ transition: color var(--motion-fast) ease, background-color var(--motion-fast) ease, border-color var(--motion-fast) ease, box-shadow var(--motion-fast) ease, transform var(--motion-fast) ease;
834
+ }
835
+
836
+ .filter-reset {
837
+ min-height: 40px;
838
+ padding: 0 11px;
839
+ border: 1px solid var(--line);
840
+ border-radius: 9px;
841
+ background: #0d121b;
842
+ color: #aab7c7;
843
+ white-space: nowrap;
844
+ }
845
+
846
+ .filter-reset:hover {
847
+ border-color: #3b4c60;
848
+ background: #151d28;
849
+ color: #f0f6fb;
782
850
  }
783
851
 
784
- .provider-filter-chip span {
852
+ @media (pointer:coarse) {
853
+ .search-clear,
854
+ .provider-filter-chip,
855
+ .filter-reset {
856
+ min-width: 44px;
857
+ min-height: 44px;
858
+ }
859
+ }
860
+
861
+ .provider-filter-mark {
785
862
  font-family: "Cascadia Code", Consolas, monospace;
786
863
  font-size: 9px;
787
864
  }
788
865
 
866
+ .provider-filter-check {
867
+ display: inline-grid;
868
+ place-items: center;
869
+ width: 0;
870
+ height: 16px;
871
+ border-radius: 50%;
872
+ overflow: hidden;
873
+ background: #53d6aa;
874
+ color: #07130f;
875
+ font-size: 10px;
876
+ font-style: normal;
877
+ font-weight: 900;
878
+ opacity: 0;
879
+ transform: scale(.45);
880
+ transition: width var(--motion-fast) ease, opacity var(--motion-fast) ease, transform var(--motion-fast) ease;
881
+ }
882
+
789
883
  .provider-filter-chip b {
790
884
  font-size: 10px;
791
885
  }
@@ -796,9 +890,27 @@ button {
796
890
  }
797
891
 
798
892
  .provider-filter-chip.selected {
799
- color: #e7f8f2;
800
- border-color: #315f54;
801
- background: rgba(66,207,164,.13);
893
+ color: #f2fffb;
894
+ border-color: #53d6aa;
895
+ background: linear-gradient(135deg,rgba(66,207,164,.24),rgba(66,207,164,.11));
896
+ box-shadow: inset 0 0 0 1px rgba(119,238,198,.17),0 0 0 2px rgba(66,207,164,.08),0 6px 18px rgba(0,0,0,.22);
897
+ transform: translateY(-1px);
898
+ }
899
+
900
+ .provider-filter-chip.selected .provider-filter-check {
901
+ width: 16px;
902
+ opacity: 1;
903
+ transform: scale(1);
904
+ }
905
+
906
+ .provider-filter-chip.filter-clicked {
907
+ animation: provider-filter-confirm .36s cubic-bezier(.22,1,.36,1);
908
+ }
909
+
910
+ @keyframes provider-filter-confirm {
911
+ 0% { transform: scale(.93); }
912
+ 55% { transform: scale(1.06); }
913
+ 100% { transform: translateY(-1px) scale(1); }
802
914
  }
803
915
 
804
916
  .session-grid {