loadtoagent 1.1.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 (83) 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 +135 -38
  9. package/package.json +13 -4
  10. package/preload.js +6 -0
  11. package/renderer/app-agent-actions.js +125 -53
  12. package/renderer/app-bootstrap.js +54 -19
  13. package/renderer/app-dashboard.js +190 -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 +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 +52 -44
  32. package/renderer/app.js +153 -75
  33. package/renderer/i18n-messages.js +833 -16
  34. package/renderer/i18n.js +104 -0
  35. package/renderer/index.html +145 -59
  36. package/renderer/shared.js +17 -0
  37. package/renderer/styles-agent-map.css +6 -0
  38. package/renderer/styles-cards.css +26 -0
  39. package/renderer/styles-components.css +86 -9
  40. package/renderer/styles-management.css +355 -0
  41. package/renderer/styles-overlays.css +8 -2
  42. package/renderer/styles-product.css +24 -16
  43. package/renderer/styles-quality.css +312 -0
  44. package/renderer/styles-readability.css +862 -0
  45. package/renderer/styles-responsive-product.css +84 -12
  46. package/renderer/styles-responsive-runtime.css +22 -14
  47. package/renderer/styles-responsive-shell.css +44 -48
  48. package/renderer/styles-responsive-workflows.css +37 -3
  49. package/renderer/styles-run-composer.css +5 -0
  50. package/renderer/styles-runtime-overview.css +285 -0
  51. package/renderer/styles-settings.css +160 -0
  52. package/renderer/styles-terminal.css +339 -2
  53. package/renderer/styles-workflow-map.css +362 -15
  54. package/renderer/styles-workflows.css +69 -2
  55. package/renderer/styles.css +27 -12
  56. package/renderer/terminal-agent.js +17 -13
  57. package/renderer/terminal-events.js +233 -40
  58. package/renderer/terminal-workbench.js +165 -77
  59. package/renderer/terminal.js +341 -34
  60. package/src/agentMonitor/claudeParser.js +96 -7
  61. package/src/agentMonitor/codexParser.js +59 -4
  62. package/src/agentMonitor/executionActivity.js +282 -0
  63. package/src/agentMonitor/genericParser.js +56 -13
  64. package/src/agentMonitor/hierarchy.js +17 -0
  65. package/src/agentMonitor/responseIntent.js +51 -0
  66. package/src/agentMonitor.js +21 -3
  67. package/src/agentRunner.js +66 -1
  68. package/src/attentionNotifier.js +14 -10
  69. package/src/automationMonitor.js +258 -0
  70. package/src/contracts.js +10 -1
  71. package/src/ipc/registerAgentIpc.js +9 -3
  72. package/src/ipc/registerAppIpc.js +4 -1
  73. package/src/ipc/registerTerminalIpc.js +12 -6
  74. package/src/macUpdateHelper.js +210 -0
  75. package/src/monitorWorker.js +65 -6
  76. package/src/platformPath.js +80 -0
  77. package/src/processMonitor.js +80 -22
  78. package/src/providerVisibilityStore.js +45 -0
  79. package/src/sessionIntelligence.js +247 -0
  80. package/src/terminalHost.js +381 -0
  81. package/src/terminalHostDaemon.js +60 -0
  82. package/src/terminalManager.js +158 -3
  83. package/src/updateInstaller.js +175 -0
@@ -822,10 +822,208 @@
822
822
  .terminal-history-list {
823
823
  min-height: 0;
824
824
  overflow: auto;
825
+ overflow-anchor: none;
826
+ overscroll-behavior: contain;
825
827
  scrollbar-color: #29413c transparent;
826
828
  padding: 12px;
827
829
  }
828
830
 
