@chatcode/chatcode-cli 3.0.2-rc.2 → 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 (46) hide show
  1. package/README.i18n.yaml +4 -4
  2. package/README.md +7 -1
  3. package/README.zh.md +7 -1
  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/{dist-DxjlHHph.js → dist-w_sIm4VD.js} +203 -197
  9. package/lib/{dump-config-BSTrhTT_.js → dump-config-CauO75nE.js} +1 -1
  10. package/lib/dump-config-CijLv_kn.js +2 -0
  11. package/lib/{dump-config-schema-Cz4A13GB.js → dump-config-schema-CObLWWaW.js} +2 -2
  12. package/lib/{extension-events-DciGPKJa.js → extension-events-D6DbIdnG.js} +20 -20
  13. package/lib/{home-migration-DLaSvmfn.js → home-migration-BjDmRwBB.js} +23 -4
  14. package/lib/{host-access-CmD27uhQ.js → host-access-BdqThvw7.js} +1 -1
  15. package/lib/{keymap-CFChEJ2W.js → keymap-DFoC50J1.js} +2 -2
  16. package/lib/{plugin-jvd9PCVt.js → plugin-B37GhsdI.js} +458 -495
  17. package/lib/{plugin-DYHtreEd.js → plugin-Cn-hyYY8.js} +1 -1
  18. package/lib/{profile-boot-Blq7uqhx.js → profile-boot-SJGbpLgN.js} +13 -1
  19. package/lib/profile-boot.js +1 -1
  20. package/lib/{scenes-ai_8sHDs.js → scenes-Dk6DYkO9.js} +3 -3
  21. package/lib/{settings-sections-QQ1-2lhL.js → settings-sections-D4Ozrymr.js} +3 -3
  22. package/lib/startup-diagnostics-C_hRCp-q.js +91 -0
  23. package/lib/{themes-DTzG_9I_.js → themes-DDI83rNa.js} +12 -12
  24. package/lib/tui-compat-command-trees.js +1 -1
  25. package/lib/tui-compat-extensions.js +3 -3
  26. package/lib/tui-compat-plugin-host.js +5 -5
  27. package/lib/tui-compat-scenes.js +1 -1
  28. package/lib/tui-compat-settings-sections.js +1 -1
  29. package/lib/tui-compat-working-activity.js +1 -1
  30. package/lib/tui-compat-workspaces.js +1 -1
  31. package/lib/tui-compat.js +5 -5
  32. package/lib/{tuiDisplayPrefs-BCHRRcfe.js → tuiDisplayPrefs-CJ9aBVkB.js} +1 -1
  33. package/lib/types/home-migration.d.ts +8 -0
  34. package/lib/types/startup-diagnostics.d.ts +13 -0
  35. package/lib/{workspaces-CznCgVHv.js → workspaces-Dt_J35P0.js} +2 -2
  36. package/package.json +25 -25
  37. package/runtime/manifest.json +1 -1
  38. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-account/lib/client.js +2 -2
  39. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-general/lib/client.js +1 -1
  40. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-sidebar/lib/client.js +1 -1
  41. package/runtime/node_modules/@deepseek-ai/dsh-session-log-export/lib/client.js +3 -8
  42. package/runtime/node_modules/@deepseek-ai/dsh-session-log-export/lib/types/client/HeaderAction.d.ts +1 -1
  43. package/runtime/node_modules/@deepseek-ai/dsh-web-app/presets/cordis.patch.yml +2 -1
  44. package/runtime/node_modules/@deepseek-ai/dsh-web-app/presets/ptc.patch.yml +2 -1
  45. package/runtime/node_modules/@deepseek-ai/dsh-web-app/presets/standard.patch.yml +2 -1
  46. package/lib/dump-config-DBW7YLx-.js +0 -2
package/README.i18n.yaml CHANGED
@@ -12,11 +12,11 @@
12
12
  en: 6267304ad0acefab
13
13
  zh: cd0dd269d0608a46
14
14
  /chatcode-chatcode-cli/profiles:
15
- en: b4a01bd12d6fb124
16
- zh: fd71f1e5fc977152
15
+ en: 25cce9b993b4351a
16
+ zh: 647916841e6e43d7
17
17
  /chatcode-chatcode-cli/optional-overlays:
