@clawos-dev/clawd 0.2.78-beta.147.fdea83e → 0.2.79-beta.148.524ec65
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 +28 -33
- package/package.json +1 -1
package/dist/cli.cjs
CHANGED
|
@@ -104,11 +104,6 @@ var init_methods = __esm({
|
|
|
104
104
|
// 触发频率低(仅 window resize),response 也是 ack。
|
|
105
105
|
"session:pty:input",
|
|
106
106
|
"session:pty:resize",
|
|
107
|
-
// session:pty:snapshot — UI XtermPanel 重新挂载(切 session 回来 / 刷新)时主动拉一次当前
|
|
108
|
-
// 屏幕全量快照,再开始消费 incremental session:pty。daemon 调 manager.getPtyReplay(sessionId)
|
|
109
|
-
// 取该 session 的 @xterm/headless detector serialize 结果。response.data 与 session:pty
|
|
110
|
-
// push 帧同格式(base64-utf8);session 不存在 / 非 tui / pty 已 exit 时 data=null。
|
|
111
|
-
"session:pty:snapshot",
|
|
112
107
|
// ---- attachment.* file-sharing(详见 attachment-schemas.ts) ----
|
|
113
108
|
// 命名警告:这里的 `attachment.*` RPC 与 CC v2.x 上行 `type:"attachment"` 系统行
|
|
114
109
|
// (attachment-skills / attachment-deferred-tools / attachment_memories)是不同概念。
|
|
@@ -22984,12 +22979,39 @@ var SessionManager = class {
|
|
|
22984
22979
|
// 同时被 interrupt / cancelQuestion 调用:按模式选 interrupt 通道。TUI 优先 pty,
|
|
22985
22980
|
// 否则 fallback 到 SDK 的 control_request(包括 mode='tui' 但 pty 未 register 的边角场景)。
|
|
22986
22981
|
async dispatchInterrupt(runner) {
|
|
22982
|
+
const sid = runner.getState().file.sessionId;
|
|
22987
22983
|
const tsid = runner.getState().file.toolSessionId;
|
|
22988
22984
|
const pty = tsid ? this.ptyTransports.get(tsid) : void 0;
|
|
22985
|
+
const stateBefore = runner.getState();
|
|
22986
|
+
this.deps.logger?.info("[BUG-HUNT-INTERRUPT] dispatchInterrupt enter", {
|
|
22987
|
+
sessionId: sid,
|
|
22988
|
+
tsid,
|
|
22989
|
+
ptyHit: Boolean(pty),
|
|
22990
|
+
mode: this.deps.mode,
|
|
22991
|
+
turnOpenBefore: stateBefore.turnOpen,
|
|
22992
|
+
procAlive: stateBefore.procAlive,
|
|
22993
|
+
bufferLen: stateBefore.buffer.length
|
|
22994
|
+
});
|
|
22989
22995
|
if (pty) {
|
|
22990
22996
|
pty.write("\x1B");
|
|
22997
|
+
this.deps.logger?.info("[BUG-HUNT-INTERRUPT] pty.write ESC done", { sessionId: sid });
|
|
22998
|
+
runner.input({ kind: "inject-events", events: [{ kind: "turn_end" }] });
|
|
22999
|
+
const stateAfter = runner.getState();
|
|
23000
|
+
const lastEvent = stateAfter.buffer[stateAfter.buffer.length - 1];
|
|
23001
|
+
this.deps.logger?.info("[BUG-HUNT-INTERRUPT] after inject turn_end", {
|
|
23002
|
+
sessionId: sid,
|
|
23003
|
+
turnOpenAfter: stateAfter.turnOpen,
|
|
23004
|
+
bufferLen: stateAfter.buffer.length,
|
|
23005
|
+
lastEventKind: lastEvent?.event?.kind,
|
|
23006
|
+
lastEventSeq: lastEvent?.seq
|
|
23007
|
+
});
|
|
22991
23008
|
return;
|
|
22992
23009
|
}
|
|
23010
|
+
this.deps.logger?.warn("[BUG-HUNT-INTERRUPT] SDK fallback path (pty not registered)", {
|
|
23011
|
+
sessionId: sid,
|
|
23012
|
+
tsid,
|
|
23013
|
+
mode: this.deps.mode
|
|
23014
|
+
});
|
|
22993
23015
|
await runner.sendControlRequest("interrupt");
|
|
22994
23016
|
}
|
|
22995
23017
|
// 批量版本:UI 打开 session 时一次性拿到"磁盘和快照有差异"的 user message id 集合,
|
|
@@ -28464,31 +28486,6 @@ function buildSessionHandlers(deps) {
|
|
|
28464
28486
|
}
|
|
28465
28487
|
return { response: { type: "session:pty:resize", ok: true } };
|
|
28466
28488
|
};
|
|
28467
|
-
const ptySnapshot = async (frame) => {
|
|
28468
|
-
const sid = frame.sessionId;
|
|
28469
|
-
if (!sid) {
|
|
28470
|
-
return { response: { type: "session:pty:snapshot", ok: false } };
|
|
28471
|
-
}
|
|
28472
|
-
const snap = manager.getPtyReplay(sid);
|
|
28473
|
-
if (!snap) {
|
|
28474
|
-
return {
|
|
28475
|
-
response: {
|
|
28476
|
-
type: "session:pty:snapshot",
|
|
28477
|
-
ok: true,
|
|
28478
|
-
data: null,
|
|
28479
|
-
popupKind: null
|
|
28480
|
-
}
|
|
28481
|
-
};
|
|
28482
|
-
}
|
|
28483
|
-
return {
|
|
28484
|
-
response: {
|
|
28485
|
-
type: "session:pty:snapshot",
|
|
28486
|
-
ok: true,
|
|
28487
|
-
data: Buffer.from(snap.data, "utf8").toString("base64"),
|
|
28488
|
-
popupKind: snap.popupKind
|
|
28489
|
-
}
|
|
28490
|
-
};
|
|
28491
|
-
};
|
|
28492
28489
|
return {
|
|
28493
28490
|
"session:create": create,
|
|
28494
28491
|
"session:list": list,
|
|
@@ -28513,8 +28510,7 @@ function buildSessionHandlers(deps) {
|
|
|
28513
28510
|
"session:answerQuestion": answerQuestion,
|
|
28514
28511
|
"session:cancelQuestion": cancelQuestion,
|
|
28515
28512
|
"session:pty:input": ptyInput,
|
|
28516
|
-
"session:pty:resize": ptyResize
|
|
28517
|
-
"session:pty:snapshot": ptySnapshot
|
|
28513
|
+
"session:pty:resize": ptyResize
|
|
28518
28514
|
};
|
|
28519
28515
|
}
|
|
28520
28516
|
|
|
@@ -29479,7 +29475,6 @@ var METHOD_GRANT_MAP = {
|
|
|
29479
29475
|
"persona:delete": ADMIN_ANY,
|
|
29480
29476
|
"session:pty:input": ADMIN_ANY,
|
|
29481
29477
|
"session:pty:resize": ADMIN_ANY,
|
|
29482
|
-
"session:pty:snapshot": ADMIN_ANY,
|
|
29483
29478
|
// file-sharing attachment.* RPC:dispatcher 用 admin-only 兜底(wire-level 拦),
|
|
29484
29479
|
// 实际只有 owner 能调(personal token 链路 2026-05-21 删除,HTTP Bearer 只识别 owner)
|
|
29485
29480
|
"attachment.signUrl": ADMIN_ANY,
|
package/package.json
CHANGED