831
+ .terminal-subagent-progress {
832
+ margin: 0 0 14px;
833
+ padding: 11px;
834
+ border: 1px solid #285044;
835
+ border-radius: 13px;
836
+ background: linear-gradient(180deg,rgba(34,91,73,.2),rgba(12,25,28,.55));
837
+ }
838
+
839
+ .terminal-subagent-progress>header {
840
+ display: flex;
841
+ align-items: flex-start;
842
+ justify-content: space-between;
843
+ gap: 10px;
844
+ margin-bottom: 10px;
845
+ }
846
+
847
+ .terminal-subagent-progress>header div {
848
+ min-width: 0;
849
+ }
850
+
851
+ .terminal-subagent-progress>header b,
852
+ .terminal-subagent-progress>header span {
853
+ display: block;
854
+ }
855
+
856
+ .terminal-subagent-progress>header b {
857
+ color: #92ecd0;
858
+ font-size: 11px;
859
+ }
860
+
861
+ .terminal-subagent-progress>header span {
862
+ margin-top: 3px;
863
+ color: #718b89;
864
+ font-size: 9px;
865
+ line-height: 1.4;
866
+ }
867
+
868
+ .terminal-subagent-progress>header small {
869
+ flex: 0 0 auto;
870
+ max-width: 48%;
871
+ color: #7e9d98;
872
+ font-size: 8px;
873
+ line-height: 1.4;
874
+ text-align: right;
875
+ }
876
+
877
+ .terminal-subagent-cards {
878
+ display: grid;
879
+ gap: 8px;
880
+ }
881
+
882
+ .terminal-subagent-card {
883
+ position: relative;
884
+ margin-left: calc(var(--terminal-subagent-depth,0) * 10px);
885
+ padding: 9px 9px 8px 11px;
886
+ border: 1px solid #253a40;
887
+ border-left: 3px solid #71808c;
888
+ border-radius: 10px;
889
+ background: rgba(8,17,22,.74);
890
+ }
891
+
892
+ .terminal-subagent-card.working {
893
+ border-left-color: #5ce2a9;
894
+ }
895
+
896
+ .terminal-subagent-card.attention {
897
+ border-left-color: #ed9b67;
898
+ }
899
+
900
+ .terminal-subagent-card>header {
901
+ display: flex;
902
+ align-items: flex-start;
903
+ justify-content: space-between;
904
+ gap: 8px;
905
+ }
906
+
907
+ .terminal-subagent-card>header div {
908
+ min-width: 0;
909
+ }
910
+
911
+ .terminal-subagent-card>header span,
912
+ .terminal-subagent-card>header small {
913
+ display: block;
914
+ overflow-wrap: anywhere;
915
+ }
916
+
917
+ .terminal-subagent-card>header span {
918
+ color: #d8e8e4;
919
+ font-size: 10px;
920
+ font-weight: 750;
921
+ }
922
+
923
+ .terminal-subagent-card>header small {
924
+ margin-top: 2px;
925
+ color: #687d84;
926
+ font-size: 8px;
927
+ }
928
+
929
+ .terminal-subagent-card>header>b {
930
+ flex: 0 0 auto;
931
+ padding: 3px 6px;
932
+ border: 1px solid #3b4c52;
933
+ border-radius: 999px;
934
+ color: #94a3aa;
935
+ font-size: 8px;
936
+ font-weight: 700;
937
+ }
938
+
939
+ .terminal-subagent-card.working>header>b {
940
+ border-color: #2e6c59;
941
+ background: rgba(56,155,119,.14);
942
+ color: #75e6ba;
943
+ }
944
+
945
+ .terminal-subagent-card.attention>header>b {
946
+ border-color: #704c37;
947
+ background: rgba(181,103,54,.13);
948
+ color: #f2b185;
949
+ }
950
+
951
+ .terminal-subagent-assignment,
952
+ .terminal-subagent-current {
953
+ display: grid;
954
+ grid-template-columns: auto minmax(0,1fr);
955
+ gap: 7px;
956
+ margin-top: 7px;
957
+ color: #a8b9bd;
958
+ font-size: 9px;
959
+ line-height: 1.45;
960
+ }
961
+
962
+ .terminal-subagent-assignment em,
963
+ .terminal-subagent-current em {
964
+ color: #66877f;
965
+ font-style: normal;
966
+ font-weight: 700;
967
+ }
968
+
969
+ .terminal-subagent-assignment span,
970
+ .terminal-subagent-current span {
971
+ min-width: 0;
972
+ overflow-wrap: anywhere;
973
+ }
974
+
975
+ .terminal-subagent-card>ol {
976
+ display: grid;
977
+ gap: 6px;
978
+ margin: 9px 0 0;
979
+ padding: 8px 0 0;
980
+ border-top: 1px solid #1d3035;
981
+ list-style: none;
982
+ }
983
+
984
+ .terminal-subagent-card>ol li {
985
+ display: grid;
986
+ grid-template-columns: 6px minmax(0,1fr) auto;
987
+ align-items: start;
988
+ gap: 6px;
989
+ }
990
+
991
+ .terminal-subagent-card>ol li>i {
992
+ width: 5px;
993
+ height: 5px;
994
+ margin-top: 4px;
995
+ border-radius: 50%;
996
+ background: #477268;
997
+ }
998
+
999
+ .terminal-subagent-card>ol li b,
1000
+ .terminal-subagent-card>ol li span {
1001
+ display: block;
1002
+ overflow-wrap: anywhere;
1003
+ }
1004
+
1005
+ .terminal-subagent-card>ol li b {
1006
+ color: #90aba7;
1007
+ font-size: 8px;
1008
+ }
1009
+
1010
+ .terminal-subagent-card>ol li span {
1011
+ margin-top: 2px;
1012
+ color: #829399;
1013
+ font-size: 9px;
1014
+ line-height: 1.4;
1015
+ }
1016
+
1017
+ .terminal-subagent-card>ol li time {
1018
+ color: #536a70;
1019
+ font-size: 8px;
1020
+ }
1021
+
1022
+ .terminal-history-empty.with-subagents {
1023
+ height: auto;
1024
+ min-height: 100px;
1025
+ }
1026
+
829
1027
  .terminal-history-message {
830
1028
  margin: 0 0 9px;
831
1029
  border: 1px solid #1c2b35;
@@ -1038,6 +1236,15 @@
1038
1236
  box-shadow: 0 0 0 3px rgba(85,214,168,.07);
1039
1237
  }
