@clawos-dev/clawd 0.2.78 → 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 +27 -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,13 +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 });
|
|
22991
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
|
+
});
|
|
22992
23008
|
return;
|
|
22993
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
|
+
});
|
|
22994
23015
|
await runner.sendControlRequest("interrupt");
|
|
22995
23016
|
}
|
|
22996
23017
|
// 批量版本:UI 打开 session 时一次性拿到"磁盘和快照有差异"的 user message id 集合,
|
|
@@ -28465,31 +28486,6 @@ function buildSessionHandlers(deps) {
|
|
|
28465
28486
|
}
|
|
28466
28487
|
return { response: { type: "session:pty:resize", ok: true } };
|
|
28467
28488
|
};
|
|
28468
|
-
const ptySnapshot = async (frame) => {
|
|
28469
|
-
const sid = frame.sessionId;
|
|
28470
|
-
if (!sid) {
|
|
28471
|
-
return { response: { type: "session:pty:snapshot", ok: false } };
|
|
28472
|
-
}
|
|
28473
|
-
const snap = manager.getPtyReplay(sid);
|
|
28474
|
-
if (!snap) {
|
|
28475
|
-
return {
|
|
28476
|
-
response: {
|
|
28477
|
-
type: "session:pty:snapshot",
|
|
28478
|
-
ok: true,
|
|
28479
|
-
data: null,
|
|
28480
|
-
popupKind: null
|
|
28481
|
-
}
|
|
28482
|
-
};
|
|
28483
|
-
}
|
|
28484
|
-
return {
|
|
28485
|
-
response: {
|
|
28486
|
-
type: "session:pty:snapshot",
|
|
28487
|
-
ok: true,
|
|
28488
|
-
data: Buffer.from(snap.data, "utf8").toString("base64"),
|
|
28489
|
-
popupKind: snap.popupKind
|
|
28490
|
-
}
|
|
28491
|
-
};
|
|
28492
|
-
};
|
|
28493
28489
|
return {
|
|
28494
28490
|
"session:create": create,
|
|
28495
28491
|
"session:list": list,
|
|
@@ -28514,8 +28510,7 @@ function buildSessionHandlers(deps) {
|
|
|
28514
28510
|
"session:answerQuestion": answerQuestion,
|
|
28515
28511
|
"session:cancelQuestion": cancelQuestion,
|
|
28516
28512
|
"session:pty:input": ptyInput,
|
|
28517
|
-
"session:pty:resize": ptyResize
|
|
28518
|
-
"session:pty:snapshot": ptySnapshot
|
|
28513
|
+
"session:pty:resize": ptyResize
|
|
28519
28514
|
};
|
|
28520
28515
|
}
|
|
28521
28516
|
|
|
@@ -29480,7 +29475,6 @@ var METHOD_GRANT_MAP = {
|
|
|
29480
29475
|
"persona:delete": ADMIN_ANY,
|
|
29481
29476
|
"session:pty:input": ADMIN_ANY,
|
|
29482
29477
|
"session:pty:resize": ADMIN_ANY,
|
|
29483
|
-
"session:pty:snapshot": ADMIN_ANY,
|
|
29484
29478
|
// file-sharing attachment.* RPC:dispatcher 用 admin-only 兜底(wire-level 拦),
|
|
29485
29479
|
// 实际只有 owner 能调(personal token 链路 2026-05-21 删除,HTTP Bearer 只识别 owner)
|
|
29486
29480
|
"attachment.signUrl": ADMIN_ANY,
|
package/package.json
CHANGED