@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
@@ -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-BdqThvw7.js";
2
+ import { n as componentIdentityOf } from "./component-identity-C02l24iT.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.12_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-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/credentialRefGuard.js
3
+ //#region ../../node_modules/.pnpm/@chatcode+cco-tui@0.10.0-rc.12_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.12_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-DFoC50J1.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-BdqThvw7.js";
3
+ import { n as componentIdentityOf } from "./component-identity-C02l24iT.js";
4
+ import { S as DATA_DIR, f as cleanRenderText, p as cleanScalarText } from "./extension-events-D6DbIdnG.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.12_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.12_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.12_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.12_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.12_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.12_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.12_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.12_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-D4SZ2sGk.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-D6DbIdnG.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-DDI83rNa.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.12_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-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-BdqThvw7.js";
2
+ import { c as requiresDecisionEvents, o as requireComponentIdentity, r as declaresCommand, s as requiresContract, t as bindComponentIdentity } from "./component-identity-C02l24iT.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-D6DbIdnG.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-uo0j5Wi8.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.12_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-Dk6DYkO9.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-D4Ozrymr.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.12_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-Dt_J35P0.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 { n as DEFAULT_STATUS_BAR, s as normalizePageMargin } from "./tuiDisplayPrefs-CJ9aBVkB.js";
2
+ import { t as SHORTCUT_ACTIONS } from "./keymap-DFoC50J1.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.12_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.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.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/dsh-adapter/index.js
18
18
  const name = "dsh-tui";
19
19
  const inject = ["agents"];