18
18
  en: 3a40ddc44e55f79c
19
19
  zh: 8d3949132e1ef93c
20
20
  /chatcode-chatcode-cli/development:
21
- en: 2100d3a8a51988dd
22
- zh: 40141b0f0fb96a89
21
+ en: 60435baa6e089453
22
+ zh: 1e602590c259b6eb
package/README.md CHANGED
@@ -57,8 +57,14 @@ Bundles named in `dsh.profile.bundles` resolve from the ChatCode CLI installatio
57
57
 
58
58
  On Harness 0.1.7, the default `cli` profile uses the declarative Agent preset registry and reuses the shipped `standard`, `ptc`, `minimal`, and `cordis` definitions. Only the TUI's directory-backed compatibility row for older Harness lines is disabled in that composition; the Web profile, user patches, and other plugin layers are unchanged.
59
59
 
60
+ After sign-in succeeds, an empty model catalog still opens the CLI for history and settings. Select a model with `/model` or configure a provider with `/provider` before sending.
61
+
60
62
  Use `--dump-default-config` and `--dump-config` to inspect the composed tree without booting it. `--dump-config-schema` imports the composed tree's declared plugin schemas and prints JSON Schema for entries and patches instead of configuration values; read the [schema-dump safety and scope](reference/README.md#config-schema-dump) before inspecting untrusted plugins.
61
63
 