1040
1238
 
1239
+ .terminal-command-count {
1240
+ grid-column: 1 / -1;
1241
+ justify-self: end;
1242
+ padding: 0 5px 2px;
1243
+ color: #607487;
1244
+ font-size: 9px;
1245
+ font-variant-numeric: tabular-nums;
1246
+ }
1247
+
1041
1248
  .terminal-command-form textarea {
1042
1249
  border-radius: 9px;
1043
1250
  color: #dce6ee;
@@ -1111,9 +1318,9 @@
1111
1318
  }
1112
1319
 
1113
1320
  .terminal-history-copy {
1114
- max-height: 190px;
1321
+ max-height: none;
1115
1322
  margin-top: 6px;
1116
- overflow: auto;
1323
+ overflow: visible;
1117
1324
  color: #b8c5cf;
1118
1325
  font-size: 10px;
1119
1326
  line-height: 1.55;
@@ -1239,3 +1446,133 @@ body[data-current-view="terminal"] .top-actions {
1239
1446
  body[data-current-view="terminal"] .topbar h1 {
1240
1447
  font-size: 22px;
1241
1448
  }
1449
+
1450
+ /* Mission-control terminal readability */
1451
+ #terminalSection .terminal-layout {
1452
+ height: clamp(620px,calc(100vh - 196px),900px);
1453
+ min-height: 620px;
1454
+ grid-template-columns: 310px minmax(0,1fr);
1455
+ border-color: #304653;
1456
+ border-radius: 15px;
1457
+ background: #070c11;
1458
+ box-shadow: 0 20px 60px rgba(0,0,0,.34);
1459
+ }
1460
+
1461
+ .terminal-resource-head {
1462
+ min-height: 76px;
1463
+ padding: 14px 16px;
1464
+ border-bottom-color: #293c47;
1465
+ }
1466
+
1467
+ .terminal-resource-head>div b { color: #eef5f7; font-size: 14px; }
1468
+ .terminal-resource-head>div span { margin-top: 5px; color: #93a6b2; font-size: 11px; }
1469
+ .terminal-resource-live { font-size: 10px; }
1470
+ .terminal-session-list { gap: 9px; padding: 12px; }
1471
+ .terminal-session-row { grid-template-columns: minmax(0,1fr) 28px; gap: 5px; }
1472
+
1473
+ .terminal-session-item {
1474
+ grid-template-columns: 42px minmax(0,1fr) auto;
1475
+ gap: 11px;
1476
+ min-height: 86px;
1477
+ padding: 11px 10px;
1478
+ border-color: #1e303b;
1479
+ border-left: 3px solid #536370;
1480
+ border-radius: 11px;
1481
+ background: #0c151d;
1482
+ }
1483
+
1484
+ .terminal-session-item[data-status="running"] { border-left-color: #51dbae; }
1485
+ .terminal-session-item[data-status="attention"] { border-color: #60482f; border-left-color: #f0ad62; background: linear-gradient(100deg,rgba(133,83,31,.18),#0d171e 58%); }
1486
+ .terminal-session-item[data-status="failed"] { border-color: #58323c; border-left-color: #ef7d8e; }
1487
+ .terminal-session-item[data-status="completed"] { border-left-color: #6cbdd1; }
1488
+ .terminal-session-item.active { border-color: #438d77; border-left-color: #62e1b7; box-shadow: inset 2px 0 #62e1b7,0 9px 24px rgba(0,0,0,.2); }
1489
+ .terminal-session-icon { width: 42px; height: 42px; font-size: 10px; }
1490
+ .terminal-session-item b { color: #edf4f6; font-size: 13px; }
1491
+ .terminal-session-item small { color: #9aaab5; font-size: 11px; }
1492
+ .terminal-session-item em { color: #718391; font-size: 10px; }
1493
+
1494
+ .terminal-session-status {
1495
+ display: inline-flex;
1496
+ align-items: center;
1497
+ align-self: start;
1498
+ gap: 5px;
1499
+ min-height: 24px;
1500
+ padding: 0 7px;
1501
+ border: 1px solid #334550;
1502
+ border-radius: 999px;
1503
+ color: #a7b6bf;
1504
+ background: #111c24;
1505
+ font-size: 9px;
1506
+ font-weight: 750;
1507
+ white-space: nowrap;
1508
+ }
1509
+
1510
+ .terminal-session-status i { width: 6px; height: 6px; border-radius: 50%; background: #657581; }
1511
+ .terminal-session-status[data-status="running"] { border-color: #2e6958; color: #86e8c5; background: #102921; }
1512
+ .terminal-session-status[data-status="running"] i { background: #55e2ad; box-shadow: 0 0 8px rgba(85,226,173,.65); }
1513
+ .terminal-session-status[data-status="attention"] { border-color: #725432; color: #f3bb77; background: #2a2014; }
1514
+ .terminal-session-status[data-status="attention"] i { background: #ffbd66; box-shadow: 0 0 8px rgba(255,189,102,.5); }
1515
+ .terminal-session-status[data-status="failed"] { border-color: #6f3b47; color: #f3a0ad; background: #29161d; }
1516
+ .terminal-session-status[data-status="failed"] i { background: #f07f90; }
1517
+ .terminal-session-status[data-status="completed"] { border-color: #355d67; color: #8bd4e3; background: #11242a; }
1518
+ .terminal-session-status[data-status="completed"] i { background: #72c9dc; }
1519
+
1520
+ .terminal-controlbar { min-height: 72px; padding: 11px 16px; }
1521
+ .terminal-target-icon { width: 44px; height: 44px; font-size: 11px; }
1522
+ .terminal-target-meta b { color: #eef5f7; font-size: 15px; }
1523
+ .terminal-target-meta span { margin-top: 6px; color: #8fa1af; font-size: 11px; }
1524
+ .terminal-connection-state { min-height: 32px; font-size: 11px; }
1525
+ .terminal-connection-state[data-status="attention"] { border-color: #6f5133; color: #f2b66e; background: #291f14; }
1526
+ .terminal-connection-state[data-status="attention"] i { background: #ffbb62; box-shadow: 0 0 9px rgba(255,187,98,.52); }
1527
+ .terminal-connection-state[data-status="completed"] { border-color: #355f69; color: #8bd3e2; background: #10242a; }
1528
+ .terminal-connection-state[data-status="completed"] i { background: #70cadd; }
1529
+ .terminal-controlbar .terminal-key-actions button { height: 34px; font-size: 11px; }
1530
+
1531
+ .terminal-stage { grid-template-columns: minmax(330px,40%) minmax(0,1fr); }
1532
+ .terminal-history-head { min-height: 76px; padding: 12px 13px 12px 16px; }
1533
+ .terminal-history-head span { font-size: 10px; }
1534
+ .terminal-history-head b { font-size: 14px; }
1535
+ .terminal-history-head small { color: #8294a2; font-size: 11px; }
1536
+ .terminal-history-list { padding: 14px; }
1537
+ .terminal-history-message { padding: 12px 13px; border-color: #263944; }
1538
+ .terminal-history-message header b { font-size: 11px; }
1539
+ .terminal-history-message p,.terminal-history-copy { color: #cad5dc; font-size: 12px; line-height: 1.66; }
1540
+ .terminal-history-panel footer { min-height: 42px; color: #8dd9c1; font-size: 10px; }
1541
+
1542
+ .terminal-console-head { min-height: 58px; padding: 9px 14px; border-bottom-color: #263844; background: #0b141b; }
1543
+ .terminal-console-title { display: flex; align-items: center; gap: 10px; min-width: 0; }
1544
+ .terminal-console-head b { color: #edf4f6; font-size: 13px; }
1545
+ .terminal-console-head small { color: #8496a4; font-size: 10px; }
1546
+ .terminal-console-tools { display: flex; align-items: center; justify-content: flex-end; gap: 8px; min-width: 0; }
1547
+ .terminal-console-state { padding: 6px 9px; font-size: 10px; }
1548
+ .terminal-console-state[data-status="attention"] { color: #f2b56f; background: #2b2014; }
1549
+ .terminal-console-state[data-status="completed"] { color: #8bd4e3; background: #11262c; }
1550
+
1551
+ .terminal-font-controls { display: grid; grid-template-columns: 30px 48px 30px; align-items: center; min-height: 32px; overflow: hidden; border: 1px solid #30424e; border-radius: 8px; background: #0c161e; }
1552
+ .terminal-font-controls button { height: 30px; padding: 0; border: 0; color: #b8c6ce; background: transparent; font-size: 15px; cursor: pointer; }
1553
+ .terminal-font-controls button:hover:not(:disabled),.terminal-font-controls button:focus-visible { color: #8aefd0; background: #14252a; outline: none; }
1554
+ .terminal-font-controls button:disabled { opacity: .32; cursor: default; }
1555
+ .terminal-font-controls output { color: #8fa2ae; font: 750 10px/1 var(--font-mono,"Cascadia Code",monospace); text-align: center; }
1556
+ .terminal-focus-button { display: inline-flex; min-height: 32px; align-items: center; gap: 7px; padding: 0 10px; border: 1px solid #335248; border-radius: 8px; color: #9bdcc8; background: #10231f; font-size: 10px; font-weight: 750; cursor: pointer; }
1557
+ .terminal-focus-button b { color: inherit; font-size: 13px; }
1558
+ .terminal-focus-button:hover,.terminal-focus-button:focus-visible,.terminal-focus-button[aria-pressed="true"] { border-color: #4c9c83; color: #96f0d1; background: #16342b; outline: none; }
1559
+
1560
+ .terminal-viewport { padding: 16px; background-color: #05090d; background-image: none; }
1561
+ .terminal-screen { inset: 15px; }
1562
+ .terminal-screen .xterm { padding: 5px; }
1563
+ .terminal-command-form { gap: 8px; padding: 11px 14px 12px; }
1564
+ .terminal-command-form .terminal-command-label label { font-size: 11px; }
1565
+ .terminal-command-label>span { color: #718391; font-size: 10px; }
1566
+ .terminal-command-composer { padding: 6px; border-color: #38505c; }
1567
+ .terminal-command-form textarea { min-height: 48px; color: #edf3f7; font-size: 13px; line-height: 1.55; }
1568
+ .terminal-command-form button { height: 40px; font-size: 12px; }
1569
+ .terminal-notice { min-height: 30px; color: #8293a0; font-size: 10px; }
1570
+
1571
+ #terminalSection.terminal-focus-mode .terminal-layout { display: grid!important; grid-template-columns: minmax(0,1fr)!important; }
1572
+ #terminalSection.terminal-focus-mode .terminal-resource-panel,
1573
+ #terminalSection.terminal-focus-mode .terminal-history-panel { display: none!important; }
1574
+ #terminalSection.terminal-focus-mode .terminal-stage { grid-template-columns: minmax(0,1fr)!important; grid-template-rows: minmax(0,1fr)!important; }
1575
+ #terminalSection.terminal-focus-mode .terminal-workbench { height: 100%!important; min-height: 0!important; }
1576
+
1577
+ body[data-current-view="terminal"] .main-stage { padding-top: 20px; padding-bottom: 28px; }
1578
+ body[data-current-view="terminal"] .terminal-section { margin-top: 14px; }