20
20
  const Config = z.object({
@@ -92,7 +92,7 @@ const Config = z.object({
92
92
  * @returns a promise settling when the TUI teardown completes.
93
93
  */
94
94
  async function apply(ctx, config) {
95
- const { apply: ccTuiApply } = await import("./plugin-jvd9PCVt.js");
95
+ const { apply: ccTuiApply } = await import("./plugin-B37GhsdI.js");
96
96
  return ccTuiApply(ctx, config);
97
97
  }
98
98
  //#endregion
@@ -1,4 +1,4 @@
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.12_08ea48c8555976e562c6368d51cb542b/node_modules/@chatcode/cco-tui/lib/types/tuiDisplayPrefs.js
2
2
  /** Default footer is intentionally quiet: only the Yuanjing token dashboard. */
3
3
  const DEFAULT_STATUS_BAR = Object.freeze({
4
4
  compact: true,
@@ -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,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-BdqThvw7.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.12_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
  *
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@chatcode/chatcode-cli",
3
3
  "description": "ChatCode CLI: TUI-first coding agent, Web launcher, profiles, and legacy DSH-compatible plugins",
4
- "version": "3.0.2-rc.2",
4
+ "version": "3.0.2-rc.4",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -28,14 +28,14 @@
28
28
  "dependencies": {
29
29
  "@agentclientprotocol/sdk": "1.4.0",
30
30
  "@babel/code-frame": "^7.29.0",
31
- "@chatcode/cco-better-sidebar": "0.18.0-rc.2",
31
+ "@chatcode/cco-better-sidebar": "0.18.0-rc.3",
32
32
  "@chatcode/cco-builtin-browser": "0.1.21",
33
- "@chatcode/cco-chat-import": "0.14.0",
34
- "@chatcode/cco-llm-chatcode-config": "0.1.4-rc.1",
33
+ "@chatcode/cco-chat-import": "0.14.1",
34
+ "@chatcode/cco-llm-chatcode-config": "0.1.4-rc.3",
35
35
  "@chatcode/cco-market": "1.45.2-rc.3",
36
- "@chatcode/cco-tui": "0.10.0-rc.9",
36
+ "@chatcode/cco-tui": "0.10.0-rc.12",
37
37
  "@deepseek-ai/libreoffice-kit": "^0.1.1",
38
- "@deepseek-harness-tui/dsh-tui": "npm:@chatcode/cco-tui@0.10.0-rc.9",
38
+ "@deepseek-harness-tui/dsh-tui": "npm:@chatcode/cco-tui@0.10.0-rc.12",
39
39
  "@earendil-works/pi-ai": "^0.85.1",
40
40
  "@eslint-community/regexpp": "^4.12.2",
41
41
  "@joplin/turndown-plugin-gfm": "^1.0.67",
@@ -57,10 +57,10 @@
57
57
  "commander": "^15.0.0",
58
58
  "compression": "^1.8.1",
59
59
  "diff": "^9.0.0",
60
- "dsh-better-sidebar": "npm:@chatcode/cco-better-sidebar@0.18.0-rc.2",
60
+ "dsh-better-sidebar": "npm:@chatcode/cco-better-sidebar@0.18.0-rc.3",
61
61
  "dsh-builtin-browser": "npm:@chatcode/cco-builtin-browser@0.1.21",
62
- "dsh-chat-import": "npm:@chatcode/cco-chat-import@0.14.0",
63
- "dsh-llm-chatcode-config": "npm:@chatcode/cco-llm-chatcode-config@0.1.4-rc.1",
62
+ "dsh-chat-import": "npm:@chatcode/cco-chat-import@0.14.1",
63
+ "dsh-llm-chatcode-config": "npm:@chatcode/cco-llm-chatcode-config@0.1.4-rc.3",
64
64
  "dshmarket": "npm:@chatcode/cco-market@1.45.2-rc.3",
65
65
  "eventsource-parser": "^3.1.0",
66
66
  "execa": "^10.0.0",
@@ -93,47 +93,47 @@
93
93
  "ajv": "^8.20.0",
94
94
  "execa": "^10.0.0",
95
95
  "ws": "8.21.0",
96
- "@deepseek-ai/dsh-acp": "0.1.7-rc.2",
97
96
  "@deepseek-ai/dsh-agent": "0.1.7-rc.2",
98
97
  "@deepseek-ai/dsh-agent-loop": "0.1.7-rc.2",
99
- "@deepseek-ai/dsh-deepseek-llm-api-extensions": "0.1.7-rc.2",
98
+ "@deepseek-ai/dsh-agent-loop-testkit": "0.1.7-rc.2",
99
+ "@deepseek-ai/dsh-attachment-local": "0.1.7-rc.2",
100
100
  "@deepseek-ai/dsh-credentials-local": "0.1.7-rc.2",
101
+ "@deepseek-ai/dsh-deepseek-llm-api-extensions": "0.1.7-rc.2",
101
102
  "@deepseek-ai/dsh-experimental-agent-team": "0.1.7-rc.2",
102
103
  "@deepseek-ai/dsh-bash-local": "0.1.7-rc.2",
103
- "@deepseek-ai/dsh-agent-loop-testkit": "0.1.7-rc.2",
104
+ "@deepseek-ai/dsh-experimental-ptc-runtime-python": "0.1.7-rc.2",
104
105
  "@deepseek-ai/dsh-experimental-tool-agent-team": "0.1.7-rc.2",
105
106
  "@deepseek-ai/dsh-fs-sandbox": "0.1.7-rc.2",
106
- "@deepseek-ai/dsh-attachment-local": "0.1.7-rc.2",
107
107
  "@deepseek-ai/dsh-fs-observation-policy": "0.1.7-rc.2",
108
- "@deepseek-ai/dsh-experimental-ptc-runtime-python": "0.1.7-rc.2",
109
108
  "@deepseek-ai/dsh-host-frontend-static": "0.1.7-rc.2",
110
- "@deepseek-ai/dsh-host-webserver": "0.1.7-rc.2",
111
109
  "@deepseek-ai/dsh-llm": "0.1.7-rc.2",
110
+ "@deepseek-ai/dsh-host-webserver": "0.1.7-rc.2",
112
111
  "@deepseek-ai/dsh-llm-deepseek": "0.1.7-rc.2",
113
112
  "@deepseek-ai/dsh-llm-deepseek-api-key": "0.1.7-rc.2",
113
+ "@deepseek-ai/dsh-acp": "0.1.7-rc.2",
114
+ "@deepseek-ai/dsh-llm-deepseek-account": "0.1.7-rc.2",
114
115
  "@deepseek-ai/dsh-llm-mock-server": "0.1.7-rc.2",
115
- "@deepseek-ai/dsh-plugin-package-inventory-deepseek": "0.1.7-rc.2",
116
- "@deepseek-ai/dsh-llm-replay": "0.1.7-rc.2",
117
116
  "@deepseek-ai/dsh-llm-pi-ai": "0.1.7-rc.2",
118
- "@deepseek-ai/dsh-sandbox-policy": "0.1.7-rc.2",
119
117
  "@deepseek-ai/dsh-loader-smoke": "0.1.7-rc.2",
120
- "@deepseek-ai/dsh-llm-deepseek-account": "0.1.7-rc.2",
118
+ "@deepseek-ai/dsh-plugin-package-inventory-deepseek": "0.1.7-rc.2",
121
119
  "@deepseek-ai/dsh-sandbox-local": "0.1.7-rc.2",
122
120
  "@deepseek-ai/dsh-sdk-client": "0.1.7-rc.2",
123
- "@deepseek-ai/dsh-session-checkpoint-policy": "0.1.7-rc.2",
124
- "@deepseek-ai/dsh-session-log-deepseek": "0.1.7-rc.2",
121
+ "@deepseek-ai/dsh-sandbox-policy": "0.1.7-rc.2",
125
122
  "@deepseek-ai/dsh-session": "0.1.7-rc.2",
123
+ "@deepseek-ai/dsh-session-log-deepseek": "0.1.7-rc.2",
124
+ "@deepseek-ai/dsh-session-checkpoint-policy": "0.1.7-rc.2",
126
125
  "@deepseek-ai/dsh-session-persistence-jsonl": "0.1.7-rc.2",
127
126
  "@deepseek-ai/dsh-session-query": "0.1.7-rc.2",
128
127
  "@deepseek-ai/dsh-settings": "0.1.7-rc.2",
128
+ "@deepseek-ai/dsh-subagent": "0.1.7-rc.2",
129
129
  "@deepseek-ai/dsh-shell-env": "0.1.7-rc.2",
130
130
  "@deepseek-ai/dsh-subagent-fork-in-process": "0.1.7-rc.2",
131
- "@deepseek-ai/dsh-subagent": "0.1.7-rc.2",
132
131
  "@deepseek-ai/dsh-subagent-spawn-in-process": "0.1.7-rc.2",
133
- "@deepseek-ai/dsh-subprocess-local": "0.1.7-rc.2",
134
- "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2",
135
132
  "@deepseek-ai/dsh-tools": "0.1.7-rc.2",
136
- "@deepseek-ai/dsh-user-approval": "0.1.7-rc.2"
133
+ "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2",
134
+ "@deepseek-ai/dsh-subprocess-local": "0.1.7-rc.2",
135
+ "@deepseek-ai/dsh-user-approval": "0.1.7-rc.2",
136
+ "@deepseek-ai/dsh-llm-replay": "0.1.7-rc.2"
137
137
  },
138
138
  "exports": {
139
139
  "./headless-compat": {
@@ -281,5 +281,5 @@
281
281
  "@deepseek-ai/schemastery"
282
282
  ],
283
283
  "fileCount": 3555,
284
- "byteCount": 66576968
284
+ "byteCount": 66576782
285
285
  }
@@ -4125,7 +4125,7 @@ window.__ModuleLoader__.load({
4125
4125
  for (const listener of listeners) listener();
4126
4126
  };
4127
4127
  /** @returns the client identity for one account call, read at call time so it carries the language and zone in effect then. */
4128
- const client = () => accountClientMetadata(ctx.locale.getSnapshot().active, "3.0.2-rc.2");
4128
+ const client = () => accountClientMetadata(ctx.locale.getSnapshot().active, "3.0.2-rc.4");
4129
4129
  const notices = createBonusNoticeController({
4130
4130
  ackRetryDelayMs: config.bonusAckRetryDelayMs,
4131
4131
  ackRetryMaxDelayMs: config.bonusAckRetryMaxDelayMs,
@@ -4256,7 +4256,7 @@ window.__ModuleLoader__.load({
4256
4256
  refreshAccount,
4257
4257
  contactUs() {
4258
4258
  const url = contactUrl(config, {
4259
- version: "3.0.2-rc.2",
4259
+ version: "3.0.2-rc.4",
4260
4260
  locale: ctx.locale.getSnapshot().active === "zh" ? "zh-CN" : "en",
4261
4261
  width: window.screen.width,
4262
4262
  height: window.screen.height,
@@ -657,7 +657,7 @@ window.__ModuleLoader__.load({
657
657
  function CurrentVersionRow({ t }) {
658
658
  return (0, react_jsx_runtime.jsx)("div", {
659
659
  className: CurrentVersionRow_module_css_default.row,
660
- children: t("general.currentVersion", { version: "3.0.2-rc.2" })
660
+ children: t("general.currentVersion", { version: "3.0.2-rc.4" })
661
661
  });
662
662
  }
663
663
  //#endregion
@@ -167,7 +167,7 @@ window.__ModuleLoader__.load({
167
167
  const SCROLLBAR_LINGER_MS = 2e3;
168
168
  /** Format complete-build metadata for the local brand badge. */
169
169
  function localBuildVersion() {
170
- return `3.0.2-rc.2-faf7c3a-dirty`;
170
+ return `3.0.2-rc.4-28b70e2-dirty`;
171
171
  }
172
172
  /** Each panel row subscribes only to its own selection state. */
173
173
  function PanelRow({ id, label, wide, usePanelInfo, selectPanel, renderSlot }) {
@@ -183,13 +183,12 @@ window.__ModuleLoader__.load({
183
183
  //#endregion
184
184
  //#region lib/types/client/HeaderAction.js
185
185
  /**
186
- * Render the Session Header menu with download and optional feedback actions.
186
+ * Render the Session Header download menu.
187
187
  * @param props - Session runtime, download controller, and localized copy.
188
188
  * @returns the persistent Header action and Session-scoped dialog.
189
189
  */
190
190
  function SessionLogDownloadHeaderAction(props) {
191
- const { sessionId, useSessionLogDownload, useFeedbackAvailable, request, openFeedback, t } = props;
192
- const feedbackAvailable = useFeedbackAvailable((value) => value);
191
+ const { sessionId, useSessionLogDownload, request, openFeedback, t } = props;
193
192
  const busy = useSessionLogDownload((state) => state.bySession[String(sessionId)])?.status === "downloading";
194
193
  const [open, setOpen] = (0, react.useState)(false);
195
194
  return (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Menu, {
@@ -204,11 +203,7 @@ window.__ModuleLoader__.load({
204
203
  label: t("menu.download"),
205
204
  icon: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconDownloadOutlineRegular, {}),
206
205
  disabled: busy
207
- }, ...feedbackAvailable ? [{
208
- id: "feedback",
209
- label: t("menu.feedback"),
210
- icon: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconPaperPlaneOutlineRegular, {})
211
- }] : []],
206
+ }],
212
207
  onSelect: (id) => {
213
208
  setOpen(false);
214
209
  if (id === "feedback") openFeedback(sessionId);