@chatcode/chatcode-cli 3.0.2-rc.3 → 3.0.2-rc.4

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 (42) hide show
  1. package/README.i18n.yaml +2 -2
  2. package/README.md +6 -0
  3. package/README.zh.md +6 -0
  4. package/lib/bin.js +11 -67
  5. package/lib/{command-errors-CIYn1nnW.js → command-errors-uo0j5Wi8.js} +12 -12
  6. package/lib/{command-trees-8o99Bws7.js → command-trees-D4SZ2sGk.js} +2 -2
  7. package/lib/{component-identity-CnmIKHEF.js → component-identity-C02l24iT.js} +3 -3
  8. package/lib/{dump-config-BSTrhTT_.js → dump-config-CauO75nE.js} +1 -1
  9. package/lib/dump-config-CijLv_kn.js +2 -0
  10. package/lib/{dump-config-schema-Cz4A13GB.js → dump-config-schema-CObLWWaW.js} +2 -2
  11. package/lib/{extension-events-DciGPKJa.js → extension-events-D6DbIdnG.js} +20 -20
  12. package/lib/{home-migration-DLaSvmfn.js → home-migration-BjDmRwBB.js} +23 -4
  13. package/lib/{host-access-CmD27uhQ.js → host-access-BdqThvw7.js} +1 -1
  14. package/lib/{keymap-CFChEJ2W.js → keymap-DFoC50J1.js} +2 -2
  15. package/lib/{plugin-ChwScT9e.js → plugin-B37GhsdI.js} +446 -488
  16. package/lib/{plugin-DYHtreEd.js → plugin-Cn-hyYY8.js} +1 -1
  17. package/lib/{profile-boot-Blq7uqhx.js → profile-boot-SJGbpLgN.js} +13 -1
  18. package/lib/profile-boot.js +1 -1
  19. package/lib/{scenes-ai_8sHDs.js → scenes-Dk6DYkO9.js} +3 -3
  20. package/lib/{settings-sections-QQ1-2lhL.js → settings-sections-D4Ozrymr.js} +3 -3
  21. package/lib/startup-diagnostics-C_hRCp-q.js +91 -0
  22. package/lib/{themes-DTzG_9I_.js → themes-DDI83rNa.js} +12 -12
  23. package/lib/tui-compat-command-trees.js +1 -1
  24. package/lib/tui-compat-extensions.js +3 -3
  25. package/lib/tui-compat-plugin-host.js +5 -5
  26. package/lib/tui-compat-scenes.js +1 -1
  27. package/lib/tui-compat-settings-sections.js +1 -1
  28. package/lib/tui-compat-working-activity.js +1 -1
  29. package/lib/tui-compat-workspaces.js +1 -1
  30. package/lib/tui-compat.js +5 -5
  31. package/lib/{tuiDisplayPrefs-BCHRRcfe.js → tuiDisplayPrefs-CJ9aBVkB.js} +1 -1
  32. package/lib/types/home-migration.d.ts +8 -0
  33. package/lib/types/startup-diagnostics.d.ts +13 -0
  34. package/lib/{workspaces-CznCgVHv.js → workspaces-Dt_J35P0.js} +2 -2
  35. package/package.json +23 -23
  36. package/runtime/manifest.json +1 -1
  37. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-account/lib/client.js +2 -2
  38. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-general/lib/client.js +1 -1
  39. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-sidebar/lib/client.js +1 -1
  40. package/runtime/node_modules/@deepseek-ai/dsh-session-log-export/lib/client.js +3 -4
  41. package/runtime/node_modules/@deepseek-ai/dsh-session-log-export/lib/types/client/HeaderAction.d.ts +1 -1
  42. package/lib/dump-config-DBW7YLx-.js +0 -2
@@ -1,14 +1,14 @@
1
1
  import { i as __toESM, n as __exportAll, r as __require, t as __commonJSMin } from "./rolldown-runtime-2rV9d50f.js";
2
- import { a as getPageMarginSetting, c as normalizeScrollGutter, d as parsePageMarginSpec, f as resolvePageMargin, i as formatContextUsage, l as normalizeStatusBar, n as DEFAULT_STATUS_BAR, o as isPageMarginMode, p as subscribePageMargin, r as applyPageMargin, s as normalizePageMargin, u as normalizeToolBackground } from "./tuiDisplayPrefs-BCHRRcfe.js";
3
- import { a as draftComboConflicts, d as setKeymapOverrides, f as isMod, h as modLabel, l as parseComboDraft, m as isPlainReturnInput, n as actionMatches, o as effectiveComboString, p as isPlainReturn, t as SHORTCUT_ACTIONS } from "./keymap-CFChEJ2W.js";
4
- import { c as withHostRootCapability } from "./host-access-CmD27uhQ.js";
5
- import { i as getHostWorkspaceRuntime, r as createLocalWorkspaceRuntime } from "./workspaces-CznCgVHv.js";
6
- import { n as getHostCommandTrees } from "./command-trees-8o99Bws7.js";
7
- import { a as isReservedCredentialRef, n as getHostSettingsSections, r as getLocalSettingsSectionsHost } from "./settings-sections-QQ1-2lhL.js";
8
- import { n as getHostSceneRuntime } from "./scenes-ai_8sHDs.js";
9
- import { A as tuiEnvName, C as LEGACY_DATA_DIR, D as homeDir, E as detectLegacyEnv, J as parseManifest, M as loadSpecData, O as readTuiEnv, S as DATA_DIR, T as RENAMED_ENV, Y as projectManifest, _ as stripAnsi$1, a as normalizeCancelDecision, b as isWide, c as installDecisionGuard, d as capCells, f as cleanRenderText, g as getGraphemeSegmenter, h as stringWidth$1, i as dispatchTuiNotification, k as resolveChatCodeCliHome, m as flattenInline, p as cleanScalarText, r as dispatchTuiDecision, v as eastAsianWidth, w as PRE_DSH_TUI_DATA_DIR, x as readGrantStore, y as isFullWidth } from "./extension-events-DciGPKJa.js";
10
- import { A as validatePlugin, D as buildHostDescriptor, O as negotiate, _ as getHostMessageObserver, a as commandOwner, k as createContractIndex, n as hasCommandErrorCode, r as mapCommandError, w as EFFECT_LEDGER_FILE } from "./command-errors-CIYn1nnW.js";
11
- import { D as getHostStatusStore, E as TuiStatusStore, M as getHostDialogStore, S as getHostShortcuts, a as listCustomThemes, b as getHostRenderers, c as THEME_NAMES, d as getTheme, f as isLightThemeActive, g as setAutoThemeBase, h as setActiveThemeName, i as isSafeThemeName, j as TuiDialogStore, l as getActiveTheme, m as registerCustomThemeResolver, n as getHostThemes, o as resolveCustomTheme, p as isThemeAvailable, r as buildTheme, s as AUTO_THEME_NAME, u as getAutoThemeBase, v as getHostToastStore } from "./themes-DTzG_9I_.js";
2
+ import { a as getPageMarginSetting, c as normalizeScrollGutter, d as parsePageMarginSpec, f as resolvePageMargin, i as formatContextUsage, l as normalizeStatusBar, n as DEFAULT_STATUS_BAR, o as isPageMarginMode, p as subscribePageMargin, r as applyPageMargin, s as normalizePageMargin, u as normalizeToolBackground } from "./tuiDisplayPrefs-CJ9aBVkB.js";
3
+ import { a as draftComboConflicts, d as setKeymapOverrides, f as isMod, h as modLabel, l as parseComboDraft, m as isPlainReturnInput, n as actionMatches, o as effectiveComboString, p as isPlainReturn, t as SHORTCUT_ACTIONS } from "./keymap-DFoC50J1.js";
4
+ import { c as withHostRootCapability } from "./host-access-BdqThvw7.js";
5
+ import { i as getHostWorkspaceRuntime, r as createLocalWorkspaceRuntime } from "./workspaces-Dt_J35P0.js";
6
+ import { n as getHostCommandTrees } from "./command-trees-D4SZ2sGk.js";
7
+ import { a as isReservedCredentialRef, n as getHostSettingsSections, r as getLocalSettingsSectionsHost } from "./settings-sections-D4Ozrymr.js";
8
+ import { n as getHostSceneRuntime } from "./scenes-Dk6DYkO9.js";
9
+ import { A as tuiEnvName, C as LEGACY_DATA_DIR, D as homeDir, E as detectLegacyEnv, J as parseManifest, M as loadSpecData, O as readTuiEnv, S as DATA_DIR, T as RENAMED_ENV, Y as projectManifest, _ as stripAnsi$1, a as normalizeCancelDecision, b as isWide, c as installDecisionGuard, d as capCells, f as cleanRenderText, g as getGraphemeSegmenter, h as stringWidth$1, i as dispatchTuiNotification, k as resolveChatCodeCliHome, m as flattenInline, p as cleanScalarText, r as dispatchTuiDecision, v as eastAsianWidth, w as PRE_DSH_TUI_DATA_DIR, x as readGrantStore, y as isFullWidth } from "./extension-events-D6DbIdnG.js";
10
+ import { A as validatePlugin, D as buildHostDescriptor, O as negotiate, _ as getHostMessageObserver, a as commandOwner, k as createContractIndex, n as hasCommandErrorCode, r as mapCommandError, w as EFFECT_LEDGER_FILE } from "./command-errors-uo0j5Wi8.js";
11
+ import { D as getHostStatusStore, E as TuiStatusStore, M as getHostDialogStore, S as getHostShortcuts, a as listCustomThemes, b as getHostRenderers, c as THEME_NAMES, d as getTheme, f as isLightThemeActive, g as setAutoThemeBase, h as setActiveThemeName, i as isSafeThemeName, j as TuiDialogStore, l as getActiveTheme, m as registerCustomThemeResolver, n as getHostThemes, o as resolveCustomTheme, p as isThemeAvailable, r as buildTheme, s as AUTO_THEME_NAME, u as getAutoThemeBase, v as getHostToastStore } from "./themes-DDI83rNa.js";
12
12
  import { a as resolvePreset, i as isPresetName, n as FRAME_PRESETS, o as ActivityTracker, r as PRESET_NAMES, t as DEFAULT_PRESET } from "./frames-7PAg0Q9b.js";
13
13
  import { n as require_has_flag, t as require_supports_color } from "./supports-color-CcW-FGjr.js";
14
14
  import { createRequire } from "node:module";
@@ -1198,7 +1198,7 @@ var require_react = /* @__PURE__ */ __commonJSMin(((exports, module) => {
1198
1198
  else module.exports = require_react_development();
1199
1199
  }));
1200
1200
  //#endregion
1201
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/sideQuestion.js
1201
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/sideQuestion.js
1202
1202
  var import_react = /* @__PURE__ */ __toESM(require_react(), 1);
1203
1203
  /**
1204
1204
  * Side Question (`/btw`) — CC's btw.tsx/sideQuestion.ts semantics on the
@@ -1268,7 +1268,7 @@ async function runSideQuestion(params) {
1268
1268
  return { answer };
1269
1269
  }
1270
1270
  //#endregion
1271
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/recap.js
1271
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/recap.js
1272
1272
  /**
1273
1273
  * Session recap (`/recap`, pi-recap semantics): a single TOOL-LESS LLM
1274
1274
  * call that summarizes the session's RECENT activity into one line and
@@ -1381,7 +1381,7 @@ function parseRecapResponse(raw) {
1381
1381
  return { summary: raw.trim() };
1382
1382
  }
1383
1383
  //#endregion
1384
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/log.js
1384
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/log.js
1385
1385
  /**
1386
1386
  * Error logger for the ported Ink core. Always writes to stderr (an Ink
1387
1387
  * renderer failure must never pass silently).
@@ -1392,7 +1392,7 @@ function logError(error) {
1392
1392
  process.stderr.write(`[ChatCode CLI TUI] ${text}\n`);
1393
1393
  }
1394
1394
  //#endregion
1395
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/update-overflow-guard.js
1395
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/update-overflow-guard.js
1396
1396
  /**
1397
1397
  * Self-healing guard for React's nested-update overflow — Minified React
1398
1398
  * error #185 ("Maximum update depth exceeded").
@@ -1535,7 +1535,7 @@ function installNestedUpdateOverflowProcessGuard() {
1535
1535
  });
1536
1536
  }
1537
1537
  //#endregion
1538
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/cc/sessionColors.js
1538
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/cc/sessionColors.js
1539
1539
  /**
1540
1540
  * Session accent colors for `/color` (CC's /color semantics): a small
1541
1541
  * named palette that overrides the prompt-input border (and its session
@@ -1576,7 +1576,7 @@ function sessionColorHex(name) {
1576
1576
  return isValidSessionColor(name) ? SESSION_COLORS[name] : void 0;
1577
1577
  }
1578
1578
  //#endregion
1579
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/deepseekPricing.js
1579
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/deepseekPricing.js
1580
1580
  /**
1581
1581
  * DeepSeek 官方定价与"本会话花费"估算(人民币口径)。
1582
1582
  *
@@ -1701,7 +1701,7 @@ function estimateSessionCostCny(tokens, model) {
1701
1701
  return estimateSessionCostSplitCny(tokens, model)?.total;
1702
1702
  }
1703
1703
  //#endregion
1704
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/i18n.js
1704
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/i18n.js
1705
1705
  /**
1706
1706
  * dsh-tui localization — UI strings for Chinese (`zh`, the default) and
1707
1707
  * English (`en`).
@@ -1756,12 +1756,12 @@ const dict = {
1756
1756
  en: "Persisted model route {{provider}}/{{model}} is not advertised by that provider; fell back to {{fallback}}"
1757
1757
  },
1758
1758
  "model-startup-none": {
1759
- zh: "没有可用的用户模型。请先在 ~/.chatcode-cli/settings.json 中配置 customModels,或在 CLI 配置中添加用户 Provider,然后重新启动 CLI。",
1760
- en: "No user-configured model is available. Configure customModels in ~/.chatcode-cli/settings.json or add a user Provider to the CLI configuration, then restart the CLI."
1759
+ zh: "当前没有可用模型,仍可查看历史会话和修改设置。请通过 /model 选择模型,或通过 /provider 配置提供方后再发送消息。",
1760
+ en: "No model is available. You can still browse history and change settings. Select a model with /model or configure a provider with /provider before sending a message."
1761
1761
  },
1762
- "model-chatcode-token-catalog-failed": {
1763
- zh: "ChatCode 环境凭据认证失败,或 CodingPlan 模型目录不可用;CLI 未创建会话。",
1764
- en: "ChatCode environment authentication failed or the CodingPlan catalog is unavailable; no CLI session was created."
1762
+ "model-unconfigured": {
1763
+ zh: "未配置模型",
1764
+ en: "No model configured"
1765
1765
  },
1766
1766
  "unknown-activity-preset": {
1767
1767
  zh: "未知预设「{{name}}」· /activity frames 查看全部",
@@ -2350,22 +2350,10 @@ const dict = {
2350
2350
  zh: "回合运行中,无法切换模型",
2351
2351
  en: "Cannot switch models while a turn is running"
2352
2352
  },
2353
- "model-switch-unavailable": {
2354
- zh: "模型切换不可用——会话服务未加载",
2355
- en: "Model switch unavailable — session services not loaded"
2356
- },
2357
- "model-switch-fork-failed": {
2358
- zh: "无法切换模型 · {{err}}",
2359
- en: "Cannot switch models · {{err}}"
2360
- },
2361
2353
  "model-switch-failed": {
2362
2354
  zh: "模型切换失败 · {{err}}",
2363
2355
  en: "Model switch failed · {{err}}"
2364
2356
  },
2365
- "model-switch-attach-failed": {
2366
- zh: "模型已切换,但工作区挂载失败 · {{err}}",
2367
- en: "Model switched, but workspace attachment failed · {{err}}"
2368
- },
2369
2357
  "model-usage": {
2370
2358
  zh: "用法:/model <provider/model>(如 deepseek/deepseek-v4-flash)",
2371
2359
  en: "Usage: /model <provider/model> (e.g. deepseek/deepseek-v4-flash)"
@@ -5449,8 +5437,8 @@ const dict = {
5449
5437
  en: "Manually add a custom model"
5450
5438
  },
5451
5439
  "model-config-maas-unavailable": {
5452
- zh: "不可用(llm-chatcode-config 设置未挂载)",
5453
- en: "unavailable (llm-chatcode-config settings are not mounted)"
5440
+ zh: "元景模型服务不可用",
5441
+ en: "Yuanjing model service is unavailable"
5454
5442
  },
5455
5443
  "model-config-current-tag": {
5456
5444
  zh: "[当前]",
@@ -6517,7 +6505,7 @@ function resolveStartupLang(dir = PREFS_DIR$6, env = process.env) {
6517
6505
  return readLangPref(dir) ?? "zh";
6518
6506
  }
6519
6507
  //#endregion
6520
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/commands.js
6508
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/commands.js
6521
6509
  /**
6522
6510
  * Local slash commands for the dsh-tui TUI. Claude Code's command system is
6523
6511
  * deeply wired into its engine; dsh-tui ships a small built-in set with the
@@ -6974,7 +6962,7 @@ function matchingCompletionToken(candidate, prefix) {
6974
6962
  return candidate.aliases?.find((alias) => alias.toLowerCase().startsWith(prefix));
6975
6963
  }
6976
6964
  //#endregion
6977
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/sessionHistory.js
6965
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/sessionHistory.js
6978
6966
  /**
6979
6967
  * Launcher contract for `dsh-tui --resume`: the TUI writes the chosen session
6980
6968
  * id to `<CHATCODE_CLI_HOME>/tui/resume.txt`, and the launcher feeds it back as
@@ -7143,7 +7131,7 @@ function forgetAgentViewSession(sessionId) {
7143
7131
  } catch {}
7144
7132
  }
7145
7133
  //#endregion
7146
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/sessionTags.js
7134
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/sessionTags.js
7147
7135
  /**
7148
7136
  * One searchable local tag per persisted session.
7149
7137
  *
@@ -7293,7 +7281,7 @@ function forgetSessionTag(sessionId, dir = DATA_DIR) {
7293
7281
  return setSessionTag(sessionId, void 0, dir).ok;
7294
7282
  }
7295
7283
  //#endregion
7296
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/compat/liveSession.js
7284
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/compat/liveSession.js
7297
7285
  /**
7298
7286
  * Live Session compatibility facade.
7299
7287
  *
@@ -7455,7 +7443,7 @@ function liveSessionCreateOptions(request) {
7455
7443
  };
7456
7444
  }
7457
7445
  //#endregion
7458
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/compat/sessionLog.js
7446
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/compat/sessionLog.js
7459
7447
  /**
7460
7448
  * Legacy third-party session-event types the TUI vouches for as ephemeral
7461
7449
  * UI frames — safe for the strict read path to accept and skip. Exported
@@ -8169,7 +8157,7 @@ function deleteSessionLog(sessionId) {
8169
8157
  }
8170
8158
  }
8171
8159
  //#endregion
8172
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/compat/sessionEvent.js
8160
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/compat/sessionEvent.js
8173
8161
  /** Narrow an unknown/session event to the retired durable chunk envelope. */
