aws-runtime-bridge 1.9.20 → 1.9.22
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/dist/adapter/AcodeSdkAdapter.d.ts.map +1 -1
- package/dist/adapter/AcodeSdkAdapter.js +26 -6
- package/dist/adapter/ClaudeSdkAdapter.d.ts.map +1 -1
- package/dist/adapter/ClaudeSdkAdapter.js +17 -1
- package/dist/adapter/CodexSdkAdapter.d.ts.map +1 -1
- package/dist/adapter/CodexSdkAdapter.js +15 -1
- package/dist/adapter/OpencodeSdkAdapter.d.ts.map +1 -1
- package/dist/adapter/OpencodeSdkAdapter.js +20 -1
- package/dist/adapter/types.d.ts +2 -0
- package/dist/adapter/types.d.ts.map +1 -1
- package/dist/routes/git.js +100 -0
- package/dist/routes/terminal.d.ts +15 -2
- package/dist/routes/terminal.d.ts.map +1 -1
- package/dist/routes/terminal.js +90 -10
- package/dist/routes/terminal.test.js +4 -2
- package/dist/services/agent-event-store.d.ts +1 -0
- package/dist/services/agent-event-store.d.ts.map +1 -1
- package/dist/services/session-output.d.ts +2 -0
- package/dist/services/session-output.d.ts.map +1 -1
- package/dist/services/session-output.js +3 -0
- package/package/acode/dist/builtins/shellOutputDecoder.d.ts +25 -2
- package/package/acode/dist/builtins/shellOutputDecoder.d.ts.map +1 -1
- package/package/acode/dist/builtins/shellOutputDecoder.js +69 -5
- package/package/aws-client-agent-mcp/dist/agent-client.d.ts +11 -3
- package/package/aws-client-agent-mcp/dist/agent-client.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/agent-client.js +32 -11
- package/package/aws-client-agent-mcp/dist/agent-client.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/http-client.d.ts +11 -0
- package/package/aws-client-agent-mcp/dist/http-client.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/http-client.js +67 -0
- package/package/aws-client-agent-mcp/dist/http-client.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/mcp-server.d.ts +1 -13
- package/package/aws-client-agent-mcp/dist/mcp-server.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/mcp-server.js +47 -93
- package/package/aws-client-agent-mcp/dist/mcp-server.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/mcp-server.test.js +47 -129
- package/package/aws-client-agent-mcp/dist/mcp-server.test.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/memory-store.d.ts +12 -0
- package/package/aws-client-agent-mcp/dist/memory-store.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/memory-store.js +93 -14
- package/package/aws-client-agent-mcp/dist/memory-store.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/memory-tools.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/memory-tools.js +21 -4
- package/package/aws-client-agent-mcp/dist/memory-tools.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/types.d.ts +1 -1
- package/package/aws-client-agent-mcp/dist/types.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/types.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/websocket-client.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/websocket-client.js +1 -0
- package/package/aws-client-agent-mcp/dist/websocket-client.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AcodeSdkAdapter.d.ts","sourceRoot":"","sources":["../../src/adapter/AcodeSdkAdapter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"AcodeSdkAdapter.d.ts","sourceRoot":"","sources":["../../src/adapter/AcodeSdkAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -824,11 +824,14 @@ export class AcodeSdkAdapter extends EventEmitter {
|
|
|
824
824
|
const toolUseId = typeof event.data.toolUseId === "string"
|
|
825
825
|
? event.data.toolUseId
|
|
826
826
|
: undefined;
|
|
827
|
+
// 序列化输入参数为 JSON 字符串,用于时间线展示
|
|
828
|
+
const actionInput = toolInput ? JSON.stringify(toolInput, null, 2) : undefined;
|
|
827
829
|
const eventData = {
|
|
828
830
|
toolName: actionDetail,
|
|
829
831
|
actionType: actionInfo.actionType,
|
|
830
832
|
actionLabel: actionInfo.actionLabel,
|
|
831
833
|
actionDetail,
|
|
834
|
+
...(actionInput ? { actionInput } : {}),
|
|
832
835
|
...(toolInput ? { toolInput } : {}),
|
|
833
836
|
...(toolUseId ? { toolUseId, actionId: toolUseId } : {}),
|
|
834
837
|
};
|
|
@@ -844,9 +847,10 @@ export class AcodeSdkAdapter extends EventEmitter {
|
|
|
844
847
|
? "waiting_input"
|
|
845
848
|
: "thinking";
|
|
846
849
|
entry.adapterSession.status = status;
|
|
847
|
-
//
|
|
848
|
-
// -
|
|
849
|
-
// -
|
|
850
|
+
// tool_result 只传递 actionResult,通过 buildToolResultTimelineActionInfo 加工,
|
|
851
|
+
// status-change 中分情况处理 actionInput:
|
|
852
|
+
// - thinking 时传 undefined,清理 old action 避免前端残留之前的 tool 状态
|
|
853
|
+
// - waiting_input 时传 eventData(含 actionInput),保留输入参数供前端展示
|
|
850
854
|
this.emit("status-change", event.sessionId, status, status === "thinking" ? undefined : eventData);
|
|
851
855
|
return;
|
|
852
856
|
}
|
|
@@ -1048,16 +1052,24 @@ export class AcodeSdkAdapter extends EventEmitter {
|
|
|
1048
1052
|
if (this.isTerminalStatus(entry.adapterSession.status)) {
|
|
1049
1053
|
return;
|
|
1050
1054
|
}
|
|
1055
|
+
// ★ 修复:检测 idle 命令是否包含 poll_message,在 waiting_input 状态变更中携带 idle 动作信息
|
|
1056
|
+
const idleCommands = entry.idleCommands?.idleInputCommand;
|
|
1057
|
+
const willResumePolling = Boolean(idleCommands && isMessagePollingIdleCommand(idleCommands));
|
|
1058
|
+
const idleActionInfo = willResumePolling ? {
|
|
1059
|
+
actionType: 'idle',
|
|
1060
|
+
actionLabel: '监听消息',
|
|
1061
|
+
actionDetail: 'aws-mcp/poll_message',
|
|
1062
|
+
} : undefined;
|
|
1051
1063
|
if (entry.autoPollTimer || entry.failedTurnRecoveryScheduled) {
|
|
1052
1064
|
if (entry.adapterSession.status !== "waiting_input") {
|
|
1053
1065
|
entry.adapterSession.status = "waiting_input";
|
|
1054
|
-
this.emit("status-change", sessionId, "waiting_input");
|
|
1066
|
+
this.emit("status-change", sessionId, "waiting_input", idleActionInfo);
|
|
1055
1067
|
}
|
|
1056
1068
|
return;
|
|
1057
1069
|
}
|
|
1058
1070
|
this.cancelScheduledAutoPoll(entry);
|
|
1059
1071
|
entry.adapterSession.status = "waiting_input";
|
|
1060
|
-
this.emit("status-change", sessionId, "waiting_input");
|
|
1072
|
+
this.emit("status-change", sessionId, "waiting_input", idleActionInfo);
|
|
1061
1073
|
entry.failedTurnRecoveryScheduled = true;
|
|
1062
1074
|
entry.autoPollTimer = setTimeout(() => {
|
|
1063
1075
|
const currentEntry = this.sessions.get(sessionId);
|
|
@@ -1106,7 +1118,15 @@ export class AcodeSdkAdapter extends EventEmitter {
|
|
|
1106
1118
|
console.log(`[ACode] ⚠️ Detected stuck state: ${entry.adapterSession.status} after submit resolved!`);
|
|
1107
1119
|
console.log(`[ACode] Recovering to waiting_input...`);
|
|
1108
1120
|
entry.adapterSession.status = "waiting_input";
|
|
1109
|
-
|
|
1121
|
+
// ★ 修复:检测 idle 命令是否包含 poll_message,在 waiting_input 状态变更中携带 idle 动作信息
|
|
1122
|
+
const idleCommands = entry.idleCommands?.idleInputCommand;
|
|
1123
|
+
const willResumePolling = Boolean(idleCommands && isMessagePollingIdleCommand(idleCommands));
|
|
1124
|
+
const idleActionInfo = willResumePolling ? {
|
|
1125
|
+
actionType: 'idle',
|
|
1126
|
+
actionLabel: '监听消息',
|
|
1127
|
+
actionDetail: 'aws-mcp/poll_message',
|
|
1128
|
+
} : undefined;
|
|
1129
|
+
this.emit("status-change", sessionId, "waiting_input", idleActionInfo);
|
|
1110
1130
|
console.log(`[ACode] ✅ Recovery complete, status now: ${entry.adapterSession.status}`);
|
|
1111
1131
|
console.log(`[ACode] ▶️ Arming idle loop or auto-poll...`);
|
|
1112
1132
|
this.armIdleLoopOrAutoPoll(sessionId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClaudeSdkAdapter.d.ts","sourceRoot":"","sources":["../../src/adapter/ClaudeSdkAdapter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ClaudeSdkAdapter.d.ts","sourceRoot":"","sources":["../../src/adapter/ClaudeSdkAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1005,7 +1005,23 @@ export class ClaudeSdkAdapter extends EventEmitter {
|
|
|
1005
1005
|
});
|
|
1006
1006
|
// ★ 更新状态为等待输入
|
|
1007
1007
|
session.status = 'waiting_input';
|
|
1008
|
-
|
|
1008
|
+
// ★ 修复:当空闲检测即将重新启动 poll_message 轮询时,在 status-change 中
|
|
1009
|
+
// 保留 idle 动作信息,避免 bridge 清空动作字段导致前端显示 "空闲"。
|
|
1010
|
+
const willResumePolling = (() => {
|
|
1011
|
+
const idleCmds = this.idleCommands.get(sessionId);
|
|
1012
|
+
return Boolean(idleCmds?.idleInputCommand && this.isMessagePollingIdleCommand(idleCmds.idleInputCommand));
|
|
1013
|
+
})();
|
|
1014
|
+
if (willResumePolling) {
|
|
1015
|
+
this.emit('status-change', sessionId, 'waiting_input', {
|
|
1016
|
+
actionType: 'idle',
|
|
1017
|
+
actionLabel: '监听消息',
|
|
1018
|
+
actionDetail: 'aws-mcp/poll_message',
|
|
1019
|
+
usage: session.totalUsage,
|
|
1020
|
+
});
|
|
1021
|
+
}
|
|
1022
|
+
else {
|
|
1023
|
+
this.emit('status-change', sessionId, 'waiting_input', { usage: session.totalUsage });
|
|
1024
|
+
}
|
|
1009
1025
|
// 如果有空闲命令配置,启动空闲检测
|
|
1010
1026
|
if (this.idleCommands.has(sessionId)) {
|
|
1011
1027
|
this.startIdleDetection(sessionId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodexSdkAdapter.d.ts","sourceRoot":"","sources":["../../src/adapter/CodexSdkAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiB3C,OAAO,KAAK,EAEV,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EAEnB,aAAa,EAEd,MAAM,YAAY,CAAC;AA2RpB,qBAAa,eAAgB,SAAQ,YAAa,YAAW,mBAAmB;IAC9E,QAAQ,CAAC,UAAU,WAAW;IAC9B,QAAQ,CAAC,WAAW,WAAW;IAE/B,OAAO,CAAC,QAAQ,CAAwC;IACxD,OAAO,CAAC,SAAS,CAAC,CAAiB;IAE7B,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmE5E,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC9D,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrE,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7F,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE;QAAE,gBAAgB,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAanG,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlD,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBlD,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,IAAI,CAAC;IA4BhB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,EAAE;IAIzD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAItC,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAK3D,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI9D,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIrD,OAAO,IAAI,IAAI;IAOf;;;OAGG;YACW,OAAO;IA6BrB,OAAO,CAAC,iBAAiB;IA8BzB,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,kBAAkB;YAqCZ,OAAO;IAiCrB,OAAO,CAAC,iBAAiB;IAgCzB,OAAO,CAAC,gBAAgB;IA+ExB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,kBAAkB;IAuD1B,OAAO,CAAC,YAAY;
|
|
1
|
+
{"version":3,"file":"CodexSdkAdapter.d.ts","sourceRoot":"","sources":["../../src/adapter/CodexSdkAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiB3C,OAAO,KAAK,EAEV,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EAEnB,aAAa,EAEd,MAAM,YAAY,CAAC;AA2RpB,qBAAa,eAAgB,SAAQ,YAAa,YAAW,mBAAmB;IAC9E,QAAQ,CAAC,UAAU,WAAW;IAC9B,QAAQ,CAAC,WAAW,WAAW;IAE/B,OAAO,CAAC,QAAQ,CAAwC;IACxD,OAAO,CAAC,SAAS,CAAC,CAAiB;IAE7B,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmE5E,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC9D,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrE,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7F,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE;QAAE,gBAAgB,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAanG,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlD,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBlD,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,IAAI,CAAC;IA4BhB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,EAAE;IAIzD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAItC,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAK3D,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI9D,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIrD,OAAO,IAAI,IAAI;IAOf;;;OAGG;YACW,OAAO;IA6BrB,OAAO,CAAC,iBAAiB;IA8BzB,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,kBAAkB;YAqCZ,OAAO;IAiCrB,OAAO,CAAC,iBAAiB;IAgCzB,OAAO,CAAC,gBAAgB;IA+ExB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,kBAAkB;IAuD1B,OAAO,CAAC,YAAY;IA0CpB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,kBAAkB;IA2C1B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,cAAc;YAcR,cAAc;IAyB5B,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,2BAA2B;CAOpC"}
|
|
@@ -714,7 +714,21 @@ export class CodexSdkAdapter extends EventEmitter {
|
|
|
714
714
|
}
|
|
715
715
|
this.emitEvent({ type: 'turn_complete', sessionId, timestamp, data: { usage: mappedUsage } });
|
|
716
716
|
session.adapterSession.status = 'waiting_input';
|
|
717
|
-
|
|
717
|
+
// ★ 修复:当空闲检测即将重新启动 poll_message 轮询时,在 status-change 中
|
|
718
|
+
// 保留 idle 动作信息,避免 bridge 清空动作字段导致前端显示 "空闲"。
|
|
719
|
+
const idleInputCommand = session.idleCommands?.idleInputCommand;
|
|
720
|
+
const willResumePolling = Boolean(idleInputCommand && this.isMessagePollingIdleCommand(idleInputCommand));
|
|
721
|
+
if (willResumePolling) {
|
|
722
|
+
this.emit('status-change', sessionId, 'waiting_input', {
|
|
723
|
+
actionType: 'idle',
|
|
724
|
+
actionLabel: '监听消息',
|
|
725
|
+
actionDetail: 'aws-mcp/poll_message',
|
|
726
|
+
usage: mappedUsage,
|
|
727
|
+
});
|
|
728
|
+
}
|
|
729
|
+
else {
|
|
730
|
+
this.emit('status-change', sessionId, 'waiting_input');
|
|
731
|
+
}
|
|
718
732
|
session.lastActivityAt = Date.now();
|
|
719
733
|
this.startIdleDetection(sessionId);
|
|
720
734
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpencodeSdkAdapter.d.ts","sourceRoot":"","sources":["../../src/adapter/OpencodeSdkAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiB3C,OAAO,EAKL,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EAExB,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AA8HpB,qBAAa,kBAAmB,SAAQ,YAAa,YAAW,mBAAmB;IACjF,QAAQ,CAAC,UAAU,cAAc;IACjC,QAAQ,CAAC,WAAW,cAAc;IAElC,OAAO,CAAC,QAAQ,CAA2C;IAC3D,OAAO,CAAC,SAAS,CAAC,CAAoB;IAEhC,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2J5E,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqDzG,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBnE,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7F,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE;QAAE,gBAAgB,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAUnG,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAclD,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BxD,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,EAAE;IAIzD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAItC,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI3D,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI9D,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAOpD,OAAO,IAAI,IAAI;IAaf;;;OAGG;YACW,OAAO;YA2BP,aAAa;IAmB3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAahC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,YAAY;YAYN,UAAU;IAuBxB,OAAO,CAAC,mBAAmB;
|
|
1
|
+
{"version":3,"file":"OpencodeSdkAdapter.d.ts","sourceRoot":"","sources":["../../src/adapter/OpencodeSdkAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiB3C,OAAO,EAKL,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EAExB,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AA8HpB,qBAAa,kBAAmB,SAAQ,YAAa,YAAW,mBAAmB;IACjF,QAAQ,CAAC,UAAU,cAAc;IACjC,QAAQ,CAAC,WAAW,cAAc;IAElC,OAAO,CAAC,QAAQ,CAA2C;IAC3D,OAAO,CAAC,SAAS,CAAC,CAAoB;IAEhC,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2J5E,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqDzG,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBnE,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7F,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE;QAAE,gBAAgB,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAUnG,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAclD,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BxD,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,EAAE;IAIzD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAItC,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI3D,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI9D,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAOpD,OAAO,IAAI,IAAI;IAaf;;;OAGG;YACW,OAAO;YA2BP,aAAa;IAmB3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAahC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,YAAY;YAYN,UAAU;IAuBxB,OAAO,CAAC,mBAAmB;IAiJ3B,OAAO,CAAC,gBAAgB;IAkHxB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,kBAAkB;IAuC1B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,2BAA2B;CAOpC"}
|
|
@@ -550,7 +550,26 @@ export class OpencodeSdkAdapter extends EventEmitter {
|
|
|
550
550
|
data: { usage: session.adapterSession.totalUsage },
|
|
551
551
|
});
|
|
552
552
|
session.adapterSession.status = 'waiting_input';
|
|
553
|
-
|
|
553
|
+
// ★ 修复:当空闲检测即将重新启动 poll_message 轮询时,在 status-change 中
|
|
554
|
+
// 保留 idle 动作信息,避免 bridge 清空动作字段导致前端显示 "空闲"。
|
|
555
|
+
// 核心场景:agent 处理完一轮消息后 session.idle 触发,此时 last action
|
|
556
|
+
// 是工作工具(bash/edit_file 等),而非 idle/mcp。如果此处不传递动作信息,
|
|
557
|
+
// bridge 的 shouldPreservePrevAction 判定会因 last action type 不匹配而
|
|
558
|
+
// 跳过保留,轮询恢复前出现 "空闲" 闪显。
|
|
559
|
+
const idleInputCommand = session.idleCommands?.idleInputCommand;
|
|
560
|
+
const willResumePolling = Boolean(idleInputCommand && this.isMessagePollingIdleCommand(idleInputCommand));
|
|
561
|
+
if (willResumePolling) {
|
|
562
|
+
// 传递预置的 idle 动作信息,让 bridge 直接更新/保留 poll_message 动作显示
|
|
563
|
+
this.emit('status-change', sessionId, 'waiting_input', {
|
|
564
|
+
actionType: 'idle',
|
|
565
|
+
actionLabel: '监听消息',
|
|
566
|
+
actionDetail: 'aws-mcp/poll_message',
|
|
567
|
+
usage: session.adapterSession.totalUsage,
|
|
568
|
+
});
|
|
569
|
+
}
|
|
570
|
+
else {
|
|
571
|
+
this.emit('status-change', sessionId, 'waiting_input', { usage: session.adapterSession.totalUsage });
|
|
572
|
+
}
|
|
554
573
|
this.startIdleDetection(sessionId);
|
|
555
574
|
break;
|
|
556
575
|
}
|
package/dist/adapter/types.d.ts
CHANGED
|
@@ -65,6 +65,8 @@ export interface RuntimeStatusActionInfo {
|
|
|
65
65
|
actionType?: ToolActionType;
|
|
66
66
|
actionLabel?: string;
|
|
67
67
|
actionDetail?: string;
|
|
68
|
+
/** 工具调用输入参数的 JSON 序列化字符串,用于在时间线上展示 */
|
|
69
|
+
actionInput?: string;
|
|
68
70
|
actionResult?: string;
|
|
69
71
|
actionId?: string;
|
|
70
72
|
usage?: RuntimeTokenUsage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapter/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapter/types.ts"],"names":[],"mappings":"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"}
|
package/dist/routes/git.js
CHANGED
|
@@ -1279,3 +1279,103 @@ gitRouter.post('/git/generate-commit-message', validateToken, async (req, res) =
|
|
|
1279
1279
|
res.status(500).json({ error: err.message || 'generate commit message failed' });
|
|
1280
1280
|
}
|
|
1281
1281
|
});
|
|
1282
|
+
/**
|
|
1283
|
+
* 将已暂存的文件撤销暂存(unstage)
|
|
1284
|
+
* POST /runtime/git/unstage-files
|
|
1285
|
+
*/
|
|
1286
|
+
gitRouter.post('/git/unstage-files', validateToken, async (req, res) => {
|
|
1287
|
+
const { workspacePath, repositoryPath, filePaths } = req.body || {};
|
|
1288
|
+
if (!workspacePath || !String(workspacePath).trim()) {
|
|
1289
|
+
res.status(400).json({ error: 'workspacePath is required' });
|
|
1290
|
+
return;
|
|
1291
|
+
}
|
|
1292
|
+
const rawFilePaths = Array.isArray(filePaths) ? filePaths : [];
|
|
1293
|
+
const normalizedFilePaths = rawFilePaths
|
|
1294
|
+
.map((fp) => normalizeGitPath(String(fp || '').trim()))
|
|
1295
|
+
.filter((fp) => fp.length > 0);
|
|
1296
|
+
if (normalizedFilePaths.length === 0) {
|
|
1297
|
+
res.status(400).json({ error: 'filePaths is required and must be a non-empty array' });
|
|
1298
|
+
return;
|
|
1299
|
+
}
|
|
1300
|
+
try {
|
|
1301
|
+
const context = await resolveGitRepositoryContext(String(repositoryPath || workspacePath).trim());
|
|
1302
|
+
if (!context.hasRepository || !context.repositoryRootPath) {
|
|
1303
|
+
res.status(400).json({ error: 'workspace is not inside a git repository' });
|
|
1304
|
+
return;
|
|
1305
|
+
}
|
|
1306
|
+
// 使用 git restore --staged 撤销暂存,兼容 Git 2.23+
|
|
1307
|
+
let lastError = '';
|
|
1308
|
+
for (const filePath of normalizedFilePaths) {
|
|
1309
|
+
const pathspecArgs = createScopedFilePathspecArgs(filePath, context);
|
|
1310
|
+
const result = await execGitCommand(context.repositoryRootPath, ['restore', '--staged', ...pathspecArgs]);
|
|
1311
|
+
if (result.exitCode !== 0) {
|
|
1312
|
+
lastError = result.stderr || `git restore --staged failed for ${filePath}`;
|
|
1313
|
+
}
|
|
1314
|
+
}
|
|
1315
|
+
if (lastError) {
|
|
1316
|
+
res.status(400).json({ error: lastError });
|
|
1317
|
+
return;
|
|
1318
|
+
}
|
|
1319
|
+
res.json({
|
|
1320
|
+
ok: true,
|
|
1321
|
+
filePaths: normalizedFilePaths,
|
|
1322
|
+
workspacePath: context.workspacePath,
|
|
1323
|
+
repositoryRootPath: context.repositoryRootPath,
|
|
1324
|
+
relativeWorkspacePath: context.relativeWorkspacePath,
|
|
1325
|
+
});
|
|
1326
|
+
}
|
|
1327
|
+
catch (error) {
|
|
1328
|
+
const err = error;
|
|
1329
|
+
res.status(500).json({ error: err.message || 'git unstage files failed' });
|
|
1330
|
+
}
|
|
1331
|
+
});
|
|
1332
|
+
/**
|
|
1333
|
+
* 丢弃未暂存文件的修改(还原到 HEAD),慎用,不可恢复。
|
|
1334
|
+
* POST /runtime/git/restore-files
|
|
1335
|
+
*/
|
|
1336
|
+
gitRouter.post('/git/restore-files', validateToken, async (req, res) => {
|
|
1337
|
+
const { workspacePath, repositoryPath, filePaths } = req.body || {};
|
|
1338
|
+
if (!workspacePath || !String(workspacePath).trim()) {
|
|
1339
|
+
res.status(400).json({ error: 'workspacePath is required' });
|
|
1340
|
+
return;
|
|
1341
|
+
}
|
|
1342
|
+
const rawFilePaths = Array.isArray(filePaths) ? filePaths : [];
|
|
1343
|
+
const normalizedFilePaths = rawFilePaths
|
|
1344
|
+
.map((fp) => normalizeGitPath(String(fp || '').trim()))
|
|
1345
|
+
.filter((fp) => fp.length > 0);
|
|
1346
|
+
if (normalizedFilePaths.length === 0) {
|
|
1347
|
+
res.status(400).json({ error: 'filePaths is required and must be a non-empty array' });
|
|
1348
|
+
return;
|
|
1349
|
+
}
|
|
1350
|
+
try {
|
|
1351
|
+
const context = await resolveGitRepositoryContext(String(repositoryPath || workspacePath).trim());
|
|
1352
|
+
if (!context.hasRepository || !context.repositoryRootPath) {
|
|
1353
|
+
res.status(400).json({ error: 'workspace is not inside a git repository' });
|
|
1354
|
+
return;
|
|
1355
|
+
}
|
|
1356
|
+
// git restore <file> 丢弃工作区未暂存修改
|
|
1357
|
+
let lastError = '';
|
|
1358
|
+
for (const filePath of normalizedFilePaths) {
|
|
1359
|
+
const pathspecArgs = createScopedFilePathspecArgs(filePath, context);
|
|
1360
|
+
const result = await execGitCommand(context.repositoryRootPath, ['restore', ...pathspecArgs]);
|
|
1361
|
+
if (result.exitCode !== 0) {
|
|
1362
|
+
lastError = result.stderr || `git restore failed for ${filePath}`;
|
|
1363
|
+
}
|
|
1364
|
+
}
|
|
1365
|
+
if (lastError) {
|
|
1366
|
+
res.status(400).json({ error: lastError });
|
|
1367
|
+
return;
|
|
1368
|
+
}
|
|
1369
|
+
res.json({
|
|
1370
|
+
ok: true,
|
|
1371
|
+
filePaths: normalizedFilePaths,
|
|
1372
|
+
workspacePath: context.workspacePath,
|
|
1373
|
+
repositoryRootPath: context.repositoryRootPath,
|
|
1374
|
+
relativeWorkspacePath: context.relativeWorkspacePath,
|
|
1375
|
+
});
|
|
1376
|
+
}
|
|
1377
|
+
catch (error) {
|
|
1378
|
+
const err = error;
|
|
1379
|
+
res.status(500).json({ error: err.message || 'git restore files failed' });
|
|
1380
|
+
}
|
|
1381
|
+
});
|
|
@@ -22,6 +22,7 @@ export interface SdkSessionEntry {
|
|
|
22
22
|
currentRuntimeActionType?: string;
|
|
23
23
|
currentRuntimeActionLabel?: string;
|
|
24
24
|
currentRuntimeActionDetail?: string;
|
|
25
|
+
currentRuntimeActionInput?: string;
|
|
25
26
|
}
|
|
26
27
|
export declare const sdkSessions: Map<string, SdkSessionEntry>;
|
|
27
28
|
export interface RuntimeStopOptions {
|
|
@@ -68,14 +69,25 @@ export declare function normalizeTerminalCommandInput(value: unknown): string;
|
|
|
68
69
|
* 主流程:优先使用环境变量覆盖 -> Windows 默认 GB18030 -> 其他平台默认 UTF-8。
|
|
69
70
|
*/
|
|
70
71
|
export declare function resolveTerminalOutputEncoding(platform?: NodeJS.Platform, env?: NodeJS.ProcessEnv): string;
|
|
72
|
+
/**
|
|
73
|
+
* 终端输出解码器接口。
|
|
74
|
+
*/
|
|
75
|
+
interface TerminalOutputDecoder {
|
|
76
|
+
decode(chunk?: Uint8Array | ArrayBuffer | null, options?: {
|
|
77
|
+
stream?: boolean;
|
|
78
|
+
}): string;
|
|
79
|
+
}
|
|
71
80
|
/**
|
|
72
81
|
* 创建终端输出流式解码器,避免多字节中文被 chunk 边界截断。
|
|
82
|
+
*
|
|
83
|
+
* 主流程:环境变量显式指定非 utf-8 时固定编码 → 否则自动检测
|
|
84
|
+
* (先 UTF-8,遇替换字符回退 GB18030,覆盖不同程序的不同编码)。
|
|
73
85
|
*/
|
|
74
|
-
export declare function createTerminalOutputDecoder(encoding?: string):
|
|
86
|
+
export declare function createTerminalOutputDecoder(encoding?: string): TerminalOutputDecoder;
|
|
75
87
|
/**
|
|
76
88
|
* 解码终端输出 chunk;end=true 时刷新解码器内部剩余字节。
|
|
77
89
|
*/
|
|
78
|
-
export declare function decodeTerminalOutputChunk(decoder: TextDecoder, chunk?: Buffer, end?: boolean): string;
|
|
90
|
+
export declare function decodeTerminalOutputChunk(decoder: TerminalOutputDecoder | TextDecoder, chunk?: Buffer, end?: boolean): string;
|
|
79
91
|
/**
|
|
80
92
|
* 解析 cd 命令目标;返回 undefined 表示不是目录切换命令,null 表示仅查看当前目录。
|
|
81
93
|
*/
|
|
@@ -126,4 +138,5 @@ export declare function resolveRuntimeStatusFromProviderEvent(event: ProviderEve
|
|
|
126
138
|
actionInfo?: RuntimeStatusActionInfo;
|
|
127
139
|
} | undefined;
|
|
128
140
|
export declare function resolveSdkProviderId(command?: string): string;
|
|
141
|
+
export {};
|
|
129
142
|
//# sourceMappingURL=terminal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../src/routes/terminal.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAMxC,OAAO,EAEN,KAAK,oBAAoB,EAKzB,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAO5B,MAAM,qBAAqB,CAAC;AAU7B,OAAO,EACN,KAAK,qBAAqB,EAK1B,MAAM,+BAA+B,CAAC;AAUvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIpD,eAAO,MAAM,cAAc,4CAAW,CAAC;AAIvC,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,0BAA0B,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../src/routes/terminal.ts"],"names":[],"mappings":"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"}
|
package/dist/routes/terminal.js
CHANGED
|
@@ -134,7 +134,7 @@ export function resolveStatusChangeRuntimeState(status, actionInfo) {
|
|
|
134
134
|
return actionInfo ? { status, actionInfo } : { status };
|
|
135
135
|
}
|
|
136
136
|
const terminalCommandStates = new Map();
|
|
137
|
-
const DEFAULT_WINDOWS_TERMINAL_OUTPUT_ENCODING = "
|
|
137
|
+
const DEFAULT_WINDOWS_TERMINAL_OUTPUT_ENCODING = "utf-8";
|
|
138
138
|
const DEFAULT_TERMINAL_OUTPUT_ENCODING = "utf-8";
|
|
139
139
|
const TERMINAL_COMMAND_OUTPUT_SPILLOVER_LINE_LIMIT = 300;
|
|
140
140
|
const TERMINAL_COMMAND_INACTIVITY_TIMEOUT_MS = 60_000;
|
|
@@ -199,14 +199,65 @@ export function resolveTerminalOutputEncoding(platform = process.platform, env =
|
|
|
199
199
|
}
|
|
200
200
|
/**
|
|
201
201
|
* 创建终端输出流式解码器,避免多字节中文被 chunk 边界截断。
|
|
202
|
+
*
|
|
203
|
+
* 主流程:环境变量显式指定非 utf-8 时固定编码 → 否则自动检测
|
|
204
|
+
* (先 UTF-8,遇替换字符回退 GB18030,覆盖不同程序的不同编码)。
|
|
202
205
|
*/
|
|
203
206
|
export function createTerminalOutputDecoder(encoding = resolveTerminalOutputEncoding()) {
|
|
204
|
-
|
|
205
|
-
|
|
207
|
+
// 环境变量显式指定了非 utf-8 编码 → 固定编码,不做自动检测
|
|
208
|
+
if (encoding !== "utf-8") {
|
|
209
|
+
try {
|
|
210
|
+
return new TextDecoder(encoding, { fatal: false });
|
|
211
|
+
}
|
|
212
|
+
catch {
|
|
213
|
+
return new TextDecoder(DEFAULT_TERMINAL_OUTPUT_ENCODING, { fatal: false });
|
|
214
|
+
}
|
|
206
215
|
}
|
|
207
|
-
|
|
208
|
-
|
|
216
|
+
// 默认 utf-8 → 启用自动检测
|
|
217
|
+
return createAutoDetectTerminalDecoder();
|
|
218
|
+
}
|
|
219
|
+
function createAutoDetectTerminalDecoder() {
|
|
220
|
+
let utf8Decoder = null;
|
|
221
|
+
let gbDecoder = null;
|
|
222
|
+
let detectedEncoding = null;
|
|
223
|
+
const rawChunks = [];
|
|
224
|
+
function getDecoder(enc) {
|
|
225
|
+
try {
|
|
226
|
+
return new TextDecoder(enc, { fatal: false });
|
|
227
|
+
}
|
|
228
|
+
catch {
|
|
229
|
+
return new TextDecoder("utf-8", { fatal: false });
|
|
230
|
+
}
|
|
209
231
|
}
|
|
232
|
+
return {
|
|
233
|
+
decode(chunk, options) {
|
|
234
|
+
if (chunk !== undefined && chunk !== null) {
|
|
235
|
+
rawChunks.push(chunk instanceof ArrayBuffer
|
|
236
|
+
? Buffer.from(chunk)
|
|
237
|
+
: Buffer.isBuffer(chunk)
|
|
238
|
+
? chunk
|
|
239
|
+
: Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength));
|
|
240
|
+
}
|
|
241
|
+
if (detectedEncoding === "gb18030") {
|
|
242
|
+
if (!gbDecoder)
|
|
243
|
+
gbDecoder = getDecoder("gb18030");
|
|
244
|
+
return gbDecoder.decode(chunk, options);
|
|
245
|
+
}
|
|
246
|
+
if (!utf8Decoder)
|
|
247
|
+
utf8Decoder = getDecoder("utf-8");
|
|
248
|
+
const result = utf8Decoder.decode(chunk, options);
|
|
249
|
+
if (detectedEncoding === null && result.includes("\uFFFD")) {
|
|
250
|
+
detectedEncoding = "gb18030";
|
|
251
|
+
gbDecoder = getDecoder("gb18030");
|
|
252
|
+
const fullBuffer = Buffer.concat(rawChunks);
|
|
253
|
+
return gbDecoder.decode(fullBuffer);
|
|
254
|
+
}
|
|
255
|
+
if (detectedEncoding === null && !options?.stream) {
|
|
256
|
+
detectedEncoding = "utf-8";
|
|
257
|
+
}
|
|
258
|
+
return result;
|
|
259
|
+
},
|
|
260
|
+
};
|
|
210
261
|
}
|
|
211
262
|
/**
|
|
212
263
|
* 解码终端输出 chunk;end=true 时刷新解码器内部剩余字节。
|
|
@@ -839,6 +890,24 @@ function displayStringList(value) {
|
|
|
839
890
|
.filter(Boolean)
|
|
840
891
|
.map((item) => redactTransientClipboardPastePaths(item));
|
|
841
892
|
}
|
|
893
|
+
/**
|
|
894
|
+
* 格式化工具调用输入参数为 JSON 字符串,用于时间线展示。
|
|
895
|
+
* 对敏感内容(如剪贴板临时路径)进行脱敏处理。
|
|
896
|
+
*/
|
|
897
|
+
function formatToolInput(toolInput) {
|
|
898
|
+
if (!toolInput || Object.keys(toolInput).length === 0)
|
|
899
|
+
return undefined;
|
|
900
|
+
try {
|
|
901
|
+
const sanitized = redactTransientClipboardPastePaths(JSON.stringify(toolInput, null, 2));
|
|
902
|
+
// 限制输入参数长度,避免超大参数撑爆时间线
|
|
903
|
+
return sanitized.length > 8000
|
|
904
|
+
? `${sanitized.slice(0, 8000)}\n...(输入参数过长,已截断)`
|
|
905
|
+
: sanitized;
|
|
906
|
+
}
|
|
907
|
+
catch {
|
|
908
|
+
return undefined;
|
|
909
|
+
}
|
|
910
|
+
}
|
|
842
911
|
function formatAiRequestDetail(data) {
|
|
843
912
|
const lines = [
|
|
844
913
|
data.model ? `模型: ${data.model}` : undefined,
|
|
@@ -911,6 +980,7 @@ export function resolveRuntimeStatusFromProviderEvent(event, currentRuntimeStatu
|
|
|
911
980
|
if (event.type === "tool_use_start") {
|
|
912
981
|
const inferredAction = getToolActionInfo(event.data.toolName, event.data.toolInput);
|
|
913
982
|
const actionDetail = resolveSdkToolLogDetail(event, inferredAction);
|
|
983
|
+
const actionInput = formatToolInput(event.data.toolInput);
|
|
914
984
|
if (event.data.actionType === "idle" ||
|
|
915
985
|
inferredAction.actionType === "idle") {
|
|
916
986
|
return {
|
|
@@ -922,6 +992,7 @@ export function resolveRuntimeStatusFromProviderEvent(event, currentRuntimeStatu
|
|
|
922
992
|
event.data.actionDetail ||
|
|
923
993
|
inferredAction.actionDetail ||
|
|
924
994
|
event.data.toolName,
|
|
995
|
+
actionInput,
|
|
925
996
|
actionId: event.data.actionId || event.data.toolUseId,
|
|
926
997
|
},
|
|
927
998
|
};
|
|
@@ -935,6 +1006,7 @@ export function resolveRuntimeStatusFromProviderEvent(event, currentRuntimeStatu
|
|
|
935
1006
|
event.data.actionDetail ||
|
|
936
1007
|
inferredAction.actionDetail ||
|
|
937
1008
|
event.data.toolName,
|
|
1009
|
+
actionInput,
|
|
938
1010
|
actionId: event.data.actionId || event.data.toolUseId,
|
|
939
1011
|
},
|
|
940
1012
|
};
|
|
@@ -1077,11 +1149,11 @@ function wireSdkAdapterEvents(adapter, definition) {
|
|
|
1077
1149
|
const entry = sdkSessions.get(event.sessionId);
|
|
1078
1150
|
if (entry) {
|
|
1079
1151
|
console.log(`[${definition.displayName} Adapter] Event: ${event.type} for session ${event.sessionId}`);
|
|
1080
|
-
// Skip sendStatus for thinking/text_delta events — the status-change
|
|
1081
|
-
// already emits the authoritative
|
|
1152
|
+
// Skip sendStatus for thinking/text_delta/tool_use_start events — the status-change
|
|
1153
|
+
// listener already emits the authoritative status with restored actionInfo,
|
|
1082
1154
|
// avoiding duplicate timeline entries in agentEventStore.
|
|
1083
|
-
const
|
|
1084
|
-
if (!
|
|
1155
|
+
const isDeferredStatusEvent = event.type === "thinking" || event.type === "text_delta" || event.type === "tool_use_start";
|
|
1156
|
+
if (!isDeferredStatusEvent) {
|
|
1085
1157
|
const runtimeStatus = resolveRuntimeStatusFromProviderEvent(event, entry.currentRuntimeStatus);
|
|
1086
1158
|
if (runtimeStatus) {
|
|
1087
1159
|
void sendStatus(entry.agentId, event.sessionId, runtimeStatus.status, runtimeStatus.actionInfo, resolveStatusChangeUsage(runtimeStatus.actionInfo), {
|
|
@@ -1134,6 +1206,8 @@ function wireSdkAdapterEvents(adapter, definition) {
|
|
|
1134
1206
|
entry.currentRuntimeActionLabel = runtimeState.actionInfo?.actionLabel;
|
|
1135
1207
|
entry.currentRuntimeActionDetail =
|
|
1136
1208
|
runtimeState.actionInfo?.actionDetail;
|
|
1209
|
+
entry.currentRuntimeActionInput =
|
|
1210
|
+
runtimeState.actionInfo?.actionInput;
|
|
1137
1211
|
}
|
|
1138
1212
|
console.log(`[${definition.displayName} Adapter] Status changed: ${runtimeState.status} for agent ${entry.agentId}`, runtimeState.actionInfo || "");
|
|
1139
1213
|
void updatePersistedSessionRuntimeState(sessionId, {
|
|
@@ -1151,6 +1225,7 @@ function wireSdkAdapterEvents(adapter, definition) {
|
|
|
1151
1225
|
actionType: entry.currentRuntimeActionType,
|
|
1152
1226
|
actionLabel: entry.currentRuntimeActionLabel ?? "",
|
|
1153
1227
|
actionDetail: entry.currentRuntimeActionDetail,
|
|
1228
|
+
actionInput: entry.currentRuntimeActionInput,
|
|
1154
1229
|
}
|
|
1155
1230
|
: undefined;
|
|
1156
1231
|
void sendStatus(entry.agentId, sessionId, runtimeState.status, restoredActionInfo, resolveStatusChangeUsage(runtimeState.actionInfo), {
|
|
@@ -1267,9 +1342,14 @@ async function startSdkSession(req, res) {
|
|
|
1267
1342
|
await removePersistedSession(persistedSession.sessionId);
|
|
1268
1343
|
}
|
|
1269
1344
|
else {
|
|
1345
|
+
const displayStatus = resolveSdkSessionDisplayStatus(persistedSession.runtimeStatus, persistedSession.runtimeStatus, persistedSession.runtimeActionType);
|
|
1270
1346
|
res.json({
|
|
1271
1347
|
sessionId: persistedSession.sessionId,
|
|
1272
|
-
status:
|
|
1348
|
+
status: displayStatus,
|
|
1349
|
+
runtimeStatus: displayStatus,
|
|
1350
|
+
runtimeActionType: persistedSession.runtimeActionType,
|
|
1351
|
+
runtimeActionLabel: persistedSession.runtimeActionLabel,
|
|
1352
|
+
runtimeActionDetail: persistedSession.runtimeActionDetail,
|
|
1273
1353
|
agentId: persistedSession.agentId,
|
|
1274
1354
|
workspacePath: persistedSession.workspacePath,
|
|
1275
1355
|
command: persistedSession.command,
|
|
@@ -332,8 +332,8 @@ describe("terminal command helpers", () => {
|
|
|
332
332
|
it("formats the working directory prompt as terminal output text", () => {
|
|
333
333
|
expect(formatTerminalPrompt("D:\\code\\repo")).toBe("\x1b[36mD:\\code\\repo>\x1b[0m ");
|
|
334
334
|
});
|
|
335
|
-
it("defaults Windows terminal command output to
|
|
336
|
-
expect(resolveTerminalOutputEncoding("win32", {})).toBe("
|
|
335
|
+
it("defaults Windows terminal command output to UTF-8 decoding", () => {
|
|
336
|
+
expect(resolveTerminalOutputEncoding("win32", {})).toBe("utf-8");
|
|
337
337
|
expect(resolveTerminalOutputEncoding("linux", {})).toBe("utf-8");
|
|
338
338
|
expect(resolveTerminalOutputEncoding("win32", {
|
|
339
339
|
AWS_TERMINAL_OUTPUT_ENCODING: "utf-8",
|
|
@@ -462,6 +462,7 @@ describe("SDK status usage forwarding", () => {
|
|
|
462
462
|
actionType: "read_file",
|
|
463
463
|
actionLabel: "读取文件",
|
|
464
464
|
actionDetail: "src/views/App.vue",
|
|
465
|
+
actionInput: JSON.stringify({ path: "src/views/App.vue" }, null, 2),
|
|
465
466
|
actionId: "tool-read",
|
|
466
467
|
},
|
|
467
468
|
});
|
|
@@ -480,6 +481,7 @@ describe("SDK status usage forwarding", () => {
|
|
|
480
481
|
actionType: "bash",
|
|
481
482
|
actionLabel: "执行命令",
|
|
482
483
|
actionDetail: "npm run test:agent-timeline-panel",
|
|
484
|
+
actionInput: JSON.stringify({ command: "npm run test:agent-timeline-panel" }, null, 2),
|
|
483
485
|
actionId: "tool-bash",
|
|
484
486
|
},
|
|
485
487
|
});
|
|
@@ -16,6 +16,7 @@ export interface BridgeEventPayload {
|
|
|
16
16
|
readonly actionType?: string;
|
|
17
17
|
readonly actionLabel?: string;
|
|
18
18
|
readonly actionDetail?: string;
|
|
19
|
+
readonly actionInput?: string;
|
|
19
20
|
readonly actionResult?: string;
|
|
20
21
|
readonly actionId?: string;
|
|
21
22
|
readonly inputTokens?: number;
|