@chatcode/chatcode-cli 3.0.2 → 3.0.3

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 (85) hide show
  1. package/README.i18n.yaml +6 -6
  2. package/README.md +11 -1
  3. package/README.zh.md +11 -1
  4. package/lib/bin.js +11 -67
  5. package/lib/{command-errors-CIYn1nnW.js → command-errors-CBJRI2gy.js} +12 -12
  6. package/lib/{command-trees-8o99Bws7.js → command-trees-Dvq4C7a4.js} +2 -2
  7. package/lib/{component-identity-CnmIKHEF.js → component-identity-DPdJglJO.js} +3 -3
  8. package/lib/{dist-DxjlHHph.js → dist-w_sIm4VD.js} +203 -197
  9. package/lib/dsh-ecosystem-spec/protocols/profile-definitions.d.ts +13 -0
  10. package/lib/dsh-ecosystem-spec/protocols/profile-definitions.js +59 -0
  11. package/lib/dsh-ecosystem-spec/protocols/tui-channel-http.d.ts +15 -0
  12. package/lib/dsh-ecosystem-spec/protocols/tui-channel-http.js +32 -0
  13. package/lib/dsh-ecosystem-spec/protocols/tui-channel.d.ts +59 -0
  14. package/lib/dsh-ecosystem-spec/protocols/tui-channel.js +166 -0
  15. package/lib/dsh-ecosystem-spec/protocols/tui-contributions.d.ts +42 -0
  16. package/lib/dsh-ecosystem-spec/protocols/tui-contributions.js +143 -0
  17. package/lib/dsh-ecosystem-spec/registry/README.md +14 -0
  18. package/lib/dsh-ecosystem-spec/registry/contracts/decision-events-v1alpha1.json +13 -0
  19. package/lib/dsh-ecosystem-spec/registry/contracts/scene-v1alpha1.json +13 -0
  20. package/lib/dsh-ecosystem-spec/registry/contracts/settings-section-v1alpha1.json +13 -0
  21. package/lib/dsh-ecosystem-spec/registry/contracts/tui-channel-v1alpha1.json +30 -0
  22. package/lib/dsh-ecosystem-spec/registry/contracts/workspace-provider-v1alpha1.json +6 -0
  23. package/lib/dsh-ecosystem-spec/registry/host-descriptor.tui.example.json +56 -0
  24. package/lib/dsh-ecosystem-spec/registry/permissions-0.1.json +13 -0
  25. package/lib/dsh-ecosystem-spec/registry/registry-0.15.json +149 -0
  26. package/lib/dsh-ecosystem-spec/schemas/conformance-claim.schema.json +15 -0
  27. package/lib/dsh-ecosystem-spec/schemas/effect-ledger-record.schema.json +16 -0
  28. package/lib/dsh-ecosystem-spec/schemas/host-descriptor.schema.json +26 -0
  29. package/lib/{dump-config-BSTrhTT_.js → dump-config-CauO75nE.js} +1 -1
  30. package/lib/dump-config-CijLv_kn.js +2 -0
  31. package/lib/{dump-config-schema-Cz4A13GB.js → dump-config-schema-CObLWWaW.js} +2 -2
  32. package/lib/{extension-events-DciGPKJa.js → extension-events-Be9LWvHD.js} +20 -20
  33. package/lib/{home-migration-DLaSvmfn.js → home-migration-BjDmRwBB.js} +23 -4
  34. package/lib/{host-access-CmD27uhQ.js → host-access-DeCjoRQP.js} +1 -1
  35. package/lib/{keymap-CFChEJ2W.js → keymap-CRUxM_qn.js} +2 -2
  36. package/lib/{plugin-jvd9PCVt.js → plugin-CDFSDE_y.js} +1491 -743
  37. package/lib/{plugin-DYHtreEd.js → plugin-Cn-hyYY8.js} +1 -1
  38. package/lib/{profile-boot-Blq7uqhx.js → profile-boot-SJGbpLgN.js} +13 -1
  39. package/lib/profile-boot.js +1 -1
  40. package/lib/{scenes-ai_8sHDs.js → scenes-D6jV1EEi.js} +3 -3
  41. package/lib/{settings-sections-QQ1-2lhL.js → settings-sections-DJQRNBo9.js} +3 -3
  42. package/lib/startup-diagnostics-C_hRCp-q.js +91 -0
  43. package/lib/{themes-DTzG_9I_.js → themes-BCly4_y9.js} +12 -12
  44. package/lib/tui-compat-command-trees.js +1 -1
  45. package/lib/tui-compat-extensions.js +4 -4
  46. package/lib/tui-compat-plugin-host.js +5 -5
  47. package/lib/tui-compat-scenes.js +1 -1
  48. package/lib/tui-compat-settings-sections.js +1 -1
  49. package/lib/tui-compat-working-activity.js +1 -1
  50. package/lib/tui-compat-workspaces.js +1 -1
  51. package/lib/tui-compat.js +41 -9
  52. package/lib/{tuiDisplayPrefs-BCHRRcfe.js → tuiDisplayPrefs-Dm_fULiR.js} +44 -2
  53. package/lib/types/home-migration.d.ts +8 -0
  54. package/lib/types/startup-diagnostics.d.ts +13 -0
  55. package/lib/types/tui-compat.d.ts +2 -0
  56. package/lib/{workspaces-CznCgVHv.js → workspaces-Bb3kCAFb.js} +2 -2
  57. package/package.json +40 -34
  58. package/runtime/manifest.json +2 -6
  59. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-account/lib/client.js +2 -2
  60. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-general/lib/client.js +1 -1
  61. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-sidebar/lib/client.js +1 -1
  62. package/runtime/node_modules/@deepseek-ai/dsh-compaction-basic/lib/index.js +84 -8
  63. package/runtime/node_modules/@deepseek-ai/dsh-compaction-basic/lib/types/region.d.ts +9 -0
  64. package/runtime/node_modules/@deepseek-ai/dsh-compaction-basic/lib/types/summarizer.d.ts +7 -0
  65. package/runtime/node_modules/@deepseek-ai/dsh-session-log-export/lib/client.js +3 -8
  66. package/runtime/node_modules/@deepseek-ai/dsh-session-log-export/lib/types/client/HeaderAction.d.ts +1 -1
  67. package/runtime/node_modules/@deepseek-ai/dsh-skill/lib/types/index.d.ts +1 -1
  68. package/runtime/node_modules/@deepseek-ai/dsh-skill-filesystem/lib/index.js +7 -1
  69. package/runtime/node_modules/@deepseek-ai/dsh-web-app/presets/cordis.patch.yml +2 -1
  70. package/runtime/node_modules/@deepseek-ai/dsh-web-app/presets/ptc.patch.yml +2 -1
  71. package/runtime/node_modules/@deepseek-ai/dsh-web-app/presets/standard.patch.yml +2 -1
  72. package/lib/dump-config-DBW7YLx-.js +0 -2
  73. package/runtime/node_modules/@deepseek-ai/node-addon-system-darwin-arm64/README.md +0 -9
  74. package/runtime/node_modules/@deepseek-ai/node-addon-system-darwin-arm64/bin/system.node +0 -0
  75. package/runtime/node_modules/@deepseek-ai/node-addon-system-darwin-arm64/package.json +0 -31
  76. package/runtime/node_modules/@deepseek-ai/node-addon-system-darwin-arm64/prebuilds.json +0 -6
  77. package/runtime/node_modules/@deepseek-ai/node-addon-system-darwin-x64/README.md +0 -9
  78. package/runtime/node_modules/@deepseek-ai/node-addon-system-darwin-x64/package.json +0 -31
  79. package/runtime/node_modules/@deepseek-ai/node-addon-system-darwin-x64/prebuilds.json +0 -6
  80. package/runtime/node_modules/@deepseek-ai/node-addon-system-linux-arm64/README.md +0 -11
  81. package/runtime/node_modules/@deepseek-ai/node-addon-system-linux-arm64/package.json +0 -31
  82. package/runtime/node_modules/@deepseek-ai/node-addon-system-linux-arm64/prebuilds.json +0 -24
  83. package/runtime/node_modules/@deepseek-ai/node-addon-system-linux-x64/README.md +0 -11
  84. package/runtime/node_modules/@deepseek-ai/node-addon-system-linux-x64/package.json +0 -31
  85. package/runtime/node_modules/@deepseek-ai/node-addon-system-linux-x64/prebuilds.json +0 -24