8174
8162
  function legacyAssistantChunkOf(event) {
8175
8163
  if (event === null || typeof event !== "object") return void 0;
@@ -8183,7 +8171,7 @@ function legacyAssistantChunkOf(event) {
8183
8171
  return event;
8184
8172
  }
8185
8173
  //#endregion
8186
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/sessionTree.js
8174
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/sessionTree.js
8187
8175
  const TREE_FILTERS = [
8188
8176
  "default",
8189
8177
  "no-tools",
@@ -10339,7 +10327,7 @@ var require_subset = /* @__PURE__ */ __commonJSMin(((exports, module) => {
10339
10327
  module.exports = subset;
10340
10328
  }));
10341
10329
  //#endregion
10342
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/shellQuote.js
10330
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/shellQuote.js
10343
10331
  var import_semver = (/* @__PURE__ */ __commonJSMin(((exports, module) => {
10344
10332
  const internalRe = require_re();
10345
10333
  const constants = require_constants$1();
@@ -10432,7 +10420,7 @@ function cmdEscapeArgument(arg, doubleEscapeMetaChars = false) {
10432
10420
  return out;
10433
10421
  }
10434
10422
  //#endregion
10435
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/update.js
10423
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/update.js
10436
10424
  const PACKAGE_NAME = "@chatcode/cco-tui";
10437
10425
  const DEFAULT_REGISTRY = "https://registry.npmjs.org";
10438
10426
  const GITHUB_REPO = "ccch1mneyyy/dsh-TUI";
@@ -11783,7 +11771,7 @@ async function restartTui(sessionId, options = {}) {
11783
11771
  });
11784
11772
  }
11785
11773
  //#endregion
11786
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/sessions/header.js
11774
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/sessions/header.js
11787
11775
  /** A finite number, or undefined for anything else (NaN and ±Infinity included). */
11788
11776
  function finiteNumber(value) {
11789
11777
  return typeof value === "number" && Number.isFinite(value) ? value : void 0;
@@ -11857,7 +11845,7 @@ function classify(header) {
11857
11845
  return { kind: "root" };
11858
11846
  }
11859
11847
  //#endregion
11860
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/sessions/frames.js
11848
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/sessions/frames.js
11861
11849
  /**
11862
11850
  * Bounded reads over the JSONL backend's concatenated-Zstandard session logs.
11863
11851
  *
@@ -12103,7 +12091,7 @@ function decodeTail(window) {
12103
12091
  return decodeFrames(window.buffer, window.whole ? walkFrames(window.buffer) : resyncFrames(window.buffer));
12104
12092
  }
12105
12093
  //#endregion
12106
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/sessions/digest.js
12094
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/sessions/digest.js
12107
12095
  /**
12108
12096
  * What a bounded read can learn about a session log.
12109
12097
  *
@@ -12567,7 +12555,7 @@ function previewSession(path, limit) {
12567
12555
  return entries.slice(-limit);
12568
12556
  }
12569
12557
  //#endregion
12570
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/sessions/artifact.js
12558
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/sessions/artifact.js
12571
12559
  /** Read-only artifact lookup for session summaries and previews. */
12572
12560
  /** Highest published compressed generation; temporary migration files are ignored. */
12573
12561
  function inDirectory(directory) {
@@ -12620,7 +12608,7 @@ function findSessionArtifact(sessionId, target) {
12620
12608
  }
12621
12609
  }
12622
12610
  //#endregion
12623
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/sessions/store.js
12611
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/sessions/store.js
12624
12612
  /**
12625
12613
  * The session index — a local cache keyed by the backend's own change token.
12626
12614
  *
@@ -12783,7 +12771,7 @@ function noteBranch(sessionId, branch) {
12783
12771
  writeIndex(index);
12784
12772
  }
12785
12773
  //#endregion
12786
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/sessions/list.js
12774
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/sessions/list.js
12787
12775
  /**
12788
12776
  * Building the session list.
12789
12777
  *
@@ -13055,7 +13043,7 @@ async function locateSession(source, sessionId, signal) {
13055
13043
  return match === void 0 ? void 0 : locate(source, match.raw, sessionId);
13056
13044
  }
13057
13045
  //#endregion
13058
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/agent-view.js
13046
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/agent-view.js
13059
13047
  /**
13060
13048
  * Agent view (CC `claude agents`) derivation helpers — pure functions over
13061
13049
  * session events that the channel folds into {@link AgentViewRow}s. Kept in
@@ -13285,7 +13273,7 @@ function featureOn(config, name) {
13285
13273
  return config.mode !== "minimal";
13286
13274
  }
13287
13275
  //#endregion
13288
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/activityPrefs.js
13276
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/activityPrefs.js
13289
13277
  /**
13290
13278
  * Persisted working-activity indicator preference, mirroring the pi
13291
13279
  * working-activity extension's `~/.pi/agent/working-activity.json`
@@ -13354,7 +13342,7 @@ function writeActivityFrames(name, dir = PREFS_DIR$5) {
13354
13342
  }
13355
13343
  }
13356
13344
  //#endregion
13357
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/fileSuggestions.js
13345
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/fileSuggestions.js
13358
13346
  const pathSeparators = /[\\/]/;
13359
13347
  function isPathLikeQuery(query) {
13360
13348
  return query.startsWith(".") || query.startsWith("~") || query.startsWith("/") || /^[A-Za-z]:[\\/]/.test(query) || pathSeparators.test(query);
@@ -13391,7 +13379,7 @@ function preserveSelection(previous, next, fallback = 0) {
13391
13379
  return next.length === 0 ? 0 : Math.min(Math.max(0, fallback), next.length - 1);
13392
13380
  }
13393
13381
  //#endregion
13394
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/effortPrefs.js
13382
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/effortPrefs.js
13395
13383
  /**
13396
13384
  * Persisted reasoning-effort preference (`~/.chatcode-cli/tui/effort.json`). Set via
13397
13385
  * `/effort` (slider or `/effort <id>`; `/effort status` reports the current
@@ -13433,7 +13421,7 @@ function writeEffortPref(effort, dir = PREFS_DIR$4) {
13433
13421
  }
13434
13422
  }
13435
13423
  //#endregion
13436
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/modelPrefs.js
13424
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/modelPrefs.js
13437
13425
  /**
13438
13426
  * Persisted model-route preference (`/model` picker choice), kept at
13439
13427
  * `~/.chatcode-cli/model.json` (`provider` + `model` keys) so CLI and Web share it
@@ -13516,7 +13504,7 @@ function writeModelPref(provider, model, dir = PREFS_DIR$3) {
13516
13504
  }
13517
13505
  }
13518
13506
  //#endregion
13519
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/modelRoute.js
13507
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/modelRoute.js
13520
13508
  /**
13521
13509
  * Model route resolution (issue #67). The `(provider, model)` pair is a
13522
13510
  * single value: every source either supplies the WHOLE route or is skipped,
@@ -13530,6 +13518,11 @@ const DEFAULT_MODEL_ROUTE = {
13530
13518
  provider: "deepseek-official",
13531
13519
  model: "deepseek-v4-flash"
13532
13520
  };
13521
+ /** No model selected: the UI can open, but must not submit model requests. */
13522
+ const UNCONFIGURED_MODEL_ROUTE = {
13523
+ provider: "",
13524
+ model: ""
13525
+ };
13533
13526
  /** Managed provider selected by an environment-token desktop launch. */
13534
13527
  const CHATCODE_CODING_PLAN_PROVIDER = "chatcode-codingplan";
13535
13528
  const nonEmpty = (value) => value !== void 0 && value !== "";
@@ -13576,7 +13569,8 @@ function resolveModelRoute(configured, pref, defaults = DEFAULT_MODEL_ROUTE) {
13576
13569
  * it cannot silently escape to another account/provider. The caller validates
13577
13570
  * the chosen route against the active catalog.
13578
13571
  */
13579
- function resolveStartupModelRoute(configured, pref, defaults, tokenCodingPlanRoute) {
13572
+ function resolveStartupModelRoute(configured, pref, defaults = DEFAULT_MODEL_ROUTE, tokenCodingPlanRoute) {
13573
+ if (explicitModelRoute(defaults) === void 0) return { ...UNCONFIGURED_MODEL_ROUTE };
13580
13574
  if (tokenCodingPlanRoute === void 0) return resolveModelRoute(configured, pref, defaults);
13581
13575
  const explicit = explicitModelRoute(configured);
13582
13576
  if (explicit?.provider.startsWith("chatcode-") === true) return explicit;
@@ -13644,21 +13638,17 @@ async function waitForModelRouteForProvider(catalog, provider, options = {}) {
13644
13638
  }
13645
13639
  }
13646
13640
  /**
13647
- * The route a persisted session's own log records (issues #30/#67): the last
13648
- * `request/header` snapshot carries the call config the agent loop builds its
13649
- * requests from, so it IS the route a resume continues on when cordis.yml
13650
- * does not pin a complete override. The status line derives the resumed
13651
- * session's route from this so the display follows the session, not the
13652
- * startup resolution. A log without any header (a session that never started
13653
- * a turn) records no route.
13641
+ * The latest durable model selection or request route. A selection made
13642
+ * after the last request also survives resume before another turn is sent.
13643
+ * A complete cordis.yml override still takes precedence at the caller.
13654
13644
  * @param events - The session's durable event log.
13655
13645
  * @returns The last recorded route, or undefined when the log has none.
13656
13646
  */
13657
13647
  function recordedModelRoute(events) {
13658
13648
  for (let i = events.length - 1; i >= 0; i--) {
13659
13649
  const event = events[i];
13660
- if (event === void 0 || event.type !== "request/header") continue;
13661
- const config = event.data?.header?.config;
13650
+ if (event === void 0) continue;
13651
+ const config = event.type === "model/selection" ? event.data : event.type === "request/header" ? event.data?.header?.config : void 0;
13662
13652
  if (typeof config?.provider === "string" && typeof config?.model === "string") return {
13663
13653
  provider: config.provider,
13664
13654
  model: config.model
@@ -13689,7 +13679,8 @@ function isUnregisteredProvider(error) {
13689
13679
  * surfaces at startup instead of as a server-side model-name error.
13690
13680
  *
13691
13681
  * Uncertainty trusts the route — no llm service, an empty catalog, a catalog
13692
- * read that failed for transport or adapter-internal reasons. An unregistered
13682
+ * read that failed for transport or adapter-internal reasons. An explicitly
13683
+ * unconfigured fallback keeps an empty catalog unconfigured instead. An unregistered
13693
13684
  * PROVIDER is not uncertainty: no adapter owns the name, so the route is
13694
13685
  * proven unusable and falls back exactly like an unknown model does. Trusting
13695
13686
  * it does not keep startup alive either — agent creation dies a few frames
@@ -13702,6 +13693,7 @@ function isUnregisteredProvider(error) {
13702
13693
  * @returns The adopted route plus the rejected one (for a warning), if any.
13703
13694
  */
13704
13695
  async function validateModelRoute(llm, route, fallback = DEFAULT_MODEL_ROUTE) {
13696
+ if (explicitModelRoute(route) === void 0) return { route };
13705
13697
  if (llm === void 0) return { route };
13706
13698
  let models;
13707
13699
  try {
@@ -13713,6 +13705,10 @@ async function validateModelRoute(llm, route, fallback = DEFAULT_MODEL_ROUTE) {
13713
13705
  rejected: route
13714
13706
  };
13715
13707
  }
13708
+ if (models.length === 0 && explicitModelRoute(fallback) === void 0) return {
13709
+ route: fallback,
13710
+ rejected: route
13711
+ };
13716
13712
  if (models.length === 0 || models.some((model) => model.id === route.model)) return { route };
13717
13713
  return {
13718
13714
  route: fallback,
@@ -13742,7 +13738,7 @@ function orderModelProviders(providers) {
13742
13738
  return [...providers].sort((left, right) => rank(left.id) - rank(right.id));
13743
13739
  }
13744
13740
  //#endregion
13745
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/presetPrefs.js
13741
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/presetPrefs.js
13746
13742
  /**
13747
13743
  * Persisted agent-preset preference (`/preset` picker choice), kept at
13748
13744
  * `~/.chatcode-cli/tui/agent-preset.json` (`preset` key) so the choice survives
@@ -13801,7 +13797,7 @@ function migratePresetPref(requested, resolved, dir = PREFS_DIR$2) {
13801
13797
  return requested === void 0 || resolved === void 0 || requested === resolved ? true : writePresetPref(resolved, dir);
13802
13798
  }
13803
13799
  //#endregion
13804
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/compat/persistedSession.js
13800
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/compat/persistedSession.js
13805
13801
  /** Undefined means the service exposes neither supported read API. */
13806
13802
  async function readPersistedSession(persistence, id) {
13807
13803
  if (persistence === null || typeof persistence !== "object") return void 0;
@@ -13821,7 +13817,7 @@ async function readPersistedSession(persistence, id) {
13821
13817
  if (typeof reader.load === "function") return reader.load(id);
13822
13818
  }
13823
13819
  //#endregion
13824
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/preset-resolution.js
13820
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/preset-resolution.js
13825
13821
  /**
13826
13822
  * Agent-preset resolution across upstream prerelease lines.
13827
13823
  *
@@ -13859,7 +13855,7 @@ async function resolveCompatiblePreset(presets, requested) {
13859
13855
  return presets.resolve(requested);
13860
13856
  }
13861
13857
  //#endregion
13862
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/presets.js
13858
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/presets.js
13863
13859
  /**
13864
13860
  * Agent-presets roster integration (issue #8): compose each session's
13865
13861
  * model-facing world (tools, prompt sections, projections) from one preset
@@ -14009,7 +14005,7 @@ function serviceForAgent(ctx, agent, key) {
14009
14005
  return ctx.get(key);
14010
14006
  }
14011
14007
  //#endregion
14012
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/preset-management.js
14008
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/preset-management.js
14013
14009
  const failureReason = (error) => error instanceof Error ? error.message : String(error);
14014
14010
  /** Read a roster-resolved composition without bypassing preset ownership. */
14015
14011
  async function readPresetComposition(presets, presetId) {
@@ -14066,7 +14062,7 @@ async function removePresetComposition(presets, presetId) {
14066
14062
  }
14067
14063
  }
14068
14064
  //#endregion
14069
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/session-organization.js
14065
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/session-organization.js
14070
14066
  /** Adapter-only readers for optional Harness session-organization services. */
14071
14067
  const STAT_KEYS = [
14072
14068
  "turns",
@@ -14127,7 +14123,7 @@ function presetCompositionRows(content, limit = 80) {
14127
14123
  };
14128
14124
  }
14129
14125
  //#endregion
14130
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/debug.js
14126
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/debug.js
14131
14127
  /**
14132
14128
  * Debug logger for the ported Ink core. Writes to stderr only when
14133
14129
  * `CHATCODE_CLI_TUI_DEBUG` (or its legacy alias) is set, so normal runs stay quiet.
@@ -14157,7 +14153,7 @@ function logMouseDebug(message, fields) {
14157
14153
  } catch {}
14158
14154
  }
14159
14155
  //#endregion
14160
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/mentions.js
14156
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/mentions.js
14161
14157
  /**
14162
14158
  * `@` file-mention parsing (issue #15).
14163
14159
  *
@@ -14303,7 +14299,7 @@ function mentionAtCaret(value, cursor) {
14303
14299
  };
14304
14300
  }
14305
14301
  //#endregion
14306
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/commonUtilityCommands.js
14302
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/commonUtilityCommands.js
14307
14303
  /** Format only the files in the authoritative loaded-context projection. */
14308
14304
  function loadedFileLines(files, copy) {
14309
14305
  if (files === void 0) return [copy.unavailable];
@@ -14418,7 +14414,7 @@ function codeRatioLines(report, copy, maxAuthors = 20) {
14418
14414
  return lines;
14419
14415
  }
14420
14416
  //#endregion
14421
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/themeCatalog.js
14417
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/themeCatalog.js
14422
14418
  /**
14423
14419
  * Cordis-free theme catalog shared by future pickers, commands and hosts.
14424
14420
  *
@@ -14499,7 +14495,7 @@ function listThemeCatalog(host) {
14499
14495
  return Object.freeze(entries);
14500
14496
  }
14501
14497
  //#endregion
14502
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/sessionModes.js
14498
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/sessionModes.js
14503
14499
  /**
14504
14500
  * Configurable Shift+Tab session modes (the `modes` dsh-tui plugin config):
14505
14501
  * each mode is a named bundle of optional DSH plane switches — plan mode
@@ -14563,7 +14559,7 @@ function modeDisplayName(spec) {
14563
14559
  return spec.id;
14564
14560
  }
14565
14561
  //#endregion
14566
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/subagents.js
14562
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/subagents.js
14567
14563
  /** Unified subagent activity domain model used by the adapter and every view. */
14568
14564
  const MAX_OUTPUT_EVENTS = 160;
14569
14565
  const MAX_OUTPUT_LINES = 160;
@@ -14941,7 +14937,7 @@ function formatJobDuration(job, now = Date.now()) {
14941
14937
  return `${Math.floor(minutes / 60)}h${String(minutes % 60).padStart(2, "0")}m`;
14942
14938
  }
14943
14939
  //#endregion
14944
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/minimalMode.js
14940
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/minimalMode.js
14945
14941
  /**
14946
14942
  * Minimal mode: one process-wide flag gating decorative UI (header splash,
14947
14943
  * emoji status glyphs, non-tool text colors, status-bar extras). The flag is
@@ -14960,7 +14956,7 @@ function setMinimalMode(enabled) {
14960
14956
  minimal = enabled;
14961
14957
  }
14962
14958
  //#endregion
14963
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/workspace.js
14959
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/workspace.js
14964
14960
  /**
14965
14961
  * Find or create the Workspace for `cwd`, then durably account `sessionId`.
14966
14962
  *
@@ -14976,7 +14972,7 @@ async function attachSessionToWorkspace(ctx, cwd, sessionId) {
14976
14972
  return true;
14977
14973
  }
14978
14974
  //#endregion
14979
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/contract.js
14975
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/contract.js
14980
14976
  /**
14981
14977
  * Upstream compatibility contract.
14982
14978
  *
@@ -15405,7 +15401,7 @@ function pluginsInfoLines(args, deps) {
15405
15401
  return lines;
15406
15402
  }
15407
15403
  //#endregion
15408
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/mcp-status.js
15404
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/mcp-status.js
15409
15405
  /** Loader and tool-registry projection used by the TUI's `/mcp` report. */
15410
15406
  const MCP_CLIENT_PACKAGE = "@deepseek-ai/dsh-mcp-client";
15411
15407
  const FIBER_ACTIVE = 2;
@@ -15458,7 +15454,7 @@ function collectMcpServerStatus(schemas, entries) {
15458
15454
  }));
15459
15455
  }
15460
15456
  //#endregion
15461
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/cc/format.js
15457
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/cc/format.js
15462
15458
  /**
15463
15459
  * Number, token-count, and duration formatters shared by the status line
15464
15460
  * and message rows.
@@ -15521,7 +15517,7 @@ function formatDuration$4(durationMs, options = {}) {
15521
15517
  return parts.join(" ");
15522
15518
  }
15523
15519
  //#endregion
15524
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/contextUsage.js
15520
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/contextUsage.js
15525
15521
  /**
15526
15522
  * Return the current context occupancy. The latest request is authoritative:
15527
15523
  * its uncached input and cache read/write tokens are all part of that request's
@@ -15905,7 +15901,7 @@ function prepareMemoryTargetFile(requested, candidates, cwd, dshHome) {
15905
15901
  }
15906
15902
  }
15907
15903
  //#endregion
15908
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/channel.js
15904
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/channel.js
15909
15905
  /** Return the step left open by a tree fork cut within one turn. */
15910
15906
  function openStepAtForkCut(events, turn) {
15911
15907
  for (let i = events.length - 1; i >= 0; i--) {
@@ -16812,6 +16808,13 @@ function createChannel(ctx, initialAgent, options) {
16812
16808
  */
16813
16809
  const deliverUserText = (text, placement, instructionText) => {
16814
16810
  sendChain = sendChain.then(async () => {
16811
+ if (explicitModelRoute(state) === void 0) {
16812
+ state.notify(t("model-startup-none"), {
16813
+ color: "warning",
16814
+ timeoutMs: 8e3
16815
+ });
16816
+ return;
16817
+ }
16815
16818
  const expansion = await expandMentions(mentionFs(ctx), state.cwd, text, mentionAttachments(ctx), stagedImages);
16816
16819
  const message = createUserMessage({
16817
16820
  content: withWorkflowInstruction(expansion.blocks, instructionText),
@@ -17060,8 +17063,8 @@ function createChannel(ctx, initialAgent, options) {
17060
17063
  /** The llm runtime seam (dsh-llm LlmRuntime): route metadata resolution. */
17061
17064
  const llmRuntime = ctx.get("llm");
17062
17065
  /** Mutable per-agent model selection (dsh-agent's routing override seam).
17063
- * `current` stays undefined until the user explicitly cycles effort, so
17064
- * default routing (agentOptions on create/fork) is untouched; bindAgent
17066
+ * Model and effort choices override subsequent requests without a fork;
17067
+ * default routing still comes from agentOptions until a choice; bindAgent
17065
17068
  * re-couples it to each new agent's prompt assembly + request config. */
17066
17069
  const selection = {
17067
17070
  current: void 0,
@@ -17075,7 +17078,10 @@ function createChannel(ctx, initialAgent, options) {
17075
17078
  const applyPreferredEffort = async () => {
17076
17079
  if (preferredEffort === void 0 || llmRuntime === void 0) return;
17077
17080
  try {
17078
- const info = await llmRuntime.resolveModelInfo(state.provider, state.model);
17081
+ const targetAgent = agent;
17082
+ const { provider, model } = state;
17083
+ const info = await llmRuntime.resolveModelInfo(provider, model);
17084
+ if (agent !== targetAgent || state.provider !== provider || state.model !== model) return;
17079
17085
  state.effortLevels = (info.reasoning?.efforts ?? []).map((level) => level.id);
17080
17086
  if (!info.reasoning?.efforts.some((effort) => effort.id === preferredEffort)) return;
17081
17087
  selection.current = {
@@ -17095,9 +17101,9 @@ function createChannel(ctx, initialAgent, options) {
17095
17101
  const route = `${state.provider}/${state.model}`;
17096
17102
  if (route !== modelNameRoute) {
17097
17103
  modelNameRoute = route;
17098
- state.modelName = state.model;
17104
+ state.modelName = state.model || t("model-unconfigured");
17099
17105
  }
17100
- if (llmRuntime === void 0 || typeof llmRuntime.resolveModelInfo !== "function") return;
17106
+ if (explicitModelRoute(state) === void 0 || llmRuntime === void 0 || typeof llmRuntime.resolveModelInfo !== "function") return;
17101
17107
  const generation = ++effortLevelsGeneration;
17102
17108
  llmRuntime.resolveModelInfo(state.provider, state.model).then((info) => {
17103
17109
  if (generation !== effortLevelsGeneration) return;
@@ -17784,7 +17790,7 @@ function createChannel(ctx, initialAgent, options) {
17784
17790
  agentId: agent.id,
17785
17791
  agentBindingGeneration: 0,
17786
17792
  model: options.model,
17787
- modelName: options.modelName?.trim() || options.model,
17793
+ modelName: options.modelName?.trim() || options.model || t("model-unconfigured"),
17788
17794
  provider: options.provider,
17789
17795
  tokens: {
17790
17796
  input: 0,
@@ -19134,127 +19140,38 @@ function createChannel(ctx, initialAgent, options) {
19134
19140
  state.notify(t("model-switch-while-working"), { color: "warning" });
19135
19141
  return false;
19136
19142
  }
19137
- const agents = ctx.get("agents");
19138
- if (!agents) {
19139
- state.notify(t("model-switch-unavailable"), { color: "error" });
19140
- return false;
19141
- }
19142
- let seed;
19143
+ if (state.provider === provider && state.model === model) return true;
19144
+ const sourceAgent = agent;
19143
19145
  try {
19144
19146
  await settleManualCompaction();
19145
- seed = sliceLiveSessionSeed(agent.session);
19146
- } catch (error) {
19147
- const message = error instanceof Error ? error.message : String(error);
19148
- state.notify(t("model-switch-fork-failed", { err: message }), { color: "error" });
19149
- return false;
19150
- }
19151
- const childId = SessionId(randomUUID());
19152
- let handle;
19153
- const modelComposed = await composePreset(ctx, runningPresetOf(agent.session));
19154
- try {
19155
- handle = await agents.create(liveSessionCreateOptions({
19156
- sessionId: childId,
19157
- seed,
19158
- runtimeSession: agent.session,
19159
- inheritedCount: seed.length,
19160
- cwd: state.cwd,
19161
- parentSession: agent.session.id,
19162
- agentPreset: modelComposed.agentPreset,
19163
- agentOptions: {
19164
- provider,
19165
- model
19166
- },
19167
- setup: modelComposed.setup
19168
- }));
19147
+ if (agent !== sourceAgent || state.working) return false;
19148
+ if (state.provider === provider && state.model === model) return true;
19149
+ agent.session.append("model/selection", {
19150
+ provider,
19151
+ model
19152
+ });
19169
19153
  } catch (error) {
19170
- const message = error instanceof Error ? error.message : String(error);
19171
- state.notify(t("model-switch-failed", { err: message }), {
19154
+ state.notify(t("model-switch-failed", { err: error instanceof Error ? error.message : String(error) }), {
19172
19155
  color: "error",
19173
19156
  timeoutMs: 8e3
19174
19157
  });
19175
19158
  return false;
19176
19159
  }
19177
- try {
19178
- await attachSessionToWorkspace(ctx, state.cwd, childId);
19179
- } catch (error) {
19180
- state.notify(t("model-switch-attach-failed", { err: error instanceof Error ? error.message : String(error) }), {
19181
- color: "warning",
19182
- timeoutMs: 8e3
19183
- });
19184
- }
19185
- streaming = void 0;
19186
- reasoning = void 0;
19187
- sealedReasoning.length = 0;
19188
- lastReasoningRow = void 0;
19189
- toolCards.clear();
19190
- nextRowId = 0;
19191
- state.rows.length = 0;
19192
- resetSubagentProjection();
19193
- resetJobProjection();
19194
- state.todos = [];
19195
- state.pending = [];
19196
- state.goal = void 0;
19197
- state.sessionTitle = "";
19198
- state.sessionColor = "";
19199
- state.tokens = {
19200
- input: 0,
19201
- output: 0,
19202
- cacheRead: 0,
19203
- cacheWrite: 0,
19204
- peak: {
19205
- input: 0,
19206
- output: 0,
19207
- cacheRead: 0,
19208
- cacheWrite: 0
19209
- },
19210
- idle: {
19211
- input: 0,
19212
- output: 0,
19213
- cacheRead: 0,
19214
- cacheWrite: 0
19215
- }
19160
+ selection.current = {
19161
+ provider,
19162
+ model
19216
19163
  };
19217
- state.responseChars = 0;
19218
- state.activeToolCount = 0;
19219
- state.lastUserText = "";
19220
- state.working = false;
19221
- state.cancelPending = false;
19222
- state.spinnerMode = "requesting";
19223
- state.status = handle.agent.status;
19224
- state.agentId = handle.agent.id;
19225
- state.agentPreset = modelComposed.agentPreset;
19226
- state.model = model;
19227
19164
  state.provider = provider;
19228
- dropModelNodeCache();
19229
- state.tps = void 0;
19230
- state.tpsSamples = [];
19231
- state.lastUsage = void 0;
19232
- state.workingActivity = void 0;
19233
- state.contextWindow = void 0;
19234
- state.effortLevels = void 0;
19165
+ state.model = model;
19235
19166
  state.reasoningEffort = void 0;
19167
+ state.effortLevels = void 0;
19168
+ state.contextWindow = void 0;
19169
+ dropModelNodeCache();
19236
19170
  refreshEffortLevels();
19237
- state.contextSegments = {
19238
- system: 0,
19239
- prompt: 0,
19240
- assistant: 0,
19241
- thinking: 0,
19242
- tools: 0
19243
- };
19244
- replayEvents(seed);
19245
- settleStreaming();
19246
- state.working = handle.agent.status === "running";
19247
- const oldHandle = currentHandle;
19248
- agent = handle.agent;
19249
- currentHandle = handle;
19250
- bindAgent();
19171
+ applyPreferredEffort();
19251
19172
  updateWorkingActivity("model switch", () => activityTracker.onModelSwitch(model));
19252
- refreshCommandList();
19253
19173
  refreshLoadedContext();
19254
- refreshSkillCommands();
19255
- touchSession(childId);
19256
19174
  state.emit();
19257
- oldHandle?.dispose().catch(() => {});
19258
19175
  clearStagedImages();
19259
19176
  const defaultModel = ctx.get("agentDefaultModel");
19260
19177
  try {
@@ -19596,10 +19513,16 @@ function createChannel(ctx, initialAgent, options) {
19596
19513
  const maasNamespace = settings.describe().some((descriptor) => descriptor.ns === "llm-chatcode-config");
19597
19514
  const maasRevision = () => settings.describe().find((descriptor) => descriptor.ns === "llm-chatcode-config")?.revision;
19598
19515
  const modelCatalog = ctx.get("chatcodeModelCatalog");
19516
+ const maasEnabled = modelCatalog?.maasToggleable === false ? modelCatalog.maasEnabled?.bind(modelCatalog) : void 0;
19599
19517
  const catalogMembers = () => new Set(llm.listConfigurableProviders().filter((entry) => entry.settingsNs === "llm-pi-ai" && entry.declared !== true).map((entry) => entry.provider));
19600
19518
  return {
19601
19519
  ...oauthApi === void 0 ? {} : { oauth: oauthApi },
19602
- ...maasNamespace ? { maas: {
19520
+ ...maasEnabled !== void 0 ? { maas: {
19521
+ enabled: maasEnabled,
19522
+ async listModels() {
19523
+ return maasEnabled() ? llm.listModels(CHATCODE_MAAS_PROVIDER) : [];
19524
+ }
19525
+ } } : maasNamespace ? { maas: {
19603
19526
  enabled() {
19604
19527
  return settings.get("llm-chatcode-config")?.enableMaas === true;
19605
19528
  },
@@ -19794,6 +19717,10 @@ function createChannel(ctx, initialAgent, options) {
19794
19717
  return true;
19795
19718
  },
19796
19719
  async sideQuestion(question, options) {
19720
+ if (explicitModelRoute(state) === void 0) return {
19721
+ answer: null,
19722
+ error: t("model-startup-none")
19723
+ };
19797
19724
  const llm = ctx.get("llm");
19798
19725
  if (!llm) return {
19799
19726
  answer: null,
@@ -19990,6 +19917,7 @@ function createChannel(ctx, initialAgent, options) {
19990
19917
  provider: options.provider,
19991
19918
  model: options.model
19992
19919
  });
19920
+ if (explicitModelRoute(route) === void 0) throw new Error(t("model-startup-none"));
19993
19921
  handle = await agentsService.create({
19994
19922
  sessionId,
19995
19923
  meta: {
@@ -20236,6 +20164,10 @@ function createChannel(ctx, initialAgent, options) {
20236
20164
  state.emit();
20237
20165
  },
20238
20166
  async recapRecent(options) {
20167
+ if (explicitModelRoute(state) === void 0) return {
20168
+ summary: null,
20169
+ error: t("model-startup-none")
20170
+ };
20239
20171
  const llm = ctx.get("llm");
20240
20172
  if (!llm) return {
20241
20173
  summary: null,
@@ -20308,6 +20240,13 @@ function createChannel(ctx, initialAgent, options) {
20308
20240
  return true;
20309
20241
  },
20310
20242
  compact() {
20243
+ if (explicitModelRoute(state) === void 0) {
20244
+ state.notify(t("model-startup-none"), {
20245
+ color: "warning",
20246
+ timeoutMs: 8e3
20247
+ });
20248
+ return;
20249
+ }
20311
20250
  const compactService = serviceForAgent(ctx, agent, "compaction");
20312
20251
  if (!compactService) {
20313
20252
  state.notify(t("compact-unavailable"), { color: "warning" });
@@ -21031,15 +20970,24 @@ function createChannel(ctx, initialAgent, options) {
21031
20970
  text: preview$1(output, LOCAL_OUTPUT_LIMIT)
21032
20971
  });
21033
20972
  state.emit();
21034
- if (includeInContext) agent.followup(createUserMessage({
21035
- content: [{
21036
- type: "text",
21037
- text: `<bash-stdout>
20973
+ if (includeInContext) {
20974
+ if (explicitModelRoute(state) === void 0) {
20975
+ state.notify(t("model-startup-none"), {
20976
+ color: "warning",
20977
+ timeoutMs: 8e3
20978
+ });
20979
+ return;
20980
+ }
20981
+ agent.followup(createUserMessage({
20982
+ content: [{
20983
+ type: "text",
20984
+ text: `<bash-stdout>
21038
20985
  ${output}
21039
20986
  </bash-stdout>`
21040
- }],
21041
- source: { kind: "user" }
21042
- }));
20987
+ }],
20988
+ source: { kind: "user" }
20989
+ }));
20990
+ }
21043
20991
  };
21044
20992
  /** The in-progress assistant text row; `undefined` when no step is streaming. */
21045
20993
  let streaming;
@@ -21876,6 +21824,10 @@ ${output}
21876
21824
  applyPreferredEffort();
21877
21825
  refreshMode();
21878
21826
  agentSubscriptions = [
21827
+ agent.ctx.on("agent/request", async (_context, next) => {
21828
+ if (explicitModelRoute(state) === void 0) throw new Error(t("model-startup-none"));
21829
+ return next();
21830
+ }),
21879
21831
  agent.ctx.on("system-prompt/assemble", async (_assembly, _context, next) => {
21880
21832
  const assembled = await next();
21881
21833
  return {
@@ -22387,7 +22339,7 @@ async function expandMentions(fs, cwd, text, attachments, stagedImages) {
22387
22339
  };
22388
22340
  }
22389
22341
  //#endregion
22390
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/childStderr.js
22342
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/childStderr.js
22391
22343
  /**
22392
22344
  * Child-process stderr guard (issue #17).
22393
22345
  *
@@ -22556,7 +22508,7 @@ function createChildStderrReporter(notify, options = {}) {
22556
22508
  };
22557
22509
  }
22558
22510
  //#endregion
22559
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/questions.js
22511
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/questions.js
22560
22512
  /**
22561
22513
  * Ask-user-question store — the UI-side half of the DSH user-interaction
22562
22514
  * seam (`ctx.userQuestions`). The harness's model-facing
@@ -22796,7 +22748,7 @@ var QuestionStore = class {
22796
22748
  }
22797
22749
  };
22798
22750
  //#endregion
22799
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/providerGuard.js
22751
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/providerGuard.js
22800
22752
  /**
22801
22753
  * Question-provider seat guard (issue #98 security follow-up).
22802
22754
  *
@@ -22908,7 +22860,7 @@ function incumbentQuestionProviderId(service) {
22908
22860
  } catch {}
22909
22861
  }
22910
22862
  //#endregion
22911
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/questions-answerer.js
22863
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/questions-answerer.js
22912
22864
  /**
22913
22865
  * User-question answerer compatibility.
22914
22866
  *
@@ -22967,7 +22919,7 @@ function prepareQuestionAnswerer(ctx, service, answerer) {
22967
22919
  }
22968
22920
  }
22969
22921
  //#endregion
22970
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/approvals.js
22922
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/approvals.js
22971
22923
  /**
22972
22924
  * Approval store — the UI-side answerer half of the DSH approval seam
22973
22925
  * (`ctx.approval`). The harness's permission layer asks
@@ -23361,7 +23313,7 @@ var ApprovalStore = class {
23361
23313
  }
23362
23314
  };
23363
23315
  //#endregion
23364
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/promptDebug.js
23316
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/promptDebug.js
23365
23317
  /**
23366
23318
  * On-demand capture of every final AgentLoop request context observed for a
23367
23319
  * live session.
@@ -23507,7 +23459,7 @@ function registerPromptDebug(ctx) {
23507
23459
  }));
23508
23460
  }
23509
23461
  //#endregion
23510
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/migrationPrefs.js
23462
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/migrationPrefs.js
23511
23463
  /**
23512
23464
  * One-time local migrations (`~/.chatcode-cli/tui/migrations.json`), keyed by stable
23513
23465
  * migration id → ISO timestamp. Named keys (not a bare flag) so later
@@ -23598,7 +23550,7 @@ async function commitFullscreenFactoryMigration(plan, options) {
23598
23550
  } catch {}
23599
23551
  }
23600
23552
  //#endregion
23601
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/retired-packaged-presets.js
23553
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/retired-packaged-presets.js
23602
23554
  const OWNER = "@chatcode/cco-tui";
23603
23555
  const MARKER = ".dsh-tui-managed.json";
23604
23556
  const RETIRED_PACKAGED_PRESETS = ["liangshen"];
@@ -23640,7 +23592,7 @@ function cleanupRetiredPackagedPresets(options = {}) {
23640
23592
  return results;
23641
23593
  }
23642
23594
  //#endregion
23643
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/workspaceRoot.js
23595
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/workspaceRoot.js
23644
23596
  /**
23645
23597
  * Session working-directory resolution (issue #96, bug 2).
23646
23598
  *
@@ -23677,7 +23629,7 @@ function gitWorktreeRoot(start) {
23677
23629
  }
23678
23630
  }
23679
23631
  //#endregion
23680
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/openExternal.js
23632
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/openExternal.js
23681
23633
  /**
23682
23634
  * Open URLs, files and folders with the platform's default handler, fully
23683
23635
  * detached from the TUI process (fire-and-forget: no stdio pipes, no wait,
@@ -23838,13 +23790,13 @@ function revealInFileManager(filePath) {
23838
23790
  if (existsSync(dir)) openExternal(dir);
23839
23791
  }
23840
23792
  //#endregion
23841
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/chatCodeApi.js
23793
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/chatCodeApi.js
23842
23794
  /** ChatCode API request capability. Credentials stay in the host adapter. */
23843
23795
  const CHATCODE_API_BASE_URL = "https://chatcode.chinaunicom.cn";
23844
23796
  /** Each mounted TUI receives its own host-authorized request function. */
23845
23797
  const ChatCodeApiContext = (0, import_react.createContext)(void 0);
23846
23798
  //#endregion
23847
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/releaseNotes.js
23799
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/releaseNotes.js
23848
23800
  const RELEASE_NOTE_PATH = join(DATA_DIR, "release-notes.json");
23849
23801
  const RELEASE_NOTE_ENDPOINT = `${CHATCODE_API_BASE_URL}/chatcode/api/v1/cli/version/release-note`;
23850
23802
  function acknowledgedVersion() {
@@ -23940,7 +23892,7 @@ var ReleaseNotesStore = class {
23940
23892
  }
23941
23893
  };
23942
23894
  //#endregion
23943
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/version.js
23895
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/version.js
23944
23896
  const MAIN_CLI_PACKAGES = new Set(["@chatcode/chatcode-cli", "@chatcode/chatcode-cli-test"]);
23945
23897
  const VERSION_PATTERN = /^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/u;
23946
23898
  const PRODUCT_VERSION_ENV = "CHATCODE_CLI_PRODUCT_VERSION";
@@ -23980,7 +23932,7 @@ function resolveProductVersion(options = {}) {
23980
23932
  /** Product version shown by the TUI, shared with `cco --version` and Web. */
23981
23933
  const PRODUCT_VERSION = resolveProductVersion();
23982
23934
  //#endregion
23983
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/execFileNoThrow.js
23935
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/execFileNoThrow.js
23984
23936
  const MAX_CAPTURE_BYTES = 64 * 1024;
23985
23937
  function appendBounded(chunks, chunk, total) {
23986
23938
  if (total.value >= MAX_CAPTURE_BYTES) return;
@@ -24050,7 +24002,7 @@ function execFileNoThrow(file, args = [], options) {
24050
24002
  });
24051
24003
  }
24052
24004
  //#endregion
24053
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/herdr.js
24005
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/herdr.js
24054
24006
  const REPORT_TIMEOUT_MS = 2e3;
24055
24007
  const RELEASE_TIMEOUT_MS = 500;
24056
24008
  const RETRY_DELAYS_MS = [
@@ -24438,7 +24390,7 @@ var require_react_jsx_runtime_development = /* @__PURE__ */ __commonJSMin(((expo
24438
24390
  })();
24439
24391
  }));
24440
24392
  //#endregion
24441
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/themePrefs.js
24393
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/themePrefs.js
24442
24394
  var import_jsx_runtime = (/* @__PURE__ */ __commonJSMin(((exports, module) => {
24443
24395
  if (process.env.NODE_ENV === "production") module.exports = require_react_jsx_runtime_production();
24444
24396
  else module.exports = require_react_jsx_runtime_development();
@@ -24495,7 +24447,7 @@ function writeThemePref(name, dir = PREFS_DIR) {
24495
24447
  }
24496
24448
  }
24497
24449
  //#endregion
24498
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/hooks/useRuntimeThemeSnapshot.js
24450
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/hooks/useRuntimeThemeSnapshot.js
24499
24451
  const EMPTY_THEME_SNAPSHOT = Object.freeze([]);
24500
24452
  const subscribeNoThemes = (_listener) => () => {};
24501
24453
  /**
@@ -24523,7 +24475,7 @@ function useRuntimeThemeSnapshot(themeHost) {
24523
24475
  return import_react.useSyncExternalStore(subscribeThemes, getThemeSnapshot, getThemeSnapshot);
24524
24476
  }
24525
24477
  //#endregion
24526
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/events/event.js
24478
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/events/event.js
24527
24479
  /**
24528
24480
  * Base class for events with immediate-propagation control.
24529
24481
  *
@@ -24547,7 +24499,7 @@ var Event = class {
24547
24499
  }
24548
24500
  };
24549
24501
  //#endregion
24550
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/events/emitter.js
24502
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/events/emitter.js
24551
24503
  /**
24552
24504
  * Node-compatible event emitter that is aware of the `Event` class, so
24553
24505
  * `emit` respects `stopImmediatePropagation()` on dispatched events.
@@ -24580,7 +24532,7 @@ var EventEmitter$1 = class extends EventEmitter {
24580
24532
  }
24581
24533
  };
24582
24534
  //#endregion
24583
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/StdinContext.js
24535
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/StdinContext.js
24584
24536
  /**
24585
24537
  * `StdinContext` is a React context, which exposes input stream.
24586
24538
  */
@@ -24594,14 +24546,14 @@ const StdinContext = (0, import_react.createContext)({
24594
24546
  });
24595
24547
  StdinContext.displayName = "InternalStdinContext";
24596
24548
  //#endregion
24597
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/hooks/use-stdin.js
24549
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/hooks/use-stdin.js
24598
24550
  /**
24599
24551
  * React hook exposing the stdin stream and raw-mode helpers from `StdinContext`.
24600
24552
  * @returns the `StdinContext` value.
24601
24553
  */
24602
24554
  const useStdin = () => (0, import_react.useContext)(StdinContext);
24603
24555
  //#endregion
24604
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/termio/ansi.js
24556
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/termio/ansi.js
24605
24557
  /**
24606
24558
  * ANSI Control Characters and Escape Sequence Introducers
24607
24559
  *
@@ -24675,7 +24627,7 @@ function isEscFinal(byte) {
24675
24627
  return byte >= 48 && byte <= 126;
24676
24628
  }
24677
24629
  //#endregion
24678
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/termio/csi.js
24630
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/termio/csi.js
24679
24631
  /**
24680
24632
  * CSI (Control Sequence Introducer) Types
24681
24633
  *
@@ -24991,7 +24943,7 @@ const ENABLE_WIN32_INPUT_MODE = csi("?9001h");
24991
24943
  */
24992
24944
  const DISABLE_WIN32_INPUT_MODE = csi("?9001l");
24993
24945
  //#endregion
24994
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/env.js
24946
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/env.js
24995
24947
  /**
24996
24948
  * Minimal terminal-environment shim for the ported Ink core. The original
24997
24949
  * module computed a richer `env` object from the Claude Code app context; the
@@ -25000,7 +24952,7 @@ const DISABLE_WIN32_INPUT_MODE = csi("?9001l");
25000
24952
  */
25001
24953
  const env$1 = { terminal: (process.env.TERM_PROGRAM ?? process.env.TERM ?? "unknown").toLowerCase() };
25002
24954
  //#endregion
25003
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/termio/osc.js
24955
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/termio/osc.js
25004
24956
  /**
25005
24957
  * OSC (Operating System Command) Types and Parser
25006
24958
  */
@@ -25396,7 +25348,7 @@ function supportsTabStatus() {
25396
25348
  return process.env.USER_TYPE === "ant";
25397
25349
  }
25398
25350
  //#endregion
25399
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/terminal-querier.js
25351
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/terminal-querier.js
25400
25352
  /**
25401
25353
  * Query the terminal and await responses without timeouts.
25402
25354
  *
@@ -25582,7 +25534,7 @@ var TerminalQuerier = class {
25582
25534
  }
25583
25535
  };
25584
25536
  //#endregion
25585
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/design-system/ThemeProvider.js
25537
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/design-system/ThemeProvider.js
25586
25538
  /**
25587
25539
  * Theme provider with terminal-background auto-detection. With no explicit
25588
25540
  * `theme` prop, no CHATCODE_CLI_TUI_THEME override and no persisted choice
@@ -25781,7 +25733,7 @@ function useTheme() {
25781
25733
  return [theme, setTheme];
25782
25734
  }
25783
25735
  //#endregion
25784
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/settingsEditor.js
25736
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/settingsEditor.js
25785
25737
  /**
25786
25738
  * React-free form model behind the `/settings` screen (issue #165), mirroring
25787
25739
  * the web front door's card-form.ts semantics: a section stages what the user
@@ -26025,7 +25977,7 @@ var SettingsForm = class {
26025
25977
  }
26026
25978
  };
26027
25979
  //#endregion
26028
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/reload.js
25980
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/reload.js
26029
25981
  /**
26030
25982
  * `/reload` planning — the pi-style soft reload: re-read the TUI's persisted
26031
25983
  * preference files (`~/.chatcode-cli/tui/{theme,lang,agent-preset,model,
@@ -26874,7 +26826,7 @@ var SignalExit = class extends SignalExitBase {
26874
26826
  const process$2 = globalThis.process;
26875
26827
  const { onExit, load, unload } = signalExitWrap(processOk(process$2) ? new SignalExit(process$2) : new SignalExitFallback());
26876
26828
  //#endregion
26877
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/native-ts/yoga-layout/enums.js
26829
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/native-ts/yoga-layout/enums.js
26878
26830
  /**
26879
26831
  * Yoga enums — ported from yoga-layout/src/generated/YGEnums.ts
26880
26832
  * Kept as `const` objects (not TS enums) per repo convention.
@@ -27006,7 +26958,7 @@ const Wrap = {
27006
26958
  WrapReverse: 2
27007
26959
  };
27008
26960
  //#endregion
27009
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/native-ts/yoga-layout/index.js
26961
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/native-ts/yoga-layout/index.js
27010
26962
  /**
27011
26963
  * Pure-TypeScript port of yoga-layout (Meta's flexbox engine).
27012
26964
  *
@@ -29457,7 +29409,7 @@ Object.defineProperties(createChalk.prototype, {
29457
29409
  const chalk = createChalk();
29458
29410
  createChalk({ level: stderrColor ? stderrColor.level : 0 });
29459
29411
  //#endregion
29460
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/colorize.js
29412
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/colorize.js
29461
29413
  /**
29462
29414
  * xterm.js (VS Code, Cursor, code-server, Coder) has supported truecolor
29463
29415
  * since 2017, but code-server/Coder containers often don't set
@@ -29588,7 +29540,7 @@ function applyColor(text, color) {
29588
29540
  return colorize(text, color, "foreground");
29589
29541
  }
29590
29542
  //#endregion
29591
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/envUtils.js
29543
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/envUtils.js
29592
29544
  /**
29593
29545
  * Environment truthiness check for the ported Ink core. Accepts the common
29594
29546
  * shell truthy spellings (`1`, `true`, `yes`, `on`).
@@ -29606,7 +29558,7 @@ function isEnvTruthy(value) {
29606
29558
  ].includes(value.toLowerCase());
29607
29559
  }
29608
29560
  //#endregion
29609
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/fullscreen.js
29561
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/fullscreen.js
29610
29562
  /**
29611
29563
  * Whether mouse click handling is disabled for the ported Ink core. dsh-tui
29612
29564
  * reads its own env flag (`CHATCODE_CLI_TUI_DISABLE_MOUSE`); the original module
@@ -29617,7 +29569,7 @@ function isMouseClicksDisabled() {
29617
29569
  return isEnvTruthy(readTuiEnv("DISABLE_MOUSE"));
29618
29570
  }
29619
29571
  //#endregion
29620
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/input-suppression.js
29572
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/input-suppression.js
29621
29573
  /**
29622
29574
  * Input suppression window for terminal handoffs (issue #123): when stdin is
29623
29575
  * handed to an external TUI (full-screen editor) and back, the tty can
@@ -29644,7 +29596,7 @@ function isInputSuppressed() {
29644
29596
  return Date.now() < suppressedUntil;
29645
29597
  }
29646
29598
  //#endregion
29647
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/termio/tokenize.js
29599
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/termio/tokenize.js
29648
29600
  /**
29649
29601
  * Input Tokenizer - Escape sequence boundary detection
29650
29602
  *
@@ -29842,7 +29794,7 @@ function tokenize$2(input, initialState, initialBuffer, flush, x10Mouse, splitIn
29842
29794
  };
29843
29795
  }
29844
29796
  //#endregion
29845
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/parse-keypress.js
29797
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/parse-keypress.js
29846
29798
  /**
29847
29799
  * Keyboard input parser - converts terminal input to key events
29848
29800
  *
@@ -30906,7 +30858,7 @@ function createWheelKey(s, name, col, row, button) {
30906
30858
  };
30907
30859
  }
30908
30860
  //#endregion
30909
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/events/input-event.js
30861
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/events/input-event.js
30910
30862
  function parseKey(keypress) {
30911
30863
  const key = {
30912
30864
  upArrow: keypress.name === "up",
@@ -30991,7 +30943,7 @@ var InputEvent = class extends Event {
30991
30943
  }
30992
30944
  };
30993
30945
  //#endregion
30994
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/events/terminal-focus-event.js
30946
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/events/terminal-focus-event.js
30995
30947
  /**
30996
30948
  * Event fired when the terminal window gains or loses focus.
30997
30949
  *
@@ -31010,7 +30962,7 @@ var TerminalFocusEvent = class extends Event {
31010
30962
  }
31011
30963
  };
31012
30964
  //#endregion
31013
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/node-cache.js
30965
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/node-cache.js
31014
30966
  /** Layout bounds cached per rendered node, used for blitting and clearing. */
31015
30967
  const nodeCache = /* @__PURE__ */ new WeakMap();
31016
30968
  /** Rects of removed children that need clearing on next render */
@@ -31048,7 +31000,7 @@ function consumeAbsoluteRemovedFlag() {
31048
31000
  return had;
31049
31001
  }
31050
31002
  //#endregion
31051
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/events/terminal-event.js
31003
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/events/terminal-event.js
31052
31004
  /**
31053
31005
  * Base class for all terminal events with DOM-style propagation.
31054
31006
  *
@@ -31177,7 +31129,7 @@ var TerminalEvent = class extends Event {
31177
31129
  _prepareForTarget(_target) {}
31178
31130
  };
31179
31131
  //#endregion
31180
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/events/pointer-event.js
31132
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/events/pointer-event.js
31181
31133
  /**
31182
31134
  * Base class for pointer-derived terminal events (click, wheel, hover).
31183
31135
  *
@@ -31238,7 +31190,7 @@ var PointerEvent = class extends TerminalEvent {
31238
31190
  }
31239
31191
  };
31240
31192
  //#endregion
31241
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/events/drag-event.js
31193
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/events/drag-event.js
31242
31194
  /**
31243
31195
  * Component-level drag event (DOM HTML5 drag semantics subset).
31244
31196
  *
@@ -47346,7 +47298,7 @@ var require_react_reconciler_development = /* @__PURE__ */ __commonJSMin(((expor
47346
47298
  }, module.exports.default = module.exports, Object.defineProperty(module.exports, "__esModule", { value: !0 }));
47347
47299
  }));
47348
47300
  //#endregion
47349
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/layout/node.js
47301
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/layout/node.js
47350
47302
  var import_react_reconciler = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((exports, module) => {
47351
47303
  if (process.env.NODE_ENV === "production") module.exports = require_react_reconciler_production();
47352
47304
  else module.exports = require_react_reconciler_development();
@@ -47422,7 +47374,7 @@ const LayoutMeasureMode = {
47422
47374
  AtMost: "at-most"
47423
47375
  };
47424
47376
  //#endregion
47425
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/layout/yoga.js
47377
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/layout/yoga.js
47426
47378
  const EDGE_MAP = {
47427
47379
  all: Edge.All,
47428
47380
  horizontal: Edge.Horizontal,
@@ -47649,7 +47601,7 @@ function createYogaLayoutNode() {
47649
47601
  return new YogaLayoutNode(YOGA_INSTANCE.Node.create());
47650
47602
  }
47651
47603
  //#endregion
47652
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/layout/engine.js
47604
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/layout/engine.js
47653
47605
  /**
47654
47606
  * Create a new layout node backed by the Yoga adapter.
47655
47607
  * @returns an empty layout node with no children, styles, or measure function.
@@ -47658,7 +47610,7 @@ function createLayoutNode() {
47658
47610
  return createYogaLayoutNode();
47659
47611
  }
47660
47612
  //#endregion
47661
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/line-width-cache.js
47613
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/line-width-cache.js
47662
47614
  const cache = /* @__PURE__ */ new Map();
47663
47615
  const MAX_CACHE_SIZE = 4096;
47664
47616
  const MAX_CACHE_CHARS = 1e5;
@@ -47694,7 +47646,7 @@ function lineWidth(line) {
47694
47646
  return width;
47695
47647
  }
47696
47648
  //#endregion
47697
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/measure-text.js
47649
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/measure-text.js
47698
47650
  /**
47699
47651
  * Measure wrapped text dimensions in a single pass.
47700
47652
  * @param text - the text to measure.
@@ -47725,7 +47677,7 @@ function measureText(text, maxWidth) {
47725
47677
  };
47726
47678
  }
47727
47679
  //#endregion
47728
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/squash-text-nodes.js
47680
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/squash-text-nodes.js
47729
47681
  /**
47730
47682
  * Squash text nodes into styled segments, propagating styles down through the tree.
47731
47683
  * This allows structured styling without relying on ANSI string transforms.
@@ -47773,7 +47725,7 @@ function squashTextNodes(node) {
47773
47725
  return text;
47774
47726
  }
47775
47727
  //#endregion
47776
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/tabstops.js
47728
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/tabstops.js
47777
47729
  const DEFAULT_TAB_INTERVAL = 8;
47778
47730
  /**
47779
47731
  * Expand tab characters to spaces at fixed column intervals, preserving
@@ -48223,7 +48175,7 @@ function tokenize$1(str, endChar = Number.POSITIVE_INFINITY) {
48223
48175
  return ret;
48224
48176
  }
48225
48177
  //#endregion
48226
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/sliceAnsi.js
48178
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/sliceAnsi.js
48227
48179
  function isEndCode(code) {
48228
48180
  return code.code === code.endCode;
48229
48181
  }
@@ -48840,7 +48792,7 @@ function wrapAnsi$1(string, columns, options) {
48840
48792
  return normalizeText(String(string)).replaceAll("\r\n", "\n").split("\n").map((line) => exec(expandTabs$1(line), columns, options)).join("\n");
48841
48793
  }
48842
48794
  //#endregion
48843
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/wrapAnsi.js
48795
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/wrapAnsi.js
48844
48796
  const wrapAnsiBun = typeof Bun !== "undefined" && typeof Bun.wrapAnsi === "function" ? Bun.wrapAnsi : null;
48845
48797
  const SLOT_MIN_LENGTH = 2048;
48846
48798
  let slot = null;
@@ -48887,7 +48839,7 @@ function wrapAnsiNpmIncremental(input, columns, options) {
48887
48839
  */
48888
48840
  const wrapAnsi = wrapAnsiBun ?? wrapAnsiNpmIncremental;
48889
48841
  //#endregion
48890
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/wrap-text.js
48842
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/wrap-text.js
48891
48843
  const ELLIPSIS = "…";
48892
48844
  const WRAP_CACHE_MAX_ENTRIES = 2048;
48893
48845
  const WRAP_CACHE_MAX_CHARS = 2e6;
@@ -48951,7 +48903,7 @@ function wrapText$1(text, maxWidth, wrapType) {
48951
48903
  return text;
48952
48904
  }
48953
48905
  //#endregion
48954
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/dom.js
48906
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/dom.js
48955
48907
  /**
48956
48908
  * Create an element node of the given kind, allocating its yoga layout node
48957
48909
  * unless the kind renders without layout (`ink-virtual-text`, `ink-link`,
@@ -49271,7 +49223,7 @@ function findOwnerChainAtRow(root, y) {
49271
49223
  }
49272
49224
  }
49273
49225
  //#endregion
49274
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/events/event-handlers.js
49226
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/events/event-handlers.js
49275
49227
  /**
49276
49228
  * Reverse lookup: event type string → handler prop names.
49277
49229
  * Used by the dispatcher for O(1) handler lookup per node.
@@ -49325,7 +49277,7 @@ const EVENT_HANDLER_PROPS = new Set([
49325
49277
  "onWheel"
49326
49278
  ]);
49327
49279
  //#endregion
49328
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/events/dispatcher.js
49280
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/events/dispatcher.js
49329
49281
  function getHandler(node, eventType, capture) {
49330
49282
  const handlers = node._eventHandlers;
49331
49283
  if (!handlers) return void 0;
@@ -49493,7 +49445,7 @@ var Dispatcher = class {
49493
49445
  }
49494
49446
  };
49495
49447
  //#endregion
49496
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/events/focus-event.js
49448
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/events/focus-event.js
49497
49449
  /**
49498
49450
  * Focus event for component focus changes.
49499
49451
  *
@@ -49518,7 +49470,7 @@ var FocusEvent = class extends TerminalEvent {
49518
49470
  }
49519
49471
  };
49520
49472
  //#endregion
49521
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/focus.js
49473
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/focus.js
49522
49474
  const MAX_FOCUS_STACK = 32;
49523
49475
  /**
49524
49476
  * DOM-like focus manager for the Ink terminal UI.
@@ -49674,7 +49626,7 @@ function getFocusManager(node) {
49674
49626
  return getRootNode(node).focusManager;
49675
49627
  }
49676
49628
  //#endregion
49677
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/styles.js
49629
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/styles.js
49678
49630
  const applyPositionStyles = (node, style) => {
49679
49631
  if ("position" in style) node.setPositionType(style.position === "absolute" ? LayoutPositionType.Absolute : LayoutPositionType.Relative);
49680
49632
  if ("top" in style) applyPositionEdge(node, "top", style.top);
@@ -49809,7 +49761,7 @@ const styles = (node, style = {}, resolvedStyle) => {
49809
49761
  applyGapStyles(node, style);
49810
49762
  };
49811
49763
  //#endregion
49812
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/reconciler.js
49764
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/reconciler.js
49813
49765
  if (process.env.NODE_ENV === "development") try {
49814
49766
  import("./devtools-la_KkjCS.js");
49815
49767
  } catch (error) {
@@ -50129,7 +50081,7 @@ const reconciler = (0, import_react_reconciler.default)({
50129
50081
  });
50130
50082
  dispatcher.discreteUpdates = reconciler.discreteUpdates.bind(reconciler);
50131
50083
  //#endregion
50132
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/layout/geometry.js
50084
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/layout/geometry.js
50133
50085
  /**
50134
50086
  * Compute the smallest rectangle containing both input rectangles.
50135
50087
  * @param a - the first rectangle.
@@ -50161,7 +50113,7 @@ function clamp(value, min, max) {
50161
50113
  return value;
50162
50114
  }
50163
50115
  //#endregion
50164
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/warn.js
50116
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/warn.js
50165
50117
  /**
50166
50118
  * Log a warning when a value is present but not an integer.
50167
50119
  * @param value - the value to check; undefined is skipped silently.
@@ -50173,7 +50125,7 @@ function ifNotInteger(value, name) {
50173
50125
  logForDebugging(`${name} should be an integer, got ${value}`, { level: "warn" });
50174
50126
  }
50175
50127
  //#endregion
50176
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/screen.js
50128
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/screen.js
50177
50129
  /**
50178
50130
  * Pool of character strings shared across all screens.
50179
50131
  * With a shared pool, interned char IDs are valid across screens, so
@@ -51242,7 +51194,7 @@ function markNoSelectRegion(screen, x, y, width, height) {
51242
51194
  }
51243
51195
  }
51244
51196
  //#endregion
51245
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/selection.js
51197
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/selection.js
51246
51198
  /**
51247
51199
  * Text selection state for fullscreen mode.
51248
51200
  *
@@ -52208,7 +52160,7 @@ function applySelectionOverlay(screen, selection, stylePool) {
52208
52160
  }
52209
52161
  }
52210
52162
  //#endregion
52211
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/termio/dec.js
52163
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/termio/dec.js
52212
52164
  /**
52213
52165
  * DEC (Digital Equipment Corporation) Private Mode Sequences
52214
52166
  *
@@ -52274,7 +52226,7 @@ const ENABLE_MOUSE_TRACKING = decset(DEC.MOUSE_NORMAL) + decset(DEC.MOUSE_BUTTON
52274
52226
  /** Disable all mouse tracking modes enabled by ENABLE_MOUSE_TRACKING. */
52275
52227
  const DISABLE_MOUSE_TRACKING = decreset(DEC.MOUSE_SGR) + decreset(DEC.MOUSE_ANY) + decreset(DEC.MOUSE_BUTTON) + decreset(DEC.MOUSE_NORMAL);
52276
52228
  //#endregion
52277
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/terminal.js
52229
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/terminal.js
52278
52230
  /**
52279
52231
  * True when running inside a JetBrains IDE terminal (JediTerm). The IDE
52280
52232
  * injects `TERMINAL_EMULATOR=JetBrains-JediTerm` into the pty environment of
@@ -52516,7 +52468,7 @@ function writeDiffToTerminal(terminal, diff, skipSyncMarkers = false) {
52516
52468
  terminal.stdout.write(buffer);
52517
52469
  }
52518
52470
  //#endregion
52519
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/terminal-focus-state.js
52471
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/terminal-focus-state.js
52520
52472
  let focusState = "unknown";
52521
52473
  const resolvers = /* @__PURE__ */ new Set();
52522
52474
  const subscribers = /* @__PURE__ */ new Set();
@@ -52560,7 +52512,7 @@ function subscribeTerminalFocus(cb) {
52560
52512
  };
52561
52513
  }
52562
52514
  //#endregion
52563
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/AppContext.js
52515
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/AppContext.js
52564
52516
  /**
52565
52517
  * `AppContext` is a React context, which exposes a method to manually exit the app (unmount).
52566
52518
  */
@@ -52605,13 +52557,13 @@ var require_react_compiler_runtime_development = /* @__PURE__ */ __commonJSMin((
52605
52557
  })();
52606
52558
  }));
52607
52559
  //#endregion
52608
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/constants.js
52560
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/constants.js
52609
52561
  var import_compiler_runtime = (/* @__PURE__ */ __commonJSMin(((exports, module) => {
52610
52562
  if (process.env.NODE_ENV === "production") module.exports = require_react_compiler_runtime_production();
52611
52563
  else module.exports = require_react_compiler_runtime_development();
52612
52564
  })))();
52613
52565
  //#endregion
52614
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/geometry-trace.js
52566
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/geometry-trace.js
52615
52567
  /**
52616
52568
  * Geometry forensics — per-frame scroll-geometry trace (issues #421/#433).
52617
52569
  *
@@ -52691,7 +52643,7 @@ function endGeometryFrame(durationMs) {
52691
52643
  };
52692
52644
  }
52693
52645
  //#endregion
52694
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/TerminalFocusContext.js
52646
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/TerminalFocusContext.js
52695
52647
  const TerminalFocusContext = (0, import_react.createContext)({
52696
52648
  isTerminalFocused: true,
52697
52649
  terminalFocusState: "unknown"
@@ -52726,7 +52678,7 @@ function TerminalFocusProvider(t0) {
52726
52678
  return t2;
52727
52679
  }
52728
52680
  //#endregion
52729
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/hooks/use-terminal-focus.js
52681
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/hooks/use-terminal-focus.js
52730
52682
  /**
52731
52683
  * Hook to check if the terminal has focus.
52732
52684
  *
@@ -52741,7 +52693,7 @@ function useTerminalFocus() {
52741
52693
  return isTerminalFocused;
52742
52694
  }
52743
52695
  //#endregion
52744
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/ClockContext.js
52696
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/ClockContext.js
52745
52697
  function createClock(tickIntervalMs) {
52746
52698
  const subscribers = /* @__PURE__ */ new Map();
52747
52699
  let interval = null;
@@ -52838,7 +52790,7 @@ function _temp() {
52838
52790
  return createClock(16);
52839
52791
  }
52840
52792
  //#endregion
52841
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/CursorDeclarationContext.js
52793
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/CursorDeclarationContext.js
52842
52794
  /**
52843
52795
  * React context that provides the cursor-declaration setter to descendants.
52844
52796
  */
@@ -52878,7 +52830,7 @@ var require_escape_string_regexp = /* @__PURE__ */ __commonJSMin(((exports, modu
52878
52830
  };
52879
52831
  }));
52880
52832
  //#endregion
52881
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/Box.js
52833
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/Box.js
52882
52834
  var import_stack_utils = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((exports, module) => {
52883
52835
  const escapeStringRegexp = require_escape_string_regexp();
52884
52836
  const cwd = typeof process === "object" && process && typeof process.cwd === "function" ? process.cwd() : ".";
@@ -53246,7 +53198,7 @@ function Box(t0) {
53246
53198
  return t4;
53247
53199
  }
53248
53200
  //#endregion
53249
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/Text.js
53201
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/Text.js
53250
53202
  const memoizedStylesForWrap = {
53251
53203
  wrap: {
53252
53204
  flexGrow: 0,
@@ -53398,7 +53350,7 @@ function Text(t0) {
53398
53350
  return t16;
53399
53351
  }
53400
53352
  //#endregion
53401
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/ErrorOverview.js
53353
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/ErrorOverview.js
53402
53354
  const cleanupPath = (path) => {
53403
53355
  return path?.replace(`file://${process.cwd()}/`, "");
53404
53356
  };
@@ -53503,10 +53455,10 @@ function ErrorOverview({ error }) {
53503
53455
  });
53504
53456
  }
53505
53457
  //#endregion
53506
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/TerminalSizeContext.js
53458
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/TerminalSizeContext.js
53507
53459
  const TerminalSizeContext = (0, import_react.createContext)(null);
53508
53460
  //#endregion
53509
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/useTerminalNotification.js
53461
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/useTerminalNotification.js
53510
53462
  /**
53511
53463
  * React context providing a raw terminal write function. Null until a
53512
53464
  * TerminalWriteProvider is mounted.
@@ -53517,7 +53469,7 @@ const TerminalWriteContext = (0, import_react.createContext)(null);
53517
53469
  */
53518
53470
  const TerminalWriteProvider = TerminalWriteContext.Provider;
53519
53471
  //#endregion
53520
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/App.js
53472
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/App.js
53521
53473
  const SUPPORTS_SUSPEND = process.platform !== "win32";
53522
53474
  const STDIN_RESUME_GAP_MS = 5e3;
53523
53475
  const MULTI_CLICK_TIMEOUT_MS = 500;
@@ -54043,7 +53995,7 @@ function handleMouseEvent(app, m) {
54043
53995
  }
54044
53996
  }
54045
53997
  //#endregion
54046
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/events/keyboard-event.js
53998
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/events/keyboard-event.js
54047
53999
  /**
54048
54000
  * Keyboard event dispatched through the DOM tree via capture/bubble.
54049
54001
  *
@@ -54103,7 +54055,7 @@ function keyFromParsed(parsed) {
54103
54055
  return name || seq;
54104
54056
  }
54105
54057
  //#endregion
54106
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/frame.js
54058
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/frame.js
54107
54059
  /**
54108
54060
  * Create an empty frame with a zero-size screen, the given viewport, and a
54109
54061
  * visible cursor at the origin.
@@ -54129,7 +54081,7 @@ function emptyFrame(rows, columns, stylePool, charPool, hyperlinkPool) {
54129
54081
  };
54130
54082
  }
54131
54083
  //#endregion
54132
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/events/click-event.js
54084
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/events/click-event.js
54133
54085
  /**
54134
54086
  * Mouse click event. Fired on left-button release without drag, only when
54135
54087
  * mouse tracking is enabled (i.e. inside <AlternateScreen>).
@@ -54160,7 +54112,7 @@ var ClickEvent = class extends PointerEvent {
54160
54112
  }
54161
54113
  };
54162
54114
  //#endregion
54163
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/events/context-menu-event.js
54115
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/events/context-menu-event.js
54164
54116
  /**
54165
54117
  * Mouse context-menu event. Fired on right-button press (SGR button 2,
54166
54118
  * low bits of the raw button byte), mirroring the DOM `contextmenu` event
@@ -54184,7 +54136,7 @@ var ContextMenuEvent = class extends PointerEvent {
54184
54136
  }
54185
54137
  };
54186
54138
  //#endregion
54187
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/events/wheel-event.js
54139
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/events/wheel-event.js
54188
54140
  /**
54189
54141
  * Mouse wheel event dispatched to the ScrollBox under the pointer.
54190
54142
  *
@@ -54220,7 +54172,7 @@ function indentString(string, count = 1, options = {}) {
54220
54172
  return string.replace(regex, indent.repeat(count));
54221
54173
  }
54222
54174
  //#endregion
54223
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/get-max-width.js
54175
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/get-max-width.js
54224
54176
  /**
54225
54177
  * Returns the yoga node's content width (computed width minus padding and
54226
54178
  * border).
@@ -54325,7 +54277,7 @@ var cli_boxes_default = {
54325
54277
  }
54326
54278
  };
54327
54279
  //#endregion
54328
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/render-border.js
54280
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/render-border.js
54329
54281
  /** Built-in border styles beyond those provided by cli-boxes. */
54330
54282
  const CUSTOM_BORDER_STYLES = { dashed: {
54331
54283
  top: "╌",
@@ -54415,7 +54367,7 @@ const renderBorder = (x, y, node, output) => {
54415
54367
  }
54416
54368
  };
54417
54369
  //#endregion
54418
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/widest-line.js
54370
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/widest-line.js
54419
54371
  /**
54420
54372
  * Get the display width of the widest line in a string.
54421
54373
  * @param string - the text to measure, possibly containing newlines.
@@ -54434,7 +54386,7 @@ function widestLine(string) {
54434
54386
  return maxWidth;
54435
54387
  }
54436
54388
  //#endregion
54437
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/render-node-to-output.js
54389
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/render-node-to-output.js
54438
54390
  function isXtermJsHost() {
54439
54391
  return process.env.TERM_PROGRAM === "vscode" || isXtermJs();
54440
54392
  }
@@ -55250,7 +55202,7 @@ function dropSubtreeCache(node) {
55250
55202
  for (const child of node.childNodes) if (child.nodeName !== "#text") dropSubtreeCache(child);
55251
55203
  }
55252
55204
  //#endregion
55253
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/hit-test.js
55205
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/hit-test.js
55254
55206
  /**
55255
55207
  * Find the deepest DOM element whose rendered rect contains (col, row).
55256
55208
  *
@@ -55640,7 +55592,7 @@ function dispatchHover(root, col, row, hovered) {
55640
55592
  }
55641
55593
  }
55642
55594
  //#endregion
55643
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/flush-tick.js
55595
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/flush-tick.js
55644
55596
  /**
55645
55597
  * Monotonic terminal-flush counter for the ported Ink core.
55646
55598
  *
@@ -55673,7 +55625,7 @@ function getTerminalFlushTick() {
55673
55625
  return flushTick;
55674
55626
  }
55675
55627
  //#endregion
55676
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/instances.js
55628
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/instances.js
55677
55629
  /**
55678
55630
  * Live Ink instances keyed by their output stream, so consecutive render()
55679
55631
  * calls reuse the instance for a stream instead of creating a new one.
@@ -55682,7 +55634,7 @@ function getTerminalFlushTick() {
55682
55634
  */
55683
55635
  const instances = /* @__PURE__ */ new Map();
55684
55636
  //#endregion
55685
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/log-update.js
55637
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/log-update.js
55686
55638
  const CARRIAGE_RETURN = { type: "carriageReturn" };
55687
55639
  const NEWLINE = {
55688
55640
  type: "stdout",
@@ -56298,7 +56250,7 @@ var VirtualScreen = class {
56298
56250
  }
56299
56251
  };
56300
56252
  //#endregion
56301
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/optimizer.js
56253
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/optimizer.js
56302
56254
  /**
56303
56255
  * Optimize a diff by applying all optimization rules in a single pass.
56304
56256
  * This reduces the number of patches that need to be written to the terminal.
@@ -56363,7 +56315,7 @@ function optimize(diff) {
56363
56315
  return result;
56364
56316
  }
56365
56317
  //#endregion
56366
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/bidi.js
56318
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/bidi.js
56367
56319
  var import_bidi = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((exports, module) => {
56368
56320
  (function(global, factory) {
56369
56321
  typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, global.bidi_js = factory());
@@ -57139,7 +57091,7 @@ function hasRTLCharacters(text) {
57139
57091
  return /[\u0590-\u05FF\uFB1D-\uFB4F\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\uFB50-\uFDFF\uFE70-\uFEFF\u0780-\u07BF\u0700-\u074F]/u.test(text);
57140
57092
  }
57141
57093
  //#endregion
57142
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/output.js
57094
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/output.js
57143
57095
  /**
57144
57096
  * charCache bounds. The entry-count cap alone was not enough: a streaming
57145
57097
  * line produces a NEW cache key on every frame, and each entry's cost is
@@ -57809,7 +57761,7 @@ function writeLineToScreen(screen, line, x, y, screenWidth, stylePool, charCache
57809
57761
  return offsetX;
57810
57762
  }
57811
57763
  //#endregion
57812
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/render-to-screen.js
57764
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/render-to-screen.js
57813
57765
  const timing = {
57814
57766
  reconcile: 0,
57815
57767
  yoga: 0,
@@ -57903,7 +57855,7 @@ function applyPositionedHighlight(screen, stylePool, positions, rowOffset, curre
57903
57855
  return true;
57904
57856
  }
57905
57857
  //#endregion
57906
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/renderer.js
57858
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/renderer.js
57907
57859
  /**
57908
57860
  * Create the renderer function for a root DOM node. The returned renderer
57909
57861
  * reuses an Output across frames so its character cache persists.
@@ -57978,7 +57930,7 @@ function createRenderer(node, stylePool) {
57978
57930
  };
57979
57931
  }
57980
57932
  //#endregion
57981
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/searchHighlight.js
57933
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/searchHighlight.js
57982
57934
  /**
57983
57935
  * Highlight all visible occurrences of `query` in the screen buffer by
57984
57936
  * inverting cell styles (SGR 7). Post-render, same damage-tracking machinery
@@ -58040,7 +57992,7 @@ function applySearchHighlight(screen, query, stylePool) {
58040
57992
  return applied;
58041
57993
  }
58042
57994
  //#endregion
58043
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/ink.js
57995
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/ink.js
58044
57996
  const ALT_SCREEN_ANCHOR_CURSOR = Object.freeze({
58045
57997
  x: 0,
58046
57998
  y: 0,
@@ -59593,7 +59545,7 @@ const CONSOLE_STDERR_METHODS = [
59593
59545
  "trace"
59594
59546
  ];
59595
59547
  //#endregion
59596
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/root.js
59548
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/root.js
59597
59549
  /**
59598
59550
  * Mount a component and render the output.
59599
59551
  * @param node - the React element to render.
@@ -59676,7 +59628,7 @@ const getInstance = (stdout, createInstance) => {
59676
59628
  return instance;
59677
59629
  };
59678
59630
  //#endregion
59679
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/design-system/ThemedBox.js
59631
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/design-system/ThemedBox.js
59680
59632
  /** Resolves a color value that may be a theme key to a raw Color. */
59681
59633
  function resolveColor$1(color, theme) {
59682
59634
  if (!color) return void 0;
@@ -59701,7 +59653,7 @@ function ThemedBox({ borderColor, borderTopColor, borderBottomColor, borderLeftC
59701
59653
  });
59702
59654
  }
59703
59655
  //#endregion
59704
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/design-system/ThemedText.js
59656
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/design-system/ThemedText.js
59705
59657
  /**
59706
59658
  * Colors uncolored ThemedText in the subtree. Precedence: explicit `color` >
59707
59659
  * this > dimColor (in the Claude Code visual language, where message rows
@@ -59737,7 +59689,7 @@ function ThemedText({ color, backgroundColor, dimColor = false, bold = false, it
59737
59689
  });
59738
59690
  }
59739
59691
  //#endregion
59740
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/Spacer.js
59692
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/Spacer.js
59741
59693
  /**
59742
59694
  * A flexible space that expands along the major axis of its containing layout.
59743
59695
  * It's useful as a shortcut for filling all the available spaces between elements.
@@ -59752,7 +59704,7 @@ function Spacer() {
59752
59704
  return t0;
59753
59705
  }
59754
59706
  //#endregion
59755
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/Newline.js
59707
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/Newline.js
59756
59708
  /**
59757
59709
  * Adds one or more newline (\n) characters. Must be used within <Text> components.
59758
59710
  */
@@ -59775,7 +59727,7 @@ function Newline(t0) {
59775
59727
  return t3;
59776
59728
  }
59777
59729
  //#endregion
59778
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/NoSelect.js
59730
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/NoSelect.js
59779
59731
  /**
59780
59732
  * Marks its contents as non-selectable in fullscreen text selection.
59781
59733
  * Cells inside this box are skipped by both the selection highlight and
@@ -59826,7 +59778,7 @@ function NoSelect(t0) {
59826
59778
  return t2;
59827
59779
  }
59828
59780
  //#endregion
59829
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/AlternateScreen.js
59781
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/AlternateScreen.js
59830
59782
  /**
59831
59783
  * Run children in the terminal's alternate screen buffer, constrained to
59832
59784
  * the viewport height. While mounted:
@@ -59901,7 +59853,7 @@ function AlternateScreen(t0) {
59901
59853
  return t5;
59902
59854
  }
59903
59855
  //#endregion
59904
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/ScrollBox.js
59856
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/ScrollBox.js
59905
59857
  /**
59906
59858
  * A Box with `overflow: scroll` and an imperative scroll API.
59907
59859
  *
@@ -60079,7 +60031,7 @@ function ScrollBox({ children, ref, stickyScroll, ...style }) {
60079
60031
  });
60080
60032
  }
60081
60033
  //#endregion
60082
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/hooks/use-input.js
60034
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/hooks/use-input.js
60083
60035
  /**
60084
60036
  * Keep an event listener stable while always dispatching to the latest render's
60085
60037
  * callback. Keeping this hook local is important for packaged installs: a
@@ -60145,7 +60097,7 @@ const useInput = (inputHandler, options = {}) => {
60145
60097
  }, [internal_eventEmitter, handleData]);
60146
60098
  };
60147
60099
  //#endregion
60148
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/hooks/use-selection.js
60100
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/hooks/use-selection.js
60149
60101
  /**
60150
60102
  * Access to text selection operations on the Ink instance (fullscreen only).
60151
60103
  * Returns no-op functions when fullscreen mode is disabled.
@@ -60185,7 +60137,7 @@ function useSelection() {
60185
60137
  }, [ink]);
60186
60138
  }
60187
60139
  //#endregion
60188
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/hooks/use-copy-on-select.js
60140
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/hooks/use-copy-on-select.js
60189
60141
  /**
60190
60142
  * Copy-on-select: when a drag finishes (or a double/triple click, or a
60191
60143
  * shift+arrow extension, lands a selection), copy the selected text to the
@@ -60225,14 +60177,14 @@ function useCopyOnSelect(onCopied) {
60225
60177
  ]);
60226
60178
  }
60227
60179
  //#endregion
60228
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/hooks/use-app.js
60180
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/hooks/use-app.js
60229
60181
  /**
60230
60182
  * React hook exposing the manual app-exit function from `AppContext`.
60231
60183
  * @returns the `AppContext` value, whose `exit` function unmounts the app.
60232
60184
  */
60233
60185
  const useApp = () => (0, import_react.useContext)(AppContext);
60234
60186
  //#endregion
60235
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/hooks/use-terminal-viewport.js
60187
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/hooks/use-terminal-viewport.js
60236
60188
  /**
60237
60189
  * Hook to detect if a component is within the terminal viewport.
60238
60190
  *
@@ -60286,7 +60238,7 @@ function useTerminalViewport() {
60286
60238
  return [setElement, entryRef.current];
60287
60239
  }
60288
60240
  //#endregion
60289
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/hooks/use-animation-frame.js
60241
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/hooks/use-animation-frame.js
60290
60242
  /**
60291
60243
  * Hook for synchronized animations that pause when offscreen.
60292
60244
  *
@@ -60335,7 +60287,7 @@ function useAnimationFrame(intervalMs = 16) {
60335
60287
  return [viewportRef, time];
60336
60288
  }
60337
60289
  //#endregion
60338
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/hooks/use-terminal-size.js
60290
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/hooks/use-terminal-size.js
60339
60291
  /** Terminal dimensions from the Ink app shell (from Claude Code).
60340
60292
  * @returns the current terminal dimensions.
60341
60293
  */
@@ -60345,7 +60297,7 @@ function useTerminalSize() {
60345
60297
  return size;
60346
60298
  }
60347
60299
  //#endregion
60348
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/hooks/useBlink.js
60300
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/hooks/useBlink.js
60349
60301
  const BLINK_INTERVAL_MS = 600;
60350
60302
  /**
60351
60303
  * Hook for synchronized blinking animations that pause when offscreen
@@ -60362,7 +60314,7 @@ function useBlink(enabled, intervalMs = BLINK_INTERVAL_MS) {
60362
60314
  return [ref, Math.floor(time / intervalMs) % 2 === 0];
60363
60315
  }
60364
60316
  //#endregion
60365
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/supports-hyperlinks.js
60317
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/supports-hyperlinks.js
60366
60318
  var import_supports_hyperlinks = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((exports, module) => {
60367
60319
  const supportsColor = require_supports_color();
60368
60320
  const hasFlag = require_has_flag();
@@ -60459,7 +60411,7 @@ function supportsHyperlinks(options) {
60459
60411
  return false;
60460
60412
  }
60461
60413
  //#endregion
60462
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/Link.js
60414
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/components/Link.js
60463
60415
  function Link(t0) {
60464
60416
  const $ = (0, import_compiler_runtime.c)(5);
60465
60417
  const { children, url, fallback } = t0;
@@ -60487,7 +60439,7 @@ function Link(t0) {
60487
60439
  return t2;
60488
60440
  }
60489
60441
  //#endregion
60490
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/termio/esc.js
60442
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/termio/esc.js
60491
60443
  /**
60492
60444
  * ESC Sequence Parser
60493
60445
  *
@@ -60543,7 +60495,7 @@ function parseEsc(chars) {
60543
60495
  };
60544
60496
  }
60545
60497
  //#endregion
60546
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/termio/types.js
60498
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/termio/types.js
60547
60499
  /**
60548
60500
  * ANSI Parser - Semantic Types
60549
60501
  *
@@ -60571,7 +60523,7 @@ function defaultStyle() {
60571
60523
  };
60572
60524
  }
60573
60525
  //#endregion
60574
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/termio/sgr.js
60526
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/termio/sgr.js
60575
60527
  /**
60576
60528
  * SGR (Select Graphic Rendition) Parser
60577
60529
  *
@@ -60879,7 +60831,7 @@ function applySGR(paramStr, style) {
60879
60831
  return s;
60880
60832
  }
60881
60833
  //#endregion
60882
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/termio/parser.js
60834
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/termio/parser.js
60883
60835
  /**
60884
60836
  * ANSI Parser - Semantic Action Generator
60885
60837
  *
@@ -61256,7 +61208,7 @@ var Parser = class {
61256
61208
  }
61257
61209
  };
61258
61210
  //#endregion
61259
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/Ansi.js
61211
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/Ansi.js
61260
61212
  /**
61261
61213
  * Component that parses ANSI escape codes and renders them using Text components.
61262
61214
  *
@@ -61507,7 +61459,7 @@ function StyledText(t0) {
61507
61459
  return t1;
61508
61460
  }
61509
61461
  //#endregion
61510
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ui.js
61462
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ui.js
61511
61463
  var ui_exports = /* @__PURE__ */ __exportAll({
61512
61464
  AlternateScreen: () => AlternateScreen,
61513
61465
  Ansi: () => Ansi,
@@ -61531,7 +61483,7 @@ var ui_exports = /* @__PURE__ */ __exportAll({
61531
61483
  useTheme: () => useTheme
61532
61484
  });
61533
61485
  //#endregion
61534
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/PageMargin.js
61486
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/PageMargin.js
61535
61487
  /** 嵌套安全的 inset(若未来出现嵌套 PageMargin 会累加)。 */
61536
61488
  const PageInsetContext = import_react.createContext({
61537
61489
  x: 0,
@@ -61585,7 +61537,7 @@ function PageMargin({ children }) {
61585
61537
  });
61586
61538
  }
61587
61539
  //#endregion
61588
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/cc/figures.js
61540
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/cc/figures.js
61589
61541
  /**
61590
61542
  * UI glyph constants used across the TUI: prompt markers, status badges,
61591
61543
  * direction arrows, media controls, reasoning-effort indicators, and
@@ -61612,7 +61564,7 @@ const THINKING_SPINNER_FRAMES = [
61612
61564
  "⠏"
61613
61565
  ];
61614
61566
  //#endregion
61615
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/providerWizard.js
61567
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/providerWizard.js
61616
61568
  /**
61617
61569
  * `/provider` wizard — interactively adds, edits, or deletes an LLM
61618
61570
  * provider route at runtime.
@@ -62338,7 +62290,7 @@ function buildProfile(input) {
62338
62290
  return profile;
62339
62291
  }
62340
62292
  //#endregion
62341
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/modelConfigWizard.js
62293
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/modelConfigWizard.js
62342
62294
  /**
62343
62295
  * `/model-config` is a compact settings-backed model editor. The landing page
62344
62296
  * keeps the managed catalog switch and selectable platform models in one
@@ -62391,7 +62343,7 @@ async function runModelConfigWizard(deps) {
62391
62343
  const selected = rows.find((row) => row.label === choice);
62392
62344
  if (choice !== void 0) landingFocus = choice;
62393
62345
  if (selected?.kind === "maas") {
62394
- if (deps.host.maas === void 0) {
62346
+ if (deps.host.maas?.setEnabled === void 0) {
62395
62347
  deps.notify(t("model-config-maas-unavailable"), {
62396
62348
  color: "warning",
62397
62349
  timeoutMs: 8e3
@@ -62436,11 +62388,11 @@ function landingRows(deps, builtInModels, maasModels) {
62436
62388
  const maas = deps.host.maas;
62437
62389
  const current = deps.current();
62438
62390
  return [
62439
- {
62391
+ ...maas !== void 0 && maas.setEnabled === void 0 ? [] : [{
62440
62392
  kind: "maas",
62441
62393
  label: t("model-config-maas-row"),
62442
62394
  value: maas === void 0 ? t("model-config-state-unavailable") : maas.enabled() ? t("model-config-state-on") : t("model-config-state-off")
62443
- },
62395
+ }],
62444
62396
  ...builtInModels.map((model) => ({
62445
62397
  kind: "built-in-model",
62446
62398
  label: markCurrent(counts.get(model.name) === 1 ? model.name : `${model.name} · ${t("model-config-builtin-provider-label")}`, model.provider === current.provider && model.id === current.model),
@@ -62465,7 +62417,7 @@ function markCurrent(label, current) {
62465
62417
  return current ? `${label} ${t("model-config-current-tag")}` : label;
62466
62418
  }
62467
62419
  //#endregion
62468
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/hooks/use-declared-cursor.js
62420
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/hooks/use-declared-cursor.js
62469
62421
  /**
62470
62422
  * Declares where the terminal cursor should be parked after each frame.
62471
62423
  *
@@ -62514,7 +62466,7 @@ function useDeclaredCursor(options) {
62514
62466
  return setNode;
62515
62467
  }
62516
62468
  //#endregion
62517
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/measure-element.js
62469
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/measure-element.js
62518
62470
  /**
62519
62471
  * Measure the rendered dimensions of a Box element.
62520
62472
  * @param node - the DOM element to measure.
@@ -62525,7 +62477,7 @@ const measureElement = (node) => ({
62525
62477
  height: node.yogaNode?.getComputedHeight() ?? 0
62526
62478
  });
62527
62479
  //#endregion
62528
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/design-system/Divider.js
62480
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/design-system/Divider.js
62529
62481
  const MAX_APPLIED_MEASUREMENTS = 8;
62530
62482
  /**
62531
62483
  * A horizontal divider line, optionally with a title in the middle
@@ -64236,7 +64188,7 @@ k.parseInline;
64236
64188
  T.parse;
64237
64189
  R.lex;
64238
64190
  //#endregion
64239
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/cc/syntaxTheme.js
64191
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/cc/syntaxTheme.js
64240
64192
  /** highlight.js token classes -> theme syntax tokens. `default` catches
64241
64193
  * every unmapped class so cli-highlight's own yellow never leaks through
64242
64194
  * (issue #250, P2-6). */
@@ -64302,7 +64254,7 @@ function buildSyntaxTheme(theme) {
64302
64254
  return out;
64303
64255
  }
64304
64256
  //#endregion
64305
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/cc/hyperlink.js
64257
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/cc/hyperlink.js
64306
64258
  /** OSC 8 hyperlink start sequence: `ESC ] 8 ; ;`, followed by the URL. */
64307
64259
  const OSC8_START = "\x1B]8;;";
64308
64260
  /** Schemes a rendered hyperlink may point at. Anything else degrades to
@@ -64344,7 +64296,7 @@ function createHyperlink(url, content, options) {
64344
64296
  return `${OSC8_START}${safeUrl}${(options?.style ?? ((text) => chalk.blue(text)))(displayText)}${OSC8_START}`;
64345
64297
  }
64346
64298
  //#endregion
64347
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/fileTarget.js
64299
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/fileTarget.js
64348
64300
  /**
64349
64301
  * Clickable file targets: turning path-like text in AI output into
64350
64302
  * clickable targets, and resolving those targets back to absolute paths at
@@ -64486,7 +64438,7 @@ function linkifyFilePaths(text, wrap) {
64486
64438
  });
64487
64439
  }
64488
64440
  //#endregion
64489
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/cc/markdown.js
64441
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/cc/markdown.js
64490
64442
  /**
64491
64443
  * Markdown-to-ANSI renderer over marked's token stream.
64492
64444
  *
@@ -64801,7 +64753,7 @@ function padAligned(content, displayWidth, targetWidth, align) {
64801
64753
  return content + " ".repeat(extra);
64802
64754
  }
64803
64755
  //#endregion
64804
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/cc/cliHighlight.js
64756
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/cc/cliHighlight.js
64805
64757
  let cliHighlightPromise;
64806
64758
  async function loadCliHighlight() {
64807
64759
  try {
@@ -64824,7 +64776,7 @@ function getCliHighlightPromise() {
64824
64776
  return cliHighlightPromise;
64825
64777
  }
64826
64778
  //#endregion
64827
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/MarkdownTable.js
64779
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/MarkdownTable.js
64828
64780
  /** Accounts for parent indentation and terminal resize races (from Claude Code). */
64829
64781
  const SAFETY_MARGIN = 4;
64830
64782
  /** Minimum column width to prevent degenerate layouts */
@@ -65011,7 +64963,7 @@ function MarkdownTable({ token, highlight, forceWidth }) {
65011
64963
  return (0, import_jsx_runtime.jsx)(Text, { children: tableLines.join("\n") });
65012
64964
  }
65013
64965
  //#endregion
65014
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/Markdown.js
64966
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/Markdown.js
65015
64967
  const TOKEN_CACHE_CAPACITY = 200;
65016
64968
  const TOKEN_CACHE_CHAR_BUDGET = 2e5;
65017
64969
  const TOKEN_CACHE_MAX_SOURCE_LENGTH = 2e4;
@@ -65120,7 +65072,7 @@ function MarkdownImpl({ children, dimColor = false, cacheTokens = true }) {
65120
65072
  */
65121
65073
  const Markdown = import_react.memo(MarkdownImpl, (prev, next) => prev.children === next.children && prev.dimColor === next.dimColor && prev.cacheTokens === next.cacheTokens);
65122
65074
  //#endregion
65123
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/questions/PlanReviewPanel.js
65075
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/questions/PlanReviewPanel.js
65124
65076
  /**
65125
65077
  * The plan-review panel — Claude Code style exit-plan-mode decision card
65126
65078
  * for the DSH user-interaction seam. plan-mode's `exit_plan_mode` tool asks
@@ -65442,7 +65394,7 @@ function PlanReviewPanel({ question, onAnswer, onCancel }) {
65442
65394
  });
65443
65395
  }
65444
65396
  //#endregion
65445
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/listWindow.js
65397
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/listWindow.js
65446
65398
  /**
65447
65399
  * 焦点居中的列表窗口:长列表只渲染焦点附近的一段,保证焦点行始终可见。
65448
65400
  * 瞬态面板走 OverlayAbove 零高度浮层后,超高部分会被 overflow 裁掉且焦点
@@ -65494,7 +65446,7 @@ function listWindow(heights, focusIndex, maxRows, gap = 0) {
65494
65446
  }
65495
65447
  }
65496
65448
  //#endregion
65497
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/questions/AskUserQuestionPanel.js
65449
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/questions/AskUserQuestionPanel.js
65498
65450
  /**
65499
65451
  * The questionnaire panel — Claude Code style ask-user-question UI for the
65500
65452
  * DSH user-interaction seam. One question per panel (progress header, header
@@ -66077,7 +66029,7 @@ function AskUserQuestionPanel({ question, position, total, answered, initialDraf
66077
66029
  });
66078
66030
  }
66079
66031
  //#endregion
66080
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/approvals/ApprovalPanel.js
66032
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/approvals/ApprovalPanel.js
66081
66033
  /**
66082
66034
  * The approval panel — Claude Code style permission prompt for the DSH
66083
66035
  * approval seam (`ctx.approval`). One ask per panel: a permission-colored
@@ -66202,7 +66154,7 @@ function ApprovalPanel({ approval, background = false, onDecide }) {
66202
66154
  });
66203
66155
  }
66204
66156
  //#endregion
66205
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/design-system/Pane.js
66157
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/design-system/Pane.js
66206
66158
  /**
66207
66159
  * A pane — a region below the prompt bounded by a colored top line with a
66208
66160
  * one-row gap above and horizontal padding, mirroring Claude Code's
@@ -66224,7 +66176,7 @@ function Pane({ children, color }) {
66224
66176
  });
66225
66177
  }
66226
66178
  //#endregion
66227
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/design-system/ListItem.js
66179
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/design-system/ListItem.js
66228
66180
  /**
66229
66181
  * A list item for selection UIs, mirroring Claude Code's
66230
66182
  * design-system/ListItem.tsx: `❯` pointer for the focused row, `✓`
@@ -66321,7 +66273,7 @@ function flattenDeep(node) {
66321
66273
  return node;
66322
66274
  }
66323
66275
  //#endregion
66324
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/design-system/HintLine.js
66276
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/design-system/HintLine.js
66325
66277
  /**
66326
66278
  * Localized shortcut-hint line: renders a `t('hint-*')` string, with the
66327
66279
  * `**primary shortcut**` segment (the main action's key, wrapped in `**` in
@@ -66338,7 +66290,7 @@ function HintLine({ text }) {
66338
66290
  }, index) : part) });
66339
66291
  }
66340
66292
  //#endregion
66341
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/ExtensionDialog.js
66293
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/ExtensionDialog.js
66342
66294
  /**
66343
66295
  * The managed plugin dialog (`ctx.tuiDialogs`) — one panel rendering the
66344
66296
  * store's current snapshot in the chat chrome (the slot approval/question
@@ -66598,7 +66550,7 @@ function InputDialog({ dialog, onDecide, onCancel }) {
66598
66550
  });
66599
66551
  }
66600
66552
  //#endregion
66601
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/hooks/use-search-highlight.js
66553
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/hooks/use-search-highlight.js
66602
66554
  /**
66603
66555
  * Set the search highlight query on the Ink instance. Non-empty → all
66604
66556
  * visible occurrences are inverted on the next frame (SGR 7, screen-buffer
@@ -66630,7 +66582,7 @@ function useSearchHighlight() {
66630
66582
  }, [ink]);
66631
66583
  }
66632
66584
  //#endregion
66633
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/hooks/use-terminal-title.js
66585
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/hooks/use-terminal-title.js
66634
66586
  /**
66635
66587
  * Declaratively set the terminal tab/window title.
66636
66588
  *
@@ -66653,7 +66605,7 @@ function useTerminalTitle(title) {
66653
66605
  }, [title, writeRaw]);
66654
66606
  }
66655
66607
  //#endregion
66656
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/sessions/format.js
66608
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/sessions/format.js
66657
66609
  /**
66658
66610
  * Session browser formatting.
66659
66611
  *
@@ -66902,7 +66854,7 @@ function projectName(cwd) {
66902
66854
  return normalized.split("/").filter(Boolean).at(-1) ?? normalized;
66903
66855
  }
66904
66856
  //#endregion
66905
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/Tooltip.js
66857
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/Tooltip.js
66906
66858
  /**
66907
66859
  * Tooltip hover system — the terminal equivalent of the HTML `title`
66908
66860
  * attribute. Attach {@link useTooltip} props to any Box whose visible text
@@ -67110,7 +67062,7 @@ function wrapTooltipContent(text, width) {
67110
67062
  return rows;
67111
67063
  }
67112
67064
  //#endregion
67113
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/messages/UserPromptMessage.js
67065
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/messages/UserPromptMessage.js
67114
67066
  /** User prompt row in the legacy CLI treatment: a full-width gray strip. */
67115
67067
  function UserPromptMessage({ text, addMargin, isSelected = false, onClick }) {
67116
67068
  const { columns } = useTerminalSize();
@@ -67139,7 +67091,7 @@ function UserPromptMessage({ text, addMargin, isSelected = false, onClick }) {
67139
67091
  });
67140
67092
  }
67141
67093
  //#endregion
67142
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/messages/AssistantTextMessage.js
67094
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/messages/AssistantTextMessage.js
67143
67095
  /**
67144
67096
  * Assistant text message: bullet + markdown body (mirroring Claude Code's default branch).
67145
67097
  *
@@ -67172,7 +67124,7 @@ function AssistantTextMessage({ text, addMargin, isSelected = false, isExpanded
67172
67124
  });
67173
67125
  }
67174
67126
  //#endregion
67175
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/StreamingMarkdown.js
67127
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/StreamingMarkdown.js
67176
67128
  /**
67177
67129
  * Renders markdown during streaming by splitting at the last top-level block
67178
67130
  * boundary: everything before is stable (memoized, never re-parsed), only the
@@ -67362,7 +67314,7 @@ function StreamingMarkdown({ children, dimColor = false }) {
67362
67314
  });
67363
67315
  }
67364
67316
  //#endregion
67365
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/Spinner/spinnerUtils.js
67317
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/Spinner/spinnerUtils.js
67366
67318
  /**
67367
67319
  * Spinner 动画的通用工具集:平台相关的帧字符选择、RGB 颜色插值、
67368
67320
  * HSL 色相转 RGB,以及 `rgb(...)` 颜色字符串的解析与记忆化。
@@ -67442,7 +67394,7 @@ function parseRGB(colorStr) {
67442
67394
  return parsed;
67443
67395
  }
67444
67396
  //#endregion
67445
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/shimmer.js
67397
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/shimmer.js
67446
67398
  /** Header blue-white ladder: brand → ice → pale → soft ice flash.
67447
67399
  * FLASH stays visibly blue (never pure white) — the highlight reads as a
67448
67400
  * mist-brightened crest, not a white strobe. */
@@ -67458,7 +67410,7 @@ const ICE = {
67458
67410
  b: 255
67459
67411
  };
67460
67412
  //#endregion
67461
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/messages/AssistantThinkingMessage.js
67413
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/messages/AssistantThinkingMessage.js
67462
67414
  /** Preview body rows — a FIXED row count (kimicode-style constant-height
67463
67415
  * ticker). Ink's truncate slices the whole string across newlines as one
67464
67416
  * logical line, so a single joined Text collapses to 1-2 rows whenever
@@ -67571,7 +67523,7 @@ function AssistantThinkingMessage({ thinking, textFull, addMargin, verbose, stre
67571
67523
  });
67572
67524
  }
67573
67525
  //#endregion
67574
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/ToolUseLoader.js
67526
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/ToolUseLoader.js
67575
67527
  const CATEGORY_BY_TOOL = {
67576
67528
  bash: "exec",
67577
67529
  powershell: "exec",
@@ -68152,7 +68104,7 @@ var ArrayDiff = class extends Diff {
68152
68104
  };
68153
68105
  new ArrayDiff();
68154
68106
  //#endregion
68155
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/cc/syntaxRuns.js
68107
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/cc/syntaxRuns.js
68156
68108
  const ANSI16 = {
68157
68109
  30: "rgb(0,0,0)",
68158
68110
  31: "rgb(128,0,0)",
@@ -68237,7 +68189,7 @@ function syntaxThemeSignature(theme) {
68237
68189
  return Object.values(SYNTAX_CLASS_TO_TOKEN).map((key) => palette[key] ?? "").join("|");
68238
68190
  }
68239
68191
  //#endregion
68240
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/smoothReveal.js
68192
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/smoothReveal.js
68241
68193
  /**
68242
68194
  * Smooth streaming reveal — decouples "text the provider has delivered" from
68243
68195
  * "text the screen is showing" (the oh-my-pi `display.smoothStreaming` idea,
@@ -68483,7 +68435,7 @@ function revealLinesOf(key, total, options) {
68483
68435
  return Math.min(existing.revealed, total);
68484
68436
  }
68485
68437
  //#endregion
68486
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/SplitDiffView.js
68438
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/SplitDiffView.js
68487
68439
  /** Replace tabs so width math and alignment hold (pi convention). */
68488
68440
  const expandTabs = (text) => text.replaceAll(" ", " ");
68489
68441
  /**
@@ -68792,7 +68744,7 @@ function SplitDiffView({ diffs, width, maxRows, verbose, toolBackground = "none"
68792
68744
  });
68793
68745
  }
68794
68746
  //#endregion
68795
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/SyntaxText.js
68747
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/SyntaxText.js
68796
68748
  /** Async nested Text renderer. Lexes the complete payload before splitting. */
68797
68749
  function SyntaxText({ text, language, sourceText = text, lineIndex = 0, color, dimColor }) {
68798
68750
  const [highlighter, setHighlighter] = import_react.useState(null);
@@ -68836,7 +68788,7 @@ function SyntaxText({ text, language, sourceText = text, lineIndex = 0, color, d
68836
68788
  }, index)) });
68837
68789
  }
68838
68790
  //#endregion
68839
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/trajectory/format.js
68791
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/trajectory/format.js
68840
68792
  /**
68841
68793
  * Trajectory formatting — durations, clocks, badges and heat.
68842
68794
  *
@@ -69038,7 +68990,7 @@ function ledgerLayout(columns) {
69038
68990
  };
69039
68991
  }
69040
68992
  //#endregion
69041
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/hooks/useRevealVersion.js
68993
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/hooks/useRevealVersion.js
69042
68994
  /**
69043
68995
  * Reveal-frame wakeup as a React hook — bumps once per advancing ~30fps
69044
68996
  * scheduler tick so consumers re-run their render-phase cursor reads
@@ -69068,7 +69020,7 @@ function useRevealVersion(enabled = true) {
69068
69020
  return version;
69069
69021
  }
69070
69022
  //#endregion
69071
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/messages/AssistantToolUseMessage.js
69023
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/messages/AssistantToolUseMessage.js
69072
69024
  /** Tool display names: DSH emits lowercase tool ids (`bash`); Claude Code
69073
69025
  * shows capitalized names (`Bash`). Map the common ones, fall back to the
69074
69026
  * id with its first letter uppercased. */
@@ -69604,7 +69556,7 @@ function AssistantToolUseMessage({ tool, addMargin, verbose, isSelected = false,
69604
69556
  });
69605
69557
  }
69606
69558
  //#endregion
69607
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/Chat/SubagentMessage.js
69559
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/Chat/SubagentMessage.js
69608
69560
  /** The waterfall window is a Kimi Code style constant-height region. */
69609
69561
  const WATERFALL_ROWS = 3;
69610
69562
  /** Card left padding + the `│ ` gutter prefix. */
@@ -69812,7 +69764,7 @@ function SubagentMessage({ subagent, addMargin, activityFrames, onClick }) {
69812
69764
  });
69813
69765
  }
69814
69766
  //#endregion
69815
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/Chat/JobCard.js
69767
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/Chat/JobCard.js
69816
69768
  /** Card left padding + the `│ ` gutter prefix. */
69817
69769
  const WATERFALL_GUTTER = 4;
69818
69770
  /** Static status marker — deliberately NOT the animated activity-indicator
@@ -69965,7 +69917,7 @@ function JobCard({ job, addMargin, onClick }) {
69965
69917
  });
69966
69918
  }
69967
69919
  //#endregion
69968
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/InterruptedByUser.js
69920
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/InterruptedByUser.js
69969
69921
  /**
69970
69922
  * The dim "interrupted" row shown when the user stops a turn, mirroring
69971
69923
  * Claude Code's `InterruptedByUser.tsx`.
@@ -69980,7 +69932,7 @@ function InterruptedByUser() {
69980
69932
  })] });
69981
69933
  }
69982
69934
  //#endregion
69983
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/gitCommitStats.js
69935
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/gitCommitStats.js
69984
69936
  /**
69985
69937
  * 当月 AI 代码生成占比统计(移植自 chatcode-cli 的同名服务)。
69986
69938
  *
@@ -70148,7 +70100,7 @@ function computeAiRatioPercent(records) {
70148
70100
  return clampPercent(aiAdoptedTotal / addedTotal * 100);
70149
70101
  }
70150
70102
  //#endregion
70151
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/hooks/useAiRatio.js
70103
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/hooks/useAiRatio.js
70152
70104
  /**
70153
70105
  * 「AI代码生成占比」数据源 Hook(移植自 chatcode-cli 的同名 Hook)。
70154
70106
  *
@@ -70192,7 +70144,7 @@ function useAiRatio(enabled = true) {
70192
70144
  };
70193
70145
  }
70194
70146
  //#endregion
70195
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/truncateToWidth.js
70147
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/ink/truncateToWidth.js
70196
70148
  /**
70197
70149
  * Slice a string to at most `maxWidth` terminal cells, walking by code
70198
70150
  * point so CJK wide characters never split mid-glyph. Assumes no ANSI in
@@ -70210,7 +70162,7 @@ function truncateToWidth(text, maxWidth) {
70210
70162
  return out;
70211
70163
  }
70212
70164
  //#endregion
70213
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/LogoV2.js
70165
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/LogoV2.js
70214
70166
  /** Main ChatCode CLI package version shown in the startup information panel. */
70215
70167
  const VERSION = PRODUCT_VERSION;
70216
70168
  const PRODUCT_LABEL = "chatcode-cli";
@@ -70446,7 +70398,7 @@ function LogoV2({ model, effort, cwd, whale = true, aiRatio, drift }) {
70446
70398
  });
70447
70399
  }
70448
70400
  //#endregion
70449
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/messages/MessageMetadata.js
70401
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/messages/MessageMetadata.js
70450
70402
  /**
70451
70403
  * Transcript-mode metadata row: `HH:MM · model`, right-aligned above the
70452
70404
  * assistant text, mirroring Claude Code's MessageTimestamp + MessageModel,
@@ -70468,7 +70420,7 @@ function MessageMetadata({ timestamp, model }) {
70468
70420
  });
70469
70421
  }
70470
70422
  //#endregion
70471
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/narration.js
70423
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/narration.js
70472
70424
  /**
70473
70425
  * Strip the `⏵` self-narration line from assistant text. The
70474
70426
  * dsh-working-activity narrate contract puts exactly one `⏵` line at the
@@ -70584,7 +70536,7 @@ function ellipsize(line, maxWidth) {
70584
70536
  return `${out}…`;
70585
70537
  }
70586
70538
  //#endregion
70587
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/MessageList.js
70539
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/MessageList.js
70588
70540
  /**
70589
70541
  * Transcript rows rendered in the Claude Code visual language: user prompts
70590
70542
  * on a grey bubble with a `❯` pointer, assistant text with a `●` bullet and
@@ -71397,7 +71349,7 @@ function LogoHeader({ model, effort, cwd, whale = true, skipIntro = false }) {
71397
71349
  });
71398
71350
  }
71399
71351
  //#endregion
71400
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/TimelineRail.js
71352
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/TimelineRail.js
71401
71353
  /** ▴ / ▾ (U+25B4 / U+25BE — the small triangles; CP437-safe on ConHost too). */
71402
71354
  const CHEVRON_UP = " ▴";
71403
71355
  const CHEVRON_DOWN = " ▾";
@@ -71591,7 +71543,7 @@ function TimelineRail({ handle, turns, activeId, upId, downId, terminalWidth, ho
71591
71543
  }) });
71592
71544
  }
71593
71545
  //#endregion
71594
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/ScrollbarGutter.js
71546
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/ScrollbarGutter.js
71595
71547
  /** Thumb glyph across the 2-col gutter: solid, clearly positional —
71596
71548
  * deliberately distinct from the timeline's ━━ active tick. */
71597
71549
  const THUMB = "██";
@@ -71707,7 +71659,7 @@ function ScrollbarGutter({ handle, terminalWidth }) {
71707
71659
  }) });
71708
71660
  }
71709
71661
  //#endregion
71710
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/OverlayAbove.js
71662
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/OverlayAbove.js
71711
71663
  /**
71712
71664
  * 瞬态面板的浮层容器:absolute 定位 + bottom:'100%' 把面板底边钉在锚点
71713
71665
  * (父元素)顶边,向上覆盖转录尾部行,自身**不占布局高度**。
@@ -71740,7 +71692,7 @@ function OverlayAbove({ children, maxHeight }) {
71740
71692
  });
71741
71693
  }
71742
71694
  //#endregion
71743
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/trajectory/motion.js
71695
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/trajectory/motion.js
71744
71696
  /**
71745
71697
  * Trajectory motion — five verbs, one shared clock, one hard rule.
71746
71698
  *
@@ -71865,7 +71817,7 @@ function alert(tick, startTick) {
71865
71817
  return Math.floor(age / 2) % 2 === 0 ? 1 : 0;
71866
71818
  }
71867
71819
  //#endregion
71868
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/trajectory/effortIgnition.js
71820
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/trajectory/effortIgnition.js
71869
71821
  /** 三幕时间轴(ms):扫光全长、字样启动(波至中段)、字样渐亮、渐隐起止。边框扫光与输入行字样徽标共用。 */
71870
71822
  const IGNITION_TIMELINE = {
71871
71823
  sweepMs: 1e3,
@@ -72013,7 +71965,7 @@ function ignitionLineColors(options) {
72013
71965
  return colors;
72014
71966
  }
72015
71967
  //#endregion
72016
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/EffortChargeGlyph.js
71968
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/EffortChargeGlyph.js
72017
71969
  /**
72018
71970
  * EffortChargeGlyph — 输入提示前缀 `❯ ` 的最高档强调与充能。
72019
71971
  *
@@ -72069,7 +72021,7 @@ function EffortChargeGlyph({ effort, levels, working }) {
72069
72021
  });
72070
72022
  }
72071
72023
  //#endregion
72072
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/EffortInputBorder.js
72024
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/EffortInputBorder.js
72073
72025
  /**
72074
72026
  * EffortInputBorder — 输入框层上的三幕点焰叠加(对齐 Codex 的完整
72075
72027
  * 语义:光扫过、档位字样浮现、整体渐隐)。
@@ -72204,7 +72156,7 @@ function EffortInputBorder({ effort, levels, columns, onLight, idleColor, topRig
72204
72156
  });
72205
72157
  }
72206
72158
  //#endregion
72207
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/EffortTierBadge.js
72159
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/EffortTierBadge.js
72208
72160
  /**
72209
72161
  * EffortTierBadge — 输入行尾的档位字样徽标:三幕点焰的第二幕载体
72210
72162
  * (与 EffortInputBorder 的双框扫光同一时间轴、同一触发),切到最高
@@ -72287,7 +72239,7 @@ function EffortTierBadge({ effort, levels, onLight, columns, leadingColumns }) {
72287
72239
  });
72288
72240
  }
72289
72241
  //#endregion
72290
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/clipboard.js
72242
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/clipboard.js
72291
72243
  /**
72292
72244
  * Cross-platform clipboard access for Ctrl+V paste. The TUI runs in raw
72293
72245
  * mode, so the terminal never performs its own paste for Ctrl+V — the key
@@ -72801,7 +72753,7 @@ function formatClipboardInsert(content) {
72801
72753
  return content.text.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
72802
72754
  }
72803
72755
  //#endregion
72804
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/externalEditor.js
72756
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/externalEditor.js
72805
72757
  /**
72806
72758
  * External editor round-trip for the prompt input (issue #123): Ctrl+G dumps
72807
72759
  * the current draft into a temp file, hands the terminal to `$VISUAL` /
@@ -73079,7 +73031,7 @@ async function editInExternalEditor(draft) {
73079
73031
  }
73080
73032
  }
73081
73033
  //#endregion
73082
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/PromptEditor.js
73034
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/PromptEditor.js
73083
73035
  let editorNode = null;
73084
73036
  const listeners = /* @__PURE__ */ new Set();
73085
73037
  /** Publish (or withdraw, with null) the fullscreen editor subtree. */
@@ -73155,7 +73107,7 @@ function EditorButton({ label, hint, onClick, primary, accent }) {
73155
73107
  });
73156
73108
  }
73157
73109
  //#endregion
73158
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/history.js
73110
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/history.js
73159
73111
  const HISTORY_DIR = DATA_DIR;
73160
73112
  const HISTORY_FILE = join(HISTORY_DIR, "history.jsonl");
73161
73113
  const HISTORY_LOCK = `${HISTORY_FILE}.lock`;
@@ -73289,7 +73241,7 @@ function historyEntryId(entry, index = 0) {
73289
73241
  return createHash("sha1").update(`${entry.text}\0${entry.ts}\0${index}`).digest("hex").slice(0, 12);
73290
73242
  }
73291
73243
  //#endregion
73292
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/SuggestionCard.js
73244
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/SuggestionCard.js
73293
73245
  /**
73294
73246
  * `/` 命令菜单与 `@` 文件菜单共用的圆角卡片外壳(与输入框 EffortInputBorder
73295
73247
  * 同款 ╭╮╰╯ 视觉语言):
@@ -73421,7 +73373,7 @@ function splitQueryMatch(name, query) {
73421
73373
  return startsWith(0) ?? (lastSpace >= 0 ? startsWith(lastSpace + 1) : null) ?? startsWith(name.lastIndexOf("/") + 1);
73422
73374
  }
73423
73375
  //#endregion
73424
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/CommandSuggestions.js
73376
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/CommandSuggestions.js
73425
73377
  /**
73426
73378
  * The slash-command suggestion overlay, mirroring Claude Code's
73427
73379
  * `PromptInputFooterSuggestions.tsx` (command layout only) wrapped in the
@@ -73501,7 +73453,7 @@ function CommandSuggestions({ commands, selectedIndex, columns, query = "", acce
73501
73453
  });
73502
73454
  }
73503
73455
  //#endregion
73504
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/FileSuggestions.js
73456
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/FileSuggestions.js
73505
73457
  /**
73506
73458
  * The `@` file-completion overlay in CC's suggestion style, wrapped in the
73507
73459
  * shared rounded `SuggestionCard` (与 `/` 命令菜单同一视觉语言):
@@ -73600,7 +73552,7 @@ function FileSuggestions({ files, selectedIndex, columns, query = "", accent, on
73600
73552
  });
73601
73553
  }
73602
73554
  //#endregion
73603
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/HelpMenu.js
73555
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/HelpMenu.js
73604
73556
  /**
73605
73557
  * The `?` help menu, mirroring Claude Code's `PromptInputHelpMenu.tsx`
73606
73558
  * (three-column shortcut layout, trimmed to the keys dsh-tui actually binds).
@@ -73791,7 +73743,7 @@ function HelpCommandRow({ command, onPick }) {
73791
73743
  });
73792
73744
  }
73793
73745
  //#endregion
73794
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/PromptInput.js
73746
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/PromptInput.js
73795
73747
  const HISTORY_LIMIT = 50;
73796
73748
  /**
73797
73749
  * Paste fold (CC-style collapse with a visible preview, no black box):
@@ -76071,7 +76023,7 @@ function wordSelectionAt(text, offset, lo, hi) {
76071
76023
  };
76072
76024
  }
76073
76025
  //#endregion
76074
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/GoalTodoPanel.js
76026
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/GoalTodoPanel.js
76075
76027
  /** Maximum todo rows shown before the overflow line. */
76076
76028
  const MAX_TODOS = 8;
76077
76029
  const PHASE_LABEL = {
@@ -76317,7 +76269,7 @@ function GoalTodoPanel({ channel, collapsed = false, onToggle }) {
76317
76269
  });
76318
76270
  }
76319
76271
  //#endregion
76320
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/AutoRecapRow.js
76272
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/AutoRecapRow.js
76321
76273
  /**
76322
76274
  * Auto-recap row (`dsh-tui.recapOnOpen` setting): a quiet, dim recap shown
76323
76275
  * at the bottom of the transcript after an automatic summary on session
@@ -76397,7 +76349,7 @@ function summarizeLoadedContext(context) {
76397
76349
  return parts.join(" · ");
76398
76350
  }
76399
76351
  //#endregion
76400
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/LoadedContextPanel.js
76352
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/LoadedContextPanel.js
76401
76353
  /** One named entry (section or dynamic context) with its full text. */
76402
76354
  function Entry({ entry }) {
76403
76355
  return (0, import_jsx_runtime.jsxs)(ThemedBox, {
@@ -76534,7 +76486,7 @@ function LoadedContextPanel({ context, open, onToggle }) {
76534
76486
  });
76535
76487
  }
76536
76488
  //#endregion
76537
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/MoonPhaseSpinner.js
76489
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/MoonPhaseSpinner.js
76538
76490
  /**
76539
76491
  * Terminal-safe construction cycle derived from the supplied China Unicom
76540
76492
  * knot mark. Every frame is one display cell, unlike emoji on mixed terminals.
@@ -76566,7 +76518,7 @@ function UnicomKnotSpinner({ time }) {
76566
76518
  });
76567
76519
  }
76568
76520
  //#endregion
76569
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/ActivityLine.js
76521
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/ActivityLine.js
76570
76522
  /**
76571
76523
  * Context-pressure percentage (0–100) from the last usage snapshot, or
76572
76524
  * undefined when unknown — shared by the spinner-line and status-line
@@ -76638,7 +76590,7 @@ function ActivityLine({ activity, activityFrames, warnPct, warnDanger, suffix })
76638
76590
  });
76639
76591
  }
76640
76592
  //#endregion
76641
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/trajectory/guards.js
76593
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/trajectory/guards.js
76642
76594
  /**
76643
76595
  * Structural guards for the session events the trajectory projection reads.
76644
76596
  *
@@ -76862,7 +76814,7 @@ function readTodos(data) {
76862
76814
  };
76863
76815
  }
76864
76816
  //#endregion
76865
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/trajectory/types.js
76817
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/trajectory/types.js
76866
76818
  /**
76867
76819
  * Trajectory projection — the data contract shared by the adapter-side fold
76868
76820
  * and the UI-side scene (issue #80 evolution).
@@ -76929,7 +76881,7 @@ function previewText(raw, limit) {
76929
76881
  return `${flat.slice(0, limit)}…`;
76930
76882
  }
76931
76883
  //#endregion
76932
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/trajectory/projection.js
76884
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/trajectory/projection.js
76933
76885
  /**
76934
76886
  * Trajectory projection — folding the session event log into ledger nodes.
76935
76887
  *
@@ -77508,7 +77460,7 @@ function extendTrajectory(previous, events) {
77508
77460
  };
77509
77461
  }
77510
77462
  //#endregion
77511
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/trajectory/aggregate.js
77463
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/trajectory/aggregate.js
77512
77464
  /**
77513
77465
  * Trajectory aggregate — the hotspot view's data and the session totals.
77514
77466
  *
@@ -77729,7 +77681,7 @@ function modelTiming(timing) {
77729
77681
  };
77730
77682
  }
77731
77683
  //#endregion
77732
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/trajectory/inspect.js
77684
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/trajectory/inspect.js
77733
77685
  /**
77734
77686
  * Inspector detail — full content, resolved on demand.
77735
77687
  *
@@ -77889,7 +77841,7 @@ function inspectNode(node, events) {
77889
77841
  };
77890
77842
  }
77891
77843
  //#endregion
77892
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/trajectory/wave.js
77844
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/trajectory/wave.js
77893
77845
  /**
77894
77846
  * Wave band projection — the whole session compressed onto one row of glyphs.
77895
77847
  *
@@ -78062,7 +78014,7 @@ function columnOfIndex(band, ledgerIndex) {
78062
78014
  return 0;
78063
78015
  }
78064
78016
  //#endregion
78065
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/trajectory/MiniWake.js
78017
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/trajectory/MiniWake.js
78066
78018
  /**
78067
78019
  * The mini wake — the whole session as a dozen glyphs in the status line.
78068
78020
  *
@@ -78165,7 +78117,7 @@ function toHex$1(colour) {
78165
78117
  return `#${hex(parsed.r)}${hex(parsed.g)}${hex(parsed.b)}`;
78166
78118
  }
78167
78119
  //#endregion
78168
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/screens/StatusMetrics.js
78120
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/screens/StatusMetrics.js
78169
78121
  /**
78170
78122
  * Status-line metric renderers, ported from two pi extensions:
78171
78123
  * - `pi-nano-context`: segmented context progress bar (morandi pastel
@@ -78441,7 +78393,7 @@ function tpsStats(samples, nowMs) {
78441
78393
  };
78442
78394
  }
78443
78395
  //#endregion
78444
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/ContextBarView.js
78396
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/ContextBarView.js
78445
78397
  /** Free-segment colors, mirroring StatusMetrics' dark-theme defaults. */
78446
78398
  const FREE_FILL = "#E8E8E8";
78447
78399
  const FREE_TEXT = "#4A4A4A";
@@ -78508,7 +78460,7 @@ function ContextBarView({ segments, usedTokens, contextWindow, width, colors, on
78508
78460
  });
78509
78461
  }
78510
78462
  //#endregion
78511
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/chatCodeTokenTrend.js
78463
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/chatCodeTokenTrend.js
78512
78464
  /**
78513
78465
  * ChatCode 今日总 Token 消耗量查询(移植自 chatcode-cli 的 chatCodeTokenTrend)。
78514
78466
  *
@@ -78583,7 +78535,7 @@ async function fetchTodayTotalTokens(post, signal) {
78583
78535
  }
78584
78536
  }
78585
78537
  //#endregion
78586
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/hooks/useTodayTotalTokens.js
78538
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/hooks/useTodayTotalTokens.js
78587
78539
  /**
78588
78540
  * 「今日总Token消耗」数据源 Hook(移植自 chatcode-cli 的 useTokenDashboard)。
78589
78541
  *
@@ -78615,7 +78567,7 @@ function useTodayTotalTokens(enabled = true) {
78615
78567
  return { totalTokens };
78616
78568
  }
78617
78569
  //#endregion
78618
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/TokenDashboard.js
78570
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/TokenDashboard.js
78619
78571
  const BAR_WIDTH = 14;
78620
78572
  /** Yuanjing-compatible percentage label centered inside a fixed-width bar. */
78621
78573
  function LabeledBar({ ratio, percent }) {
@@ -78691,7 +78643,7 @@ function TokenDashboard({ todayTokens, usedTokens, contextWindow, compact = fals
78691
78643
  });
78692
78644
  }
78693
78645
  //#endregion
78694
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/screens/StatusLine.js
78646
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/screens/StatusLine.js
78695
78647
  /** Stable fallback for stubbed channels: verify/repro harnesses render the
78696
78648
  * real Chat with partial channel literals that predate the jobs field. */
78697
78649
  const NO_BACKGROUND_JOBS = [];
@@ -79602,7 +79554,7 @@ const fallbackSymbols = {
79602
79554
  const figures = isUnicodeSupported() ? mainSymbols : fallbackSymbols;
79603
79555
  Object.entries(specialMainSymbols);
79604
79556
  //#endregion
79605
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/design-system/Byline.js
79557
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/design-system/Byline.js
79606
79558
  /**
79607
79559
  * Joins children with a middot separator (" · ") for inline metadata display
79608
79560
  * (in the Claude Code visual language). Automatically filters out
@@ -79618,7 +79570,7 @@ function Byline({ children }) {
79618
79570
  }), child] }, (0, import_react.isValidElement)(child) ? child.key ?? index : index)) });
79619
79571
  }
79620
79572
  //#endregion
79621
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/Spinner/GlimmerMessage.js
79573
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/Spinner/GlimmerMessage.js
79622
79574
  const ERROR_RED$1 = {
79623
79575
  r: 171,
79624
79576
  g: 43,
@@ -79708,7 +79660,7 @@ function GlimmerMessage({ message, mode, messageColor, glimmerIndex, flashOpacit
79708
79660
  })] });
79709
79661
  }
79710
79662
  //#endregion
79711
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/Spinner/SpinnerGlyph.js
79663
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/Spinner/SpinnerGlyph.js
79712
79664
  const DEFAULT_CHARACTERS = getDefaultCharacters();
79713
79665
  const SPINNER_FRAMES$1 = [...DEFAULT_CHARACTERS, ...[...DEFAULT_CHARACTERS].reverse()];
79714
79666
  const REDUCED_MOTION_DOT = "●";
@@ -79769,7 +79721,7 @@ function SpinnerGlyph({ frame, messageColor, stalledIntensity = 0, reducedMotion
79769
79721
  });
79770
79722
  }
79771
79723
  //#endregion
79772
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/Spinner/useStalledAnimation.js
79724
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/Spinner/useStalledAnimation.js
79773
79725
  /**
79774
79726
  * Tracks the transition to red when tokens stop flowing (mirroring Claude Code's `Spinner/useStalledAnimation.ts`). Driven by the parent's animation
79775
79727
  * clock time instead of independent intervals, so it slows down when the
@@ -79826,7 +79778,7 @@ function useStalledAnimation(time, currentResponseLength, hasActiveTools = false
79826
79778
  };
79827
79779
  }
79828
79780
  //#endregion
79829
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/Spinner/SpinnerAnimationRow.js
79781
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/Spinner/SpinnerAnimationRow.js
79830
79782
  const SEP_WIDTH = stringWidth$1(" · ");
79831
79783
  const THINKING_BARE_WIDTH = stringWidth$1("thinking");
79832
79784
  const SHOW_TOKENS_AFTER_MS = 3e4;
@@ -79993,7 +79945,7 @@ function SpinnerModeGlyph({ mode }) {
79993
79945
  }
79994
79946
  }
79995
79947
  //#endregion
79996
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/WorkingSpinner.js
79948
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/WorkingSpinner.js
79997
79949
  /**
79998
79950
  * The working spinner block shown between the transcript and the prompt
79999
79951
  * input while a turn is in flight. Mirrors Claude Code's `Spinner.tsx`
@@ -80063,7 +80015,7 @@ function useThinkingStatus(isThinking) {
80063
80015
  return thinkingStatus;
80064
80016
  }
80065
80017
  //#endregion
80066
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/ModelPicker.js
80018
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/ModelPicker.js
80067
80019
  /**
80068
80020
  * Model picker in the CC ModelPicker style: a permission-colored Pane with
80069
80021
  * the rows as Select entries (❯ focus pointer, ✓ on the active row,
@@ -80123,7 +80075,7 @@ function ModelPicker(props) {
80123
80075
  });
80124
80076
  }
80125
80077
  //#endregion
80126
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/PluginSceneBoundary.js
80078
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/PluginSceneBoundary.js
80127
80079
  /**
80128
80080
  * Error boundary for plugin scenes (dsh-tui-scenes). A scene component is
80129
80081
  * third-party code rendered inside Chat's tree: without a boundary a render
@@ -80149,7 +80101,7 @@ var PluginSceneBoundary = class extends import_react.Component {
80149
80101
  }
80150
80102
  };
80151
80103
  //#endregion
80152
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/design-system/LoadingState.js
80104
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/design-system/LoadingState.js
80153
80105
  const SPINNER_FRAMES = [...getDefaultCharacters(), ...[...getDefaultCharacters()].reverse()];
80154
80106
  /**
80155
80107
  * A spinner with a loading message for async operations, mirroring Claude Code's design-system/LoadingState.tsx (using the small animated glyph).
@@ -80180,7 +80132,7 @@ function LoadingState({ message, bold = false, dimColor = false, subtitle }) {
80180
80132
  });
80181
80133
  }
80182
80134
  //#endregion
80183
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/SkillsPicker.js
80135
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/SkillsPicker.js
80184
80136
  /** 来源桶 → 本地化标签(未知桶原样显示,SkillSource 对自定义桶开放)。 */
80185
80137
  function sourceLabel(source) {
80186
80138
  switch (source) {
@@ -80258,7 +80210,7 @@ function SkillsPickerLoading() {
80258
80210
  });
80259
80211
  }
80260
80212
  //#endregion
80261
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/SearchBox.js
80213
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/SearchBox.js
80262
80214
  /**
80263
80215
  * Window a single-line query around the caret so the visible slice fits
80264
80216
  * `avail` display cells (CJK display width, code-point safe — `[...s]`
@@ -80396,7 +80348,7 @@ function SearchBox({ query, placeholder = "Search…", isFocused, isTerminalFocu
80396
80348
  });
80397
80349
  }
80398
80350
  //#endregion
80399
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/sessions/SessionListRow.js
80351
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/sessions/SessionListRow.js
80400
80352
  /**
80401
80353
  * One session in the browser's list: a title line and a metadata line.
80402
80354
  *
@@ -80477,7 +80429,7 @@ function SessionListRow({ session, width, depth, focused, pinned, now, onClick,
80477
80429
  });
80478
80430
  }
80479
80431
  //#endregion
80480
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/sessions/SessionPreview.js
80432
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/sessions/SessionPreview.js
80481
80433
  /** Role marker and colour for a preview entry. */
80482
80434
  const ROLE = {
80483
80435
  user: {
@@ -80568,7 +80520,7 @@ function SessionPreview({ session, entries, loading, width, height, home, now })
80568
80520
  });
80569
80521
  }
80570
80522
  //#endregion
80571
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/sessions/WorkspaceListRow.js
80523
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/sessions/WorkspaceListRow.js
80572
80524
  /** One two-line working-directory choice in the /resume browser. */
80573
80525
  function WorkspaceListRow({ workspace, all, totalProjects, totalSessions, width, focused, selected, home, now, onClick }) {
80574
80526
  const [hovered, setHovered] = (0, import_react.useState)(false);
@@ -80613,7 +80565,7 @@ function WorkspaceListRow({ workspace, all, totalProjects, totalSessions, width,
80613
80565
  });
80614
80566
  }
80615
80567
  //#endregion
80616
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/sessions/view.js
80568
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/sessions/view.js
80617
80569
  /** The browser's default view: this project, conversations only. */
80618
80570
  const DEFAULT_FILTERS = {
80619
80571
  query: "",
@@ -80902,7 +80854,7 @@ function windowEnd(rows, top, budget) {
80902
80854
  return at;
80903
80855
  }
80904
80856
  //#endregion
80905
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/sessionPins.js
80857
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/sessionPins.js
80906
80858
  /**
80907
80859
  * Pinned sessions for the `/resume` browser, kept at
80908
80860
  * `~/.chatcode-cli/tui/session-pins.json` (a JSON array of session ids) so the pins
@@ -81051,7 +81003,7 @@ function setSessionPinned(id, pinned, dir = DATA_DIR) {
81051
81003
  }
81052
81004
  }
81053
81005
  //#endregion
81054
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/screens/SessionBrowser.js
81006
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/screens/SessionBrowser.js
81055
81007
  /**
81056
81008
  * Rows the layout cannot do without: the header, the four-row scope/search
81057
81009
  * card, the notice slot, and the hints. Everything else yields before these.
@@ -81937,7 +81889,7 @@ function SessionBrowser({ channel, home, sameProject, onClose }) {
81937
81889
  });
81938
81890
  }
81939
81891
  //#endregion
81940
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/screens/SessionTree.js
81892
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/screens/SessionTree.js
81941
81893
  /** Local HH:MM (or MM/DD HH:MM when older than this year). */
81942
81894
  function formatTime(at, now) {
81943
81895
  const date = new Date(at);
@@ -82693,7 +82645,7 @@ function PreviewPane({ entry, meta, width, height, liveSessionId, now, compact }
82693
82645
  });
82694
82646
  }
82695
82647
  //#endregion
82696
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/screens/Settings.js
82648
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/screens/Settings.js
82697
82649
  /** Pick the provider-owned translation for the active language. */
82698
82650
  function pick(text, descriptions) {
82699
82651
  return descriptions?.[getLang()] ?? text;
@@ -83437,7 +83389,7 @@ function Settings({ channel, onClose, initialGroup }) {
83437
83389
  });
83438
83390
  }
83439
83391
  //#endregion
83440
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/WorkspacePicker.js
83392
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/WorkspacePicker.js
83441
83393
  const WINDOW$1 = 8;
83442
83394
  /** `/workspace` target picker contributed by local and optional providers. */
83443
83395
  function WorkspacePicker({ targets, focusIndex, currentCwd, onPick }) {
@@ -83475,7 +83427,7 @@ function WorkspacePicker({ targets, focusIndex, currentCwd, onPick }) {
83475
83427
  });
83476
83428
  }
83477
83429
  //#endregion
83478
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/Select.js
83430
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/Select.js
83479
83431
  /**
83480
83432
  * A single-choice select list in the CC CustomSelect style (ported visual:
83481
83433
  * ListItem rows with ❯ focus pointer, ✓ selected checkmark, descriptions,
@@ -83502,7 +83454,7 @@ function Select({ options, focusIndex, selectedValue, visibleOptionCount = 5, on
83502
83454
  });
83503
83455
  }
83504
83456
  //#endregion
83505
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/WorkspaceMenuPicker.js
83457
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/WorkspaceMenuPicker.js
83506
83458
  /**
83507
83459
  * Bare `/workspace` action menu: the built-in subcommands (resume / rename /
83508
83460
  * open) plus any dynamically registered workspace extensions. Enter runs the
@@ -83543,7 +83495,7 @@ function WorkspaceMenuPicker({ options, focusIndex, onPick }) {
83543
83495
  });
83544
83496
  }
83545
83497
  //#endregion
83546
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/WorkspaceFlowPicker.js
83498
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/WorkspaceFlowPicker.js
83547
83499
  const WINDOW = 8;
83548
83500
  /** Generic nested choice surface returned by a workspace provider command. */
83549
83501
  function WorkspaceFlowPicker({ title, choices, focusIndex, busy = false, input = null, onPick }) {
@@ -83601,7 +83553,7 @@ function WorkspaceFlowPicker({ title, choices, focusIndex, busy = false, input =
83601
83553
  });
83602
83554
  }
83603
83555
  //#endregion
83604
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/ActivityPicker.js
83556
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/ActivityPicker.js
83605
83557
  /**
83606
83558
  * Working-activity indicator picker in the CC ModelPicker style (ported
83607
83559
  * from the pi extension's `/activity` interactive select): a
@@ -83643,7 +83595,7 @@ function ActivityPicker({ focusIndex, currentPreset, onPick }) {
83643
83595
  });
83644
83596
  }
83645
83597
  //#endregion
83646
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/ColorPicker.js
83598
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/ColorPicker.js
83647
83599
  /**
83648
83600
  * Session accent color picker (bare `/color`): a permission-colored Pane
83649
83601
  * listing the whole palette with a colored swatch per row, `❯` focus
@@ -83687,7 +83639,7 @@ function ColorPicker({ focusIndex, currentColor, onPick }) {
83687
83639
  });
83688
83640
  }
83689
83641
  //#endregion
83690
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/EffortSlider.js
83642
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/EffortSlider.js
83691
83643
  /**
83692
83644
  * Reasoning-effort slider (`/effort`): a rheostat row of the live route's
83693
83645
  * adapter-owned levels in adapter order, ←/→ moving focus (each move applies
@@ -83746,7 +83698,7 @@ function EffortSlider({ options, focusIndex, currentId, onPick }) {
83746
83698
  });
83747
83699
  }
83748
83700
  //#endregion
83749
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/PresetPicker.js
83701
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/PresetPicker.js
83750
83702
  /**
83751
83703
  * Agent-preset picker (issue #8) in the CC ModelPicker style — same chrome
83752
83704
  * as the ActivityPicker: a permission-colored Pane listing every roster
@@ -83790,7 +83742,7 @@ function PresetPicker({ presets, focusIndex, currentPreset, onPick }) {
83790
83742
  });
83791
83743
  }
83792
83744
  //#endregion
83793
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/PermissionsPicker.js
83745
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/PermissionsPicker.js
83794
83746
  /**
83795
83747
  * `/permission` sandbox-preset picker. The command itself is registered by
83796
83748
  * the harness side (dsh-sandbox-policy / dsh-base permission-presets row);
@@ -83837,7 +83789,7 @@ function PermissionsPicker({ options, focusIndex, currentValue, cwd, onPick }) {
83837
83789
  });
83838
83790
  }
83839
83791
  //#endregion
83840
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/PlanPicker.js
83792
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/PlanPicker.js
83841
83793
  /**
83842
83794
  * `/plan` on/off picker. The command itself is registered by dsh-plan-mode
83843
83795
  * on the harness side; bare `/plan` opens this picker (with the current
@@ -83882,7 +83834,7 @@ function PlanPicker({ focusIndex, currentOn, onPick }) {
83882
83834
  });
83883
83835
  }
83884
83836
  //#endregion
83885
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/LangPicker.js
83837
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/LangPicker.js
83886
83838
  /**
83887
83839
  * `/lang` en/zh picker: bare `/lang` opens this picker (the current language
83888
83840
  * marked) and Enter applies the choice through the same path as `/lang <id>`.
@@ -83921,7 +83873,7 @@ function LangPicker({ focusIndex, currentLang, onPick }) {
83921
83873
  });
83922
83874
  }
83923
83875
  //#endregion
83924
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/ThemePicker.js
83876
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/ThemePicker.js
83925
83877
  /** One double-block swatch character per preview key, in a row. */
83926
83878
  const SWATCH = "██";
83927
83879
  /** Theme keys previewed in the picker, chosen for visual contrast. */
@@ -84007,7 +83959,7 @@ function ThemePicker({ focusIndex, currentTheme, themeHost, onPick }) {
84007
83959
  });
84008
83960
  }
84009
83961
  //#endregion
84010
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/ThinkingToggle.js
83962
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/ThinkingToggle.js
84011
83963
  /**
84012
83964
  * The `/thinking` display dialog: a permission-colored Pane with a bold
84013
83965
  * title, the Shown/Hidden select, and the Enter/Esc hint line.
@@ -84056,7 +84008,7 @@ function ThinkingToggle({ currentValue, focusIndex, onPick }) {
84056
84008
  });
84057
84009
  }
84058
84010
  //#endregion
84059
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/HistorySearchDialog.js
84011
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/HistorySearchDialog.js
84060
84012
  /**
84061
84013
  * The ctrl+r history search dialog, in the shape of Claude Code's
84062
84014
  * HistorySearchDialog/FuzzyPicker: a permission-colored Pane with a bold
@@ -84119,7 +84071,7 @@ function formatRelativeAge(ts) {
84119
84071
  return t("time-days-ago", { n: Math.floor(elapsed / 864e5) });
84120
84072
  }
84121
84073
  //#endregion
84122
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/RewindPicker.js
84074
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/RewindPicker.js
84123
84075
  /**
84124
84076
  * Double-Esc rewind picker (CC's "Double-tap esc to rewind the code and/or
84125
84077
  * conversation to a previous point in time"): lists the user's past messages
@@ -84256,7 +84208,7 @@ function preview(text) {
84256
84208
  return flat.length <= 80 ? flat : `${flat.slice(0, 80)}…`;
84257
84209
  }
84258
84210
  //#endregion
84259
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/BtwPanel.js
84211
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/BtwPanel.js
84260
84212
  /**
84261
84213
  * /btw side-question panel (CC's btw.tsx, inline-pane form like the local
84262
84214
  * pickers): title line with the question, a scrollable answer body (error /
@@ -84340,7 +84292,7 @@ function BtwPanel({ question, answer, error, streaming, onClose, onCopy }) {
84340
84292
  });
84341
84293
  }
84342
84294
  //#endregion
84343
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/ReleaseNotesPanel.js
84295
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/ReleaseNotesPanel.js
84344
84296
  function ReleaseNotesPanel({ release, onClose }) {
84345
84297
  const scrollRef = import_react.useRef(null);
84346
84298
  const { rows } = useTerminalSize();
@@ -84385,7 +84337,7 @@ function ReleaseNotesPanel({ release, onClose }) {
84385
84337
  });
84386
84338
  }
84387
84339
  //#endregion
84388
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/RecapPanel.js
84340
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/RecapPanel.js
84389
84341
  /**
84390
84342
  * `/recap` panel (pi-recap semantics), in the picker/dialog visual
84391
84343
  * language: a permission-colored Pane with a title bar (会话回顾), a
@@ -84506,7 +84458,7 @@ function RecapPanel({ summary, title, error, streaming, titleApplied, onClose, o
84506
84458
  });
84507
84459
  }
84508
84460
  //#endregion
84509
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/tips.js
84461
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/tips.js
84510
84462
  /**
84511
84463
  * 精简 Tips 池 —— 启动首屏轮换(LogoV2)与 `/tips` 命令面板共用。
84512
84464
  *
@@ -85220,7 +85172,7 @@ const TIPS = [
85220
85172
  }
85221
85173
  ];
85222
85174
  //#endregion
85223
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/TipsPanel.js
85175
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/TipsPanel.js
85224
85176
  const GROUP_ORDER = [
85225
85177
  "keys",
85226
85178
  "commands",
@@ -85299,7 +85251,7 @@ function TipsPanel({ onClose }) {
85299
85251
  });
85300
85252
  }
85301
85253
  //#endregion
85302
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/SubagentCard.js
85254
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/SubagentCard.js
85303
85255
  function formatDuration$1(ms) {
85304
85256
  const seconds = Math.floor(ms / 1e3);
85305
85257
  return seconds < 60 ? `${seconds}s` : `${Math.floor(seconds / 60)}m${seconds % 60}s`;
@@ -85354,7 +85306,7 @@ function SubagentCard({ subagent, focused, onClick }) {
85354
85306
  });
85355
85307
  }
85356
85308
  //#endregion
85357
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/SubagentDashboard.js
85309
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/SubagentDashboard.js
85358
85310
  /** 可点击 ✕ 退出按钮:整屏/浮层场景的鼠标退出通道(Esc 等价)。 */
85359
85311
  function ExitButton({ onClick }) {
85360
85312
  const [hovered, setHovered] = import_react.useState(false);
@@ -85502,7 +85454,7 @@ function SubagentDashboard({ subagents, onClose, onSelect }) {
85502
85454
  });
85503
85455
  }
85504
85456
  //#endregion
85505
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/JobsPanel.js
85457
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/JobsPanel.js
85506
85458
  function statusInfo(status) {
85507
85459
  const minimal = isMinimalMode();
85508
85460
  switch (status) {
@@ -85790,7 +85742,7 @@ function JobsPanel({ jobs, onClose, onKill }) {
85790
85742
  });
85791
85743
  }
85792
85744
  //#endregion
85793
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/SubagentDetailScene.js
85745
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/SubagentDetailScene.js
85794
85746
  function formatDuration(ms) {
85795
85747
  if (ms < 1e3) return `${ms}ms`;
85796
85748
  if (ms < 6e4) return `${(ms / 1e3).toFixed(1)}s`;
@@ -86248,7 +86200,7 @@ function FileActionsPanel({ path, isDir, focusIndex, onPick }) {
86248
86200
  });
86249
86201
  }
86250
86202
  //#endregion
86251
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/ProductivityPickers.js
86203
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/ProductivityPickers.js
86252
86204
  function oneLine(text, max = 70) {
86253
86205
  const compact = text.replace(/\s+/gu, " ").trim();
86254
86206
  return compact.length > max ? `${compact.slice(0, max - 1)}…` : compact;
@@ -86340,7 +86292,7 @@ function DiffLoading() {
86340
86292
  });
86341
86293
  }
86342
86294
  //#endregion
86343
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/productivityCommands.js
86295
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/productivityCommands.js
86344
86296
  /** `/copy` argument is a one-based reply age; omission selects the latest. */
86345
86297
  function parseCopyIndex(raw, count) {
86346
86298
  const value = raw.trim();
@@ -86393,7 +86345,7 @@ function gitDiffLines(report, labels) {
86393
86345
  ];
86394
86346
  }
86395
86347
  //#endregion
86396
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/sessionOrganizationCommands.js
86348
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/sessionOrganizationCommands.js
86397
86349
  /** Compact duration suitable for a terminal report row. */
86398
86350
  function formatStatsDuration(ms) {
86399
86351
  if (ms < 1e3) return `${Math.round(ms)} ms`;
@@ -86439,7 +86391,7 @@ function parsePresetManagement(input) {
86439
86391
  return { kind: "invalid" };
86440
86392
  }
86441
86393
  //#endregion
86442
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/workflowCommands.js
86394
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/workflowCommands.js
86443
86395
  const ALIASES = {
86444
86396
  map: "inspect",
86445
86397
  fixit: "repair",
@@ -86494,7 +86446,7 @@ function buildWorkflowCommand(name, rawInput = "") {
86494
86446
  };
86495
86447
  }
86496
86448
  //#endregion
86497
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/urlGuard.js
86449
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/utils/urlGuard.js
86498
86450
  const EXTERNAL_SCHEME = /^https?:\/\//i;
86499
86451
  /**
86500
86452
  * Classify a clicked link target. Mirrors the previous handleOpenTarget
@@ -86519,7 +86471,7 @@ function classifyOpenTarget(url) {
86519
86471
  return { kind: "rejected" };
86520
86472
  }
86521
86473
  //#endregion
86522
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/hooks/useExternalVersion.js
86474
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/hooks/useExternalVersion.js
86523
86475
  /**
86524
86476
  * Subscribe to an external store's version counter at DEFAULT lane.
86525
86477
  *
@@ -86568,7 +86520,7 @@ function useExternalVersion(subscribe, getVersion, enabled = true) {
86568
86520
  return version;
86569
86521
  }
86570
86522
  //#endregion
86571
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/trajectory/WaveBand.js
86523
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/trajectory/WaveBand.js
86572
86524
  /**
86573
86525
  * The wake — the whole session drawn as one row of glyphs.
86574
86526
  *
@@ -86705,7 +86657,7 @@ function toHex(colour) {
86705
86657
  return `#${hex(parsed.r)}${hex(parsed.g)}${hex(parsed.b)}`;
86706
86658
  }
86707
86659
  //#endregion
86708
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/trajectory/Ledger.js
86660
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/trajectory/Ledger.js
86709
86661
  /**
86710
86662
  * The ledger — one line per event, columns aligned across every row.
86711
86663
  *
@@ -86951,7 +86903,7 @@ function Ledger({ rows, start, height, cursor, width, tick, arrivalTick, arrival
86951
86903
  });
86952
86904
  }
86953
86905
  //#endregion
86954
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/trajectory/Inspector.js
86906
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/trajectory/Inspector.js
86955
86907
  /**
86956
86908
  * The inspector — full detail for the focused row, in a fixed-height slot.
86957
86909
  *
@@ -87057,7 +87009,7 @@ function Inspector({ node, detail, height, width, expanded, scroll }) {
87057
87009
  });
87058
87010
  }
87059
87011
  //#endregion
87060
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/trajectory/HotspotView.js
87012
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/components/trajectory/HotspotView.js
87061
87013
  /**
87062
87014
  * The hotspot view — the session ranked by cost instead of ordered by time.
87063
87015
  *
@@ -87220,7 +87172,7 @@ function HotspotView({ agg, sort, width, height, cursor, tick, switchTick, onRow
87220
87172
  });
87221
87173
  }
87222
87174
  //#endregion
87223
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/trajectory/query.js
87175
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/trajectory/query.js
87224
87176
  /**
87225
87177
  * Trajectory query — whole-session structured filtering.
87226
87178
  *
@@ -87416,7 +87368,7 @@ function applyQuery(nodes, query) {
87416
87368
  };
87417
87369
  }
87418
87370
  //#endregion
87419
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/screens/TrajectoryScene.js
87371
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/screens/TrajectoryScene.js
87420
87372
  /**
87421
87373
  * The trajectory scene — the session's own screen.
87422
87374
  *
@@ -87904,7 +87856,7 @@ function TrajectoryScene({ channel, build, onClose }) {
87904
87856
  });
87905
87857
  }
87906
87858
  //#endregion
87907
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/screens/LoadedContextScene.js
87859
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/screens/LoadedContextScene.js
87908
87860
  /** Build the non-empty pages shown by the loaded-context inspector. */
87909
87861
  function contextPages(context) {
87910
87862
  const pages = [];
@@ -88088,7 +88040,7 @@ function LoadedContextScene({ context, onClose }) {
88088
88040
  });
88089
88041
  }
88090
88042
  //#endregion
88091
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/screens/AgentView.js
88043
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/screens/AgentView.js
88092
88044
  /** Rows the layout cannot do without: header, model/cwd line, dispatch
88093
88045
  * input, hints. */
88094
88046
  const MANDATORY_LINES = 4;
@@ -88692,7 +88644,7 @@ function AgentView({ channel, home, approval, onApprove, returnSessionId, onClos
88692
88644
  });
88693
88645
  }
88694
88646
  //#endregion
88695
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/trajectoryPrefs.js
88647
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/trajectoryPrefs.js
88696
88648
  /**
88697
88649
  * Persisted "the user has seen the trajectory" flag, at
88698
88650
  * `~/.chatcode-cli/tui/trajectory.json`.
@@ -88752,7 +88704,7 @@ function writeTrajectorySeen(dir = DATA_DIR) {
88752
88704
  }
88753
88705
  }
88754
88706
  //#endregion
88755
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/screens/chatOverlay.js
88707
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/screens/chatOverlay.js
88756
88708
  const NO_OVERLAY = { kind: "none" };
88757
88709
  /**
88758
88710
  * One-step wrap-around cursor move — the single source of the wrapping rule
@@ -88862,7 +88814,7 @@ function dialogOverlayVisible(overlay, gates) {
88862
88814
  }
88863
88815
  }
88864
88816
  //#endregion
88865
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/screens/Chat.js
88817
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/screens/Chat.js
88866
88818
  const LOGOUT_EXIT_DELAY_MS = 200;
88867
88819
  /** Shared empty snapshot for hosts whose channel has no event log. */
88868
88820
  const NO_EVENTS = [];
@@ -89033,6 +88985,7 @@ function Chat({ channel, questionStore, approvalStore, releaseNotes, extensionDi
89033
88985
  return channel.switchModel(provider, id).then((ok) => {
89034
88986
  if (!ok) return ok;
89035
88987
  if (name !== void 0) channel.notify(t("model-switched", { name }));
88988
+ repaintTranscript();
89036
88989
  return ok;
89037
88990
  });
89038
88991
  };
@@ -92658,7 +92611,7 @@ function ModelPickerLoading() {
92658
92611
  });
92659
92612
  }
92660
92613
  //#endregion
92661
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/webLauncher.js
92614
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/webLauncher.js
92662
92615
  const MAIN_CLI_PACKAGE = "@chatcode/chatcode-cli";
92663
92616
  function asError(value) {
92664
92617
  return value instanceof Error ? value : new Error(String(value));
@@ -92779,7 +92732,7 @@ function launchWebFrontend(cwd, options = {}) {
92779
92732
  }
92780
92733
  }
92781
92734
  //#endregion
92782
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/inject-channel.js
92735
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/inject-channel.js
92783
92736
  /**
92784
92737
  * External injection channel — lets an out-of-process editor integration
92785
92738
  * (e.g. the `dsh.nvim` Neovim plugin) push text into the running TUI's
@@ -92974,7 +92927,7 @@ function openInjectChannel(sessionId, cwd, handlers, onError) {
92974
92927
  };
92975
92928
  }
92976
92929
  //#endregion
92977
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/chatcode-auth.js
92930
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/chatcode-auth.js
92978
92931
  const CHATCODE_CLI_OAUTH_TOKEN = "CHATCODE_CLI_OAUTH_TOKEN";
92979
92932
  function authService(ctx) {
92980
92933
  return ctx.get("chatcodeAuth");
@@ -93151,7 +93104,7 @@ async function requireChatCodeStartupLogin(ctx, options) {
93151
93104
  return "ready";
93152
93105
  }
93153
93106
  //#endregion
93154
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/chatcode-api.js
93107
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/chatcode-api.js
93155
93108
  /** Bind authenticated statistics requests to one TUI lifetime. */
93156
93109
  function createChatCodeAuthorizedPost(ctx) {
93157
93110
  const lifetime = new AbortController();
@@ -93190,7 +93143,7 @@ function createChatCodeAuthorizedPost(ctx) {
93190
93143
  };
93191
93144
  }
93192
93145
  //#endregion
93193
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/plugin.js
93146
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/plugin.js
93194
93147
  /**
93195
93148
  * Interactive TUI front door for ChatCode CLI agents.
93196
93149
  *
@@ -93398,9 +93351,10 @@ async function apply(ctx, config) {
93398
93351
  const expectsChatCode = chatCodeAuthExpected(ctx);
93399
93352
  const tokenBackedChatCode = chatCodeEnvironmentTokenActive(ctx);
93400
93353
  const tokenCodingPlanRoute = tokenBackedChatCode ? await waitForModelRouteForProvider(resolveLlmCatalog, CHATCODE_CODING_PLAN_PROVIDER) : void 0;
93401
- const availableFallback = tokenBackedChatCode ? tokenCodingPlanRoute : expectsChatCode ? await waitForFirstAvailableModelRoute(resolveLlmCatalog) : await firstAvailableModelRoute(llmCatalog);
93402
- if (availableFallback === void 0 && (expectsChatCode || tokenBackedChatCode)) throw new Error(t(tokenBackedChatCode ? "model-chatcode-token-catalog-failed" : "model-startup-none"));
93403
- const startupRoute = resolveStartupModelRoute(configuredRoute, readModelPref(), harnessDefault ?? availableFallback, tokenCodingPlanRoute);
93354
+ const advertisedFallback = tokenBackedChatCode ? tokenCodingPlanRoute : expectsChatCode ? await waitForFirstAvailableModelRoute(resolveLlmCatalog) : await firstAvailableModelRoute(llmCatalog);
93355
+ const noStartupModel = advertisedFallback === void 0 && (expectsChatCode || tokenBackedChatCode);
93356
+ const availableFallback = noStartupModel ? UNCONFIGURED_MODEL_ROUTE : advertisedFallback;
93357
+ const startupRoute = resolveStartupModelRoute(configuredRoute, readModelPref(), noStartupModel ? UNCONFIGURED_MODEL_ROUTE : harnessDefault ?? availableFallback, tokenCodingPlanRoute);
93404
93358
  const requestedWorkspace = config.workspace ?? readTuiEnv("WORKSPACE_TARGET");
93405
93359
  const mountedWorkspaceService = getHostWorkspaceRuntime(ctx.get("tuiWorkspaces"));
93406
93360
  if (mountedWorkspaceService === void 0 && resolveDshProfileName() !== void 0) ctx.logger.warn("ChatCode CLI TUI: tuiWorkspaces service is not mounted; /workspace runs with the local-only fallback. The bundle patch is older than the installed TUI package — update the globally installed ChatCode CLI package to match the profile (issue #183).");
@@ -93420,7 +93374,7 @@ async function apply(ctx, config) {
93420
93374
  ctx.logger.warn(`ChatCode CLI TUI: session "${agent.session.id}" workspace attachment failed: ${error instanceof Error ? error.message : String(error)}`);
93421
93375
  }
93422
93376
  const displayRoute = createdRoute ?? startupRoute;
93423
- const displayModelName = await resolveLlmCatalog()?.listModels(displayRoute.provider).then((list) => list.find((model) => model.id === displayRoute.model)?.name).catch(() => void 0);
93377
+ const displayModelName = explicitModelRoute(displayRoute) === void 0 ? void 0 : await resolveLlmCatalog()?.listModels(displayRoute.provider).then((list) => list.find((model) => model.id === displayRoute.model)?.name).catch(() => void 0);
93424
93378
  const channel = createChannel(ctx, agent, {
93425
93379
  model: displayRoute.model,
93426
93380
  modelName: displayModelName,
@@ -94260,6 +94214,10 @@ async function apply(ctx, config) {
94260
94214
  themeHost,
94261
94215
  children: import_react.createElement(ChatCodeApiContext.Provider, { value: createChatCodeAuthorizedPost(ctx) }, marginChildren)
94262
94216
  }), { exitOnCtrlC: false });
94217
+ if (noStartupModel) channel.notify(t("model-startup-none"), {
94218
+ color: "warning",
94219
+ timeoutMs: 8e3
94220
+ });
94263
94221
  releaseNotes.check();
94264
94222
  channel.listModels();
94265
94223
  const isRecompose = lastBootedFullscreen !== void 0;