wezard 2.4.0 → 2.5.0

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 (101) hide show
  1. package/CLAUDE.md +1 -1
  2. package/README.md +113 -57
  3. package/cli/wezard.sh +2 -0
  4. package/config.example.jsonc +7 -4
  5. package/dist/cli/wx.js +78 -0
  6. package/dist/cli/wx.js.map +1 -0
  7. package/dist/daemon/aibot-media.js +62 -0
  8. package/dist/daemon/aibot-media.js.map +1 -0
  9. package/dist/daemon/approval.js +30 -20
  10. package/dist/daemon/approval.js.map +1 -1
  11. package/dist/daemon/ask.js +3 -2
  12. package/dist/daemon/ask.js.map +1 -1
  13. package/dist/daemon/cc-session.js +27 -4
  14. package/dist/daemon/cc-session.js.map +1 -1
  15. package/dist/daemon/chat-log.js +2 -2
  16. package/dist/daemon/chat-log.js.map +1 -1
  17. package/dist/daemon/chat-name.js +6 -2
  18. package/dist/daemon/chat-name.js.map +1 -1
  19. package/dist/daemon/config-api.js +25 -10
  20. package/dist/daemon/config-api.js.map +1 -1
  21. package/dist/daemon/direction.js +53 -0
  22. package/dist/daemon/direction.js.map +1 -0
  23. package/dist/daemon/ilink.js +162 -0
  24. package/dist/daemon/ilink.js.map +1 -0
  25. package/dist/daemon/inbound.js +64 -18
  26. package/dist/daemon/inbound.js.map +1 -1
  27. package/dist/daemon/index.js +415 -109
  28. package/dist/daemon/index.js.map +1 -1
  29. package/dist/daemon/jobs.js +4 -3
  30. package/dist/daemon/jobs.js.map +1 -1
  31. package/dist/daemon/last-response.js +6 -3
  32. package/dist/daemon/last-response.js.map +1 -1
  33. package/dist/daemon/media.js +108 -0
  34. package/dist/daemon/media.js.map +1 -0
  35. package/dist/daemon/mirror-bridge.js +111 -93
  36. package/dist/daemon/mirror-bridge.js.map +1 -1
  37. package/dist/daemon/model-select.js +159 -54
  38. package/dist/daemon/model-select.js.map +1 -1
  39. package/dist/daemon/notices.js +59 -12
  40. package/dist/daemon/notices.js.map +1 -1
  41. package/dist/daemon/outbound.js +2 -1
  42. package/dist/daemon/outbound.js.map +1 -1
  43. package/dist/daemon/peers.js +46 -27
  44. package/dist/daemon/peers.js.map +1 -1
  45. package/dist/daemon/pending-items.js +1 -1
  46. package/dist/daemon/pending-items.js.map +1 -1
  47. package/dist/daemon/reach.js +6 -0
  48. package/dist/daemon/reach.js.map +1 -0
  49. package/dist/daemon/receipts.js +149 -7
  50. package/dist/daemon/receipts.js.map +1 -1
  51. package/dist/daemon/route.js +11 -4
  52. package/dist/daemon/route.js.map +1 -1
  53. package/dist/daemon/spawn-tmux.js +157 -60
  54. package/dist/daemon/spawn-tmux.js.map +1 -1
  55. package/dist/daemon/steward-guard.js +48 -7
  56. package/dist/daemon/steward-guard.js.map +1 -1
  57. package/dist/daemon/top-only-nudge.js +29 -0
  58. package/dist/daemon/top-only-nudge.js.map +1 -0
  59. package/dist/daemon/weixin-cmd.js +268 -0
  60. package/dist/daemon/weixin-cmd.js.map +1 -0
  61. package/dist/daemon/weixin-port.js +226 -0
  62. package/dist/daemon/weixin-port.js.map +1 -0
  63. package/dist/daemon/weixin.js +772 -0
  64. package/dist/daemon/weixin.js.map +1 -0
  65. package/dist/daemon/wizard.js +56 -18
  66. package/dist/daemon/wizard.js.map +1 -1
  67. package/dist/mcp/server.js +43 -23
  68. package/dist/mcp/server.js.map +1 -1
  69. package/dist/shared/chat-http.js +61 -20
  70. package/dist/shared/chat-http.js.map +1 -1
  71. package/dist/shared/chat-render.js +9 -1
  72. package/dist/shared/chat-render.js.map +1 -1
  73. package/dist/shared/chat-view.js +16 -2
  74. package/dist/shared/chat-view.js.map +1 -1
  75. package/dist/shared/cli-backends.js +3 -0
  76. package/dist/shared/cli-backends.js.map +1 -1
  77. package/dist/shared/config.js +45 -10
  78. package/dist/shared/config.js.map +1 -1
  79. package/dist/shared/json-map-store.js +1 -0
  80. package/dist/shared/json-map-store.js.map +1 -1
  81. package/dist/shared/reminder.js +1 -0
  82. package/dist/shared/reminder.js.map +1 -1
  83. package/dist/shared/role-render.js +7 -4
  84. package/dist/shared/role-render.js.map +1 -1
  85. package/dist/shared/role-view.js +116 -37
  86. package/dist/shared/role-view.js.map +1 -1
  87. package/dist/shared/seen-log.js +26 -0
  88. package/dist/shared/seen-log.js.map +1 -0
  89. package/dist/shared/session-label.js +84 -31
  90. package/dist/shared/session-label.js.map +1 -1
  91. package/dist/shared/turn-state.js +1 -1
  92. package/dist/shared/turn-state.js.map +1 -1
  93. package/dist/shared/world.js.map +1 -1
  94. package/dist/shared/wx-text.js +101 -0
  95. package/dist/shared/wx-text.js.map +1 -0
  96. package/dist/svr/index.js +5 -2
  97. package/dist/svr/index.js.map +1 -1
  98. package/hooks/pre-tool-use.sh +9 -6
  99. package/package.json +6 -2
  100. package/web/chat.css +32 -5
  101. package/web/chat.js +160 -92
@@ -32,7 +32,7 @@ import { expandHome } from "../shared/paths.js";
32
32
  import { augmentedPath } from "../shared/exec-path.js";
33
33
  import { sleep } from "../shared/std.js";
34
34
  import { activateBackend, CLI_BACKEND_DEFAULTS, primaryBackend } from "../shared/cli-backends.js";
35
- import { exactModelId, isLaunchAlias, selectModel } from "./model-select.js";
35
+ import { selectModel } from "./model-select.js";
36
36
  import { hasRegistry, sessionOnPane } from "./cc-session.js";
37
37
  // A spawn has no transcript to derive a backend from, so the caller picks one
38
38
  // (`cli`) and we fall back to the primary (`wrc.defaultCli`). Everything the
@@ -116,7 +116,10 @@ const parseTmuxVersion = (out) => {
116
116
  };
117
117
  export { parseTmuxVersion };
118
118
  // Single-quote shell-escape: wrap in '…' and escape embedded ' as '\''.
