@clawos-dev/clawd 0.2.74 → 0.2.76-beta.144.0648ad1
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/cli.cjs +18 -3
- package/package.json +1 -1
package/dist/cli.cjs
CHANGED
|
@@ -22583,7 +22583,11 @@ var SessionManager = class {
|
|
|
22583
22583
|
await runner.waitUntilStopped();
|
|
22584
22584
|
return { response: { ok: true }, broadcast };
|
|
22585
22585
|
}
|
|
22586
|
-
//
|
|
22586
|
+
// 温柔中断当前轮次:不杀进程
|
|
22587
|
+
// - SDK 模式:发 CC IPC `control_request.subtype=interrupt`(走 stdin stream-json 通道)
|
|
22588
|
+
// - TUI 模式:proc.stdin 是 PtyChildProcess→pty.write,CC TUI 把任何 stdin 当键盘输入;
|
|
22589
|
+
// control_request JSON 会被 ink 当文本贴进输入框(用户报"输入框多了一段 JSON 但没中止")。
|
|
22590
|
+
// 必须改写 ESC(\x1b)到 pty,让 ink TUI 走它自己的中断路径。
|
|
22587
22591
|
// 失败情况(session 不存在 / 没活进程 / 超时 / 进程半路退出)都 throw ClawdError
|
|
22588
22592
|
async interrupt(args) {
|
|
22589
22593
|
this.getFile(args.sessionId);
|
|
@@ -22595,12 +22599,23 @@ var SessionManager = class {
|
|
|
22595
22599
|
);
|
|
22596
22600
|
}
|
|
22597
22601
|
try {
|
|
22598
|
-
await
|
|
22602
|
+
await this.dispatchInterrupt(runner);
|
|
22599
22603
|
} catch (err) {
|
|
22600
22604
|
throw new ClawdError(ERROR_CODES.INTERNAL, err.message);
|
|
22601
22605
|
}
|
|
22602
22606
|
return { response: { ok: true }, broadcast: [] };
|
|
22603
22607
|
}
|
|
22608
|
+
// 同时被 interrupt / cancelQuestion 调用:按模式选 interrupt 通道。TUI 优先 pty,
|
|
22609
|
+
// 否则 fallback 到 SDK 的 control_request(包括 mode='tui' 但 pty 未 register 的边角场景)。
|
|
22610
|
+
async dispatchInterrupt(runner) {
|
|
22611
|
+
const tsid = runner.getState().file.toolSessionId;
|
|
22612
|
+
const pty = tsid ? this.ptyTransports.get(tsid) : void 0;
|
|
22613
|
+
if (pty) {
|
|
22614
|
+
pty.write("\x1B");
|
|
22615
|
+
return;
|
|
22616
|
+
}
|
|
22617
|
+
await runner.sendControlRequest("interrupt");
|
|
22618
|
+
}
|
|
22604
22619
|
// 批量版本:UI 打开 session 时一次性拿到"磁盘和快照有差异"的 user message id 集合,
|
|
22605
22620
|
// 用来在消息流里精准控制 rewind 按钮的显示。session 没 toolSessionId 时返回空
|
|
22606
22621
|
rewindableMessageIds(args) {
|
|
@@ -23155,7 +23170,7 @@ var SessionManager = class {
|
|
|
23155
23170
|
runner.input({ kind: "cancel-question", toolUseId: args.toolUseId });
|
|
23156
23171
|
});
|
|
23157
23172
|
if (runner.getState().procAlive) {
|
|
23158
|
-
void
|
|
23173
|
+
void this.dispatchInterrupt(runner).catch(() => {
|
|
23159
23174
|
});
|
|
23160
23175
|
}
|
|
23161
23176
|
return { response: { ok: true }, broadcast };
|
package/package.json
CHANGED