loadtoagent 1.3.8 → 1.3.10
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.
- package/README.ko.md +13 -1
- package/README.md +13 -1
- package/README.zh-CN.md +13 -1
- package/package.json +9 -3
- package/renderer/app-agent-actions.js +23 -6
- package/renderer/app-dashboard.js +3 -1
- package/renderer/app-drawer-content.js +96 -52
- package/renderer/app-drawer.js +33 -4
- package/renderer/app-graph-orchestration.js +5 -3
- package/renderer/app-graph-view.js +33 -11
- package/renderer/app-management.js +4 -1
- package/renderer/app-runtime-overview.js +7 -0
- package/renderer/app.js +56 -0
- package/renderer/conversation-delivery.js +74 -0
- package/renderer/i18n-messages.js +44 -2
- package/renderer/index.html +1 -0
- package/renderer/styles-components.css +163 -62
- package/renderer/styles-overlays.css +2 -1
- package/renderer/styles-responsive-shell.css +6 -2
- package/renderer/terminal-agent.js +5 -2
- package/renderer/terminal.js +16 -5
|
@@ -525,6 +525,30 @@ button[aria-busy="true"] {
|
|
|
525
525
|
animation: control-room-pulse 1s ease-in-out infinite;
|
|
526
526
|
}
|
|
527
527
|
|
|
528
|
+
.chat-delivery-status.confirming,
|
|
529
|
+
.chat-delivery-status.received,
|
|
530
|
+
.chat-delivery-status.responding {
|
|
531
|
+
background: rgba(91,169,255,.09);
|
|
532
|
+
color: #8fc3ff !important;
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
.chat-delivery-status.confirming::before,
|
|
536
|
+
.chat-delivery-status.responding::before {
|
|
537
|
+
display: inline-block;
|
|
538
|
+
width: 5px;
|
|
539
|
+
height: 5px;
|
|
540
|
+
margin-right: 5px;
|
|
541
|
+
border-radius: 50%;
|
|
542
|
+
background: #71b2ff;
|
|
543
|
+
content: "";
|
|
544
|
+
animation: control-room-pulse 1s ease-in-out infinite;
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
.chat-delivery-status.delayed {
|
|
548
|
+
background: rgba(246,190,75,.11);
|
|
549
|
+
color: #f1c66f !important;
|
|
550
|
+
}
|
|
551
|
+
|
|
528
552
|
.chat-delivery-status.failed {
|
|
529
553
|
background: rgba(255,107,127,.1);
|
|
530
554
|
color: #ff9baa !important;
|
|
@@ -1120,100 +1144,177 @@ button[aria-busy="true"] {
|
|
|
1120
1144
|
animation: control-room-pulse 1.35s ease-in-out infinite;
|
|
1121
1145
|
}
|
|
1122
1146
|
|
|
1123
|
-
.chat-progress
|
|
1147
|
+
.chat-delivery-progress {
|
|
1148
|
+
display: grid;
|
|
1149
|
+
gap: 11px;
|
|
1124
1150
|
margin-left: 43px;
|
|
1125
|
-
|
|
1126
|
-
border
|
|
1127
|
-
|
|
1128
|
-
|
|
1151
|
+
padding: 13px;
|
|
1152
|
+
border: 1px solid rgba(91,169,255,.24);
|
|
1153
|
+
border-radius: 12px;
|
|
1154
|
+
background: linear-gradient(145deg,rgba(35,76,125,.13),rgba(10,15,22,.76));
|
|
1155
|
+
color: #b9c7d8;
|
|
1129
1156
|
}
|
|
1130
1157
|
|
|
1131
|
-
.chat-progress
|
|
1132
|
-
display:
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
gap:
|
|
1136
|
-
padding: 11px 13px;
|
|
1137
|
-
cursor: pointer;
|
|
1138
|
-
list-style: none;
|
|
1158
|
+
.chat-delivery-progress > header {
|
|
1159
|
+
display: grid;
|
|
1160
|
+
grid-template-columns: 8px minmax(0,1fr);
|
|
1161
|
+
align-items: start;
|
|
1162
|
+
gap: 9px;
|
|
1139
1163
|
}
|
|
1140
1164
|
|
|
1141
|
-
.chat-progress
|
|
1142
|
-
|
|
1165
|
+
.chat-delivery-progress > header > span {
|
|
1166
|
+
width: 7px;
|
|
1167
|
+
height: 7px;
|
|
1168
|
+
margin-top: 5px;
|
|
1169
|
+
border-radius: 50%;
|
|
1170
|
+
background: #71b2ff;
|
|
1171
|
+
box-shadow: 0 0 0 4px rgba(91,169,255,.09);
|
|
1172
|
+
animation: control-room-pulse 1.35s ease-in-out infinite;
|
|
1143
1173
|
}
|
|
1144
1174
|
|
|
1145
|
-
.chat-progress
|
|
1146
|
-
|
|
1147
|
-
|
|
1175
|
+
.chat-delivery-progress > header > div {
|
|
1176
|
+
display: grid;
|
|
1177
|
+
gap: 3px;
|
|
1178
|
+
min-width: 0;
|
|
1148
1179
|
}
|
|
1149
1180
|
|
|
1150
|
-
.chat-progress
|
|
1151
|
-
color: #
|
|
1181
|
+
.chat-delivery-progress > header b {
|
|
1182
|
+
color: #d8e6f7;
|
|
1152
1183
|
font-size: 12px;
|
|
1153
1184
|
}
|
|
1154
1185
|
|
|
1155
|
-
.chat-progress
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1186
|
+
.chat-delivery-progress > header small,
|
|
1187
|
+
.chat-delivery-progress li small,
|
|
1188
|
+
.chat-delivery-progress footer {
|
|
1189
|
+
color: #8494a8;
|
|
1190
|
+
font-size: 10px;
|
|
1191
|
+
line-height: 1.5;
|
|
1192
|
+
}
|
|
1193
|
+
|
|
1194
|
+
.chat-delivery-progress ol {
|
|
1195
|
+
display: grid;
|
|
1196
|
+
grid-template-columns: repeat(3,minmax(0,1fr));
|
|
1197
|
+
gap: 7px;
|
|
1198
|
+
margin: 0;
|
|
1199
|
+
padding: 0;
|
|
1200
|
+
list-style: none;
|
|
1201
|
+
}
|
|
1202
|
+
|
|
1203
|
+
.chat-delivery-progress.phase-observed ol {
|
|
1204
|
+
grid-template-columns: repeat(2,minmax(0,1fr));
|
|
1205
|
+
}
|
|
1206
|
+
|
|
1207
|
+
.chat-delivery-progress li {
|
|
1208
|
+
display: grid;
|
|
1209
|
+
grid-template-columns: 22px minmax(0,1fr);
|
|
1210
|
+
align-items: start;
|
|
1211
|
+
gap: 7px;
|
|
1212
|
+
min-width: 0;
|
|
1213
|
+
padding: 8px;
|
|
1214
|
+
border: 1px solid #202b38;
|
|
1215
|
+
border-radius: 9px;
|
|
1216
|
+
background: rgba(9,14,21,.62);
|
|
1159
1217
|
}
|
|
1160
1218
|
|
|
1161
|
-
.chat-progress
|
|
1219
|
+
.chat-delivery-progress li > i {
|
|
1220
|
+
width: 21px;
|
|
1221
|
+
height: 21px;
|
|
1222
|
+
display: grid;
|
|
1223
|
+
place-items: center;
|
|
1224
|
+
border: 1px solid #334154;
|
|
1225
|
+
border-radius: 50%;
|
|
1162
1226
|
color: #718196;
|
|
1163
|
-
font-size:
|
|
1227
|
+
font-size: 9px;
|
|
1164
1228
|
font-style: normal;
|
|
1165
|
-
|
|
1229
|
+
font-weight: 800;
|
|
1166
1230
|
}
|
|
1167
1231
|
|
|
1168
|
-
.chat-progress
|
|
1169
|
-
|
|
1232
|
+
.chat-delivery-progress li > span {
|
|
1233
|
+
display: grid;
|
|
1234
|
+
gap: 2px;
|
|
1235
|
+
min-width: 0;
|
|
1170
1236
|
}
|
|
1171
1237
|
|
|
1172
|
-
.chat-progress
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
padding: 0 10px 10px;
|
|
1238
|
+
.chat-delivery-progress li b {
|
|
1239
|
+
color: #aebdce;
|
|
1240
|
+
font-size: 10px;
|
|
1176
1241
|
}
|
|
1177
1242
|
|
|
1178
|
-
.chat-progress
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
border-radius: 9px;
|
|
1182
|
-
background: #0d141d;
|
|
1243
|
+
.chat-delivery-progress li.done {
|
|
1244
|
+
border-color: rgba(89,223,167,.2);
|
|
1245
|
+
background: rgba(35,104,78,.08);
|
|
1183
1246
|
}
|
|
1184
1247
|
|
|
1185
|
-
.chat-progress
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
margin-bottom: 7px;
|
|
1190
|
-
color: #7e8da0;
|
|
1191
|
-
font-size: 11px;
|
|
1248
|
+
.chat-delivery-progress li.done > i {
|
|
1249
|
+
border-color: rgba(89,223,167,.35);
|
|
1250
|
+
background: rgba(89,223,167,.1);
|
|
1251
|
+
color: #70d9ad;
|
|
1192
1252
|
}
|
|
1193
1253
|
|
|
1194
|
-
.chat-progress
|
|
1195
|
-
|
|
1254
|
+
.chat-delivery-progress li.active {
|
|
1255
|
+
border-color: rgba(91,169,255,.3);
|
|
1256
|
+
background: rgba(48,102,171,.1);
|
|
1257
|
+
}
|
|
1258
|
+
|
|
1259
|
+
.chat-delivery-progress li.active > i {
|
|
1260
|
+
border-color: rgba(91,169,255,.48);
|
|
1261
|
+
color: #8fc3ff;
|
|
1262
|
+
animation: control-room-pulse 1.2s ease-in-out infinite;
|
|
1263
|
+
}
|
|
1264
|
+
|
|
1265
|
+
.chat-delivery-progress li.warning {
|
|
1266
|
+
border-color: rgba(246,190,75,.32);
|
|
1267
|
+
background: rgba(116,80,17,.11);
|
|
1196
1268
|
}
|
|
1197
1269
|
|
|
1198
|
-
.chat-
|
|
1270
|
+
.chat-delivery-progress li.warning > i {
|
|
1271
|
+
border-color: rgba(246,190,75,.46);
|
|
1272
|
+
color: #f1c66f;
|
|
1273
|
+
}
|
|
1274
|
+
|
|
1275
|
+
.chat-delivery-progress li.error {
|
|
1276
|
+
border-color: rgba(255,107,127,.34);
|
|
1277
|
+
background: rgba(94,31,44,.12);
|
|
1278
|
+
}
|
|
1279
|
+
|
|
1280
|
+
.chat-delivery-progress li.error > i {
|
|
1281
|
+
border-color: rgba(255,107,127,.46);
|
|
1282
|
+
color: #ff9baa;
|
|
1283
|
+
}
|
|
1284
|
+
|
|
1285
|
+
.chat-delivery-progress footer {
|
|
1199
1286
|
display: flex;
|
|
1200
1287
|
align-items: center;
|
|
1201
|
-
gap:
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
border: 1px solid rgba(71,214,153,.22);
|
|
1205
|
-
border-radius: 10px;
|
|
1206
|
-
background: rgba(34,118,83,.08);
|
|
1207
|
-
color: #91bca9;
|
|
1208
|
-
font-size: 12px;
|
|
1288
|
+
gap: 6px;
|
|
1289
|
+
padding-top: 9px;
|
|
1290
|
+
border-top: 1px solid #1f2a37;
|
|
1209
1291
|
}
|
|
1210
1292
|
|
|
1211
|
-
.chat-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1293
|
+
.chat-delivery-progress footer i {
|
|
1294
|
+
color: #6e829a;
|
|
1295
|
+
font-style: normal;
|
|
1296
|
+
}
|
|
1297
|
+
|
|
1298
|
+
.chat-delivery-progress.phase-delayed {
|
|
1299
|
+
border-color: rgba(246,190,75,.28);
|
|
1300
|
+
background: linear-gradient(145deg,rgba(111,75,18,.13),rgba(10,15,22,.76));
|
|
1301
|
+
}
|
|
1302
|
+
|
|
1303
|
+
.chat-delivery-progress.phase-delayed > header > span {
|
|
1304
|
+
background: #efbd5d;
|
|
1305
|
+
box-shadow: 0 0 0 4px rgba(246,190,75,.09);
|
|
1306
|
+
animation: none;
|
|
1307
|
+
}
|
|
1308
|
+
|
|
1309
|
+
.chat-delivery-progress.phase-failed {
|
|
1310
|
+
border-color: rgba(255,107,127,.3);
|
|
1311
|
+
background: linear-gradient(145deg,rgba(94,31,44,.14),rgba(10,15,22,.76));
|
|
1312
|
+
}
|
|
1313
|
+
|
|
1314
|
+
.chat-delivery-progress.phase-failed > header > span {
|
|
1315
|
+
background: #ff7e91;
|
|
1316
|
+
box-shadow: 0 0 0 4px rgba(255,107,127,.08);
|
|
1317
|
+
animation: none;
|
|
1217
1318
|
}
|
|
1218
1319
|
|
|
1219
1320
|
.subagent-call-moment {
|
|
@@ -151,7 +151,8 @@
|
|
|
151
151
|
animation: motion-backdrop-in var(--motion-medium) ease both;
|
|
152
152
|
}
|
|
153
153
|
|
|
154
|
-
.drawer-backdrop.closing
|
|
154
|
+
.drawer-backdrop.closing,
|
|
155
|
+
.drawer-backdrop.hidden {
|
|
155
156
|
animation: motion-backdrop-out 260ms ease both;
|
|
156
157
|
pointer-events: none;
|
|
157
158
|
}
|
|
@@ -405,8 +405,7 @@
|
|
|
405
405
|
align-items: flex-start;
|
|
406
406
|
}
|
|
407
407
|
|
|
408
|
-
.chat-progress
|
|
409
|
-
.chat-turn-waiting,
|
|
408
|
+
.chat-delivery-progress,
|
|
410
409
|
.subagent-call-moment,
|
|
411
410
|
.subagent-call-event {
|
|
412
411
|
margin-left: 0;
|
|
@@ -417,6 +416,11 @@
|
|
|
417
416
|
width: 100%;
|
|
418
417
|
}
|
|
419
418
|
|
|
419
|
+
.chat-delivery-progress ol,
|
|
420
|
+
.chat-delivery-progress.phase-observed ol {
|
|
421
|
+
grid-template-columns: 1fr;
|
|
422
|
+
}
|
|
423
|
+
|
|
420
424
|
.json-object>div {
|
|
421
425
|
grid-template-columns: 1fr;
|
|
422
426
|
}
|
|
@@ -153,12 +153,15 @@ window.LoadToAgentTerminalAgentActions = function createModule(context) {
|
|
|
153
153
|
const created = await window.loadtoagent.terminalCreate({
|
|
154
154
|
type: 'agent',
|
|
155
155
|
provider: support.provider,
|
|
156
|
-
args: resumeLaunchArgs(support, sendDraft ? prompt : ''
|
|
156
|
+
args: resumeLaunchArgs(support, sendDraft ? prompt : ''),
|
|
157
157
|
cwd,
|
|
158
158
|
distro,
|
|
159
159
|
bridgeId: agentSession.id,
|
|
160
160
|
title,
|
|
161
|
-
|
|
161
|
+
// Conversation sends must keep the resumed PTY alive. A transient
|
|
162
|
+
// one-shot process can exit after spawn (for example when the session is
|
|
163
|
+
// busy) while the composer incorrectly reports that the prompt was sent.
|
|
164
|
+
transient: false,
|
|
162
165
|
cols: 120,
|
|
163
166
|
rows: 32,
|
|
164
167
|
});
|
package/renderer/terminal.js
CHANGED
|
@@ -179,11 +179,9 @@
|
|
|
179
179
|
return { supported: true, provider, sessionId, args };
|
|
180
180
|
}
|
|
181
181
|
|
|
182
|
-
function resumeLaunchArgs(support, prompt = ''
|
|
182
|
+
function resumeLaunchArgs(support, prompt = '') {
|
|
183
183
|
const args = [...support.args];
|
|
184
184
|
const text = String(prompt || '').trim();
|
|
185
|
-
if (options.background && text && support.provider === 'codex') return ['exec', 'resume', support.sessionId, text];
|
|
186
|
-
if (options.background && text && support.provider === 'claude') return ['--resume', support.sessionId, '--print', text];
|
|
187
185
|
if (text) args.push(text);
|
|
188
186
|
return args;
|
|
189
187
|
}
|
|
@@ -698,13 +696,26 @@
|
|
|
698
696
|
state.active = false;
|
|
699
697
|
return;
|
|
700
698
|
}
|
|
699
|
+
// Snapshot renders call activate repeatedly while this view is already
|
|
700
|
+
// open. Refreshing and re-showing the same xterm screen would temporarily
|
|
701
|
+
// hide its helper textarea and steal direct keyboard focus.
|
|
702
|
+
if (!enteringMode) return;
|
|
701
703
|
await refreshSessions();
|
|
702
704
|
if (!state.active || state.mode !== nextMode) return;
|
|
705
|
+
let selectionChanged = false;
|
|
703
706
|
if (enteringMode && !state.selectedId && !state.selectedTmux) {
|
|
704
707
|
const visible = modeSessions();
|
|
705
|
-
if (visible.length)
|
|
706
|
-
|
|
708
|
+
if (visible.length) {
|
|
709
|
+
state.selectedId = visible[0].id;
|
|
710
|
+
selectionChanged = true;
|
|
711
|
+
} else if (state.mode === 'tmux') {
|
|
712
|
+
state.selectedTmux = tmuxRows()[0] || null;
|
|
713
|
+
selectionChanged = Boolean(state.selectedTmux);
|
|
714
|
+
}
|
|
707
715
|
}
|
|
716
|
+
// refreshSessions already rendered and showed the existing selection. Avoid
|
|
717
|
+
// hiding the same xterm host a second time after users can start typing.
|
|
718
|
+
if (!selectionChanged) return;
|
|
708
719
|
renderAll();
|
|
709
720
|
await showSelection();
|
|
710
721
|
}
|