119
- const shQuote = (a) => (/[\s"'`$\\]/.test(a) ? `'${a.replace(/'/g, "'\\''")}'` : a);
119
+ // Allowlist, not a blocklist of metachars: the pane shell is often zsh, where a
120
+ // bare glob (`mcp__x__*` in extraArgs) that matches nothing aborts the whole
121
+ // launch line with "no matches found" — the pane drops straight to a prompt.
122
+ const shQuote = (a) => (/^[\w@%+=:,./-]+$/.test(a) ? a : `'${a.replace(/'/g, "'\\''")}'`);
120
123
  // tmux window names are free-form but a status-bar friendly slug avoids
121
124
  // surprises (no whitespace / colons / quoting hazards). Principals are
122
125
  // shortened: `user:foo` → `u-foo`, `chat:foo` → `c-foo`, and get truncated to
@@ -153,9 +156,50 @@ const TUI_READY_RE = /for shortcuts|auto mode|Try "|>\s*$/m;
153
156
  // command is sitting unsent in the shell line.
154
157
  const BLOCKER_RE = /Would you like to update|oh-my-zsh|Do you want to update/i;
155
158
  const capturePaneBottom = async (pane, rows) => {
156
- const r = await runTmux(["capture-pane", "-t", pane, "-p", "-S", `-${rows}`]);
159
+ const r = await runTmux(["capture-pane", "-t", pane, "-p", "-S", rows === "-" ? "-" : `-${rows}`]);
157
160
  return r.ok ? r.stdout : "";
158
161
  };
162
+ // The launch line ends in `; printf … __wezard_ cli_exit $?`, so a CLI that
163
+ // quits hands the shell back a line no TUI ever prints. Split in two on the
164
+ // typed line so the echoed command itself never matches.
165
+ const EXIT_TAIL = `; printf '\\n%s%s:%s\\n' __wezard_ cli_exit "$?"`;
166
+ const EXIT_RE = /__wezard_cli_exit:(\d+)/u;
167
+ const nonBlank = (s) => s.split("\n").map((l) => l.trimEnd()).filter(Boolean);
168
+ /** The CLI quit back to the shell: the exit marker sits at the very bottom.
169
+ * Only the bottom counts — a live TUI always ends in its input box, and a
170
+ * resumed transcript replaying text that quotes the marker sits above it. */
171
+ export const cliExit = (screen) => {
172
+ const lines = nonBlank(screen);
173
+ const tail = lines.slice(-3);
174
+ const hit = tail.find((l) => EXIT_RE.test(l));
175
+ if (!hit)
176
+ return undefined;
177
+ const at = lines.length - tail.length + tail.indexOf(hit);
178
+ const why = lines.slice(Math.max(0, at - 6), at).join(" ").replace(/\s+/gu, " ").slice(-300);
179
+ return `CLI 启动后退出 (exit ${EXIT_RE.exec(hit)[1]})${why ? `: ${why}` : ""}`;
180
+ };
181
+ /** The CLI took `--model` without recognizing it. A launch that knows the id
182
+ * prints its display name in the welcome box ("Deepseek-V4.1-Flash · high");
183
+ * one that doesn't echoes the raw string back ("no-such-model-9.9 · high") and
184
+ * only fails on the first turn with "400 model [...] service info not found".
185
+ * Read off the welcome box only — the first one titled with a version
186
+ * ("╭─── CodeBuddy Code v2.143.1 ───"), else the first box at all: it comes
187
+ * before any resumed history, which may quote anything. No box → false:
188
+ * nothing to judge by. A valid id whose display name is byte-identical to it
189
+ * would read as a miss — that costs one extra launch and lands on the same
190
+ * model through the picker. */
191
+ export const modelNotRecognized = (screen, wanted) => {
192
+ const lines = screen.split("\n");
193
+ const isTop = (l) => l.trimStart().startsWith("╭");
194
+ const titled = lines.findIndex((l) => isTop(l) && /\bv\d+\.\d+/u.test(l));
195
+ const top = titled >= 0 ? titled : lines.findIndex(isTop);
196
+ const end = top < 0 ? -1 : lines.findIndex((l, i) => i > top && l.trimStart().startsWith("╰"));
197
+ if (end < 0)
198
+ return false;
199
+ return lines.slice(top + 1, end)
200
+ .flatMap((l) => l.split("│").map((s) => s.trim()))
201
+ .some((s) => s === wanted || s.startsWith(`${wanted} · `));
202
+ };
159
203
  // Active verification that the AI session inside the pane is up and waiting
160
204
  // for input. On success returns true; on timeout returns false (caller decides
161
205
  // whether to treat as fatal).