64
+ The legacy-data startup reminder checks only the top-level entries of the old homes. It does not traverse sessions or plugin dependencies, read their contents, or compute migration fingerprints. Retained legacy data can still trigger the reminder after copying; `chatcode-cli migrate --dry-run` performs the full destination comparison.
65
+
66
+ Set `CHATCODE_CLI_STARTUP_TRACE=1` to print phase and plugin activation durations to stderr for either `cco` or `cco web`. A `begin` line without a matching duration identifies unfinished work. Tracing is off by default and records labels and elapsed times, not environment values or plugin configuration.
67
+
62
68
  The [CLI behavior reference](reference/README.md) owns exact layer precedence, flags, shutdown behavior, deployment defaults, and source execution. The [startup and reload failure table](../../packages/boot/app-boot/README.md#startup-and-reload-failures) compares optional and required plugin failures with configuration HMR.
63
69
 
64
70
  ## Optional overlays
@@ -71,7 +77,7 @@ Production runs require built package and frontend artifacts. From the repositor
71
77
 
72
78
  The published CLI directly pins every Harness runtime package referenced by the base/Web bundles and every required peer of its bundled ChatCode plugins. Keep those entries on the same Harness release when publishing: npm's global installer does not preserve pnpm workspace peer unification, and otherwise may hoist an older ABI beside the current runtime.
73
79
 
74
- The npm artifact carries fork-owned JavaScript packages under `runtime/node_modules` and lists them in `runtime/manifest.json`. Platform-specific `node-addon-system` binaries remain exact-version optional npm dependencies, selected for the installation host; they are excluded from the embedded runtime. It also carries the TUI admission registry under `lib/dsh-ecosystem-spec`, where command authorization reads its permission defaults before applying the user's grants file. Profile startup includes the complete runtime package list when resolving presets and plugins, including packages absent from the slim npm dependency list. The launcher resolves embedded packages in memory for both ESM and CommonJS, including imports from external plugins. Startup does not modify the installation directory, so a root-owned installation can be launched by an ordinary user with read access; the user still needs a writable ChatCode CLI home. CLI and Web share the [startup model preference](../../packages/core/agent-default-model/README.md); already running frontends do not switch each other's model.
80
+ The npm artifact carries fork-owned JavaScript packages under `runtime/node_modules` and lists them in `runtime/manifest.json`. Platform-specific `node-addon-system` binaries remain exact-version optional npm dependencies, selected for the installation host; they are excluded from the embedded runtime. It also carries the TUI admission registry, protocols, and schemas under `lib/dsh-ecosystem-spec`, where command authorization reads its permission defaults before applying the user's grants file. Profile startup includes the complete runtime package list when resolving presets and plugins, including packages absent from the slim npm dependency list. The launcher resolves embedded packages in memory for both ESM and CommonJS, including imports from external plugins. Startup does not modify the installation directory, so a root-owned installation can be launched by an ordinary user with read access; the user still needs a writable ChatCode CLI home. CLI and Web share the [startup model preference](../../packages/core/agent-default-model/README.md); already running frontends do not switch each other's model.
75
81
 
76
82
  The `@chatcode/chatcode-cli/profile-boot` export provides the shared profile lifecycle to the Desktop host. A resolved application profile supplies its own installation anchor for runtime package resolution while retaining the ChatCode CLI home patch, proxy environment, telemetry switch, patch reload, and bounded shutdown.
77
83
 
package/README.zh.md CHANGED
@@ -57,8 +57,14 @@ profile 目录包含一个 `package.json`,其中记录树外插件依赖,以
57
57
 
58
58
  默认 `cli` profile 在 Harness 0.1.7 上使用声明式 Agent 预设注册器,并复用随附的 `standard`、`ptc`、`minimal` 与 `cordis` 四套预设定义。旧版 TUI 中用于兼容早期 Harness 的目录式预设行只在该组合中停用;Web profile、用户 patch 与其他插件层不受影响。
59
59
 
60
+ 登录验证通过后,即使模型目录为空也能进入 CLI 查看历史和修改设置;发送前通过 `/model` 选择模型或通过 `/provider` 配置提供方。
61
+
60
62
  使用 `--dump-default-config` 和 `--dump-config` 可在不启动的情况下检查组合后的配置树。`--dump-config-schema` 会导入组合树中插件声明的 schema,并打印描述 entry 与 patch 的 JSON Schema,而不是配置值;检查不受信任的插件前,请阅读 [schema dump 的安全性与范围](reference/README.zh.md#config-schema-dump)。
61
63
 
64
+ 启动时的旧数据提醒只检查旧 home 目录的顶层条目,不遍历会话或插件依赖、不读取其文件内容,也不计算迁移指纹。复制后保留的旧数据仍可能触发提醒;`chatcode-cli migrate --dry-run` 才执行完整的目标目录对比。
65
+
66
+ 设置 `CHATCODE_CLI_STARTUP_TRACE=1`,即可在运行 `cco` 或 `cco web` 时向 stderr 输出启动阶段与插件激活耗时。只有 `begin` 而没有对应耗时的条目表示尚未完成的工作。默认不启用诊断;日志只记录标签与耗时,不记录环境变量值或插件配置。
67
+
62
68
  层的确切优先级、flag、关闭行为、部署默认值和源码执行方式,以 [CLI 行为参考](reference/README.zh.md)为准。[启动与重载失败表](../../packages/boot/app-boot/README.zh.md#startup-and-reload-failures)对比 optional、required 插件启动失败与配置 HMR 的行为。
63
69
 
64
70
  ## 可选覆盖层
@@ -71,7 +77,7 @@ profile 目录包含一个 `package.json`,其中记录树外插件依赖,以
71
77
 
72
78
  发布版 CLI 会直接固定 base/Web 组合包实际引用的所有 Harness 运行时包,以及随附 ChatCode 插件的全部必需 peer。发布时必须让这些依赖保持在同一个 Harness 版本:npm 全局安装不会保留 pnpm workspace 对 peer 的统一解析,否则可能把旧 ABI 提升到顶层并与当前运行时混用。
73
79
 
74
- npm 产物把分支自有的 JavaScript 包放在 `runtime/node_modules`,并通过 `runtime/manifest.json` 列出它们。各平台的 `node-addon-system` 二进制使用固定版本的 npm 可选依赖,由安装器按目标机器的平台选择,不加入内嵌 runtime。产物还在 `lib/dsh-ecosystem-spec` 中携带 TUI 准入注册表;命令授权先从该目录读取权限默认值,再应用用户的授权文件。Profile 启动解析预设和插件时使用完整的运行时包列表,包括精简 npm 依赖列表中没有的包。启动器在内存中统一解析内嵌包的 ESM 与 CommonJS 导入,也覆盖外部插件的导入。启动不会修改安装目录,因此普通用户只需对 root 安装的目录具有读取权限;用户自己的 ChatCode CLI home 仍须可写。CLI 与 Web 共用[启动模型偏好](../../packages/core/agent-default-model/README.zh.md);已运行的两端不会互相切换模型。
80
+ npm 产物把分支自有的 JavaScript 包放在 `runtime/node_modules`,并通过 `runtime/manifest.json` 列出它们。各平台的 `node-addon-system` 二进制使用固定版本的 npm 可选依赖,由安装器按目标机器的平台选择,不加入内嵌 runtime。产物还在 `lib/dsh-ecosystem-spec` 中携带 TUI 准入注册表、协议和 schema;命令授权先从该目录读取权限默认值,再应用用户的授权文件。Profile 启动解析预设和插件时使用完整的运行时包列表,包括精简 npm 依赖列表中没有的包。启动器在内存中统一解析内嵌包的 ESM 与 CommonJS 导入,也覆盖外部插件的导入。启动不会修改安装目录,因此普通用户只需对 root 安装的目录具有读取权限;用户自己的 ChatCode CLI home 仍须可写。CLI 与 Web 共用[启动模型偏好](../../packages/core/agent-default-model/README.zh.md);已运行的两端不会互相切换模型。
75
81
 
76
82
  `@chatcode/chatcode-cli/profile-boot` 导出向 Desktop Host 提供共享 profile 生命周期。已解析的应用 profile 为运行时包解析指定自己的安装锚点,同时沿用 ChatCode CLI home patch、代理环境、遥测开关、patch 热重载和有界关闭。
77
83
 
package/lib/bin.js CHANGED
@@ -1,13 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import { i as synchronizeLegacyHomeEnvironment, r as resolveChatCodeCliHome } from "./chatcode-home-B93iESZd.js";
3
+ import { n as startStartupPhase, t as reportStartupFailure } from "./startup-diagnostics-C_hRCp-q.js";
3
4
  import { readFileSync } from "node:fs";
4
5
  import { fileURLToPath } from "node:url";
5
6
  import { StartupError, loadLayeredEnv } from "@deepseek-ai/dsh-app-boot";
6
7
  import { Command, CommanderError, InvalidArgumentError } from "commander";
7
- import { join } from "node:path";
8
- import { randomUUID } from "node:crypto";
9
- import { mkdir, writeFile } from "node:fs/promises";
10
- import { inspect } from "node:util";
11
8
  //#region lib/types/args.js
12
9
  /**
13
10
  * Commander adapter for the ChatCode CLI launcher.
@@ -197,63 +194,6 @@ function parseChatCodeCliArgs(argv, version) {
197
194
  return routeLegacyPrint(resolved, argv);
198
195
  }
199
196
  //#endregion
200
- //#region lib/types/startup-diagnostics.js
201
- /** Save original startup diagnostics while keeping the terminal report concise. */
202
- /** Wait for stderr to finish the write before the failed process exits. */
203
- function writeStderr(text) {
204
- return new Promise((resolve, reject) => {
205
- process.stderr.write(text, (error) => {
206
- if (error) reject(error);
207
- else resolve();
208
- });
209
- });
210
- }
211
- /**
212
- * Print the startup summary and save a private, uniquely named report under DSH_HOME/logs.
213
- * Failed writes print the complete report to stderr instead of claiming a saved path.
214
- * @param error - startup audit failure retaining plugin metadata and original errors.
215
- * @param context - resolved Harness home, application version, and selected profile.
216
- * @param write - terminal output sink; awaited before returning, defaults to stderr.
217
- * @returns after saving or printing the report and completing terminal writes.
218
- */
219
- async function reportStartupFailure(error, context, write = writeStderr) {
220
- const now = (/* @__PURE__ */ new Date()).toISOString();
221
- const report = "WARNING: Raw diagnostics may contain configuration or credential values from plugin errors. Review before sharing.\n\n" + inspect({
222
- timestamp: now,
223
- dshVersion: context.version,
224
- nodeVersion: process.version,
225
- platform: process.platform,
226
- arch: process.arch,
227
- profile: context.profile,
228
- error
229
- }, {
230
- depth: null,
231
- maxArrayLength: null,
232
- maxStringLength: null,
233
- showHidden: true,
234
- customInspect: false,
235
- getters: false,
236
- colors: false
237
- }) + "\n";
238
- await write(`${error.message}\n`);
239
- const logDir = join(context.home, "logs");
240
- const logPath = join(logDir, `startup-${now.replaceAll(":", "-")}-${randomUUID()}.log`);
241
- try {
242
- await mkdir(logDir, {
243
- recursive: true,
244
- mode: 448
245
- });
246
- await writeFile(logPath, report, {
247
- flag: "wx",
248
- mode: 384
249
- });
250
- } catch (writeError) {
251
- await write(`\ndsh: warning: could not write startup diagnostics: ${String(writeError)}\nFull diagnostics:\n${report}`);
252
- return;
253
- }
254
- await write(`\nFull diagnostics: ${logPath}\n`);
255
- }
256
- //#endregion
257
197
  //#region lib/types/bin.js
258
198
  /**
259
199
  * Command-line entry for ChatCode CLI.
@@ -287,13 +227,17 @@ async function runCli() {
287
227
  const invocation = parseChatCodeCliArgs(process.argv.slice(2), version);
288
228
  switch (invocation.mode) {
289
229
  case "profile": {
230
+ const finishLegacyProbe = startStartupPhase("legacy-home-probe");
290
231
  const legacyHome = process.env.DSH_HOME?.trim();
291
232
  if (!isLegacyPrintInvocation(invocation) && (process.env.CHATCODE_CLI_HOME?.trim() || legacyHome === void 0 || legacyHome === "")) {
292
- const { detectPendingHomeMigrations, resolveHomeMigrationRoots } = await import("./home-migration-DLaSvmfn.js");
293
- if ((await detectPendingHomeMigrations(resolveHomeMigrationRoots())).length > 0) process.stderr.write("ChatCode CLI detected legacy user data. Preview the non-destructive migration with \"chatcode-cli migrate --dry-run\"; nothing is migrated automatically.\n");
233
+ const { hasLegacyHomeData, resolveHomeMigrationRoots } = await import("./home-migration-BjDmRwBB.js");
234
+ if (await hasLegacyHomeData(resolveHomeMigrationRoots())) process.stderr.write("ChatCode CLI detected legacy user data. Preview the non-destructive migration with \"chatcode-cli migrate --dry-run\"; nothing is migrated automatically.\n");
294
235
  }
236
+ finishLegacyProbe();
295
237
  synchronizeLegacyHomeEnvironment();
238
+ const finishProfileImport = startStartupPhase("profile-module-import");
296
239
  const { runProfile } = await import("./profile-boot.js");
240
+ finishProfileImport();
297
241
  try {
298
242
  await runProfile({
299
243
  environment: loadLayeredEnv("ChatCode CLI"),
@@ -314,7 +258,7 @@ async function runCli() {
314
258
  break;
315
259
  }
316
260
  case "migrate": {
317
- const { applyHomeMigration, formatHomeMigrationPlan, planHomeMigration, resolveHomeMigrationRoots } = await import("./home-migration-DLaSvmfn.js");
261
+ const { applyHomeMigration, formatHomeMigrationPlan, planHomeMigration, resolveHomeMigrationRoots } = await import("./home-migration-BjDmRwBB.js");
318
262
  const roots = resolveHomeMigrationRoots();
319
263
  const migrations = [[roots.source, roots.destination], [roots.tuiSource, roots.tuiDestination]];
320
264
  if (!invocation.apply) {
@@ -332,17 +276,17 @@ async function runCli() {
332
276
  break;
333
277
  }
334
278
  case "plugin": {
335
- const { runPlugin } = await import("./plugin-DYHtreEd.js");
279
+ const { runPlugin } = await import("./plugin-Cn-hyYY8.js");
336
280
  process.exit(await runPlugin(invocation.profile, invocation.args));
337
281
  break;
338
282
  }
339
283
  case "dump-config": {
340
- const { runDumpConfig } = await import("./dump-config-DBW7YLx-.js");
284
+ const { runDumpConfig } = await import("./dump-config-CijLv_kn.js");
341
285
  runDumpConfig(invocation.profile, invocation.defaultOnly, invocation.patches, invocation.fromDefaultProfile);
342
286
  break;
343
287
  }
344
288
  case "dump-config-schema": {
345
- const { runDumpConfigSchema } = await import("./dump-config-schema-Cz4A13GB.js");
289
+ const { runDumpConfigSchema } = await import("./dump-config-schema-CObLWWaW.js");
346
290
  await runDumpConfigSchema(invocation.profile, invocation.patches, invocation.fromDefaultProfile);
347
291
  break;
348
292
  }
@@ -1,12 +1,12 @@
1
- import { a as compositionRoot, i as bindCallerEffect, o as concreteService, r as assertCallerContext, t as activationContext } from "./host-access-CmD27uhQ.js";
2
- import { a as declaresPermission, d as normalizePermissionScope, i as declaresObserverScope, m as scopeCovers, n as componentIdentityOf, o as requireComponentIdentity, p as rawScopeCovers, s as requiresContract, u as INTERCEPT_PERMISSIONS } from "./component-identity-CnmIKHEF.js";
3
- import { B as createAdmissionCatalog, G as validateSetInput, H as validateDeleteOutput, K as validateSetOutput, L as TUI_DECISION_EVENT_NAMES, M as loadSpecData, N as registryEntries, P as verifyContractProfiles, S as DATA_DIR, U as validateGetInput, V as validateDeleteInput, W as validateGetOutput, X as defineProtocolDeclaration, Y as projectManifest, j as digestFile, p as cleanScalarText, q as validateMessageEvent, x as readGrantStore } from "./extension-events-DciGPKJa.js";
1
+ import { a as compositionRoot, i as bindCallerEffect, o as concreteService, r as assertCallerContext, t as activationContext } from "./host-access-BdqThvw7.js";
2
+ import { a as declaresPermission, d as normalizePermissionScope, i as declaresObserverScope, m as scopeCovers, n as componentIdentityOf, o as requireComponentIdentity, p as rawScopeCovers, s as requiresContract, u as INTERCEPT_PERMISSIONS } from "./component-identity-C02l24iT.js";
3
+ import { B as createAdmissionCatalog, G as validateSetInput, H as validateDeleteOutput, K as validateSetOutput, L as TUI_DECISION_EVENT_NAMES, M as loadSpecData, N as registryEntries, P as verifyContractProfiles, S as DATA_DIR, U as validateGetInput, V as validateDeleteInput, W as validateGetOutput, X as defineProtocolDeclaration, Y as projectManifest, j as digestFile, p as cleanScalarText, q as validateMessageEvent, x as readGrantStore } from "./extension-events-D6DbIdnG.js";
4
4
  import { appendFileSync, mkdirSync, readFileSync } from "node:fs";
5
5
  import { fileURLToPath } from "node:url";
6
6
  import { dirname, join } from "node:path";
7
7
  import { Service } from "@deepseek-ai/cordis";
8
8
  import { withFileLock, writeFileAtomic } from "@deepseek-ai/dsh-atomic-write";
9
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/plugin-spec/validate.js
9
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/plugin-spec/validate.js
10
10
  /** Semantic validation layered on the official manifest parser/projection. */
11
11
  const coordinateKey$1 = (coordinate) => `${coordinate.apiVersion}#${coordinate.kind}`;
12
12
  const groupOf = (apiVersion) => apiVersion.split("/")[0] ?? "";
@@ -124,7 +124,7 @@ function validateHost(index, host) {
124
124
  }
125
125
  }
126
126
  //#endregion
127
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/plugin-spec/negotiate.js
127
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/plugin-spec/negotiate.js
128
128
  /** Five-state admission decision using dsh-std projection and ProtocolCatalog. */
129
129
  const coordinateKey = (ref) => `${ref.apiVersion}#${ref.kind}`;
130
130
  function negotiate(index, manifest, host, grants = []) {
@@ -197,7 +197,7 @@ function negotiate(index, manifest, host, grants = []) {
197
197
  } : { decision: "compatible" };
198
198
  }
199
199
  //#endregion
200
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/plugin-spec/schema-check.js
200
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/plugin-spec/schema-check.js
201
201
  /**
202
202
  * 零依赖 JSON Schema 校验器——上游 `conformance/tests/run.js` 的 check()
203
203
  * 的保真 TS 移植。刻意只实现 vendored schemas 用到的子集:本地 $ref、
@@ -301,7 +301,7 @@ function check(value, schema, rootSchema = schema, where = "$") {
301
301
  }
302
302
  }
303
303
  //#endregion
304
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/host-descriptor.js
304
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/host-descriptor.js
305
305
  /** Build the current ChatCode CLI TUI Host Descriptor from the pinned admission profile. */
306
306
  const HOST_SUPPORTED_CONTRACTS = Object.freeze([
307
307
  {
@@ -453,7 +453,7 @@ function buildHostDescriptor(options) {
453
453
  });
454
454
  }
455
455
  //#endregion
456
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/effect-ledger.js
456
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/effect-ledger.js
457
457
  /**
458
458
  * Effect ledger (C-060): an append-only JSONL journal of plugin-visible
459
459
  * effects at `~/.chatcode-cli/tui/effect-ledger.jsonl`, mounted by the
@@ -645,7 +645,7 @@ function resumeSequence(file) {
645
645
  return max + 1;
646
646
  }
647
647
  //#endregion
648
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/plugin-storage.js
648
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/plugin-storage.js
649
649
  /**
650
650
  * storage.local contract surface (C-040, `storage.dsh/v1alpha1#LocalStorage`):
651
651
  * per-plugin private persistence, mounted by the dsh-tui-plugin-host row as
@@ -986,7 +986,7 @@ var TuiPluginStorageRuntime = class extends Service {
986
986
  }
987
987
  };
988
988
  //#endregion
989
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/message-observer.js
989
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/message-observer.js
990
990
  /**
991
991
  * messages.observe contract surface (C-042,
992
992
  * `messages.dsh/v1alpha1#MessageObserver`): the host event broker, mounted
@@ -1494,7 +1494,7 @@ function observerStateFor(runtime) {
1494
1494
  return state;
1495
1495
  }
1496
1496
  //#endregion
1497
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/command-attribution.js
1497
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/command-attribution.js
1498
1498
  /**
1499
1499
  * Command ownership attribution — the data source for the C-041 invoke
1500
1500
  * checkpoint's per-owner grant decision.
@@ -1572,7 +1572,7 @@ function commandOwner(ctx, definition) {
1572
1572
  return ownerMaps.get(key)?.get(handler);
1573
1573
  }
1574
1574
  //#endregion
1575
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/command-errors.js
1575
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/command-errors.js
1576
1576
  /**
1577
1577
  * commands contract error-code alignment (C-041,
1578
1578
  * `commands.dsh/v1alpha1#Command`): the official `dsh-commands` runtime
@@ -1,6 +1,6 @@
1
- import { a as compositionRoot, i as bindCallerEffect, n as activationFiber, o as concreteService, s as requirePluginCaller } from "./host-access-CmD27uhQ.js";
1
+ import { a as compositionRoot, i as bindCallerEffect, n as activationFiber, o as concreteService, s as requirePluginCaller } from "./host-access-BdqThvw7.js";
2
2
  import { Service } from "@deepseek-ai/cordis";
3
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/command-trees.js
3
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/command-trees.js
4
4
  /** Provider-neutral subcommand completion registry for terminal front doors. */
5
5
  const name = "dsh-tui-command-trees";
6
6
  /** Small host-only registry; command execution remains owned by dsh-commands. */
@@ -1,6 +1,6 @@
1
- import { i as bindCallerEffect, n as activationFiber } from "./host-access-CmD27uhQ.js";
1
+ import { i as bindCallerEffect, n as activationFiber } from "./host-access-BdqThvw7.js";
2
2
  import { randomUUID } from "node:crypto";
3
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/plugin-spec/permission-scope.js
3
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/plugin-spec/permission-scope.js
4
4
  /** Permission scope normalization shared by admission and runtime checks. */
5
5
  const STORAGE_PERMISSIONS = new Set(["storage.local.read", "storage.local.write"]);
6
6
  const INTERCEPT_PERMISSIONS = new Set([
@@ -76,7 +76,7 @@ function rawScopeCovers(permission, declared, actual, componentId) {
76
76
  return normalizedDeclared !== void 0 && normalizedActual !== void 0 && permissionScopeCovers(permission, normalizedDeclared, normalizedActual);
77
77
  }
78
78
  //#endregion
79
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/component-identity.js
79
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/component-identity.js
80
80
  /** Verified Component identity bound to one Cordis activation owner. */
81
81
  var ComponentIdentityError = class extends Error {
82
82
  code;