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
@@ -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 {
@@ -73,7 +86,7 @@ button {
73
86
  background: color-mix(in srgb,var(--provider) 12%,#121720);
74
87
  border: 1px solid color-mix(in srgb,var(--provider) 30%,#202938);
75
88
  color: var(--provider);
76
- font-size: 8px;
89
+ font-size: 12px;
77
90
  font-weight: 800;
78
91
  }
79
92
 
@@ -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;
148
+ font-weight: 700;
149
+ text-align: center;
150
+ }
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;
134
161
  font-weight: 700;
135
162
  text-align: center;
136
163
  }
137
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;
@@ -214,7 +247,7 @@ button {
214
247
  border-radius: 7px;
215
248
  background: color-mix(in srgb,var(--provider) 10%,#131822);
216
249
  color: var(--provider);
217
- font-size: 10px;
250
+ font-size: 12px;
218
251
  }
219
252
 
220
253
  .activity-copy {
@@ -226,7 +259,7 @@ button {
226
259
  white-space: nowrap;
227
260
  overflow: hidden;
228
261
  text-overflow: ellipsis;
229
- font-size: 9px;
262
+ font-size: 12px;
230
263
  font-weight: 580;
231
264
  color: #bec8d5;
232
265
  }
@@ -238,7 +271,7 @@ button {
238
271
  text-overflow: ellipsis;
239
272
  margin-top: 3px;
240
273
  color: #5f6a7b;
241
- font-size: 8px;
274
+ font-size: 12px;
242
275
  }
243
276
 
244
277
  .activity-wave {
@@ -286,12 +319,12 @@ button {
286
319
  justify-content: space-between;
287
320
  gap: 8px;
288
321
  color: #657186;
289
- font-size: 8px;
322
+ font-size: 12px;
290
323
  }
291
324
 
292
325
  .metric-label b {
293
326
  color: #b9c4d0;
294
- font-size: 9px;
327
+ font-size: 12px;
295
328
  }
296
329
 
297
330
  .context-track {
@@ -372,7 +405,7 @@ button {
372
405
  max-width: 470px;
373
406
  margin: 8px 0 17px;
374
407
  color: #657185;
375
- font-size: 10px;
408
+ font-size: 12px;
376
409
  line-height: 1.6;
377
410
  }
378
411
 
@@ -421,7 +454,7 @@ button {
421
454
  border-radius: 9px;
422
455
  background: #141a24;
423
456
  color: #8592a5;
424
- font-size: 8px;
457
+ font-size: 12px;
425
458
  font-weight: 750;
426
459
  }
427
460
 
@@ -509,7 +542,7 @@ button {
509
542
  border-radius: 9px;
510
543
  background: #1d1810;
511
544
  color: #d6b578;
512
- font-size: 10px;
545
+ font-size: 12px;
513
546
  }
514
547
 
515
548
  .chat-activities {
@@ -523,7 +556,7 @@ button {
523
556
  .chat-activities>summary {
524
557
  padding: 11px 13px;
525
558
  color: #91a0b1;
526
- font-size: 11px;
559
+ font-size: 12px;
527
560
  cursor: pointer;
528
561
  }
529
562
 
@@ -546,11 +579,11 @@ button {
546
579
  gap: 10px;
547
580
  margin-bottom: 7px;
548
581
  color: #8997a8;
549
- font-size: 9px;
582
+ font-size: 12px;
550
583
  }
551
584
 
552
585
  .chat-activities .chat-content {
553
- font-size: 10px;
586
+ font-size: 12px;
554
587
  }
555
588
 
556
589
  .stop-run:disabled {
@@ -594,7 +627,7 @@ button {
594
627
  border-radius: 50%;
595
628
  background: #111721;
596
629
  color: #788599;
597
- font-size: 7px;
630
+ font-size: 12px;
598
631
  }
599
632
 
600
633
  .lifecycle-event.running .life-node {
@@ -622,7 +655,7 @@ button {
622
655
  justify-content: space-between;
623
656
  margin-top: 7px;
624
657
  color: #566174;
625
- font-size: 7px;
658
+ font-size: 12px;
626
659
  }
627
660
 
628
661
  .form-grid {
@@ -647,7 +680,7 @@ button {
647
680
  border-radius: 0 9px 9px 0;
648
681
  background: #151c27;
649
682
  color: #8995a7;
650
- font-size: 9px;
683
+ font-size: 12px;
651
684
  cursor: pointer;
652
685
  }
653
686
 
@@ -679,14 +712,14 @@ button {
679
712
  border-radius: 9px;
680
713
  background: rgba(255,107,127,.07);
681
714
  color: #ff8c9b;
682
- font-size: 9px;
715
+ font-size: 12px;
683
716
  }
684
717
 
685
718
  .sync-state b {
686
719
  color: #79eeb0;
687
720
  letter-spacing: .14em;
688
721
  display: block;
689
- font-size: 10px;
722
+ font-size: 12px;
690
723
  }
691
724
 
692
725
  .sync-state small {
@@ -694,7 +727,7 @@ button {
694
727
  color: #687487;
695
728
  white-space: nowrap;
696
729
  display: block;
697
- font-size: 10px;
730
+ font-size: 12px;
698
731
  }
699
732
 
700
733
  .map-hint {
@@ -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);
@@ -752,7 +804,7 @@ button {
752
804
  color: #8793a6;
753
805
  outline: 0;
754
806
  height: 40px;
755
- font-size: 11px;
807
+ font-size: 12px;
756
808
  }
757
809
 
758
810
  .provider-filter {
@@ -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;
@@ -781,9 +833,34 @@ button {
781
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;
782
834
  }
783
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;
850
+ }
851
+
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
+
784
861
  .provider-filter-mark {
785
862
  font-family: "Cascadia Code", Consolas, monospace;
786
- font-size: 9px;
863
+ font-size: 12px;
787
864
  }
788
865
 
789
866
  .provider-filter-check {
@@ -795,7 +872,7 @@ button {
795
872
  overflow: hidden;
796
873
  background: #53d6aa;
797
874
  color: #07130f;
798
- font-size: 10px;
875
+ font-size: 12px;
799
876
  font-style: normal;
800
877
  font-weight: 900;
801
878
  opacity: 0;
@@ -804,7 +881,7 @@ button {
804
881
  }
805
882
 
806
883
  .provider-filter-chip b {
807
- font-size: 10px;
884
+ font-size: 12px;
808
885
  }
809
886
 
810
887
  .provider-filter-chip:hover {
@@ -860,7 +937,7 @@ button {
860
937
  .chat-row.tool pre {
861
938
  font-family: "Cascadia Code",Consolas,monospace;
862
939
  color: #9da9b8;
863
- font-size: 11px;
940
+ font-size: 12px;
864
941
  }
865
942
 
866
943
  .life-copy b {
@@ -874,12 +951,12 @@ button {
874
951
  margin-top: 4px;
875
952
  color: #5f6b7d;
876
953
  line-height: 1.4;
877
- font-size: 11px;
954
+ font-size: 12px;
878
955
  }
879
956
 
880
957
  .lifecycle-event time {
881
958
  color: #4f5a6b;
882
- font-size: 9px;
959
+ font-size: 12px;
883
960
  }
884
961
 
885
962
  .chat-history-head {
@@ -898,7 +975,7 @@ button {
898
975
 
899
976
  .chat-history-head span {
900
977
  color: #79879a;
901
- font-size: 11px;
978
+ font-size: 12px;
902
979
  }
903
980
 
904
981
  .chat-history-head button {
@@ -908,7 +985,7 @@ button {
908
985
  border-radius: 8px;
909
986
  background: #121b27;
910
987
  color: #aab7c6;
911
- font-size: 10px;
988
+ font-size: 12px;
912
989
  cursor: pointer;
913
990
  }
914
991
 
@@ -960,7 +1037,7 @@ button {
960
1037
 
961
1038
  .structured-heading span {
962
1039
  color: #728196;
963
- font-size: 10px;
1040
+ font-size: 12px;
964
1041
  }
965
1042
 
966
1043
  .json-object {
@@ -978,7 +1055,7 @@ button {
978
1055
 
979
1056
  .json-object dt {
980
1057
  color: #7f90a5;
981
- font-size: 10px;
1058
+ font-size: 12px;
982
1059
  font-weight: 650;
983
1060
  overflow-wrap: anywhere;
984
1061
  }
@@ -1047,7 +1124,7 @@ button {
1047
1124
  display: block;
1048
1125
  margin-bottom: 7px;
1049
1126
  color: #718095;
1050
- font-size: 9px;
1127
+ font-size: 12px;
1051
1128
  font-weight: 700;
1052
1129
  letter-spacing: .06em;
1053
1130
  }
@@ -1081,7 +1158,7 @@ button {
1081
1158
  overflow: hidden;
1082
1159
  text-overflow: ellipsis;
1083
1160
  white-space: nowrap;
1084
- font-size: 9px;
1161
+ font-size: 12px;
1085
1162
  }
1086
1163
 
1087
1164
  .overview-branches button small {
@@ -1091,13 +1168,13 @@ button {
1091
1168
  white-space: nowrap;
1092
1169
  margin-top: 3px;
1093
1170
  color: #6f7d90;
1094
- font-size: 8px;
1171
+ font-size: 12px;
1095
1172
  }
1096
1173
 
1097
1174
  .overview-branches em {
1098
1175
  flex: 0 0 auto;
1099
1176
  color: #718095;
1100
- font-size: 10px;
1177
+ font-size: 12px;
1101
1178
  font-style: normal;
1102
1179
  }
1103
1180
 
@@ -1194,7 +1271,7 @@ button {
1194
1271
  border-radius: 7px;
1195
1272
  background: #101821;
1196
1273
  color: #8192a3;
1197
- font-size: 8px;
1274
+ font-size: 12px;
1198
1275
  font-weight: 750;
1199
1276
  line-height: 1;
1200
1277
  white-space: nowrap;
@@ -1208,7 +1285,7 @@ button {
1208
1285
  background: transparent!important;
1209
1286
  color: inherit!important;
1210
1287
  font-family: "Cascadia Code",Consolas,monospace;
1211
- font-size: 9px!important;
1288
+ font-size: 12px!important;
1212
1289
  font-style: normal!important;
1213
1290
  }
1214
1291
 
@@ -1220,7 +1297,7 @@ button {
1220
1297
 
1221
1298
  .execution-mode-badge small {
1222
1299
  color: inherit;
1223
- font-size: 8px;
1300
+ font-size: 12px;
1224
1301
  }
1225
1302
 
1226
1303
  .execution-mode-badge.standard {