@chatcode/chatcode-cli 3.0.4-rc.5 → 3.0.4-rc.7

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 (53) hide show
  1. package/README.i18n.yaml +4 -4
  2. package/README.md +4 -2
  3. package/README.zh.md +4 -2
  4. package/lib/bin.js +3 -3
  5. package/lib/{command-errors-BJ_ZWzUU.js → command-errors-Ca64Lgba.js} +12 -12
  6. package/lib/{command-trees-C9b7-bci.js → command-trees-CVc4Xu_z.js} +2 -2
  7. package/lib/{component-identity-Jb1DYjke.js → component-identity-6aEut5Yt.js} +3 -3
  8. package/lib/dump-config-CDixiJNt.js +2 -0
  9. package/lib/{dump-config-BcH-VYuv.js → dump-config-ZzrfvtnX.js} +10 -6
  10. package/lib/{dump-config-schema-DM0fb6Ns.js → dump-config-schema-BlO-eZ-J.js} +2 -2
  11. package/lib/{extension-events-DKX4LXOd.js → extension-events-C7MUpqVE.js} +20 -20
  12. package/lib/headless-compat.js +31 -31
  13. package/lib/{host-access-CMg6rsWt.js → host-access-CLbyAGT5.js} +1 -1
  14. package/lib/{keymap-CrC4pSNH.js → keymap-82JwLLHe.js} +2 -2
  15. package/lib/{plugin-eJjD6r12.js → plugin-BZdazFXS.js} +1 -1
  16. package/lib/{plugin-CmyMCGfb.js → plugin-BlQlWIR5.js} +425 -451
  17. package/lib/{profile-boot-BNQry1NM.js → profile-boot-B0aEEQIR.js} +40 -11
  18. package/lib/profile-boot.js +2 -2
  19. package/lib/{scenes-Cil9RnwU.js → scenes-BNS0ZFyQ.js} +3 -3
  20. package/lib/{settings-sections-jVCqXwdH.js → settings-sections-CXH24cu5.js} +3 -3
  21. package/lib/{statusBarSettings-DNoBH3Cq.js → statusBarSettings-BAMzn8fX.js} +6 -6
  22. package/lib/{themes-BdgeY3It.js → themes-DXUIvP7m.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 +17 -17
  29. package/lib/tui-compat-workspaces.js +1 -1
  30. package/lib/tui-compat.js +39 -39
  31. package/lib/types/dump-config.d.ts +3 -3
  32. package/lib/types/profile-boot.d.ts +13 -3
  33. package/lib/{workspaces-DOatJRYr.js → workspaces-CUJXNU5W.js} +2 -2
  34. package/package.json +28 -28
  35. package/runtime/manifest.json +1 -1
  36. package/runtime/node_modules/@deepseek-ai/cordis-plugin-loader/lib/index.js +1 -1
  37. package/runtime/node_modules/@deepseek-ai/cordis-plugin-loader/src/config/entry.ts +1 -1
  38. package/runtime/node_modules/@deepseek-ai/dsh-app-boot/lib/index.js +5 -1
  39. package/runtime/node_modules/@deepseek-ai/dsh-app-boot/lib/types/profile-context.d.ts +2 -0
  40. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-account/lib/client.js +2 -2
  41. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-general/lib/client.js +1 -1
  42. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-sidebar/lib/client.js +3 -1
  43. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/client.js +17 -159
  44. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/ArchivedSessions.d.ts +1 -2
  45. package/runtime/node_modules/@deepseek-ai/dsh-config-editor/lib/index.js +5 -1
  46. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/{index-Dz_cDcce.js → index-D-8yUukj.js} +24 -24
  47. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/{index-Dz_cDcce.js.map → index-D-8yUukj.js.map} +1 -1
  48. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/index.html +1 -1
  49. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/preview.html +1 -1
  50. package/runtime/node_modules/@deepseek-ai/dsh-workspace/lib/index.js +32 -29
  51. package/runtime/node_modules/@deepseek-ai/dsh-workspace/lib/types/index.d.ts +0 -2
  52. package/runtime/node_modules/@deepseek-ai/dsh-workspace/lib/types/index.js +39 -30
  53. package/lib/dump-config-CyopmD85.js +0 -2
@@ -6,6 +6,7 @@ import { existsSync, mkdirSync, readFileSync, realpathSync, rmSync, writeFileSyn
6
6
  import { fileURLToPath } from "node:url";
7
7
  import { PROFILE_PATCH_FILENAME, PROFILE_TEMPLATES, PluginPackages, boot, bundlePatchPaths, createRuntimeResolution, getDshRuntimeVersion, initProfile, installFailLoud, loadOverlayPatches, loadProfile, readProfileManifest, readProfilePatches, reportSkippedBundles, resolveProfileDir, writeProfileManifest } from "@deepseek-ai/dsh-app-boot";
8
8
  import { dirname, extname, join, resolve } from "node:path";
9
+ import Schema from "@deepseek-ai/schemastery";
9
10
  import { installProxyFromEnvironment } from "@deepseek-ai/dsh-http-proxy";
10
11
  import { DSH_LAUNCH_ENVIRONMENT_KEY } from "@deepseek-ai/dsh-launch-environment";
11
12
  import { provideCmdline } from "@deepseek-ai/dsh-cmdline";
@@ -110,8 +111,8 @@ function installPermissionBypass(ctx) {
110
111
  //#region lib/types/profile-boot.js
111
112
  /**
112
113
  * Shared profile boot for every ChatCode CLI surface: resolve the profile, stack its
113
- * patch layers (bundle layers in `dsh.profile.bundles` order, the profile's
114
- * own `cordis.patch.yml`, `--patch` overlays, the telemetry switch), mount the
114
+ * patch layers (bundle layers in `dsh.profile.bundles` order, product defaults,
115
+ * profile and home patches, `--patch` overlays, the telemetry switch), mount the
115
116
  * tree over the profile's empty root config, and wire fail-loud plus bounded shutdown.
116
117
  *
117
118
  * App flags are not the launcher's business: the invocation's inner arguments
@@ -204,6 +205,14 @@ function installProfileInvocationAccessor(ctx) {
204
205
  if (Object.hasOwn(ctx.reflect.props, "invocation")) return;
205
206
  ctx.accessor("invocation", { get: () => void 0 });
206
207
  }
208
+ /** Keep the published sidebar's live fields on the host schema runtime without changing its module identity. */
209
+ function installSidebarSchemaCompatibility(ctx) {
210
+ ctx.on("internal/plugin", (fiber) => {
211
+ const runtime = fiber.runtime;
212
+ if (fiber.entry?.options.name !== "dsh-better-sidebar" || runtime?.name !== "dsh-better-sidebar" || runtime.Config === void 0 || runtime.Config instanceof Schema) return;
213
+ runtime.Config = new Schema(runtime.Config.toJSON());
214
+ });
215
+ }
207
216
  /** Launcher-owned readiness signal committed only after boot and host setup succeed. */
208
217
  function createAppReady() {
209
218
  let ready = false;
@@ -374,7 +383,7 @@ function restoreTrustedTuiLayer(profile, installAnchor = INSTALL_ANCHOR, runtime
374
383
  return profile;
375
384
  }
376
385
  }
377
- /** Product overlays that are part of ChatCode CLI rather than the upstream runtime profile ABI. */
386
+ /** Product defaults that are part of ChatCode CLI rather than the upstream runtime profile ABI. */
378
387
  const CHATCODE_PROFILE_PATCHES = {
379
388
  web: [
380
389
  ["dsh-better-sidebar", "cordis.patch.yml"],
@@ -392,7 +401,7 @@ const CHATCODE_PROFILE_PATCHES = {
392
401
  ],
393
402
  headless: [["@chatcode/chatcode-cli-test", "headless-compat.cordis.patch.yml"], ["dsh-llm-chatcode-config", "cordis.patch.yml"]]
394
403
  };
395
- /** Resolve installed ChatCode product patches without changing persisted profiles. */
404
+ /** Resolve installed ChatCode product defaults without changing persisted profiles. */
396
405
  function chatCodeProfilePatchFiles(profile, installAnchor = INSTALL_ANCHOR) {
397
406
  return (CHATCODE_PROFILE_PATCHES[profile] ?? []).map(([packageName, patch]) => {
398
407
  const path = join(dirname(packageName === "@chatcode/chatcode-cli-test" ? installAnchor : installedPackageManifest(packageName, installAnchor)), patch);
@@ -415,6 +424,19 @@ function uniqueProfilePatchFiles(files) {
415
424
  }
416
425
  return [...unique.values()];
417
426
  }
427
+ /** Separate product defaults from user overlays, applying each physical file once.
428
+ * @param profile - Profile selecting the installed product defaults.
429
+ * @param patchFiles - Command-line patch paths, including source-launcher mounts.
430
+ * @param installAnchor - Launcher manifest used to resolve product packages.
431
+ * @returns Default paths below profile edits and distinct user overlays above home edits.
432
+ */
433
+ function chatCodeProfilePatchLayers(profile, patchFiles, installAnchor = INSTALL_ANCHOR) {
434
+ const defaults = uniqueProfilePatchFiles(chatCodeProfilePatchFiles(profile, installAnchor));
435
+ return {
436
+ defaults,
437
+ overlays: uniqueProfilePatchFiles([...defaults, ...patchFiles]).slice(defaults.length)
438
+ };
439
+ }
418
440
  /** Resolve embedded compatibility plugins from the active source or built CLI tree. */
419
441
  function resolveEmbeddedHeadlessCompat(patches) {
420
442
  const extension = extname(fileURLToPath(import.meta.url)) === ".ts" ? ".ts" : ".js";
@@ -519,7 +541,7 @@ function prepareProfile(name, userLayer = true, fromDefaultProfile) {
519
541
  /**
520
542
  * Load `name` and compose its effective patch stack: bundle layers in
521
543
  * `dsh.profile.bundles` order (a base-backed profile gets the base bundle's
522
- * platform-gated shell rows), the profile's user layer, the home-level user
544
+ * platform-gated shell rows), product defaults, the profile's user layer, the home-level user
523
545
  * layer (`$DSH_HOME/cordis.patch.yml` — machine-local preferences that apply
524
546
  * to every profile, so it outranks the per-profile layer), `--patch` overlays,
525
547
  * then the telemetry switch.
@@ -537,15 +559,20 @@ async function composeProfile(name, patchFiles, fromDefaultProfile, resolvedProf
537
559
  profile
538
560
  };
539
561
  const resolution = preferEmbeddedRuntimeResolution(await createRuntimeResolution(resolutionOptions), resolutionOptions.installAnchor);
540
- const uniquePatchFiles = uniqueProfilePatchFiles([...resolvedProfile === void 0 ? chatCodeProfilePatchFiles(name, INSTALL_ANCHOR) : [], ...patchFiles]);
562
+ const files = resolvedProfile === void 0 ? chatCodeProfilePatchLayers(name, patchFiles) : {
563
+ defaults: [],
564
+ overlays: uniqueProfilePatchFiles(patchFiles)
565
+ };
541
566
  const ownCompatPatch = resolve(join(dirname(INSTALL_ANCHOR), "headless-compat.cordis.patch.yml"));
567
+ const loadPatches = (file) => {
568
+ const patches = loadOverlayPatches(NAME, file);
569
+ return file === ownCompatPatch ? resolveEmbeddedHeadlessCompat(patches) : patches;
570
+ };
542
571
  return {
543
572
  profile,
544
573
  resolution,
545
- overlays: uniquePatchFiles.flatMap((file) => {
546
- const patches = loadOverlayPatches(NAME, file);
547
- return file === ownCompatPatch ? resolveEmbeddedHeadlessCompat(patches) : patches;
548
- })
574
+ defaults: files.defaults.flatMap(loadPatches),
575
+ overlays: files.overlays.flatMap(loadPatches)
549
576
  };
550
577
  }
551
578
  /**
@@ -604,6 +631,7 @@ async function runProfile(options) {
604
631
  startedBundles: composed.profile.layers.map((layer) => layer.packageName),
605
632
  cwd: process.cwd(),
606
633
  home: resolveChatCodeCliHome(),
634
+ defaults: composed.defaults,
607
635
  overlays: composed.overlays,
608
636
  transformPatches: resolveChatCodePackageAliases,
609
637
  trustedVersionExemptions: CHATCODE_TRUSTED_VERSION_EXEMPTIONS,
@@ -616,6 +644,7 @@ async function runProfile(options) {
616
644
  stopPluginTrace = traceStartupPlugins(hostCtx);
617
645
  app.current = hostCtx;
618
646
  installProfileInvocationAccessor(hostCtx);
647
+ installSidebarSchemaCompatibility(hostCtx);
619
648
  if (options.dangerouslySkipPermissions === true) installPermissionBypass(hostCtx);
620
649
  hostCtx.provide("profileContext", profileContext);
621
650
  hostCtx.provide(DSH_LAUNCH_ENVIRONMENT_KEY, options.environment);
@@ -648,4 +677,4 @@ async function runProfile(options) {
648
677
  }
649
678
  }
650
679
  //#endregion
651
- export { chatCodeProfilePatchFiles as a, initializeProfileFromDefault as c, preferEmbeddedRuntimeResolution as d, prepareProfile as f, uniqueProfilePatchFiles as g, runProfile as h, PROFILE_ROOT_FILENAME as i, installProfileInvocationAccessor as l, restoreTrustedTuiLayer as m, CHATCODE_TRUSTED_VERSION_EXEMPTIONS as n, embeddedRuntimePackageDir as o, resolveChatCodePackageAliases as p, INSTALL_ANCHOR as r, homePatchPath as s, CHATCODE_PROFILE_TEMPLATES as t, preferEmbeddedProfileLayers as u };
680
+ export { uniqueProfilePatchFiles as _, chatCodeProfilePatchFiles as a, homePatchPath as c, preferEmbeddedProfileLayers as d, preferEmbeddedRuntimeResolution as f, runProfile as g, restoreTrustedTuiLayer as h, PROFILE_ROOT_FILENAME as i, initializeProfileFromDefault as l, resolveChatCodePackageAliases as m, CHATCODE_TRUSTED_VERSION_EXEMPTIONS as n, chatCodeProfilePatchLayers as o, prepareProfile as p, INSTALL_ANCHOR as r, embeddedRuntimePackageDir as s, CHATCODE_PROFILE_TEMPLATES as t, installProfileInvocationAccessor as u };
@@ -1,2 +1,2 @@
1
- import { a as chatCodeProfilePatchFiles, c as initializeProfileFromDefault, d as preferEmbeddedRuntimeResolution, f as prepareProfile, g as uniqueProfilePatchFiles, 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-BNQry1NM.js";
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, uniqueProfilePatchFiles };
1
+ import { _ as uniqueProfilePatchFiles, a as chatCodeProfilePatchFiles, c as homePatchPath, d as preferEmbeddedProfileLayers, f as preferEmbeddedRuntimeResolution, g as runProfile, h as restoreTrustedTuiLayer, i as PROFILE_ROOT_FILENAME, l as initializeProfileFromDefault, m as resolveChatCodePackageAliases, n as CHATCODE_TRUSTED_VERSION_EXEMPTIONS, o as chatCodeProfilePatchLayers, p as prepareProfile, r as INSTALL_ANCHOR, s as embeddedRuntimePackageDir, t as CHATCODE_PROFILE_TEMPLATES, u as installProfileInvocationAccessor } from "./profile-boot-B0aEEQIR.js";
2
+ export { CHATCODE_PROFILE_TEMPLATES, CHATCODE_TRUSTED_VERSION_EXEMPTIONS, INSTALL_ANCHOR, PROFILE_ROOT_FILENAME, chatCodeProfilePatchFiles, chatCodeProfilePatchLayers, embeddedRuntimePackageDir, homePatchPath, initializeProfileFromDefault, installProfileInvocationAccessor, preferEmbeddedProfileLayers, preferEmbeddedRuntimeResolution, prepareProfile, resolveChatCodePackageAliases, restoreTrustedTuiLayer, runProfile, uniqueProfilePatchFiles };
@@ -1,7 +1,7 @@
1
- import { a as compositionRoot, i as bindCallerEffect, n as activationFiber, o as concreteService, s as requirePluginCaller } from "./host-access-CMg6rsWt.js";
2
- import { n as componentIdentityOf } from "./component-identity-Jb1DYjke.js";
1
+ import { a as compositionRoot, i as bindCallerEffect, n as activationFiber, o as concreteService, s as requirePluginCaller } from "./host-access-CLbyAGT5.js";
2
+ import { n as componentIdentityOf } from "./component-identity-6aEut5Yt.js";
3
3
  import { Service } from "@deepseek-ai/cordis";
4
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.20_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/scenes.js
4
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.21_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-CMg6rsWt.js";
1
+ import { a as compositionRoot, i as bindCallerEffect, n as activationFiber, o as concreteService, s as requirePluginCaller } from "./host-access-CLbyAGT5.js";
2
2
  import { Service } from "@deepseek-ai/cordis";
3
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.20_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/credentialRefGuard.js
3
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.21_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.20_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.21_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
  *
@@ -1,5 +1,5 @@
1
- import z from "@deepseek-ai/schemastery";
2
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.20_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/settingsCompat.js
1
+ import Schema from "@deepseek-ai/schemastery";
2
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.21_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/settingsCompat.js
3
3
  /** Mark display fields editable on hosts that support volatile Config references. */
4
4
  function withLiveSettings(schema, fields) {
5
5
  for (const key of fields) {
@@ -43,7 +43,7 @@ function settingsValue(settings, ns) {
43
43
  return descriptor && "value" in descriptor ? descriptor.value : settings.get?.(ns);
44
44
  }
45
45
  //#endregion
46
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.20_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/tuiDisplayPrefs.js
46
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.21_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/tuiDisplayPrefs.js
47
47
  /** Default footer shows account-wide tokens today and current context usage. */
48
48
  const DEFAULT_STATUS_BAR = Object.freeze({
49
49
  compact: true,
@@ -203,15 +203,15 @@ function applyPageMargin(setting) {
203
203
  return next;
204
204
  }
205
205
  //#endregion
206
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.20_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/statusBarSettings.js
206
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.21_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/statusBarSettings.js
207
207
  /** Shared status-footer settings declarations and validation. */
208
208
  /**
209
209
  * Build the complete footer schema for both composition and live settings.
210
210
  * @returns A schema retaining every supported status field.
211
211
  */
212
212
  function createStatusBarSchema() {
213
- const fields = Object.fromEntries(Object.entries(DEFAULT_STATUS_BAR).map(([key, value]) => [key, z.boolean().default(value)]));
214
- return z.object(fields).default({ ...DEFAULT_STATUS_BAR });
213
+ const fields = Object.fromEntries(Object.entries(DEFAULT_STATUS_BAR).map(([key, value]) => [key, Schema.boolean().default(value)]));
214
+ return Schema.object(fields).default({ ...DEFAULT_STATUS_BAR });
215
215
  }
216
216
  /** Fields shown by the status-bar settings group. */
217
217
  const STATUS_BAR_FIELDS = [
@@ -1,12 +1,12 @@
1
- import { c as parseCombo, i as comboMatchesStrict, r as canonicalCombo, s as fixedReservedCombos, u as reservedActionCombos } from "./keymap-CrC4pSNH.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-CMg6rsWt.js";
3
- import { n as componentIdentityOf } from "./component-identity-Jb1DYjke.js";
4
- import { S as DATA_DIR, f as cleanRenderText, p as cleanScalarText } from "./extension-events-DKX4LXOd.js";
1
+ import { c as parseCombo, i as comboMatchesStrict, r as canonicalCombo, s as fixedReservedCombos, u as reservedActionCombos } from "./keymap-82JwLLHe.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-CLbyAGT5.js";
3
+ import { n as componentIdentityOf } from "./component-identity-6aEut5Yt.js";
4
+ import { S as DATA_DIR, f as cleanRenderText, p as cleanScalarText } from "./extension-events-C7MUpqVE.js";
5
5
  import { readFileSync, readdirSync } from "node:fs";
6
6
  import { join } from "node:path";
7
7
  import { Context, Service } from "@deepseek-ai/cordis";
8
8
  import { KNOWN_SESSION_EVENT_TYPES } from "@deepseek-ai/dsh-session";
9
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.20_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/dialogs.js
9
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.21_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.20_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/status.js
282
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.21_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.20_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/shortcuts.js
506
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.21_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.20_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/renderers.js
707
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.21_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.20_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/toast.js
879
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.21_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.20_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/theme.js
1014
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.21_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.20_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/customTheme.js
1489
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.21_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.20_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/themes.js
1719
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.21_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-C9b7-bci.js";
1
+ import { r as name, t as TuiCommandTreeRuntime } from "./command-trees-CVc4Xu_z.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-DKX4LXOd.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-BdgeY3It.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-C7MUpqVE.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-DXUIvP7m.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.20_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/extensions.js
6
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.21_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
@@ -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-CMg6rsWt.js";
2
- import { c as requiresDecisionEvents, o as requireComponentIdentity, r as declaresCommand, s as requiresContract, t as bindComponentIdentity } from "./component-identity-Jb1DYjke.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-DKX4LXOd.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-BJ_ZWzUU.js";
1
+ import { a as compositionRoot, i as bindCallerEffect, n as activationFiber, o as concreteService, r as assertCallerContext, t as activationContext } from "./host-access-CLbyAGT5.js";
2
+ import { c as requiresDecisionEvents, o as requireComponentIdentity, r as declaresCommand, s as requiresContract, t as bindComponentIdentity } from "./component-identity-6aEut5Yt.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-C7MUpqVE.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-Ca64Lgba.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.20_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.21_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-Cil9RnwU.js";
1
+ import { r as name, t as TuiSceneRuntime } from "./scenes-BNS0ZFyQ.js";
2
2
  export { TuiSceneRuntime, TuiSceneRuntime as default, name };
@@ -1,2 +1,2 @@
1
- import { i as name, t as TuiSettingsSectionsRuntime } from "./settings-sections-jVCqXwdH.js";
1
+ import { i as name, t as TuiSettingsSectionsRuntime } from "./settings-sections-CXH24cu5.js";
2
2
  export { TuiSettingsSectionsRuntime, TuiSettingsSectionsRuntime as default, name };
@@ -1,7 +1,7 @@
1
1
  import { c as t, o as ActivityTracker, s as setLangOverride, t as DEFAULT_PRESET } from "./frames-B89znn_0.js";
2
2
  import { createRequire } from "node:module";
3
3
  import { realpathSync } from "node:fs";
4
- import z from "@deepseek-ai/schemastery";
4
+ import Schema from "@deepseek-ai/schemastery";
5
5
  //#region ../../node_modules/.pnpm/dsh-working-activity@0.4.0_@deepseek-ai+cordis@vendor+cordis_@deepseek-ai+dsh-agent@pac_cc26372355f83f2cd8d6ec6474483321/node_modules/dsh-working-activity/lib/types/registration.js
6
6
  /**
7
7
  * Runtime registration of the `activity/status` session-event type.
@@ -98,25 +98,25 @@ function registerSessionCopy(req, registered) {
98
98
  * @module @deepseek-ai/dsh-working-activity
99
99
  */
100
100
  const name = "working-activity";
101
- const Config = z.object({
102
- phrases: z.boolean().default(true),
103
- publish: z.boolean().default(false),
104
- tickMs: z.number().step(50).min(100).max(5e3).default(500),
105
- publishIntervalMs: z.number().step(500).min(500).max(3e4).default(2e3),
106
- detailLimit: z.number().step(1).min(8).max(120).default(40),
107
- customActions: z.dict(z.array(z.string())).default({}),
108
- narrate: z.boolean().default(true),
109
- lang: z.union([
101
+ const Config = Schema.object({
102
+ phrases: Schema.boolean().default(true),
103
+ publish: Schema.boolean().default(false),
104
+ tickMs: Schema.number().step(50).min(100).max(5e3).default(500),
105
+ publishIntervalMs: Schema.number().step(500).min(500).max(3e4).default(2e3),
106
+ detailLimit: Schema.number().step(1).min(8).max(120).default(40),
107
+ customActions: Schema.dict(Schema.array(Schema.string())).default({}),
108
+ narrate: Schema.boolean().default(true),
109
+ lang: Schema.union([
110
110
  "auto",
111
111
  "zh",
112
112
  "en"
113
113
  ]).default("auto"),
114
- frames: z.string().default(DEFAULT_PRESET),
115
- mode: z.union(["lively", "minimal"]).default("lively"),
116
- features: z.dict(z.boolean()).default({}),
117
- customPhrases: z.array(z.string()).default([]),
118
- showTokPerSec: z.boolean().default(false),
119
- workRemindAt: z.number().min(0).max(24).default(0)
114
+ frames: Schema.string().default(DEFAULT_PRESET),
115
+ mode: Schema.union(["lively", "minimal"]).default("lively"),
116
+ features: Schema.dict(Schema.boolean()).default({}),
117
+ customPhrases: Schema.array(Schema.string()).default([]),
118
+ showTokPerSec: Schema.boolean().default(false),
119
+ workRemindAt: Schema.number().min(0).max(24).default(0)
120
120
  });
121
121
  /**
122
122
  * Wire the working-activity plugin.
@@ -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.20_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/working-activity.js
238
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.21_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-DOatJRYr.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-CUJXNU5W.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 { c as normalizePageMargin, g as liveConfigValues, n as createStatusBarSchema, v as withLiveSettings } from "./statusBarSettings-DNoBH3Cq.js";
2
- import { t as SHORTCUT_ACTIONS } from "./keymap-CrC4pSNH.js";
3
- import z from "@deepseek-ai/schemastery";
4
- //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.20_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/force-production-react.js
1
+ import { c as normalizePageMargin, g as liveConfigValues, n as createStatusBarSchema, v as withLiveSettings } from "./statusBarSettings-BAMzn8fX.js";
2
+ import { t as SHORTCUT_ACTIONS } from "./keymap-82JwLLHe.js";
3
+ import Schema from "@deepseek-ai/schemastery";
4
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.21_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,7 +14,7 @@ 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.20_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/index.js
17
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.21_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/index.js
18
18
  /**
19
19
  * dsh-tui plugin entry. The TUI implementation lives in `./plugin.tsx` (its
20
20
  * render path is JSX); this module owns the plugin surface (`name`/`inject`/
@@ -25,55 +25,55 @@ process.env.NODE_ENV ??= "production";
25
25
  */
26
26
  const name = "dsh-tui";
27
27
  const inject$1 = ["agents"];
28
- const Config$1 = withLiveSettings(z.object({
29
- sessionId: z.string().required(false),
30
- provider: z.string().required(false),
31
- model: z.string().required(false),
32
- cwd: z.string().required(false),
33
- workspace: z.string().required(false),
34
- effort: z.string().required(false),
35
- activity: z.boolean().default(true),
36
- activityFrames: z.string().required(false),
37
- contextBar: z.boolean().default(true),
38
- fullscreen: z.boolean().default(true),
39
- lang: z.string().required(false),
40
- preset: z.string().required(false),
41
- diffLayout: z.union([
28
+ const Config$1 = withLiveSettings(Schema.object({
29
+ sessionId: Schema.string().required(false),
30
+ provider: Schema.string().required(false),
31
+ model: Schema.string().required(false),
32
+ cwd: Schema.string().required(false),
33
+ workspace: Schema.string().required(false),
34
+ effort: Schema.string().required(false),
35
+ activity: Schema.boolean().default(true),
36
+ activityFrames: Schema.string().required(false),
37
+ contextBar: Schema.boolean().default(true),
38
+ fullscreen: Schema.boolean().default(true),
39
+ lang: Schema.string().required(false),
40
+ preset: Schema.string().required(false),
41
+ diffLayout: Schema.union([
42
42
  "auto",
43
43
  "split",
44
44
  "unified"
45
45
  ]).default("auto"),
46
- thinkingFold: z.union(["preview", "full"]).default("preview"),
47
- toolBackground: z.union([
46
+ thinkingFold: Schema.union(["preview", "full"]).default("preview"),
47
+ toolBackground: Schema.union([
48
48
  "none",
49
49
  "subtle",
50
50
  "strong"
51
51
  ]).default("none"),
52
- scrollGutter: z.union([
52
+ scrollGutter: Schema.union([
53
53
  "timeline",
54
54
  "scrollbar",
55
55
  "hidden"
56
56
  ]).default("timeline"),
57
- pageMargin: z.transform(z.string().default("normal"), (value) => normalizePageMargin(value)),
58
- foldTerminalCommand: z.boolean().default(false),
59
- promptSessionLabel: z.boolean().default(false),
60
- expandEditor: z.boolean().default(true),
61
- smoothStreaming: z.boolean().default(true),
62
- whale: z.boolean().default(true),
63
- minimal: z.boolean().default(false),
64
- recapOnOpen: z.boolean().default(true),
57
+ pageMargin: Schema.transform(Schema.string().default("normal"), (value) => normalizePageMargin(value)),
58
+ foldTerminalCommand: Schema.boolean().default(false),
59
+ promptSessionLabel: Schema.boolean().default(false),
60
+ expandEditor: Schema.boolean().default(true),
61
+ smoothStreaming: Schema.boolean().default(true),
62
+ whale: Schema.boolean().default(true),
63
+ minimal: Schema.boolean().default(false),
64
+ recapOnOpen: Schema.boolean().default(true),
65
65
  statusBar: createStatusBarSchema(),
66
- shortcuts: z.object(Object.fromEntries(SHORTCUT_ACTIONS.map((action) => [action.id, z.string().required(false)]))).required(false),
67
- modes: z.array(z.object({
68
- id: z.string(),
69
- label: z.string().required(false),
70
- plan: z.boolean().required(false),
71
- sandbox: z.union([
66
+ shortcuts: Schema.object(Object.fromEntries(SHORTCUT_ACTIONS.map((action) => [action.id, Schema.string().required(false)]))).required(false),
67
+ modes: Schema.array(Schema.object({
68
+ id: Schema.string(),
69
+ label: Schema.string().required(false),
70
+ plan: Schema.boolean().required(false),
71
+ sandbox: Schema.union([
72
72
  "read-only",
73
73
  "workspace-write",
74
74
  "danger-full-access"
75
75
  ]).required(false),
76
- approval: z.union(["ask", "never"]).required(false)
76
+ approval: Schema.union(["ask", "never"]).required(false)
77
77
  })).required(false)
78
78
  }), [
79
79
  "fullscreen",
@@ -101,13 +101,13 @@ const Config$1 = withLiveSettings(z.object({
101
101
  * @returns a promise settling when the TUI teardown completes.
102
102
  */
103
103
  async function apply(ctx, config) {
104
- const { apply: ccTuiApply } = await import("./plugin-CmyMCGfb.js");
104
+ const { apply: ccTuiApply } = await import("./plugin-BlQlWIR5.js");
105
105
  return ccTuiApply(ctx, liveConfigValues(config));
106
106
  }
107
107
  //#endregion
108
108
  //#region lib/types/tui-compat.js
109
109
  /** Validate the TUI's declared live fields using the launcher's own schema runtime. */
110
- const Config = new z(Config$1.toJSON());
110
+ const Config = new Schema(Config$1.toJSON());
111
111
  /** Wait for the shared model default before the TUI creates its first session. */
112
112
  const inject = [...inject$1, "agentDefaultModel"];
113
113
  //#endregion
@@ -2,7 +2,7 @@
2
2
  * Config-dump entry for `dsh --profile <name> --dump-config`: compose the
3
3
  * profile's patch layers through the include plugin's patch algorithm without
4
4
  * booting or evaluating `!!js`, with one source layer per bundle, the
5
- * profile and home patch files, ChatCode product overlays, and each `--patch`
5
+ * ChatCode product defaults, profile and home patch files, and each `--patch`
6
6
  * overlay.
7
7
  * @module @deepseek-ai/dsh/dump-config
8
8
  */
@@ -18,8 +18,8 @@ import { type ConfigDumpLayer, type Profile } from '@deepseek-ai/dsh-app-boot';
18
18
  */
19
19
  export declare function runDumpConfig(profile: string, defaultOnly: boolean, patches: readonly string[], fromDefaultProfile?: string): void;
20
20
  /**
21
- * Read dump layers in bundle, profile, home, then argv order without composing them.
22
- * @param profileName - the profile name used to select ChatCode product overlays.
21
+ * Read dump layers in bundle, product defaults, profile, home, then argv order without composing them.
22
+ * @param profileName - the profile name used to select ChatCode product defaults.
23
23
  * @param loaded - prepared profile and parsed bundle and profile patches.
24
24
  * @param defaultOnly - omit profile, home, and argv layers without reading their files.
25
25
  * @param patches - overlay paths relative to the invoking directory, in argv order.
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Shared profile boot for every ChatCode CLI surface: resolve the profile, stack its
3
- * patch layers (bundle layers in `dsh.profile.bundles` order, the profile's
4
- * own `cordis.patch.yml`, `--patch` overlays, the telemetry switch), mount the
3
+ * patch layers (bundle layers in `dsh.profile.bundles` order, product defaults,
4
+ * profile and home patches, `--patch` overlays, the telemetry switch), mount the
5
5
  * tree over the profile's empty root config, and wire fail-loud plus bounded shutdown.
6
6
  *
7
7
  * App flags are not the launcher's business: the invocation's inner arguments
@@ -54,7 +54,7 @@ export declare function preferEmbeddedRuntimeResolution(resolution: RuntimeResol
54
54
  * and cannot admit another package version or another profile.
55
55
  */
56
56
  export declare function restoreTrustedTuiLayer(profile: Profile, installAnchor?: string, runtimeVersion?: string): Profile;
57
- /** Resolve installed ChatCode product patches without changing persisted profiles. */
57
+ /** Resolve installed ChatCode product defaults without changing persisted profiles. */
58
58
  export declare function chatCodeProfilePatchFiles(profile: string, installAnchor?: string): string[];
59
59
  /**
60
60
  * Deduplicate overlay files shared by startup, YAML dumps, and schema dumps.
@@ -63,6 +63,16 @@ export declare function chatCodeProfilePatchFiles(profile: string, installAnchor
63
63
  * missing files remain in the result for the patch loader to diagnose.
64
64
  */
65
65
  export declare function uniqueProfilePatchFiles(files: readonly string[]): string[];
66
+ /** Separate product defaults from user overlays, applying each physical file once.
67
+ * @param profile - Profile selecting the installed product defaults.
68
+ * @param patchFiles - Command-line patch paths, including source-launcher mounts.
69
+ * @param installAnchor - Launcher manifest used to resolve product packages.
70
+ * @returns Default paths below profile edits and distinct user overlays above home edits.
71
+ */
72
+ export declare function chatCodeProfilePatchLayers(profile: string, patchFiles: readonly string[], installAnchor?: string): {
73
+ defaults: string[];
74
+ overlays: string[];
75
+ };
66
76
  /** Root config filename inside a profile directory. */
67
77
  export declare const PROFILE_ROOT_FILENAME = "cordis.yml";
68
78
  /**
@@ -1,8 +1,8 @@
1
- import { a as compositionRoot, i as bindCallerEffect, n as activationFiber, o as concreteService, s as requirePluginCaller } from "./host-access-CMg6rsWt.js";
1
+ import { a as compositionRoot, i as bindCallerEffect, n as activationFiber, o as concreteService, s as requirePluginCaller } from "./host-access-CLbyAGT5.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.20_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/workspaces.js
5
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.21_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
  *