@clawos-dev/clawd 0.2.136-beta.288.d5a2c71 → 0.2.136

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 +21 -21
  2. package/package.json +1 -1
package/dist/cli.cjs CHANGED
@@ -33079,6 +33079,11 @@ var SessionManager = class {
33079
33079
  // manager.resizePty 用此映射把 UI 的 session:pty:resize 同步到 surface 内部 buffer,
33080
33080
  // 保证 snapshot serialize 时 cursor positioning 与 UI xterm 实际尺寸一致。
33081
33081
  surfacesByToolSid = /* @__PURE__ */ new Map();
33082
+ // TUI 模式:sessionId → UI 最近一次上报的 xterm 尺寸。resizePty 入口无条件记录(含 pty
33083
+ // 尚未 spawn / runner 尚未创建的早到 resize),registerPty / registerSurface 时回放——
33084
+ // 修「mount resize 早于 lazy spawn 被丢」与「respawn 回到 120×40 后无人补发」的尺寸错配。
33085
+ // 键用 sessionId 而非 toolSessionId:/clear 会 reassign tsid,sessionId 跨 respawn 稳定
33086
+ lastUiSizeBySessionId = /* @__PURE__ */ new Map();
33082
33087
  // 仅 mode='tui' 需要:index.ts 装配阶段在 observer 构造后注入。
33083
33088
  // observer.onEvent 要回灌 manager.feedObserverEvents,所以 observer 必须晚于 manager
33084
33089
  // 构造;反过来 manager 又要在 mode='tui' 下 spawn session 时 attach observer。setter 解循环
@@ -33615,6 +33620,7 @@ var SessionManager = class {
33615
33620
  });
33616
33621
  this.runners.delete(args.sessionId);
33617
33622
  this.realUuidBySynth.delete(args.sessionId);
33623
+ this.lastUiSizeBySessionId.delete(args.sessionId);
33618
33624
  return { response: { sessionId: args.sessionId }, broadcast };
33619
33625
  }
33620
33626
  this.deleteOwned(args.sessionId);
@@ -34130,6 +34136,7 @@ var SessionManager = class {
34130
34136
  });
34131
34137
  this.runners.delete(args.sessionId);
34132
34138
  this.realUuidBySynth.delete(args.sessionId);
34139
+ this.lastUiSizeBySessionId.delete(args.sessionId);
34133
34140
  return { response: { sessionId: args.sessionId }, broadcast };
34134
34141
  }
34135
34142
  this.storeFor(args.scope).delete(args.sessionId);
@@ -34295,6 +34302,14 @@ var SessionManager = class {
34295
34302
  /** ClaudeTuiAdapter.spawn 后调用,让 manager 持有 pty handle 供 handler input/resize 路由 */
34296
34303
  registerPty(toolSessionId, pty) {
34297
34304
  this.ptyTransports.set(toolSessionId, pty);
34305
+ const sid = this.sessionIdByToolSid(toolSessionId);
34306
+ const size = sid ? this.lastUiSizeBySessionId.get(sid) : void 0;
34307
+ if (size) {
34308
+ try {
34309
+ pty.resize(size.cols, size.rows);
34310
+ } catch {
34311
+ }
34312
+ }
34298
34313
  }
34299
34314
  /** spawn 进程 exit 时调用,清理映射防止后续 input 写到已死 pty + 释放 replay 闭包 */
34300
34315
  unregisterPty(toolSessionId) {
@@ -34384,6 +34399,9 @@ var SessionManager = class {
34384
34399
  /** ClaudeTuiAdapter spawn 时注册 surface ref;同一 tsid 重 spawn 会覆盖 */
34385
34400
  registerSurface(toolSessionId, surface) {
34386
34401
  this.surfacesByToolSid.set(toolSessionId, surface);
34402
+ const sid = this.sessionIdByToolSid(toolSessionId);
34403
+ const size = sid ? this.lastUiSizeBySessionId.get(sid) : void 0;
34404
+ if (size) surface.resize(size.cols, size.rows);
34387
34405
  }
34388
34406
  /** spawn 进程 exit 时清理 */
34389
34407
  unregisterSurface(toolSessionId) {
@@ -34396,6 +34414,7 @@ var SessionManager = class {
34396
34414
  * 找不到 runner / toolSessionId / pty 任一缺失 → 返 false,handler 静默给 UI 报 ok=false 不抛错。
34397
34415
  */
34398
34416
  resizePty(sessionId, cols, rows) {
34417
+ this.lastUiSizeBySessionId.set(sessionId, { cols, rows });
34399
34418
  const runner = this.runners.get(sessionId);
34400
34419
  if (!runner) return false;
34401
34420
  const tsid = runner.getState().file.toolSessionId;
@@ -36775,28 +36794,9 @@ function buildTuiSpawnArgs(ctx, isResume = false) {
36775
36794
  args.push(isResume ? "--resume" : "--session-id", ctx.toolSessionId);
36776
36795
  }
36777
36796
  if (ctx.model) args.push("--model", ctx.model);
36778
- switch (ctx.personaMode) {
36779
- case "guest":
36780
- args.push("--setting-sources", "project,local");
36781
- break;
36782
- case "owner":
36783
- args.push("--setting-sources", "user,project,local");
36784
- args.push("--permission-mode", "bypassPermissions");
36785
- break;
36786
- case void 0:
36787
- args.push("--permission-mode", ctx.permissionMode || "bypassPermissions");
36788
- break;
36789
- default: {
36790
- const _exhaustive = ctx.personaMode;
36791
- throw new Error(`unexpected personaMode: ${String(_exhaustive)}`);
36792
- }
36793
- }
36794
- if (ctx.extraSettings) args.push("--settings", ctx.extraSettings);
36795
- if (ctx.extraSystemPrompt) args.push("--append-system-prompt", ctx.extraSystemPrompt);
36796
- if (ctx.addDirs) {
36797
- for (const dir of ctx.addDirs) args.push("--add-dir", dir);
36798
- }
36797
+ args.push("--permission-mode", ctx.permissionMode ?? "bypassPermissions");
36799
36798
  if (ctx.effort) args.push("--effort", ctx.effort);
36799
+ if (ctx.extraSettings) args.push("--settings", ctx.extraSettings);
36800
36800
  return args;
36801
36801
  }
36802
36802
  function jsonlExistsForCtx(ctx) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clawos-dev/clawd",
3
- "version": "0.2.136-beta.288.d5a2c71",
3
+ "version": "0.2.136",
4
4
  "description": "Standalone clawd daemon — Claude Code (and future Codex) session server over WebSocket",
5
5
  "type": "module",
6
6
  "license": "MIT",