@@ -164,6 +208,9 @@ const capturePaneBottom = async (pane, rows) => {
164
208
  // 为准 —— 进程自己报的就绪, 不读 pane。注册表行一出现就说明 claude 已接管 pty,
165
209
  // 之后只管等它 idle; 只有行还没出现 (shell 还在 source rc / 被交互提示卡住 /
166
210
  // 后端根本不写注册表) 时 pane 才是唯一的证人, 这时才 capture 去认提示框与 TUI。
211
+ //
212
+ // 退出标记 (`cliExit`) 每次读屏都先看: CLI 一退回 shell 就不必等满预算, 而注册表
213
+ // 里那行可能还没清掉 —— 所以注册表已认下会话时也照读屏, 只是不拿屏去判就绪。
167
214
  const waitForTuiReady = async (pane, cmd, backend, log) => {
168
215
  const registry = hasRegistry(backend.homeDir);
169
216
  const t0 = Date.now();
@@ -177,11 +224,9 @@ const waitForTuiReady = async (pane, cmd, backend, log) => {
177
224
  if (registry) {
178
225
  const s = sessionOnPane(backend.homeDir, pane);
179
226
  if (s?.status === "idle")
180
- return true;
181
- if (s) {
227
+ return { ready: true };
228
+ if (s)
182
229
  sawSession = true;
183
- continue;
184
- }
185
230
  }
186
231
  // Shell rc needs time to source before capture-pane shows anything meaningful.
187
232
  if (Date.now() - t0 < MIN_SETTLE_MS)
@@ -191,8 +236,15 @@ const waitForTuiReady = async (pane, cmd, backend, log) => {
191
236
  continue;
192
237
  lastCap = Date.now();
193
238
  const cap = await capturePaneBottom(pane, 20);
194
- if (!registry && TUI_READY_RE.test(cap))
195
- return true;
239
+ const exited = cliExit(cap);
240
+ if (exited)
241
+ return { ready: false, exited };
242
+ // 注册表认不到这个 pane (schema 不认识 / 后端不写) 时, pane 读屏就是唯一证人;
243
+ // 注册表已认下 (sawSession) 则仍以它报的 idle 为准, 尾部裁决不变。
244
+ if (sawSession)
245
+ continue;
246
+ if (TUI_READY_RE.test(cap))
247
+ return { ready: true };
196
248
  // Shell prompt eating our Enter: an interactive blocker (omz update, etc.)
197
249
  // swallowed it. Dismiss with "N" + Enter, then re-send the full command.
198
250
  if (!resent && BLOCKER_RE.test(cap)) {
@@ -212,10 +264,14 @@ const waitForTuiReady = async (pane, cmd, backend, log) => {
212
264
  }
213
265
  }
214
266
  // 注册表认得这个会话却迟迟不 idle (启动期对话框? 状态字段改了名?) —— 最后让 pane 裁决一次。
215
- if (sawSession && TUI_READY_RE.test(await capturePaneBottom(pane, 20)))
216
- return true;
267
+ const last = await capturePaneBottom(pane, 20);
268
+ const exited = cliExit(last);
269
+ if (exited)
270
+ return { ready: false, exited };
271
+ if (sawSession && TUI_READY_RE.test(last))
272
+ return { ready: true };
217
273
  log.warn({ pane, registry, sawSession }, "spawn-tmux: TUI ready timeout, proceeding anyway");
218
- return false;
274
+ return { ready: false };
219
275
  };
220
276
  const claudeConfigCandidates = (claudeBin) => {
221
277
  const home = homedir();
@@ -296,7 +352,7 @@ const charterArg = (cfg, backend, sessionId, charter, log) => {
296
352
  return "";
297
353
  }
298
354
  };
299
- export const spawnTmuxClaude = async ({ cfg, log, resumeSessionId, sessionId: freshSessionId, windowName, cwdOverride, cli, model, knownModels, effort, systemPrompt, forkSession }) => {
355
+ export const spawnTmuxClaude = async ({ cfg, log, resumeSessionId, sessionId: freshSessionId, windowName, cwdOverride, cli, model, effort, systemPrompt, forkSession }) => {
300
356
  const backend = backendFor(cfg, cli);
301
357
  const cwd = expandHome((cwdOverride ?? "").trim() || cfg.wrc.cwd);
302
358
  const projectDir = join(expandHome(backend.projectsDir), backend.encodeProjectDir(cwd));
@@ -345,22 +401,22 @@ export const spawnTmuxClaude = async ({ cfg, log, resumeSessionId, sessionId: fr
345
401
  // the prompt regardless of the user's zstyle config.
346
402
  const paneEnv = supportsE ? ["-e", "DISABLE_AUTO_UPDATE=true", "-e", "DISABLE_UPDATE_PROMPT=true"] : [];
347
403
  const cwdArg = supportsC ? ["-c", cwd] : [];
348
- const has = await runTmux(["has-session", "-t", tmuxName]);
349
- const created = has.code === 0
350
- // `${tmuxName}:` (trailing colon) forces session-only resolution → next free
351
- // window index. Bare `-t wezard` is ambiguous: if a *window* is also named
352
- // `wezard`, tmux matches it and tries to reuse its index → "index N in use".
353
- ? await runTmux(["new-window", "-d", "-t", `${tmuxName}:`, "-n", winName, ...cwdArg, ...paneEnv, "-P", "-F", "#{pane_id}"])
354
- : await runTmux(["new-session", "-d", "-s", tmuxName, "-n", winName, ...cwdArg, ...paneEnv, "-P", "-F", "#{pane_id}"]);
355
- if (!created.ok) {
356
- const verb = has.code === 0 ? "new-window" : "new-session";
357
- return { ok: false, reason: `tmux ${verb} failed: ${created.stderr.trim() || created.code}` };
358
- }
359
- const tmuxPane = created.stdout.split("\n").map((s) => s.trim()).filter(Boolean)[0] ?? "";
360
- if (!tmuxPane) {
361
- return { ok: false, reason: "tmux returned no pane id" };
362
- }
363
- log.info({ tmuxName, winName, tmuxPane, cwd, sessionId, cli: backend.name, reused: has.code === 0 }, "spawn-tmux: pane created");
404
+ const openPane = async () => {
405
+ const has = await runTmux(["has-session", "-t", tmuxName]);
406
+ const created = has.code === 0
407
+ // `${tmuxName}:` (trailing colon) forces session-only resolution → next free
408
+ // window index. Bare `-t wezard` is ambiguous: if a *window* is also named
409
+ // `wezard`, tmux matches it and tries to reuse its index → "index N in use".
410
+ ? await runTmux(["new-window", "-d", "-t", `${tmuxName}:`, "-n", winName, ...cwdArg, ...paneEnv, "-P", "-F", "#{pane_id}"])
411
+ : await runTmux(["new-session", "-d", "-s", tmuxName, "-n", winName, ...cwdArg, ...paneEnv, "-P", "-F", "#{pane_id}"]);
412
+ if (!created.ok)
413
+ return { reason: `tmux ${has.code === 0 ? "new-window" : "new-session"} failed: ${created.stderr.trim() || created.code}` };
414
+ const pane = created.stdout.split("\n").map((s) => s.trim()).filter(Boolean)[0] ?? "";
415
+ if (!pane)
416
+ return { reason: "tmux returned no pane id" };
417
+ log.info({ tmuxName, winName, tmuxPane: pane, cwd, sessionId, cli: backend.name, reused: has.code === 0 }, "spawn-tmux: pane created");
418
+ return { pane };
419
+ };
364
420
  // DISABLE_AUTOUPDATER=1 防止新 pane 启动时弹出 "An update is available" 询问 ——
365
421
  // 该交互会吞掉首条 paste-buffer 注入,导致仅落字符不进入 claude 输入框。
366
422
  // On old tmux the pane never got the two anti-update-prompt vars via `-e`, so
@@ -370,53 +426,94 @@ export const spawnTmuxClaude = async ({ cfg, log, resumeSessionId, sessionId: fr
370
426
  "DISABLE_AUTOUPDATER=1",
371
427
  ];
372
428
  const wanted = model?.trim() ?? "";
373
- const exactId = wanted && backend.modelFlag ? (exactModelId(wanted, knownModels ?? []) ?? (isLaunchAlias(wanted) ? wanted : undefined)) : undefined;
374
429
  const effortArg = effort && backend.effortFlag ? effort : undefined;
375
- const argv = [
376
- ...(resumeSessionId ? ["--resume", sessionId, ...(forkSession ? ["--fork-session"] : [])] : ["--session-id", sessionId]),
377
- ...(exactId ? [backend.modelFlag, exactId] : []),
378
- ...(effortArg ? [backend.effortFlag, effortArg] : []),
379
- ...cfg.wrc.extraArgs,
380
- ].map(shQuote);
381
- const cmd = [...envPrefix, backend.bin, ...argv, charterArg(cfg, backend, sessionId, systemPrompt, log)]
382
- .filter(Boolean)
383
- .join(" ");
384
- // Old tmux couldn't set the pane's start-dir via `-c`; cd into it first.
385
- const launch = supportsC ? cmd : `cd ${shQuote(cwd)} && ${cmd}`;
386
- const sent = await runTmux(["send-keys", "-t", tmuxPane, launch, "Enter"]);
387
- if (!sent.ok) {
388
- // Kill only this window/pane, never the shared session.
389
- await runTmux(["kill-pane", "-t", tmuxPane]);
390
- return { ok: false, reason: `tmux send-keys failed: ${sent.stderr.trim() || sent.code}` };
430
+ const charter = charterArg(cfg, backend, sessionId, systemPrompt, log);
431
+ // A fresh session relaunched after a failed first try resumes instead if that
432
+ // try already wrote the transcript — `--session-id` refuses an existing one.
433
+ const commandFor = (flagModel, retry) => {
434
+ const resume = !!resumeSessionId || (retry && existsSync(jsonlPath));
435
+ const argv = [
436
+ ...(resume ? ["--resume", sessionId, ...(forkSession ? ["--fork-session"] : [])] : ["--session-id", sessionId]),
437
+ ...(flagModel ? [backend.modelFlag, flagModel] : []),
438
+ ...(effortArg ? [backend.effortFlag, effortArg] : []),
439
+ ...cfg.wrc.extraArgs,
440
+ ].map(shQuote);
441
+ const cmd = [...envPrefix, backend.bin, ...argv, charter].filter(Boolean).join(" ");
442
+ // Old tmux couldn't set the pane's start-dir via `-c`; cd into it first.
443
+ return `${supportsC ? cmd : `cd ${shQuote(cwd)} && ${cmd}`}${EXIT_TAIL}`;
444
+ };
445
+ // One pane, one CLI process, verified up. `failure` = the CLI couldn't take
446
+ // `flagModel`: it quit, or came up not knowing it.
447
+ const launch = async (flagModel, retry = false) => {
448
+ const opened = await openPane();
449
+ if ("reason" in opened)
450
+ return { ok: false, reason: opened.reason };
451
+ const { pane } = opened;
452
+ const line = commandFor(flagModel, retry);
453
+ const sent = await runTmux(["send-keys", "-t", pane, line, "Enter"]);
454
+ if (!sent.ok) {
455
+ // Kill only this window/pane, never the shared session.
456
+ await runTmux(["kill-pane", "-t", pane]);
457
+ return { ok: false, reason: `tmux send-keys failed: ${sent.stderr.trim() || sent.code}` };
458
+ }
459
+ // Actively verify the TUI reached interactive state before returning.
460
+ // claude does NOT create the transcript jsonl until it processes the first
461
+ // user input, so we don't wait for the file — mirror tail tolerates a
462
+ // missing jsonl and starts emitting once claude writes the first line.
463
+ const tui = await waitForTuiReady(pane, line, backend, log);
464
+ if (tui.exited)
465
+ return { ok: true, pane, ready: false, failure: tui.exited };
466
+ const unknown = !!flagModel && tui.ready && modelNotRecognized(await capturePaneBottom(pane, "-"), flagModel);
467
+ return { ok: true, pane, ready: tui.ready, ...(unknown ? { failure: `CLI 不认识 --model ${flagModel} (欢迎框原样回显, 首轮会 400)` } : {}) };
468
+ };
469
+ // Whatever was asked goes straight in with `--model`. Only when the CLI
470
+ // proves it can't take it is the pane thrown away and relaunched bare —
471
+ // the ask then goes through the picker like any colloquial name.
472
+ const flagModel = wanted && backend.modelFlag ? wanted : undefined;
473
+ const first = await launch(flagModel);
474
+ if (!first.ok)
475
+ return { ok: false, reason: first.reason };
476
+ let landed = first;
477
+ const launchFailure = flagModel ? first.failure : undefined;
478
+ if (launchFailure) {
479
+ log.warn({ tmuxPane: first.pane, model: flagModel, reason: launchFailure }, "spawn-tmux: launch failure with --model, relaunching without it");
480
+ await runTmux(["kill-pane", "-t", first.pane]);
481
+ const bare = await launch(undefined, true);
482
+ if (!bare.ok)
483
+ return { ok: false, reason: `${launchFailure}; 不带 --model 重起也失败: ${bare.reason}` };
484
+ if (bare.failure) {
485
+ await runTmux(["kill-pane", "-t", bare.pane]);
486
+ return { ok: false, reason: `${launchFailure}; 不带 --model 重起也失败: ${bare.failure}` };
487
+ }
488
+ landed = bare;
391
489
  }
392
- // Actively verify the TUI reached interactive state before returning.
393
- // claude does NOT create the transcript jsonl until it processes the first
394
- // user input, so we don't wait for the file — mirror tail tolerates a
395
- // missing jsonl and starts emitting once claude writes the first line.
396
- const tuiReady = await waitForTuiReady(tmuxPane, cmd, backend, log);
490
+ const tmuxPane = landed.pane;
491
+ const viaFlag = !!flagModel && !launchFailure;
397
492
  // Model selection needs the TUI actually up (it types `/model` into the
398
493
  // input box and drives the picker) — skip it if readiness never confirmed, same as any other
399
494
  // post-launch step would have to.
400
- // An exact id already went in with `--model`; persist the id itself, so the
401
- // next respawn resolves on the first sighting.
402
- let resolvedModel = exactId ?? "";
495
+ let resolvedModel = viaFlag ? wanted : "";
403
496
  let modelWarning;
404
- if (wanted && !exactId && tuiReady) {
497
+ if (wanted && !viaFlag && landed.ready) {
405
498
  const sel = await selectModel(tmuxPane, wanted, log);
406
499
  if (sel.ok) {
407
500
  resolvedModel = sel.applied ?? wanted;
408
501
  }
409
502
  else {
410
- resolvedModel = wanted;
503
+ // Record where the pane really is, not the ask that just failed twice.
504
+ resolvedModel = sel.current ?? "";
411
505
  modelWarning = sel.reason;
412
- log.warn({ tmuxPane, wanted, reason: sel.reason }, "spawn-tmux: model selection failed, pane stays on its prior model");
506
+ log.warn({ tmuxPane, wanted, current: sel.current, reason: sel.reason }, "spawn-tmux: model selection failed, pane stays on its prior model");
413
507
  }
414
508
  }
415
- else if (wanted && !exactId) {
416
- resolvedModel = wanted;
509
+ else if (wanted && !viaFlag) {
510
+ // Unverified either way; the raw ask is only kept when the CLI never refused it.
511
+ resolvedModel = launchFailure ? "" : wanted;
417
512
  modelWarning = "TUI 未就绪, 跳过了模型选择";
418
513
  }
419
- log.info({ tmuxName, tmuxPane, sessionId, jsonlPath, cwd, cli: backend.name, model: resolvedModel, viaFlag: !!exactId, effort: effortArg }, "spawn-tmux: ready");
514
+ if (launchFailure)
515
+ modelWarning = `${launchFailure}; ${modelWarning ?? "已不带 --model 重起并改走 /model 选择器"}`;
516
+ log.info({ tmuxName, tmuxPane, sessionId, jsonlPath, cwd, cli: backend.name, model: resolvedModel, viaFlag, relaunched: !!launchFailure, effort: effortArg }, "spawn-tmux: ready");
420
517
  return {
421
518
  ok: true, sessionId, jsonlPath, tmuxPane, tmuxSession: tmuxName, cwd, cli: backend.name,
422
519
  ...(wanted ? { model: resolvedModel, ...(modelWarning ? { modelWarning } : {}) } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"spawn-tmux.js","sourceRoot":"","sources":["../../daemon/spawn-tmux.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spawn-tmux.js","sourceRoot":"","sources":["../../daemon/spawn-tmux.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,EAAE;AACF,4EAA4E;AAC5E,yEAAyE;AACzE,sCAAsC;AACtC,EAAE;AACF,sEAAsE;AACtE,yEAAyE;AACzE,2EAA2E;AAC3E,uEAAuE;AACvE,8EAA8E;AAC9E,wCAAwC;AACxC,EAAE;AACF,YAAY;AACZ,oFAAoF;AACpF,kDAAkD;AAClD,uEAAuE;AACvE,sEAAsE;AACtE,EAAE;AACF,6EAA6E;AAC7E,0EAA0E;AAC1E,4EAA4E;AAC5E,4EAA4E;AAC5E,4EAA4E;AAC5E,6CAA6C;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAChH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGpD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,cAAc,EAAwC,MAAM,2BAA2B,CAAC;AACxI,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAG7D,8EAA8E;AAC9E,6EAA6E;AAC7E,gFAAgF;AAChF,0EAA0E;AAC1E,+CAA+C;AAC/C,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,GAAoB,EAAc,EAAE;IACnE,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,OAAO,CAAC,IAAI;QAAE,OAAO,OAAO,CAAC;IACjD,MAAM,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;IACjD,6EAA6E;IAC7E,6EAA6E;IAC7E,6DAA6D;IAC7D,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACvE,CAAC,CAAC;AASF;;;;;uFAKuF;AACvF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE;IAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACvD,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;AACzD,CAAC,CAAC,EAAE,CAAC;AAEL;;;wBAGwB;AACxB,IAAI,eAAoF,CAAC;AACzF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EAAyD,EAAQ,EAAE;IACxG,eAAe,GAAG,EAAE,CAAC;AACvB,CAAC,CAAC;AASF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAAc,EAAE,OAAoB,EAAE,EAAuB,EAAE,CAAE,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;IAC7G,oEAAoE;IACpE,8DAA8D;IAC9D,8DAA8D;IAC9D,yCAAyC;IACzC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE;QAC1C,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC9D,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;KACtE,CAAC,CAAC;IACH,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,KAAiC,CAAC;IACtC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,eAAe,CAAC;IACpD,MAAM,MAAM,GAAG,CAAC,CAAa,EAAQ,EAAE;QACrC,IAAI,OAAO;YAAE,OAAO;QACpB,OAAO,GAAG,IAAI,CAAC;QACf,IAAI,KAAK;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO,CAAC,CAAC,CAAC,CAAC;IACb,CAAC,CAAC;IACF,yEAAyE;IACzE,uEAAuE;IACvE,gEAAgE;IAChE,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YACtB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrB,eAAe,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YACvC,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,sBAAsB,SAAS,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7H,CAAC,EAAE,SAAS,CAAC,CAAC;IAChB,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACpE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACpE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1F,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACvF,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;QAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC,CAAC,CAAC;AAGL,+EAA+E;AAC/E,4EAA4E;AAC5E,qEAAqE;AACrE,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAU,EAAE;IAC/C,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACpC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC;AAClE,CAAC,CAAC;AACF,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAG5B,wEAAwE;AACxE,gFAAgF;AAChF,6EAA6E;AAC7E,6EAA6E;AAC7E,MAAM,OAAO,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AAE1G,wEAAwE;AACxE,uEAAuE;AACvE,8EAA8E;AAC9E,6EAA6E;AAC7E,2EAA2E;AAC3E,8EAA8E;AAC9E,0EAA0E;AAC1E,MAAM,cAAc,GAAG,CAAC,CAAS,EAAU,EAAE;IAC3C,MAAM,WAAW,GAAG,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QACvD,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YAC3C,CAAC,CAAC,CAAC,CAAC;IACN,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACjG,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3D,CAAC,CAAC;AAEF;mFACmF;AACnF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,IAAY,EAAuB,EAAE,CAC9E,OAAO,CAAC,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAE/D,yEAAyE;AACzE,8EAA8E;AAC9E,0DAA0D;AAC1D,MAAM,aAAa,GAAG,IAAI,CAAC;AAC3B,2EAA2E;AAC3E,MAAM,oBAAoB,GAAG,MAAM,CAAC;AACpC,yCAAyC;AACzC,MAAM,OAAO,GAAG,GAAG,CAAC;AACpB,iDAAiD;AACjD,mDAAmD;AACnD,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B,6EAA6E;AAC7E,2EAA2E;AAC3E,MAAM,YAAY,GAAG,sCAAsC,CAAC;AAE5D,0EAA0E;AAC1E,+CAA+C;AAC/C,MAAM,UAAU,GAAG,2DAA2D,CAAC;AAE/E,MAAM,iBAAiB,GAAG,KAAK,EAAE,IAAY,EAAE,IAAkB,EAAmB,EAAE;IACpF,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;IACnG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9B,CAAC,CAAC;AAEF,4EAA4E;AAC5E,4EAA4E;AAC5E,yDAAyD;AACzD,MAAM,SAAS,GAAG,kDAAkD,CAAC;AACrE,MAAM,OAAO,GAAG,0BAA0B,CAAC;AAE3C,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAY,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAEhG;;8EAE8E;AAC9E,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,MAAc,EAAsB,EAAE;IAC5D,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7F,OAAO,mBAAmB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC7E,CAAC,CAAC;AAEF;;;;;;;;;gCASgC;AAChC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAc,EAAE,MAAc,EAAW,EAAE;IAC5E,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,CAAC,CAAS,EAAW,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/F,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1B,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC;SAC7B,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;SACjD,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC;AAC/D,CAAC,CAAC;AAQF,4EAA4E;AAC5E,+EAA+E;AAC/E,8BAA8B;AAC9B,EAAE;AACF,8DAA8D;AAC9D,qDAAqD;AACrD,uDAAuD;AACvD,qDAAqD;AACrD,EAAE;AACF,wDAAwD;AACxD,2CAA2C;AAC3C,MAAM,eAAe,GAAG,KAAK,EAAE,IAAY,EAAE,GAAW,EAAE,OAAmB,EAAE,GAAW,EAAqB,EAAE;IAC/G,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACtB,MAAM,QAAQ,GAAG,EAAE,GAAG,aAAa,GAAG,oBAAoB,CAAC;IAC3D,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC/C,IAAI,CAAC,EAAE,MAAM,KAAK,MAAM;gBAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACjD,IAAI,CAAC;gBAAE,UAAU,GAAG,IAAI,CAAC;QAC3B,CAAC;QACD,+EAA+E;QAC/E,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,aAAa;YAAE,SAAS;QAC9C,gDAAgD;QAChD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,OAAO;YAAE,SAAS;QAC7C,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM;YAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAC5C,sDAAsD;QACtD,8CAA8C;QAC9C,IAAI,UAAU;YAAE,SAAS;QACzB,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACnD,2EAA2E;QAC3E,yEAAyE;QACzE,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,sDAAsD,CAAC,CAAC;YAC3E,MAAM,OAAO,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;YACvD,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;YACjB,MAAM,OAAO,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;YACvD,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;QACD,yEAAyE;QACzE,2EAA2E;QAC3E,iDAAiD;QACjD,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,aAAa,GAAG,oBAAoB,GAAG,CAAC,EAAE,CAAC;YAC3F,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,yDAAyD,CAAC,CAAC;YAC9E,MAAM,OAAO,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YAClD,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;IACD,0DAA0D;IAC1D,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,MAAM;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC5C,IAAI,UAAU,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAClE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,kDAAkD,CAAC,CAAC;IAC7F,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1B,CAAC,CAAC;AAkGF,MAAM,sBAAsB,GAAG,CAAC,SAAiB,EAAY,EAAE;IAC7D,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IACjC,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC;AAC/E,CAAC,CAAC;AACF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAAiB,EAAE,GAAW,EAAE,GAAW,EAAQ,EAAE;IAClF,MAAM,UAAU,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IACrD,MAAM,MAAM,GAAW,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,CAAC,CAAE,CAAC;IACrE,IAAI,GAAG,GAA2E,EAAE,CAAC;IACrF,IAAI,CAAC;QACH,IAAI,UAAU,CAAC,MAAM,CAAC;YAAE,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACzE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAG,CAAW,CAAC,OAAO,EAAE,EAAE,yCAAyC,CAAC,CAAC;IAC7F,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAC;IACvC,MAAM,IAAI,GAAsB,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IACpD,IAAI,IAAI,CAAC,sBAAsB,IAAI,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,mCAAmC,EAAE,CAAC;QAC3H,OAAO,CAAC,oCAAoC;IAC9C,CAAC;IACD,QAAQ,CAAC,GAAG,CAAC,GAAG;QACd,GAAG,IAAI;QACP,sBAAsB,EAAE,IAAI;QAC5B,0BAA0B,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7E,mCAAmC,EAAE,IAAI;QACzC,uCAAuC,EAAE,IAAI;KAC9C,CAAC;IACF,IAAI,CAAC;QACH,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACpD,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,gCAAgC,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAG,CAAW,CAAC,OAAO,EAAE,EAAE,8BAA8B,CAAC,CAAC;IAClF,CAAC;AACH,CAAC,CAAC;AAEF;yDACyD;AACzD,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,aAAa,GAAG,CAAC,GAAW,EAAQ,EAAE;IAC1C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAChE,IAAI,KAAK,CAAC,MAAM,IAAI,YAAY;YAAE,OAAO;QACzC,KAAK;aACF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;aACpE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACzB,KAAK,CAAC,YAAY,CAAC;aACnB,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;YAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;AAC1B,CAAC,CAAC;AAEF;;;sCAGsC;AACtC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,OAAmB,EAAE,SAAiB,EAAE,OAA2B,EAAE,GAAW,EAAU,EAAE;IAC3H,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACpC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB;QAAE,OAAO,EAAE,CAAC;IAClD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC;QAC9D,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,KAAK,CAAC,CAAC;QAC1C,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAClC,aAAa,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,GAAG,OAAO,CAAC,gBAAgB,WAAW,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;IACjE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAG,CAAW,CAAC,OAAO,EAAE,EAAE,6DAA6D,CAAC,CAAC;QACvG,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,eAAe,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAa,EAAwB,EAAE;IACzM,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;IACxF,MAAM,SAAS,GAAG,eAAe,IAAI,cAAc,IAAI,UAAU,EAAE,CAAC;IACpE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,SAAS,QAAQ,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,+BAA+B;IACpE,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC;IAExD,8EAA8E;IAC9E,6EAA6E;IAC7E,8EAA8E;IAC9E,8EAA8E;IAC9E,6EAA6E;IAC7E,qDAAqD;IACrD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,uBAAuB,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;IACxG,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,GAAG,IAAI,GAAG,CAAC;IAC7B,MAAM,SAAS,GAAG,GAAG,IAAI,GAAG,CAAC;IAE7B,6EAA6E;IAC7E,uEAAuE;IACvE,2EAA2E;IAC3E,0EAA0E;IAC1E,mCAAmC;IACnC,IAAI,CAAC;QACH,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,uBAAwB,CAAW,CAAC,OAAO,EAAE,EAAE,CAAC;IAC9E,CAAC;IAED,0EAA0E;IAC1E,0EAA0E;IAC1E,yEAAyE;IACzE,wEAAwE;IACxE,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAEtC,0EAA0E;IAC1E,4EAA4E;IAC5E,EAAE;IACF,6EAA6E;IAC7E,2EAA2E;IAC3E,4EAA4E;IAC5E,6EAA6E;IAC7E,uEAAuE;IACvE,6EAA6E;IAC7E,qDAAqD;IACrD,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,4BAA4B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxG,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,KAAK,IAAoD,EAAE;QAC1E,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,KAAK,CAAC;YAC5B,6EAA6E;YAC7E,2EAA2E;YAC3E,6EAA6E;YAC7E,CAAC,CAAC,MAAM,OAAO,CAAC,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,QAAQ,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;YAC3H,CAAC,CAAC,MAAM,OAAO,CAAC,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;QACzH,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,YAAY,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7I,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACtF,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC;QACzD,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,EAAE,0BAA0B,CAAC,CAAC;QACvI,OAAO,EAAE,IAAI,EAAE,CAAC;IAClB,CAAC,CAAC;IAEF,sEAAsE;IACtE,iDAAiD;IACjD,8EAA8E;IAC9E,qEAAqE;IACrE,MAAM,SAAS,GAAG;QAChB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,0BAA0B,EAAE,4BAA4B,CAAC,CAAC;QAChF,uBAAuB;KACxB,CAAC;IACF,MAAM,MAAM,GAAG,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACnC,MAAM,SAAS,GAAG,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACpE,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;IACvE,8EAA8E;IAC9E,6EAA6E;IAC7E,MAAM,UAAU,GAAG,CAAC,SAA6B,EAAE,KAAc,EAAU,EAAE;QAC3E,MAAM,MAAM,GAAG,CAAC,CAAC,eAAe,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;QACrE,MAAM,IAAI,GAAG;YACX,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;YAC/G,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAU,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAW,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtD,GAAG,GAAG,CAAC,GAAG,CAAC,SAAS;SACrB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACf,MAAM,GAAG,GAAG,CAAC,GAAG,SAAS,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpF,yEAAyE;QACzE,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;IAC3E,CAAC,CAAC;IAGF,4EAA4E;IAC5E,mDAAmD;IACnD,MAAM,MAAM,GAAG,KAAK,EAAE,SAA6B,EAAE,KAAK,GAAG,KAAK,EAAqB,EAAE;QACvF,MAAM,MAAM,GAAG,MAAM,QAAQ,EAAE,CAAC;QAChC,IAAI,QAAQ,IAAI,MAAM;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QACpE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;QACxB,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,wDAAwD;YACxD,MAAM,OAAO,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YACzC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,0BAA0B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5F,CAAC;QACD,sEAAsE;QACtE,2EAA2E;QAC3E,sEAAsE;QACtE,uEAAuE;QACvE,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QAC5D,IAAI,GAAG,CAAC,MAAM;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;QAC7E,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,KAAK,IAAI,kBAAkB,CAAC,MAAM,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;QAC9G,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,mBAAmB,SAAS,qBAAqB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAClI,CAAC,CAAC;IAEF,wEAAwE;IACxE,wEAAwE;IACxE,iEAAiE;IACjE,MAAM,SAAS,GAAG,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;IAC1D,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,MAAM,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5D,IAAI,aAAa,EAAE,CAAC;QAClB,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,iEAAiE,CAAC,CAAC;QAC/I,MAAM,OAAO,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,uBAAuB,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QACjG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,OAAO,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,uBAAuB,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QACtF,CAAC;QACD,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;IAC7B,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,aAAa,CAAC;IAE9C,wEAAwE;IACxE,6FAA6F;IAC7F,kCAAkC;IAClC,IAAI,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1C,IAAI,YAAgC,CAAC;IACrC,IAAI,MAAM,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QACrD,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;YACX,aAAa,GAAG,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,uEAAuE;YACvE,aAAa,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;YAClC,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC;YAC1B,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,mEAAmE,CAAC,CAAC;QAChJ,CAAC;IACH,CAAC;SAAM,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAC9B,iFAAiF;QACjF,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5C,YAAY,GAAG,kBAAkB,CAAC;IACpC,CAAC;IACD,IAAI,aAAa;QAAE,YAAY,GAAG,GAAG,aAAa,KAAK,YAAY,IAAI,8BAA8B,EAAE,CAAC;IAExG,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,mBAAmB,CAAC,CAAC;IACnL,OAAO;QACL,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI;QACvF,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtF,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5C,CAAC;AACJ,CAAC,CAAC"}
@@ -1,26 +1,67 @@
1
- // 群管家 (聊天的默认会话) 的手闸。管家跑的是 models.router 那档轻模型, 宪章里「分派, 别亲手干」
1
+ // 群管家 (聊天的默认会话) 的手闸。管家跑的是 models.steward 那档轻模型, 宪章里「分派, 别亲手干」
2
2
  // 它一接到活就忘 —— 自己读一片代码、自己改, 全群排在它后面。所以在 PreToolUse 上由守护进程拦:
3
- // 改文件 / 开子代理一律拒; 自己查 (读、搜、跑命令、外部工具) 每轮限 budget 次, 够答一两句话,
4
- // 不够啃完一片代码。拒的理由写成改道说明 —— 模型读 deny reason 就知道下一步是 dispatch。
3
+ // 改文件 / 开子代理 / 读代码一律拒; 其余自己查 (状态命令、外部工具) 每轮限 budget 次。
4
+ // 读代码也一律拒, 是因为按次数的预算拦不住它: grep 一下、分段 Read 两刀就在预算内读完一个
5
+ // 模块, 然后自己答了「机制 / 还会不会…」类的问题 —— 能读就会读完就答, 只能让它读不了。
6
+ // 拒的理由写成改道说明 —— 模型读 deny reason 就知道下一步是 dispatch。
5
7
  /** 不占预算: 分派与协作本身 (wezard MCP), 以及不碰工作区的元工具。 */
6
8
  const FREE = new Set(["ToolSearch", "TodoWrite", "AskUserQuestion", "EnterPlanMode", "ExitPlanMode", "Skill"]);
7
9
  /** 亲手干活: 管家一次都不做。 */
8
10
  const HANDS = new Set(["Edit", "Write", "MultiEdit", "NotebookEdit", "Agent", "Task"]);
9
- const kindOf = (toolName) => FREE.has(toolName) || /wezard/i.test(toolName) ? "free" : HANDS.has(toolName) ? "hands" : "look";
11
+ /** 读工作区内容的工具: 管家也一次都不做。 */
12
+ const READS = new Set(["Read", "Grep", "Glob", "NotebookRead", "LSP"]);
13
+ /** 读文件内容的 shell 命令: 只认命令位 (行首或 `;` `&&` `||` `(` `$(` 之后) —— 管道后面的 grep / head 读的是上游输出 (`git log | grep x`), 不算读代码。 */
14
+ const SHELL_READ = /(?:^|[;&|(]\s*|\$\(\s*)(?:cat|head|tail|sed|awk|grep|egrep|rg|ag|less|more|bat|nl|xxd|od|git\s+(?:show|diff|blame|grep))\b/;
15
+ const shellReads = (cmd) => cmd.split(/\n/).some((line) => SHELL_READ.test(line.replace(/\|\|/g, ";").replace(/\|[^|;&]*/g, "")));
16
+ // Bash 也能亲手干活: Edit/Write 被拦之后模型会绕到 sed -i / 重定向 / tee。这类判 hands,
17
+ // 不算 look —— 否则每轮 budget 次机会足够它把文件改完。`>&2` / `2>&1` / `2>/dev/null`
18
+ // 不写工作区, 放行; 引号里的 "-i" 可能误伤, 管家场景下宁严勿宽 (deny 只叫他去 dispatch)。
19
+ const REDIRECT = /(?:^|[\s;|&(])\d*>>?\s*([^\s&|]+)/g;
20
+ const bashWrites = (command) => {
21
+ if (/\bsed\b[^|;&]*\s-\w*i/.test(command))
22
+ return true;
23
+ if (/\btee\b/.test(command))
24
+ return true;
25
+ for (const m of command.matchAll(REDIRECT)) {
26
+ if (!(m[1] ?? "").startsWith("/dev/"))
27
+ return true;
28
+ }
29
+ return false;
30
+ };
31
+ const kindOf = (toolName, toolInput) => {
32
+ if (FREE.has(toolName) || /wezard/i.test(toolName))
33
+ return "free";
34
+ if (HANDS.has(toolName))
35
+ return "hands";
36
+ if (READS.has(toolName))
37
+ return "read";
38
+ const cmd = toolInput?.command;
39
+ if (toolName !== "Bash" || typeof cmd !== "string")
40
+ return "look";
41
+ // 又读又写的 (sed -i 同时中两条) 先算写 —— 写比读严重, 拒的理由也要说对。
42
+ if (bashWrites(cmd))
43
+ return "hands";
44
+ return shellReads(cmd) ? "read" : "look";
45
+ };
10
46
  const DISPATCH = "`dispatch({task, name, description})` 交出去 (task 写人的原话加你知道的背景)";
11
- const handsReason = (toolName) => `你是这个群的管家, ${toolName} 是亲手干活 —— 改文件、开子代理管家一律不做, 用 ${DISPATCH}。这是守护进程拦的, 重试结果一样。`;
12
- const budgetReason = (budget) => `这一轮你已经自己查了 ${budget} 次 —— 管家每轮只够看一两眼。还要接着读代码 / 跑命令, 说明这是一件活: 用 ${DISPATCH}, 结论回来再向人交代。这是守护进程拦的, 别重试。`;
47
+ const handsReason = (toolName) => toolName === "Bash"
48
+ ? `你是这个群的管家, 这条 Bash 在写文件 —— 改文件管家一律不做 (sed -i / 重定向 / tee 也算), 用 ${DISPATCH}。这是守护进程拦的, 重试结果一样。`
49
+ : `你是这个群的管家, ${toolName} 是亲手干活 —— 改文件、开子代理管家一律不做, 用 ${DISPATCH}。这是守护进程拦的, 重试结果一样。`;
50
+ const readReason = (toolName) => `你是这个群的管家, ${toolName} 是在读代码 —— 读代码就是一件活, 管家一次都不读, 哪怕看一眼就像能答 (机制 / 原理 / 「现在还会不会…」/ 方案 / 排查都算): 用 ${DISPATCH}, 结论回来再向人交代。这是守护进程拦的, 别重试、别换工具绕。`;
51
+ const budgetReason = (budget) => `这一轮你已经自己跑了 ${budget} 次命令 —— 管家每轮只够看一两眼状态。还要接着查, 说明这是一件活: 用 ${DISPATCH}, 结论回来再向人交代。这是守护进程拦的, 别重试。`;
13
52
  /** 判一次管家的工具调用: 放行 = undefined, 拒 = 理由。`turn` 换了即新一轮; budget < 0 = 不设闸。 */
14
53
  export const makeStewardGuard = () => {
15
54
  const tallies = new Map();
16
55
  return (a) => {
17
56
  if (a.budget < 0)
18
57
  return undefined;
19
- const kind = kindOf(a.toolName);
58
+ const kind = kindOf(a.toolName, a.toolInput);
20
59
  if (kind === "free")
21
60
  return undefined;
22
61
  if (kind === "hands")
23
62
  return handsReason(a.toolName);
63
+ if (kind === "read")
64
+ return readReason(a.toolName);
24
65
  const prev = tallies.get(a.sessionId);
25
66
  const used = prev?.turn === a.turn ? prev.used : 0;
26
67
  if (used >= a.budget)
@@ -1 +1 @@
1
- {"version":3,"file":"steward-guard.js","sourceRoot":"","sources":["../../daemon/steward-guard.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,0DAA0D;AAC1D,0DAA0D;AAC1D,2DAA2D;AAE3D,+CAA+C;AAC/C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/G,qBAAqB;AACrB,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAGvF,MAAM,MAAM,GAAG,CAAC,QAAgB,EAAQ,EAAE,CACxC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AAEnG,MAAM,QAAQ,GAAG,+DAA+D,CAAC;AACjF,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAU,EAAE,CAC/C,aAAa,QAAQ,+BAA+B,QAAQ,oBAAoB,CAAC;AACnF,MAAM,YAAY,GAAG,CAAC,MAAc,EAAU,EAAE,CAC9C,cAAc,MAAM,8CAA8C,QAAQ,4BAA4B,CAAC;AAKzG,0EAA0E;AAC1E,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAiB,CAAC;IACzC,OAAO,CAAC,CAAwE,EAAsB,EAAE;QACtG,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,IAAI,KAAK,MAAM;YAAE,OAAO,SAAS,CAAC;QACtC,IAAI,IAAI,KAAK,OAAO;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM;YAAE,OAAO,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3D,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"steward-guard.js","sourceRoot":"","sources":["../../daemon/steward-guard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /** 记下 `now` 这一次之后这个群的账, 与这一次是否该提醒 (fire = 窗口内的次数, 0 = 不提)。
2
+ * 提醒过就清空窗口: 冷却期满之后要重新攒够一窗才再提, 而不是冷却一过立刻因为旧账又响一次。 */
3
+ export const step = (row, now, p) => {
4
+ const at = [...(row?.at ?? []).filter((t) => now - t < p.windowMs), now];
5
+ const cooling = row?.nudgedAt !== undefined && now - row.nudgedAt < p.cooldownMs;
6
+ const fire = !cooling && at.length >= p.threshold ? at.length : 0;
7
+ const nudgedAt = fire ? now : row?.nudgedAt;
8
+ return { row: { at: fire ? [] : at, ...(nudgedAt !== undefined ? { nudgedAt } : {}) }, fire };
9
+ };
10
+ /** 七天没动静的群不留账 —— 冷却最长也就按天算。 */
11
+ const STALE_MS = 7 * 24 * 60 * 60 * 1000;
12
+ export const gcNudge = (rows, now = Date.now()) => Object.fromEntries(Object.entries(rows).filter(([, r]) => Math.max(r.nudgedAt ?? 0, ...r.at) > now - STALE_MS));
13
+ /** config_set 路径里写哪个键: 聊天名好认, 但路径按 `.` 切段 —— 名字里带点就退回 principal。 */
14
+ export const policyKeyOf = (name, base) => (name && !name.includes(".") ? name : base);
15
+ /** 挂进管家信箱的那一行。`chat` = config_set 路径里写的聊天 (名字或 principal)。 */
16
+ export const renderNudge = (chat, n, windowMin, cooldownH) => `本群最近 ${windowMin} 分钟有 ${n} 次 wizard 间公开往来 (派活气泡 + 回复都进了群)。人下次在群里跟你说话时顺带问一句要不要开**顶层模式** (人只和你 / 人点名的 wizard 说话, wizard 之间一律私聊、过程只在 rolepage): 人说开 → \`config_set({path:"chatPolicy.${chat}.topOnly", value:true})\`; 人不开就别再提 (${cooldownH} 小时内守护进程不再提醒)`;
17
+ /** 公开往来的计数器: `count(chat)` 在每条 wizard 间公开气泡进群时调一次。策略每次现读 (热生效); 阈值或窗口为 0 = 关。 */
18
+ export const createTopOnlyNudge = (o) => ({
19
+ count: (chat) => {
20
+ const p = o.policy();
21
+ if (p.threshold <= 0 || p.windowMs <= 0)
22
+ return;
23
+ const { row, fire } = step(o.store.get(chat), (o.now ?? Date.now)(), p);
24
+ o.store.set(chat, row);
25
+ if (fire)
26
+ o.nudge(chat, fire);
27
+ },
28
+ });
29
+ //# sourceMappingURL=top-only-nudge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"top-only-nudge.js","sourceRoot":"","sources":["../../daemon/top-only-nudge.ts"],"names":[],"mappings":"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"}