@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.
Files changed (2) hide show
  1. package/dist/cli.cjs +27 -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,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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clawos-dev/clawd",
3
- "version": "0.2.78",
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",