@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.
Files changed (2) hide show
  1. package/dist/cli.cjs +28 -33
  2. 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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clawos-dev/clawd",
3
- "version": "0.2.78-beta.147.fdea83e",
3
+ "version": "0.2.79-beta.148.524ec65",
4
4
  "description": "Standalone clawd daemon — Claude Code (and future Codex) session server over WebSocket",
5
5
  "type": "module",
6
6
  "license": "MIT",