@@ -1,4 +1,4 @@
1
- import { r as INSTALL_ANCHOR, t as CHATCODE_PROFILE_TEMPLATES } from "./profile-boot-Blq7uqhx.js";
1
+ import { r as INSTALL_ANCHOR, t as CHATCODE_PROFILE_TEMPLATES } from "./profile-boot-SJGbpLgN.js";
2
2
  import { existsSync } from "node:fs";
3
3
  import { DEFAULT_PROFILE_BUNDLES, initProfile, readProfileCompatibility, resolveProfileDir } from "@deepseek-ai/dsh-app-boot";
4
4
  import { join } from "node:path";
@@ -1,4 +1,5 @@
1
1
  import { i as synchronizeLegacyHomeEnvironment, r as resolveChatCodeCliHome } from "./chatcode-home-B93iESZd.js";
2
+ import { n as startStartupPhase, r as traceStartupPlugins } from "./startup-diagnostics-C_hRCp-q.js";
2
3
  import { createRequire } from "node:module";
3
4
  import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
4
5
  import { fileURLToPath } from "node:url";
@@ -478,9 +479,11 @@ async function composeProfile(name, patchFiles, fromDefaultProfile, resolvedProf
478
479
  */
479
480
  async function runProfile(options) {
480
481
  synchronizeLegacyHomeEnvironment();
482
+ const finishProxy = startStartupPhase("proxy-setup");
481
483
  const disposeProxy = await installProxyFromEnvironment(options.environment, (message) => {
482
484
  process.stderr.write(`${NAME}: ${message}\n`);
483
485
  });
486
+ finishProxy();
484
487
  const app = {};
485
488
  let disposal;
486
489
  const dispose = () => disposal ??= (async () => {
@@ -494,7 +497,9 @@ async function runProfile(options) {
494
497
  if (failures.length > 1) throw new AggregateError(failures, "dsh: profile cleanup failed");
495
498
  })();
496
499
  try {
500
+ const finishComposition = startStartupPhase("profile-composition");
497
501
  const composed = await composeProfile(options.profile, options.patchFiles, options.fromDefaultProfile, options.resolvedProfile);
502
+ finishComposition();
498
503
  const appReady = createAppReady();
499
504
  const shutdown = createProcessShutdown(dispose);
500
505
  const signalShutdown = new AbortController();
@@ -525,7 +530,11 @@ async function runProfile(options) {
525
530
  trustedVersionExemptions: CHATCODE_TRUSTED_VERSION_EXEMPTIONS,
526
531
  telemetryDisabledEnv: process.env.DSH_TELEMETRY_DISABLED
527
532
  };
528
- const ctx = await boot(NAME, rootConfig, resolveChatCodePackageAliases(readProfilePatches(NAME, profileContext, composed.profile)), async (hostCtx) => {
533
+ const patches = resolveChatCodePackageAliases(readProfilePatches(NAME, profileContext, composed.profile));
534
+ const finishActivation = startStartupPhase("plugin-activation");
535
+ let stopPluginTrace;
536
+ const ctx = await boot(NAME, rootConfig, patches, async (hostCtx) => {
537
+ stopPluginTrace = traceStartupPlugins(hostCtx);
529
538
  app.current = hostCtx;
530
539
  installProfileInvocationAccessor(hostCtx);
531
540
  hostCtx.provide("profileContext", profileContext);
@@ -536,7 +545,10 @@ async function runProfile(options) {
536
545
  exit: (code) => void shutdown.shutdown(code),
537
546
  ready: appReady.service
538
547
  });
548
+ }).finally(() => {
549
+ stopPluginTrace?.();
539
550
  });
551
+ finishActivation();
540
552
  app.current = ctx;
541
553
  if (!signalShutdown.signal.aborted && ctx.fiber.state === 2 && ctx.get("loader") !== void 0) appReady.commit();
542
554
  return {
@@ -1,2 +1,2 @@
1
- import { a as chatCodeProfilePatchFiles, c as initializeProfileFromDefault, d as preferEmbeddedRuntimeResolution, f as prepareProfile, h as runProfile, i as PROFILE_ROOT_FILENAME, l as installProfileInvocationAccessor, m as restoreTrustedTuiLayer, n as CHATCODE_TRUSTED_VERSION_EXEMPTIONS, o as embeddedRuntimePackageDir, p as resolveChatCodePackageAliases, r as INSTALL_ANCHOR, s as homePatchPath, t as CHATCODE_PROFILE_TEMPLATES, u as preferEmbeddedProfileLayers } from "./profile-boot-Blq7uqhx.js";
1
+ import { a as chatCodeProfilePatchFiles, c as initializeProfileFromDefault, d as preferEmbeddedRuntimeResolution, f as prepareProfile, h as runProfile, i as PROFILE_ROOT_FILENAME, l as installProfileInvocationAccessor, m as restoreTrustedTuiLayer, n as CHATCODE_TRUSTED_VERSION_EXEMPTIONS, o as embeddedRuntimePackageDir, p as resolveChatCodePackageAliases, r as INSTALL_ANCHOR, s as homePatchPath, t as CHATCODE_PROFILE_TEMPLATES, u as preferEmbeddedProfileLayers } from "./profile-boot-SJGbpLgN.js";
2
2
  export { CHATCODE_PROFILE_TEMPLATES, CHATCODE_TRUSTED_VERSION_EXEMPTIONS, INSTALL_ANCHOR, PROFILE_ROOT_FILENAME, chatCodeProfilePatchFiles, embeddedRuntimePackageDir, homePatchPath, initializeProfileFromDefault, installProfileInvocationAccessor, preferEmbeddedProfileLayers, preferEmbeddedRuntimeResolution, prepareProfile, resolveChatCodePackageAliases, restoreTrustedTuiLayer, runProfile };
@@ -1,7 +1,7 @@
1
- import { a as compositionRoot, i as bindCallerEffect, n as activationFiber, o as concreteService, s as requirePluginCaller } from "./host-access-CmD27uhQ.js";
2
- import { n as componentIdentityOf } from "./component-identity-CnmIKHEF.js";
1
+ import { a as compositionRoot, i as bindCallerEffect, n as activationFiber, o as concreteService, s as requirePluginCaller } from "./host-access-DeCjoRQP.js";
2
+ import { n as componentIdentityOf } from "./component-identity-DPdJglJO.js";
3
3
  import { Service } from "@deepseek-ai/cordis";
4
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/scenes.js
4
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.16_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/scenes.js
5
5
  /** Provider-neutral full-screen scene registry for terminal front doors. */
6
6
  const name = "dsh-tui-scenes";
7
7
  /**
@@ -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-DeCjoRQP.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/credentialRefGuard.js
3
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.16_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/credentialRefGuard.js
4
4
  /**
5
5
  * Credential-ref reservation guard for the plugin settings-section seam.
6
6
  *
@@ -49,7 +49,7 @@ function vetSectionSecretRefs(section) {
49
49
  };
50
50
  }
51
51
  //#endregion
52
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/settings-sections.js
52
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.16_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/settings-sections.js
53
53
  /**
54
54
  * Plugin settings-section extension seam for terminal front doors.
55
55
  *
@@ -0,0 +1,91 @@
1
+ import { join } from "node:path";
2
+ import { randomUUID } from "node:crypto";
3
+ import { mkdir, writeFile } from "node:fs/promises";
4
+ import { inspect } from "node:util";
5
+ //#region lib/types/startup-diagnostics.js
6
+ /** Save original startup diagnostics while keeping the terminal report concise. */
7
+ /**
8
+ * Trace one startup phase to stderr when CHATCODE_CLI_STARTUP_TRACE=1.
9
+ * @param phase - launcher-owned label; exclude paths, arguments and configuration values.
10
+ * @returns a callback recording the elapsed milliseconds when the phase completes.
11
+ */
12
+ function startStartupPhase(phase) {
13
+ if (process.env.CHATCODE_CLI_STARTUP_TRACE !== "1") return () => {};
14
+ const started = performance.now();
15
+ process.stderr.write(`[cco-startup] ${phase}: begin\n`);
16
+ return () => {
17
+ process.stderr.write(`[cco-startup] ${phase}: ${(performance.now() - started).toFixed(1)} ms\n`);
18
+ };
19
+ }
20
+ /**
21
+ * Trace plugin activation until the launcher's initial boot settles.
22
+ * @param ctx - the root context before profile entries mount.
23
+ * @returns the listener disposer; call before handing control to the interactive surface.
24
+ */
25
+ function traceStartupPlugins(ctx) {
26
+ if (process.env.CHATCODE_CLI_STARTUP_TRACE !== "1") return () => {};
27
+ const pending = /* @__PURE__ */ new Map();
28
+ return ctx.on("internal/status", (fiber) => {
29
+ if (fiber.state === 1) pending.set(fiber, startStartupPhase(`plugin/${fiber.name}`));
30
+ else {
31
+ pending.get(fiber)?.();
32
+ pending.delete(fiber);
33
+ }
34
+ }, { global: true });
35
+ }
36
+ /** Wait for stderr to finish the write before the failed process exits. */
37
+ function writeStderr(text) {
38
+ return new Promise((resolve, reject) => {
39
+ process.stderr.write(text, (error) => {
40
+ if (error) reject(error);
41
+ else resolve();
42
+ });
43
+ });
44
+ }
45
+ /**
46
+ * Print the startup summary and save a private, uniquely named report under DSH_HOME/logs.
47
+ * Failed writes print the complete report to stderr instead of claiming a saved path.
48
+ * @param error - startup audit failure retaining plugin metadata and original errors.
49
+ * @param context - resolved Harness home, application version, and selected profile.
50
+ * @param write - terminal output sink; awaited before returning, defaults to stderr.
51
+ * @returns after saving or printing the report and completing terminal writes.
52
+ */
53
+ async function reportStartupFailure(error, context, write = writeStderr) {
54
+ const now = (/* @__PURE__ */ new Date()).toISOString();
55
+ const report = "WARNING: Raw diagnostics may contain configuration or credential values from plugin errors. Review before sharing.\n\n" + inspect({
56
+ timestamp: now,
57
+ dshVersion: context.version,
58
+ nodeVersion: process.version,
59
+ platform: process.platform,
60
+ arch: process.arch,
61
+ profile: context.profile,
62
+ error
63
+ }, {
64
+ depth: null,
65
+ maxArrayLength: null,
66
+ maxStringLength: null,
67
+ showHidden: true,
68
+ customInspect: false,
69
+ getters: false,
70
+ colors: false
71
+ }) + "\n";
72
+ await write(`${error.message}\n`);
73
+ const logDir = join(context.home, "logs");
74
+ const logPath = join(logDir, `startup-${now.replaceAll(":", "-")}-${randomUUID()}.log`);
75
+ try {
76
+ await mkdir(logDir, {
77
+ recursive: true,
78
+ mode: 448
79
+ });
80
+ await writeFile(logPath, report, {
81
+ flag: "wx",
82
+ mode: 384
83
+ });
84
+ } catch (writeError) {
85
+ await write(`\ndsh: warning: could not write startup diagnostics: ${String(writeError)}\nFull diagnostics:\n${report}`);
86
+ return;
87
+ }
88
+ await write(`\nFull diagnostics: ${logPath}\n`);
89
+ }
90
+ //#endregion
91
+ export { startStartupPhase as n, traceStartupPlugins as r, reportStartupFailure as t };
@@ -1,12 +1,12 @@
1
- import { c as parseCombo, i as comboMatchesStrict, r as canonicalCombo, s as fixedReservedCombos, u as reservedActionCombos } from "./keymap-CFChEJ2W.js";
2
- import { a as compositionRoot, i as bindCallerEffect, n as activationFiber, o as concreteService, r as assertCallerContext, s as requirePluginCaller, t as activationContext } from "./host-access-CmD27uhQ.js";
3
- import { n as componentIdentityOf } from "./component-identity-CnmIKHEF.js";
4
- import { S as DATA_DIR, f as cleanRenderText, p as cleanScalarText } from "./extension-events-DciGPKJa.js";
1
+ import { c as parseCombo, i as comboMatchesStrict, r as canonicalCombo, s as fixedReservedCombos, u as reservedActionCombos } from "./keymap-CRUxM_qn.js";
2
+ import { a as compositionRoot, i as bindCallerEffect, n as activationFiber, o as concreteService, r as assertCallerContext, s as requirePluginCaller, t as activationContext } from "./host-access-DeCjoRQP.js";
3
+ import { n as componentIdentityOf } from "./component-identity-DPdJglJO.js";
4
+ import { S as DATA_DIR, f as cleanRenderText, p as cleanScalarText } from "./extension-events-Be9LWvHD.js";
5
5
  import { readFileSync, readdirSync } from "node:fs";
6
6
  import { join } from "node:path";
7
7
  import { KNOWN_SESSION_EVENT_TYPES } from "@deepseek-ai/dsh-session";
8
8
  import { Context, Service } from "@deepseek-ai/cordis";
9
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/dialogs.js
9
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.16_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/dialogs.js
10
10
  /**
11
11
  * Managed plugin dialogs — the pi `ctx.ui.select/confirm/input` seam for
12
12
  * ChatCode CLI TUI. Plugins hand the HOST a declarative request; the TUI renders the
@@ -279,7 +279,7 @@ function getHostDialogStore(runtime) {
279
279
  }
280
280
  }
281
281
  //#endregion
282
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/status.js
282
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.16_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/status.js
283
283
  /**
284
284
  * Keyed status-line contributions — pi's `ctx.ui.setStatus(key, text)`.
285
285
  * Each plugin owns a key; setting text shows it, setting undefined clears
@@ -503,7 +503,7 @@ function getHostStatusStore(runtime) {
503
503
  }
504
504
  }
505
505
  //#endregion
506
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/shortcuts.js
506
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.16_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/shortcuts.js
507
507
  /**
508
508
  * Plugin keyboard shortcuts — pi's `pi.registerShortcut`. A plugin binds a
509
509
  * combo (`ctrl+shift+p`, `alt+k`, …) to a handler; the chat screen matches
@@ -704,7 +704,7 @@ function getHostShortcuts(runtime) {
704
704
  }
705
705
  }
706
706
  //#endregion
707
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/renderers.js
707
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.16_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/renderers.js
708
708
  /**
709
709
  * Custom session-entry renderers — pi's `pi.registerMessageRenderer`. A
710
710
  * plugin that appends its own log-only session events (`session.append(
@@ -876,7 +876,7 @@ function getHostRenderers(runtime) {
876
876
  }
877
877
  }
878
878
  //#endregion
879
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/toast.js
879
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.16_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/toast.js
880
880
  /**
881
881
  * Plugin-facing transient notifications — a fire-and-forget toast shown on
882
882
  * the host's existing notification surface (the same toasts the channel
@@ -1011,7 +1011,7 @@ function getHostToastStore(runtime) {
1011
1011
  }
1012
1012
  }
1013
1013
  //#endregion
1014
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/theme.js
1014
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.16_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/theme.js
1015
1015
  /**
1016
1016
  * dsh-tui color themes — ChatCode CLI terminal family.
1017
1017
  *
@@ -1486,7 +1486,7 @@ function getActiveTheme() {
1486
1486
  return getTheme(activeThemeName);
1487
1487
  }
1488
1488
  //#endregion
1489
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/customTheme.js
1489
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.16_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/customTheme.js
1490
1490
  /**
1491
1491
  * User-defined color themes for dsh-tui.
1492
1492
  *
@@ -1716,7 +1716,7 @@ function indexCustomThemeNames() {
1716
1716
  nameIndexed = true;
1717
1717
  }
1718
1718
  //#endregion
1719
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/themes.js
1719
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.16_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/themes.js
1720
1720
  /**
1721
1721
  * Cordis-backed runtime theme contributions.
1722
1722
  *
@@ -1,2 +1,2 @@
1
- import { r as name, t as TuiCommandTreeRuntime } from "./command-trees-8o99Bws7.js";
1
+ import { r as name, t as TuiCommandTreeRuntime } from "./command-trees-Dvq4C7a4.js";
2
2
  export { TuiCommandTreeRuntime, TuiCommandTreeRuntime as default, name };
@@ -1,9 +1,9 @@
1
- import { a as normalizeCancelDecision, c as installDecisionGuard, n as DECISION_TOTAL_TIMEOUT_MS, o as DECISION_EVENT_PERMISSIONS, t as DECISION_HANDLER_TIMEOUT_MS, x as readGrantStore } from "./extension-events-DciGPKJa.js";
2
- import { A as TuiDialogRuntime, C as matchShortcut, D as getHostStatusStore, E as TuiStatusStore, O as DIALOG_DEFAULT_TIMEOUT_MS, T as TuiStatusRuntime, _ as TuiToastRuntime, j as TuiDialogStore, k as INPUT_CELLS, t as TuiThemeRuntime, w as parseShortcutCombo, x as TuiShortcutRuntime, y as TuiRendererRuntime } from "./themes-DTzG_9I_.js";
1
+ import { a as normalizeCancelDecision, c as installDecisionGuard, n as DECISION_TOTAL_TIMEOUT_MS, o as DECISION_EVENT_PERMISSIONS, t as DECISION_HANDLER_TIMEOUT_MS, x as readGrantStore } from "./extension-events-Be9LWvHD.js";
2
+ import { A as TuiDialogRuntime, C as matchShortcut, D as getHostStatusStore, E as TuiStatusStore, O as DIALOG_DEFAULT_TIMEOUT_MS, T as TuiStatusRuntime, _ as TuiToastRuntime, j as TuiDialogStore, k as INPUT_CELLS, t as TuiThemeRuntime, w as parseShortcutCombo, x as TuiShortcutRuntime, y as TuiRendererRuntime } from "./themes-BCly4_y9.js";
3
3
  import { appendFileSync, mkdirSync } from "node:fs";
4
4
  import { homedir } from "node:os";
5
5
  import { dirname, join } from "node:path";
6
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/extensions.js
6
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.16_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/extensions.js
7
7
  /**
8
8
  * The dsh-tui-extensions row: mounts every plugin-facing UI seam service in
9
9
  * one cordis plugin (one profile row, one patch-surface entry — see issue
@@ -65,7 +65,7 @@ function logDiag(line) {
65
65
  mkdirSync(dirname(file), { recursive: true });
66
66
  const p = (n) => String(n).padStart(2, "0");
67
67
  const d = /* @__PURE__ */ new Date();
68
- appendFileSync(file, "[" + (d.getFullYear() + "-" + p(d.getMonth() + 1) + "-" + p(d.getDate()) + " " + p(d.getHours()) + ":" + p(d.getMinutes()) + ":" + p(d.getSeconds())) + "] [dsh-tui-DIAG] " + line + "\n", "utf8");
68
+ appendFileSync(file, "[" + (d.getFullYear() + "-" + p(d.getMonth() + 1) + "-" + p(d.getDate()) + " " + p(d.getHours()) + ":" + p(d.getMinutes()) + ":" + p(d.getSeconds())) + "] [chatcode-cli-DIAG] " + line + "\n", "utf8");
69
69
  } catch {}
70
70
  }
71
71
  //#endregion
@@ -1,10 +1,10 @@
1
- import { a as compositionRoot, i as bindCallerEffect, n as activationFiber, o as concreteService, r as assertCallerContext, t as activationContext } from "./host-access-CmD27uhQ.js";
2
- import { c as requiresDecisionEvents, o as requireComponentIdentity, r as declaresCommand, s as requiresContract, t as bindComponentIdentity } from "./component-identity-CnmIKHEF.js";
3
- import { B as createAdmissionCatalog, F as verifyRegistry, I as DECISION_EVENTS_COORDINATE, J as parseManifest, L as TUI_DECISION_EVENT_NAMES, M as loadSpecData, P as verifyContractProfiles, R as TUI_EXTENSION_API_VERSION, Y as projectManifest, c as installDecisionGuard, l as registerDecisionHandler, n as DECISION_TOTAL_TIMEOUT_MS, o as DECISION_EVENT_PERMISSIONS, s as decisionHandlerMetadataOf, t as DECISION_HANDLER_TIMEOUT_MS, u as withDecisionRegistration, x as readGrantStore, z as TUI_EXTENSION_PERMISSION_NAMES } from "./extension-events-DciGPKJa.js";
4
- import { A as validatePlugin, C as TuiPluginStorageRuntime, D as buildHostDescriptor, E as HOST_SUPPORTED_CONTRACTS, O as negotiate, S as STORAGE_MAX_KEYS, T as TuiEffectLedgerRuntime, b as STORAGE_KEY_MAX_LENGTH, c as OBSERVE_CALLBACK_QUEUE_LIMIT, d as OBSERVE_ID_MAX_CHARS, f as OBSERVE_IMAGE_BASE64_MAX_CHARS, g as TuiMessageObserverRuntime, h as OBSERVE_SUMMARY_CELLS, i as withCommandErrorMapping, k as createContractIndex, l as OBSERVE_CALLBACK_TIMEOUT_MS, m as OBSERVE_SCOPE_MAX_CHARS, n as hasCommandErrorCode, o as stampCommandOwner, p as OBSERVE_IMAGE_MAX_BYTES, r as mapCommandError, s as unstampCommandOwner, t as COMMAND_ERROR_CODES, u as OBSERVE_CONTENT_MAX_CHARS, x as STORAGE_MAX_BYTES, y as PluginStorageError } from "./command-errors-CIYn1nnW.js";
1
+ import { a as compositionRoot, i as bindCallerEffect, n as activationFiber, o as concreteService, r as assertCallerContext, t as activationContext } from "./host-access-DeCjoRQP.js";
2
+ import { c as requiresDecisionEvents, o as requireComponentIdentity, r as declaresCommand, s as requiresContract, t as bindComponentIdentity } from "./component-identity-DPdJglJO.js";
3
+ import { B as createAdmissionCatalog, F as verifyRegistry, I as DECISION_EVENTS_COORDINATE, J as parseManifest, L as TUI_DECISION_EVENT_NAMES, M as loadSpecData, P as verifyContractProfiles, R as TUI_EXTENSION_API_VERSION, Y as projectManifest, c as installDecisionGuard, l as registerDecisionHandler, n as DECISION_TOTAL_TIMEOUT_MS, o as DECISION_EVENT_PERMISSIONS, s as decisionHandlerMetadataOf, t as DECISION_HANDLER_TIMEOUT_MS, u as withDecisionRegistration, x as readGrantStore, z as TUI_EXTENSION_PERMISSION_NAMES } from "./extension-events-Be9LWvHD.js";
4
+ import { A as validatePlugin, C as TuiPluginStorageRuntime, D as buildHostDescriptor, E as HOST_SUPPORTED_CONTRACTS, O as negotiate, S as STORAGE_MAX_KEYS, T as TuiEffectLedgerRuntime, b as STORAGE_KEY_MAX_LENGTH, c as OBSERVE_CALLBACK_QUEUE_LIMIT, d as OBSERVE_ID_MAX_CHARS, f as OBSERVE_IMAGE_BASE64_MAX_CHARS, g as TuiMessageObserverRuntime, h as OBSERVE_SUMMARY_CELLS, i as withCommandErrorMapping, k as createContractIndex, l as OBSERVE_CALLBACK_TIMEOUT_MS, m as OBSERVE_SCOPE_MAX_CHARS, n as hasCommandErrorCode, o as stampCommandOwner, p as OBSERVE_IMAGE_MAX_BYTES, r as mapCommandError, s as unstampCommandOwner, t as COMMAND_ERROR_CODES, u as OBSERVE_CONTENT_MAX_CHARS, x as STORAGE_MAX_BYTES, y as PluginStorageError } from "./command-errors-CBJRI2gy.js";
5
5
  import { randomUUID } from "node:crypto";
6
6
  import { Context, Service } from "@deepseek-ai/cordis";
7
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/plugin-host.js
7
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.16_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/plugin-host.js
8
8
  /**
9
9
  * The dsh-tui-plugin-host row: the plugin-interop anchor every later
10
10
  * contract surface hangs off (storage.local, messages.observe, effect
@@ -1,2 +1,2 @@
1
- import { r as name, t as TuiSceneRuntime } from "./scenes-ai_8sHDs.js";
1
+ import { r as name, t as TuiSceneRuntime } from "./scenes-D6jV1EEi.js";
2
2
  export { TuiSceneRuntime, TuiSceneRuntime as default, name };
@@ -1,2 +1,2 @@
1
- import { i as name, t as TuiSettingsSectionsRuntime } from "./settings-sections-QQ1-2lhL.js";
1
+ import { i as name, t as TuiSettingsSectionsRuntime } from "./settings-sections-DJQRNBo9.js";
2
2
  export { TuiSettingsSectionsRuntime, TuiSettingsSectionsRuntime as default, name };
@@ -235,7 +235,7 @@ function apply$1(ctx, config = {}) {
235
235
  }, "working-activity tick timer");
236
236
  }
237
237
  //#endregion
238
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/working-activity.js
238
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.16_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/working-activity.js
239
239
  /**
240
240
  * Re-export of the `dsh-working-activity` plugin under this package's own
241
241
  * name, so the bundle patch layer can mount the working-activity row as
@@ -1,2 +1,2 @@
1
- import { a as localWorkspaceUri, n as WORKSPACE_PROVIDER_TIMEOUT_MS, o as name, r as createLocalWorkspaceRuntime, s as parseLocalWorkspaceReference, t as TuiWorkspaceRuntime } from "./workspaces-CznCgVHv.js";
1
+ import { a as localWorkspaceUri, n as WORKSPACE_PROVIDER_TIMEOUT_MS, o as name, r as createLocalWorkspaceRuntime, s as parseLocalWorkspaceReference, t as TuiWorkspaceRuntime } from "./workspaces-Bb3kCAFb.js";
2
2
  export { TuiWorkspaceRuntime, TuiWorkspaceRuntime as default, WORKSPACE_PROVIDER_TIMEOUT_MS, createLocalWorkspaceRuntime, localWorkspaceUri, name, parseLocalWorkspaceReference };
package/lib/tui-compat.js CHANGED
@@ -1,7 +1,7 @@
1
- import { n as DEFAULT_STATUS_BAR, s as normalizePageMargin } from "./tuiDisplayPrefs-BCHRRcfe.js";
2
- import { t as SHORTCUT_ACTIONS } from "./keymap-CFChEJ2W.js";
1
+ import { _ as withLiveSettings, h as liveConfigValues, n as DEFAULT_STATUS_BAR, s as normalizePageMargin } from "./tuiDisplayPrefs-Dm_fULiR.js";
2
+ import { t as SHORTCUT_ACTIONS } from "./keymap-CRUxM_qn.js";
3
3
  import z from "@deepseek-ai/schemastery";
4
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/force-production-react.js
4
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.16_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/force-production-react.js
5
5
  /**
6
6
  * React-reconciler selects its dev/production build at require time from
7
7
  * NODE_ENV; the dev build records one performance.measure() per render into
@@ -14,10 +14,18 @@ import z from "@deepseek-ai/schemastery";
14
14
  */
15
15
  process.env.NODE_ENV ??= "production";
16
16
  //#endregion
17
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/index.js
17
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.16_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/index.js
18
+ /**
19
+ * dsh-tui plugin entry. The TUI implementation lives in `./plugin.tsx` (its
20
+ * render path is JSX); this module owns the plugin surface (`name`/`inject`/
21
+ * `Config`/`apply`) at the canonical `src/index.ts` location and delegates
22
+ * `apply` through a dynamic import so entry-scanning tooling and the Loader
23
+ * resolve a plain `.ts` module.
24
+ * @module @chatcode/cco-tui
25
+ */
18
26
  const name = "dsh-tui";
19
- const inject = ["agents"];
20
- const Config = z.object({
27
+ const inject$1 = ["agents"];
28
+ const Config = withLiveSettings(z.object({
21
29
  sessionId: z.string().required(false),
22
30
  provider: z.string().required(false),
23
31
  model: z.string().required(false),
@@ -51,6 +59,9 @@ const Config = z.object({
51
59
  promptSessionLabel: z.boolean().default(false),
52
60
  expandEditor: z.boolean().default(true),
53
61
  smoothStreaming: z.boolean().default(true),
62
+ whale: z.boolean().default(true),
63
+ minimal: z.boolean().default(false),
64
+ recapOnOpen: z.boolean().default(true),
54
65
  statusBar: z.object({
55
66
  compact: z.boolean().default(DEFAULT_STATUS_BAR.compact),
56
67
  tokenDashboard: z.boolean().default(DEFAULT_STATUS_BAR.tokenDashboard),
@@ -83,7 +94,24 @@ const Config = z.object({
83
94
  ]).required(false),
84
95
  approval: z.union(["ask", "never"]).required(false)
85
96
  })).required(false)
86
- });
97
+ }), [
98
+ "fullscreen",
99
+ "lang",
100
+ "diffLayout",
101
+ "thinkingFold",
102
+ "toolBackground",
103
+ "scrollGutter",
104
+ "pageMargin",
105
+ "foldTerminalCommand",
106
+ "promptSessionLabel",
107
+ "expandEditor",
108
+ "smoothStreaming",
109
+ "statusBar",
110
+ "shortcuts",
111
+ "whale",
112
+ "minimal",
113
+ "recapOnOpen"
114
+ ]);
87
115
  /**
88
116
  * Start the interactive TUI front door, delegating to the JSX implementation
89
117
  * in `./plugin.tsx` (see its module doc for the full contract).
@@ -92,8 +120,12 @@ const Config = z.object({
92
120
  * @returns a promise settling when the TUI teardown completes.
93
121
  */
94
122
  async function apply(ctx, config) {
95
- const { apply: ccTuiApply } = await import("./plugin-jvd9PCVt.js");
96
- return ccTuiApply(ctx, config);
123
+ const { apply: ccTuiApply } = await import("./plugin-CDFSDE_y.js");
124
+ return ccTuiApply(ctx, liveConfigValues(config));
97
125
  }
98
126
  //#endregion
127
+ //#region lib/types/tui-compat.js
128
+ /** Wait for the shared model default before the TUI creates its first session. */
129
+ const inject = [...inject$1, "agentDefaultModel"];
130
+ //#endregion
99
131
  export { Config, apply, inject, name };
@@ -1,4 +1,46 @@
1
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/tuiDisplayPrefs.js
1
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.16_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/settingsCompat.js
2
+ /** Mark display fields editable on hosts that support volatile Config references. */
3
+ function withLiveSettings(schema, fields) {
4
+ for (const key of fields) {
5
+ const field = schema.dict?.[String(key)];
6
+ if (field?.volatile) schema.dict[String(key)] = field.volatile();
7
+ }
8
+ return schema;
9
+ }
10
+ /** Keep plain Config consumers reading the latest snapshots without exposing references. */
11
+ function liveConfigValues(config) {
12
+ return new Proxy(config, { get(target, key, receiver) {
13
+ const value = Reflect.get(target, key, receiver);
14
+ if (value && typeof value === "object" && Symbol.for("cosmokit.volatile.write") in value && "get" in value && typeof value.get === "function") return value.get();
15
+ return value;
16
+ } });
17
+ }
18
+ /** Observe display settings without remounting the TUI or creating another session. */
19
+ function displaySettingsScope(owner, settingsCtx, ns, schema, config) {
20
+ const settings = settingsCtx.settings;
21
+ if (typeof settings.register === "function") {
22
+ const scope = settings.register(ns, schema);
23
+ return {
24
+ get: () => scope.get(),
25
+ watch: (listener) => scope.watch(listener),
26
+ legacy: true
27
+ };
28
+ }
29
+ const get = () => Object.fromEntries(Object.keys(schema.dict ?? {}).map((key) => [key, Reflect.get(config, key)]));
30
+ const events = owner;
31
+ return {
32
+ get,
33
+ watch: (listener) => events.on("loader/volatile-update", () => listener(get())),
34
+ legacy: false
35
+ };
36
+ }
37
+ /** Read effective values on new hosts; retain support for older descriptor implementations. */
38
+ function settingsValue(settings, ns) {
39
+ const descriptor = settings.describe().find((row) => row.ns === ns);
40
+ return descriptor && "value" in descriptor ? descriptor.value : settings.get?.(ns);
41
+ }
42
+ //#endregion
43
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.16_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/tuiDisplayPrefs.js
2
44
  /** Default footer is intentionally quiet: only the Yuanjing token dashboard. */
3
45
  const DEFAULT_STATUS_BAR = Object.freeze({
4
46
  compact: true,
@@ -159,4 +201,4 @@ function applyPageMargin(setting) {
159
201
  return next;
160
202
  }
161
203
  //#endregion
162
- export { getPageMarginSetting as a, normalizeScrollGutter as c, parsePageMarginSpec as d, resolvePageMargin as f, formatContextUsage as i, normalizeStatusBar as l, DEFAULT_STATUS_BAR as n, isPageMarginMode as o, subscribePageMargin as p, applyPageMargin as r, normalizePageMargin as s, DEFAULT_PAGE_MARGIN as t, normalizeToolBackground as u };
204
+ export { withLiveSettings as _, getPageMarginSetting as a, normalizeScrollGutter as c, parsePageMarginSpec as d, resolvePageMargin as f, settingsValue as g, liveConfigValues as h, formatContextUsage as i, normalizeStatusBar as l, displaySettingsScope as m, DEFAULT_STATUS_BAR as n, isPageMarginMode as o, subscribePageMargin as p, applyPageMargin as r, normalizePageMargin as s, DEFAULT_PAGE_MARGIN as t, normalizeToolBackground as u };
@@ -49,6 +49,14 @@ export declare function isTransientMigrationPath(relativePath: string, kind: Hom
49
49
  export declare function resolveHomeMigrationRoots(env?: Record<string, string | undefined>): HomeMigrationRoots;
50
50
  /** Find legacy trees with durable entries that are still absent from the canonical home. */
51
51
  export declare function detectPendingHomeMigrations(roots: HomeMigrationRoots): Promise<HomeMigrationPlan[]>;
52
+ /**
53
+ * Probe the legacy roots for a startup reminder without descending or reading file contents.
54
+ * A positive result reports legacy data, not a claim that it still needs copying;
55
+ * the explicit migration command owns destination comparison and fingerprinting.
56
+ * @param roots - legacy directories and their canonical destinations.
57
+ * @returns whether either distinct, readable legacy root contains a durable entry.
58
+ */
59
+ export declare function hasLegacyHomeData(roots: HomeMigrationRoots): Promise<boolean>;
52
60
  /** Inspect both trees and return a deterministic, side-effect-free migration plan. */
53
61
  export declare function planHomeMigration(source: string, destination: string): Promise<HomeMigrationPlan>;
54
62
  /** Apply exactly one reviewed plan without overwriting destinations or removing legacy data. */
@@ -1,4 +1,5 @@
1
1
  /** Save original startup diagnostics while keeping the terminal report concise. */
2
+ import { type Context } from '@deepseek-ai/cordis';
2
3
  import type { StartupError } from '@deepseek-ai/dsh-app-boot';
3
4
  /** Launcher-owned context; no environment values or plugin configurations are collected. */
4
5
  interface StartupDiagnosticContext {
@@ -6,6 +7,18 @@ interface StartupDiagnosticContext {
6
7
  version: string;
7
8
  profile: string;
8
9
  }
10
+ /**
11
+ * Trace one startup phase to stderr when CHATCODE_CLI_STARTUP_TRACE=1.
12
+ * @param phase - launcher-owned label; exclude paths, arguments and configuration values.
13
+ * @returns a callback recording the elapsed milliseconds when the phase completes.
14
+ */
15
+ export declare function startStartupPhase(phase: string): () => void;
16
+ /**
17
+ * Trace plugin activation until the launcher's initial boot settles.
18
+ * @param ctx - the root context before profile entries mount.
19
+ * @returns the listener disposer; call before handing control to the interactive surface.
20
+ */
21
+ export declare function traceStartupPlugins(ctx: Context): () => void;
9
22
  /**
10
23
  * Print the startup summary and save a private, uniquely named report under DSH_HOME/logs.
11
24
  * Failed writes print the complete report to stderr instead of claiming a saved path.
@@ -1,3 +1,5 @@
1
1
  /** Exact-version TUI bridge owned by the ChatCode launcher. */
2
2
  export * from '@deepseek-harness-tui/dsh-tui';
3
+ /** Wait for the shared model default before the TUI creates its first session. */
4
+ export declare const inject: string[];
3
5
  //# sourceMappingURL=tui-compat.d.ts.map
@@ -1,8 +1,8 @@
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-DeCjoRQP.js";
2
2
  import { fileURLToPath, pathToFileURL } from "node:url";
3
3
  import { basename, isAbsolute, resolve } from "node:path";
4
4
  import { Service } from "@deepseek-ai/cordis";
5
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.9_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/workspaces.js
5
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.16_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/workspaces.js
6
6
  /**
7
7
  * Workspace-target extension seam for terminal front doors.
8
8
  *