@chatcode/chatcode-cli-test 3.0.1 → 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.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  English | [中文](README.zh.md)
4
4
 
5
- `chatcode-cli` is the formal launcher and `cco` is its short form; both commands share one parser and start the TUI/CLI profile when invoked without arguments. The hidden `dsh` bin remains a compatibility alias. Profiles are ordered stacks of plugin-bundle patch layers under the user's own overrides. SDK and ACP are profiles, not separate public bins. The Python runtime wheel packages the same launcher; the SDK defaults to `sdk`, and the minimal example selects `sdk-minimal`. [`src/args.ts`](src/args.ts) owns the command grammar, and [`src/bin.ts`](src/bin.ts) loads only the selected runner. Invalid commands, options from another mode, and fatal configuration or boot failures exit nonzero.
5
+ `chatcode-cli` is the formal launcher and `cco` is its short form; both commands share one parser and start the TUI/CLI profile when invoked without arguments. Profiles are ordered stacks of plugin-bundle patch layers under the user's own overrides. SDK and ACP are profiles, not separate public bins. The Python runtime wheel packages the same launcher; the SDK defaults to `sdk`, and the minimal example selects `sdk-minimal`. [`src/args.ts`](src/args.ts) owns the command grammar, and [`src/bin.ts`](src/bin.ts) loads only the selected runner. Invalid commands, options from another mode, and fatal configuration or boot failures exit nonzero.
6
6
 
7
7
  ## Entry modes
8
8
 
package/README.zh.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [English](README.md) | 中文
4
4
 
5
- `chatcode-cli` 是正式启动命令,`cco` 是其简写;两者共用同一解析器,且无参数时都启动 TUI/CLI profile。隐藏的 `dsh` bin 仅作为兼容别名保留。profile 由多个插件组合包 patch 层按顺序叠加而成,其上再应用用户自己的覆盖配置。SDK 与 ACP(Agent Client Protocol)都是 profile,而不是独立的公开可执行命令。Python 运行时 wheel 包中也包含同一个启动器;SDK 默认使用 `sdk`,极简示例选择 `sdk-minimal`。[`src/args.ts`](src/args.ts) 负责命令语法,[`src/bin.ts`](src/bin.ts) 只加载选中的运行器。无效命令、来自其他模式的选项,以及致命的配置或启动错误都会以非零状态退出。
5
+ `chatcode-cli` 是正式启动命令,`cco` 是其简写;两者共用同一解析器,且无参数时都启动 TUI/CLI profileprofile 由多个插件组合包 patch 层按顺序叠加而成,其上再应用用户自己的覆盖配置。SDK 与 ACP(Agent Client Protocol)都是 profile,而不是独立的公开可执行命令。Python 运行时 wheel 包中也包含同一个启动器;SDK 默认使用 `sdk`,极简示例选择 `sdk-minimal`。[`src/args.ts`](src/args.ts) 负责命令语法,[`src/bin.ts`](src/bin.ts) 只加载选中的运行器。无效命令、来自其他模式的选项,以及致命的配置或启动错误都会以非零状态退出。
6
6
 
7
7
  ## 入口模式
8
8
 
package/lib/bin.js CHANGED
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
+ import { i as synchronizeLegacyHomeEnvironment, r as resolveChatCodeCliHome } from "./chatcode-home-B93iESZd.js";
2
3
  import { readFileSync } from "node:fs";
3
4
  import { fileURLToPath } from "node:url";
4
5
  import { StartupError, loadLayeredEnv } from "@deepseek-ai/dsh-app-boot";
5
- import { resolveChatCodeCliHome } from "@deepseek-ai/dsh-home-paths";
6
6
  import { Command, CommanderError, InvalidArgumentError } from "commander";
7
+ import { join } from "node:path";
7
8
  import { randomUUID } from "node:crypto";
8
9
  import { mkdir, writeFile } from "node:fs/promises";
9
- import { join } from "node:path";
10
10
  import { inspect } from "node:util";
11
11
  //#region lib/types/args.js
12
12
  /**
@@ -217,7 +217,7 @@ async function reportStartupFailure(error, context, write = writeStderr) {
217
217
  //#endregion
218
218
  //#region lib/types/bin.js
219
219
  /**
220
- * Command-line entry for ChatCode CLI and its compatibility aliases.
220
+ * Command-line entry for ChatCode CLI.
221
221
  * @module @chatcode/chatcode-cli/bin
222
222
  */
223
223
  /* v8 ignore file -- built-bin acceptance exercises this self-executing dispatch. */
@@ -243,9 +243,10 @@ async function runCli() {
243
243
  case "profile": {
244
244
  const legacyHome = process.env.DSH_HOME?.trim();
245
245
  if (process.env.CHATCODE_CLI_HOME?.trim() || legacyHome === void 0 || legacyHome === "") {
246
- const { detectPendingHomeMigrations, resolveHomeMigrationRoots } = await import("./home-migration-BejD6LQn.js");
246
+ const { detectPendingHomeMigrations, resolveHomeMigrationRoots } = await import("./home-migration-DLaSvmfn.js");
247
247
  if ((await detectPendingHomeMigrations(resolveHomeMigrationRoots())).length > 0) process.stderr.write("ChatCode CLI detected legacy user data. Preview the non-destructive migration with \"chatcode-cli migrate --dry-run\"; nothing is migrated automatically.\n");
248
248
  }
249
+ synchronizeLegacyHomeEnvironment();
249
250
  const { runProfile } = await import("./profile-boot.js");
250
251
  try {
251
252
  await runProfile({
@@ -267,7 +268,7 @@ async function runCli() {
267
268
  break;
268
269
  }
269
270
  case "migrate": {
270
- const { applyHomeMigration, formatHomeMigrationPlan, planHomeMigration, resolveHomeMigrationRoots } = await import("./home-migration-BejD6LQn.js");
271
+ const { applyHomeMigration, formatHomeMigrationPlan, planHomeMigration, resolveHomeMigrationRoots } = await import("./home-migration-DLaSvmfn.js");
271
272
  const roots = resolveHomeMigrationRoots();
272
273
  const migrations = [[roots.source, roots.destination], [roots.tuiSource, roots.tuiDestination]];
273
274
  if (!invocation.apply) {
@@ -285,12 +286,12 @@ async function runCli() {
285
286
  break;
286
287
  }
287
288
  case "plugin": {
288
- const { runPlugin } = await import("./plugin-DrWxOiv2.js");
289
+ const { runPlugin } = await import("./plugin-DSS8fYBJ.js");
289
290
  process.exit(await runPlugin(invocation.profile, invocation.args));
290
291
  break;
291
292
  }
292
293
  case "dump-config": {
293
- const { runDumpConfig } = await import("./dump-config-Bn-CzGIR.js");
294
+ const { runDumpConfig } = await import("./dump-config-DIYmGHfM.js");
294
295
  runDumpConfig(invocation.profile, invocation.defaultOnly, invocation.patches, invocation.fromDefaultProfile);
295
296
  break;
296
297
  }
@@ -0,0 +1,48 @@
1
+ import { homedir } from "node:os";
2
+ import { join, resolve } from "node:path";
3
+ //#region lib/types/chatcode-home.js
4
+ /**
5
+ * ChatCode CLI home resolution owned by the public launcher package.
6
+ * @module @chatcode/chatcode-cli/chatcode-home
7
+ */
8
+ /** Canonical ChatCode CLI home environment variable. */
9
+ const CHATCODE_CLI_HOME_ENV = "CHATCODE_CLI_HOME";
10
+ /** Legacy Harness home variable accepted as a compatibility input. */
11
+ const LEGACY_DSH_HOME_ENV = "DSH_HOME";
12
+ /** Resolve the default writable ChatCode CLI home. */
13
+ function defaultChatCodeCliHome() {
14
+ return join(homedir(), ".chatcode-cli");
15
+ }
16
+ /** Expand the supported current-user tilde forms in a configured path.
17
+ * @param path - path that may begin with `~`, `~/`, or `~\`.
18
+ * @returns the path with its current-user tilde expanded.
19
+ */
20
+ function expandHomePath(path) {
21
+ if (path === "~") return homedir();
22
+ if (path.startsWith("~/") || path.startsWith("~\\")) return join(homedir(), path.slice(2));
23
+ return path;
24
+ }
25
+ /** Resolve the writable ChatCode CLI home with canonical-before-legacy precedence.
26
+ * @param configured - explicit home override with highest precedence.
27
+ * @param env - environment used for canonical and legacy inputs.
28
+ * @returns the normalized absolute home path.
29
+ */
30
+ function resolveChatCodeCliHome(configured, env = process.env) {
31
+ const canonical = env[CHATCODE_CLI_HOME_ENV]?.trim();
32
+ const legacy = env[LEGACY_DSH_HOME_ENV]?.trim();
33
+ return resolve(expandHomePath(configured ?? (canonical === void 0 || canonical === "" ? legacy === void 0 || legacy === "" ? defaultChatCodeCliHome() : legacy : canonical)));
34
+ }
35
+ /**
36
+ * Point legacy ABI packages at the launcher-selected ChatCode CLI home.
37
+ * Published Harness packages still read `DSH_HOME`; this internal bridge keeps
38
+ * their storage under the canonical home without requiring republished ABI packages.
39
+ * @param env - mutable process environment supplied to legacy packages.
40
+ * @returns the resolved canonical home written to the legacy variable.
41
+ */
42
+ function synchronizeLegacyHomeEnvironment(env = process.env) {
43
+ const home = resolveChatCodeCliHome(void 0, env);
44
+ env[LEGACY_DSH_HOME_ENV] = home;
45
+ return home;
46
+ }
47
+ //#endregion
48
+ export { synchronizeLegacyHomeEnvironment as i, expandHomePath as n, resolveChatCodeCliHome as r, defaultChatCodeCliHome as t };
@@ -1,4 +1,4 @@
1
- import { a as prepareProfile, n as PROFILE_ROOT_FILENAME, r as homePatchPath } from "./profile-boot-DNB5by4u.js";
1
+ import { a as homePatchPath, r as PROFILE_ROOT_FILENAME, s as prepareProfile } from "./profile-boot-Dncz2Q75.js";
2
2
  import { existsSync } from "node:fs";
3
3
  import { loadOptionalPatches, loadOverlayPatches, renderConfigDump } from "@deepseek-ai/dsh-app-boot";
4
4
  import { join, resolve } from "node:path";
@@ -1,9 +1,9 @@
1
+ import { n as expandHomePath, t as defaultChatCodeCliHome } from "./chatcode-home-B93iESZd.js";
1
2
  import { constants } from "node:fs";
2
- import { defaultChatCodeCliHome, expandHomePath } from "@deepseek-ai/dsh-home-paths";
3
+ import { homedir } from "node:os";
4
+ import { dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
3
5
  import { createHash, randomUUID } from "node:crypto";
4
6
  import { chmod, copyFile, link, lstat, mkdir, readFile, readdir, rm, stat, writeFile } from "node:fs/promises";
5
- import { dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
6
- import { homedir } from "node:os";
7
7
  const LEGACY_HOME_DIRECTORY = ".dsh";
8
8
  const LEGACY_TUI_HOME_DIRECTORY = ".dsh-tui";
9
9
  const MIGRATION_RECORD_DIRECTORY = "migration/chatcode-cli-home-v1";
@@ -1,4 +1,4 @@
1
- import { t as INSTALL_ANCHOR } from "./profile-boot-DNB5by4u.js";
1
+ import { n as INSTALL_ANCHOR } from "./profile-boot-Dncz2Q75.js";
2
2
  import { resolveProfileDir } from "@deepseek-ai/dsh-app-boot";
3
3
  import { join } from "node:path";
4
4
  import { runPluginCommand } from "@deepseek-ai/dsh-plugin-manager/operations";
@@ -1,7 +1,8 @@
1
+ import { i as synchronizeLegacyHomeEnvironment, r as resolveChatCodeCliHome } from "./chatcode-home-B93iESZd.js";
2
+ import { createRequire } from "node:module";
1
3
  import { existsSync, mkdirSync, rmSync, writeFileSync } from "node:fs";
2
4
  import { fileURLToPath } from "node:url";
3
- import { PROFILE_PATCH_FILENAME, PROFILE_TEMPLATES, PluginPackages, boot, createProfileResolutionGeneration, healIsolatedProfileModuleFallback, healProfilesModuleFallback, initProfile, installFailLoud, loadOverlayPatches, loadProfile, readProfilePatches, resolveProfileDir } from "@deepseek-ai/dsh-app-boot";
4
- import { resolveChatCodeCliHome } from "@deepseek-ai/dsh-home-paths";
5
+ import { PROFILE_PATCH_FILENAME, PluginPackages, boot, createProfileResolutionGeneration, healIsolatedProfileModuleFallback, healProfilesModuleFallback, initProfile, installFailLoud, loadOverlayPatches, loadProfile, readProfilePatches, resolveProfileDir } from "@deepseek-ai/dsh-app-boot";
5
6
  import { dirname, join, resolve } from "node:path";
6
7
  import { installProxyFromEnvironment } from "@deepseek-ai/dsh-http-proxy";
7
8
  import { DSH_LAUNCH_ENVIRONMENT_KEY } from "@deepseek-ai/dsh-launch-environment";
@@ -83,6 +84,24 @@ function createProcessShutdown(dispose, forceExit = (code) => {
83
84
  * @module @chatcode/chatcode-cli/profile-boot
84
85
  */
85
86
  const NAME = "ChatCode CLI";
87
+ /** Profile templates shipped by ChatCode CLI, independent of the installed Harness ABI version. */
88
+ const CHATCODE_PROFILE_TEMPLATES = {
89
+ acp: { bundles: ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-acp-app"] },
90
+ web: { bundles: [
91
+ "@deepseek-ai/dsh-base",
92
+ "@deepseek-ai/dsh-web-app",
93
+ "dshmarket"
94
+ ] },
95
+ cli: { bundles: [
96
+ "@deepseek-ai/dsh-base",
97
+ "@deepseek-harness-tui/dsh-tui",
98
+ "dsh-llm-chatcode-config",
99
+ "dshmarket"
100
+ ] },
101
+ headless: { bundles: ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-headless"] },
102
+ sdk: { bundles: ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-sdk-app"] },
103
+ "sdk-minimal": { bundles: ["@deepseek-ai/dsh-sdk-minimal"] }
104
+ };
86
105
  /** Launcher-owned readiness signal committed only after boot and host setup succeed. */
87
106
  function createAppReady() {
88
107
  let ready = false;
@@ -117,6 +136,31 @@ function homePatchPath() {
117
136
  }
118
137
  /** Absolute path of this ChatCode CLI installation's package.json (both anchors: src/ and lib/ sit one level under apps/cli). */
119
138
  const INSTALL_ANCHOR = fileURLToPath(new URL("../package.json", import.meta.url));
139
+ /** Product overlays that are part of ChatCode CLI rather than the upstream Harness profile ABI. */
140
+ const CHATCODE_PROFILE_PATCHES = {
141
+ web: [
142
+ ["@chatcode/cco-better-sidebar", "cordis.patch.yml"],
143
+ ["@chatcode/cco-llm-chatcode-config", "cordis.patch.yml"],
144
+ ["@chatcode/cco-llm-chatcode-config", "cordis.web.patch.yml"],
145
+ ["@chatcode/cco-chat-import", "cordis.patch.yml"]
146
+ ],
147
+ cli: [["@chatcode/cco-chat-import", "cordis.patch.yml"]]
148
+ };
149
+ /**
150
+ * Resolve ChatCode-owned patch files from the launcher's installed dependency
151
+ * graph. This mirrors the source-checkout overlays for published installs,
152
+ * where `scripts/dsh-local.ts` is not present, without changing the persisted
153
+ * profile or the upstream DSH plugin ABI.
154
+ */
155
+ function chatCodeProfilePatchFiles(profile, installAnchor = INSTALL_ANCHOR) {
156
+ const declarations = CHATCODE_PROFILE_PATCHES[profile] ?? [];
157
+ const require = createRequire(installAnchor);
158
+ return declarations.map(([packageName, patch]) => {
159
+ const path = join(dirname(require.resolve(`${packageName}/package.json`)), patch);
160
+ if (!existsSync(path)) throw new Error(`${NAME}: installed product plugin ${packageName} is missing ${patch}`);
161
+ return path;
162
+ });
163
+ }
120
164
  /** The empty root entry list every profile tree patches over. */
121
165
  const PROFILE_ROOT_CONFIG = `# ChatCode CLI profile root — an empty entry list. The tree is composed as patches:
122
166
  # each bundle in package.json's dsh.profile.bundles, then cordis.patch.yml, then any
@@ -138,12 +182,12 @@ const PROFILE_ROOT_FILENAME = "cordis.yml";
138
182
  */
139
183
  function initializeProfileFromDefault(name, fromDefaultProfile, home = resolveChatCodeCliHome()) {
140
184
  const dir = resolveProfileDir(name, home);
141
- const template = Object.hasOwn(PROFILE_TEMPLATES, fromDefaultProfile) ? PROFILE_TEMPLATES[fromDefaultProfile] : void 0;
185
+ const template = Object.hasOwn(CHATCODE_PROFILE_TEMPLATES, fromDefaultProfile) ? CHATCODE_PROFILE_TEMPLATES[fromDefaultProfile] : void 0;
142
186
  if (template === void 0) {
143
- const expected = Object.keys(PROFILE_TEMPLATES).sort().map((value) => JSON.stringify(value)).join(", ");
187
+ const expected = Object.keys(CHATCODE_PROFILE_TEMPLATES).sort().map((value) => JSON.stringify(value)).join(", ");
144
188
  throw new Error(`${NAME}: unknown default profile ${JSON.stringify(fromDefaultProfile)}; expected one of ${expected}`);
145
189
  }
146
- if (Object.hasOwn(PROFILE_TEMPLATES, name)) throw new Error(`${NAME}: profile ${JSON.stringify(name)} is shipped and cannot be a custom profile target; omit --from-default-profile to use it`);
190
+ if (Object.hasOwn(CHATCODE_PROFILE_TEMPLATES, name)) throw new Error(`${NAME}: profile ${JSON.stringify(name)} is shipped and cannot be a custom profile target; omit --from-default-profile to use it`);
147
191
  mkdirSync(dirname(dir), { recursive: true });
148
192
  try {
149
193
  mkdirSync(dir);
@@ -184,7 +228,11 @@ function initializeProfileFromDefault(name, fromDefaultProfile, home = resolveCh
184
228
  */
185
229
  function prepareProfile(name, userLayer = true, fromDefaultProfile) {
186
230
  if (fromDefaultProfile !== void 0) initializeProfileFromDefault(name, fromDefaultProfile);
187
- const profile = loadProfile(NAME, name, INSTALL_ANCHOR, void 0, {
231
+ const home = resolveChatCodeCliHome();
232
+ const dir = resolveProfileDir(name, home);
233
+ const template = Object.hasOwn(CHATCODE_PROFILE_TEMPLATES, name) ? CHATCODE_PROFILE_TEMPLATES[name] : void 0;
234
+ if (template !== void 0 && !existsSync(join(dir, "package.json"))) initProfile(dir, template.bundles);
235
+ const profile = loadProfile(NAME, name, INSTALL_ANCHOR, home, {
188
236
  pluginCommand: "chatcode-cli",
189
237
  userLayer
190
238
  });
@@ -210,13 +258,16 @@ async function composeProfile(name, patchFiles, resolutionMode, fromDefaultProfi
210
258
  if (resolvedProfile !== void 0) writeFileSync(join(profile.dir, PROFILE_ROOT_FILENAME), PROFILE_ROOT_CONFIG);
211
259
  const resolutionOptions = {
212
260
  installAnchor: resolvedProfile?.installAnchor ?? INSTALL_ANCHOR,
213
- profile
261
+ profile,
262
+ home: resolveChatCodeCliHome()
214
263
  };
215
264
  if (resolvedProfile !== void 0 && resolutionMode !== "runtime") healIsolatedProfileModuleFallback(resolvedProfile);
265
+ const resolution = resolutionMode === "runtime" || resolvedProfile !== void 0 ? await createProfileResolutionGeneration(resolutionOptions) : await healProfilesModuleFallback(resolutionOptions);
266
+ const productPatchFiles = resolvedProfile === void 0 ? chatCodeProfilePatchFiles(name, INSTALL_ANCHOR) : [];
216
267
  return {
217
268
  profile,
218
- resolution: resolutionMode === "runtime" || resolvedProfile !== void 0 ? await createProfileResolutionGeneration(resolutionOptions) : await healProfilesModuleFallback(resolutionOptions),
219
- overlays: patchFiles.flatMap((file) => loadOverlayPatches(NAME, resolve(file)))
269
+ resolution,
270
+ overlays: [...new Set([...productPatchFiles, ...patchFiles].map((file) => resolve(file)))].flatMap((file) => loadOverlayPatches(NAME, file))
220
271
  };
221
272
  }
222
273
  /**
@@ -227,6 +278,7 @@ async function composeProfile(name, patchFiles, resolutionMode, fromDefaultProfi
227
278
  * @throws after disposing startup resources; cleanup failures retain the original error.
228
279
  */
229
280
  async function runProfile(options) {
281
+ synchronizeLegacyHomeEnvironment();
230
282
  const disposeProxy = await installProxyFromEnvironment(options.environment, (message) => {
231
283
  process.stderr.write(`${NAME}: ${message}\n`);
232
284
  });
@@ -304,4 +356,4 @@ async function runProfile(options) {
304
356
  }
305
357
  }
306
358
  //#endregion
307
- export { prepareProfile as a, initializeProfileFromDefault as i, PROFILE_ROOT_FILENAME as n, runProfile as o, homePatchPath as r, INSTALL_ANCHOR as t };
359
+ export { homePatchPath as a, runProfile as c, chatCodeProfilePatchFiles as i, INSTALL_ANCHOR as n, initializeProfileFromDefault as o, PROFILE_ROOT_FILENAME as r, prepareProfile as s, CHATCODE_PROFILE_TEMPLATES as t };
@@ -1,2 +1,2 @@
1
- import { a as prepareProfile, i as initializeProfileFromDefault, n as PROFILE_ROOT_FILENAME, o as runProfile, r as homePatchPath, t as INSTALL_ANCHOR } from "./profile-boot-DNB5by4u.js";
2
- export { INSTALL_ANCHOR, PROFILE_ROOT_FILENAME, homePatchPath, initializeProfileFromDefault, prepareProfile, runProfile };
1
+ import { a as homePatchPath, c as runProfile, i as chatCodeProfilePatchFiles, n as INSTALL_ANCHOR, o as initializeProfileFromDefault, r as PROFILE_ROOT_FILENAME, s as prepareProfile, t as CHATCODE_PROFILE_TEMPLATES } from "./profile-boot-Dncz2Q75.js";
2
+ export { CHATCODE_PROFILE_TEMPLATES, INSTALL_ANCHOR, PROFILE_ROOT_FILENAME, chatCodeProfilePatchFiles, homePatchPath, initializeProfileFromDefault, prepareProfile, runProfile };
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Command-line entry for ChatCode CLI and its compatibility aliases.
3
+ * Command-line entry for ChatCode CLI.
4
4
  * @module @chatcode/chatcode-cli/bin
5
5
  */
6
6
  /**
@@ -0,0 +1,30 @@
1
+ /**
2
+ * ChatCode CLI home resolution owned by the public launcher package.
3
+ * @module @chatcode/chatcode-cli/chatcode-home
4
+ */
5
+ /** Canonical ChatCode CLI home environment variable. */
6
+ export declare const CHATCODE_CLI_HOME_ENV = "CHATCODE_CLI_HOME";
7
+ /** Legacy Harness home variable accepted as a compatibility input. */
8
+ export declare const LEGACY_DSH_HOME_ENV = "DSH_HOME";
9
+ /** Resolve the default writable ChatCode CLI home. */
10
+ export declare function defaultChatCodeCliHome(): string;
11
+ /** Expand the supported current-user tilde forms in a configured path.
12
+ * @param path - path that may begin with `~`, `~/`, or `~\`.
13
+ * @returns the path with its current-user tilde expanded.
14
+ */
15
+ export declare function expandHomePath(path: string): string;
16
+ /** Resolve the writable ChatCode CLI home with canonical-before-legacy precedence.
17
+ * @param configured - explicit home override with highest precedence.
18
+ * @param env - environment used for canonical and legacy inputs.
19
+ * @returns the normalized absolute home path.
20
+ */
21
+ export declare function resolveChatCodeCliHome(configured?: string, env?: Record<string, string | undefined>): string;
22
+ /**
23
+ * Point legacy ABI packages at the launcher-selected ChatCode CLI home.
24
+ * Published Harness packages still read `DSH_HOME`; this internal bridge keeps
25
+ * their storage under the canonical home without requiring republished ABI packages.
26
+ * @param env - mutable process environment supplied to legacy packages.
27
+ * @returns the resolved canonical home written to the legacy variable.
28
+ */
29
+ export declare function synchronizeLegacyHomeEnvironment(env?: Record<string, string | undefined>): string;
30
+ //# sourceMappingURL=chatcode-home.d.ts.map
@@ -10,9 +10,11 @@
10
10
  * @module @chatcode/chatcode-cli/profile-boot
11
11
  */
12
12
  import { type Context } from '@deepseek-ai/cordis';
13
- import { type ProfileContext, type Profile, type ProfileResolutionMode } from '@deepseek-ai/dsh-app-boot';
13
+ import { type ProfileContext, type Profile, type ProfileTemplate, type ProfileResolutionMode } from '@deepseek-ai/dsh-app-boot';
14
14
  import { type LaunchEnvironmentSnapshot } from '@deepseek-ai/dsh-launch-environment';
15
15
  import { type ProcessShutdown } from './process-shutdown.ts';
16
+ /** Profile templates shipped by ChatCode CLI, independent of the installed Harness ABI version. */
17
+ export declare const CHATCODE_PROFILE_TEMPLATES: Readonly<Record<string, ProfileTemplate>>;
16
18
  /**
17
19
  * The home-level user patch layer (`$CHATCODE_CLI_HOME/cordis.patch.yml`), applied
18
20
  * over every profile's own layer. Resolved per call, not at module load:
@@ -22,6 +24,13 @@ import { type ProcessShutdown } from './process-shutdown.ts';
22
24
  export declare function homePatchPath(): string;
23
25
  /** Absolute path of this ChatCode CLI installation's package.json (both anchors: src/ and lib/ sit one level under apps/cli). */
24
26
  export declare const INSTALL_ANCHOR: string;
27
+ /**
28
+ * Resolve ChatCode-owned patch files from the launcher's installed dependency
29
+ * graph. This mirrors the source-checkout overlays for published installs,
30
+ * where `scripts/dsh-local.ts` is not present, without changing the persisted
31
+ * profile or the upstream DSH plugin ABI.
32
+ */
33
+ export declare function chatCodeProfilePatchFiles(profile: string, installAnchor?: string): string[];
25
34
  /** Root config filename inside a profile directory. */
26
35
  export declare const PROFILE_ROOT_FILENAME = "cordis.yml";
27
36
  /**
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@chatcode/chatcode-cli-test",
3
3
  "description": "ChatCode CLI: TUI-first coding agent, Web launcher, profiles, and legacy DSH-compatible plugins",
4
- "version": "3.0.1",
4
+ "version": "3.0.3",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -12,8 +12,7 @@
12
12
  "type": "module",
13
13
  "bin": {
14
14
  "chatcode-cli": "lib/bin.js",
15
- "cco": "lib/bin.js",
16
- "dsh": "lib/bin.js"
15
+ "cco": "lib/bin.js"
17
16
  },
18
17
  "files": [
19
18
  "lib/*.js",
@@ -30,97 +29,277 @@
30
29
  },
31
30
  "license": "MIT",
32
31
  "dependencies": {
33
- "@chatcode/cco-tui": "0.10.0-beta.5",
34
- "@deepseek-harness-tui/dsh-tui": "npm:@chatcode/cco-tui@0.10.0-beta.5",
35
- "commander": "^15.0.0",
36
- "js-yaml": "^4.2.0",
37
- "node-addon-require-builtin": "^0.1.6",
38
- "@chatcode/cco-better-sidebar": "0.18.0-alpha.1",
32
+ "@chatcode/cco-better-sidebar": "0.18.0-alpha.2",
39
33
  "@chatcode/cco-builtin-browser": "0.1.21",
34
+ "@chatcode/cco-chat-import": "0.12.0",
40
35
  "@chatcode/cco-llm-chatcode-config": "0.1.1",
41
36
  "@chatcode/cco-market": "1.45.1",
42
- "dsh-better-sidebar": "npm:@chatcode/cco-better-sidebar@0.18.0-alpha.1",
37
+ "@chatcode/cco-tui": "0.10.0-beta.7",
38
+ "@deepseek-harness-tui/dsh-tui": "npm:@chatcode/cco-tui@0.10.0-beta.7",
39
+ "commander": "^15.0.0",
40
+ "dsh-better-sidebar": "npm:@chatcode/cco-better-sidebar@0.18.0-alpha.2",
43
41
  "dsh-builtin-browser": "npm:@chatcode/cco-builtin-browser@0.1.21",
42
+ "dsh-chat-import": "npm:@chatcode/cco-chat-import@0.12.0",
44
43
  "dsh-llm-chatcode-config": "npm:@chatcode/cco-llm-chatcode-config@0.1.1",
45
44
  "dshmarket": "npm:@chatcode/cco-market@1.45.1",
46
- "dsh-chat-import": "npm:@chatcode/cco-chat-import@0.12.0",
47
- "@chatcode/cco-chat-import": "0.12.0",
48
- "@deepseek-ai/dsh-hmr": "^0.1.6-alpha.2",
49
- "@deepseek-ai/cordis-plugin-loader": "^1.0.3",
45
+ "js-yaml": "^4.2.0",
46
+ "node-addon-require-builtin": "^0.1.6",
47
+ "@deepseek-ai/cordis-plugin-include": "^1.0.7",
50
48
  "@deepseek-ai/cordis": "^4.0.2",
49
+ "@deepseek-ai/dsh-acp": "^0.1.6-alpha.2",
50
+ "@deepseek-ai/dsh-acp-app": "^0.1.6-alpha.2",
51
+ "@deepseek-ai/cordis-plugin-loader": "^1.0.3",
52
+ "@deepseek-ai/cordis-plugin-group": "^1.0.2",
51
53
  "@deepseek-ai/cordis-plugin-timer": "^1.1.4",
52
- "@deepseek-ai/cordis-plugin-include": "^1.0.7",
54
+ "@deepseek-ai/dsh-agent-default-model": "^0.1.6-alpha.2",
55
+ "@deepseek-ai/dsh-agent": "^0.1.6-alpha.2",
53
56
  "@deepseek-ai/dsh-agent-instructions": "^0.1.6-alpha.2",
54
- "@deepseek-ai/dsh-acp-app": "^0.1.6-alpha.2",
57
+ "@deepseek-ai/dsh-agent-loop": "^0.1.6-alpha.2",
58
+ "@deepseek-ai/dsh-agent-tool-presentation": "^0.1.6-alpha.2",
59
+ "@deepseek-ai/dsh-agent-presets": "^0.1.6-alpha.2",
60
+ "@deepseek-ai/dsh-anonymous-user-id": "^0.1.6-alpha.2",
61
+ "@deepseek-ai/dsh-api-gateway": "^0.1.6-alpha.2",
62
+ "@deepseek-ai/dsh-api-remotes": "^0.1.6-alpha.2",
63
+ "@deepseek-ai/dsh-api-settings-controller": "^0.1.6-alpha.2",
64
+ "@deepseek-ai/dsh-api-session-controller": "^0.1.6-alpha.2",
65
+ "@deepseek-ai/dsh-api-workspace-controller": "^0.1.6-alpha.2",
66
+ "@deepseek-ai/dsh-api-terminal-controller": "^0.1.6-alpha.2",
67
+ "@deepseek-ai/dsh-atomic-write": "^0.1.6-alpha.2",
68
+ "@deepseek-ai/dsh-api-workspace-files": "^0.1.6-alpha.2",
55
69
  "@deepseek-ai/dsh-app-boot": "^0.1.6-alpha.2",
70
+ "@deepseek-ai/dsh-bash-sandbox": "^0.1.6-alpha.2",
71
+ "@deepseek-ai/dsh-bash-local": "^0.1.6-alpha.2",
72
+ "@deepseek-ai/dsh-authorization": "^0.1.6-alpha.2",
73
+ "@deepseek-ai/dsh-attachment-local": "^0.1.6-alpha.2",
74
+ "@deepseek-ai/dsh-attachment": "^0.1.6-alpha.2",
75
+ "@deepseek-ai/dsh-brand": "^0.1.6-alpha.2",
76
+ "@deepseek-ai/dsh-base": "^0.1.6-alpha.2",
77
+ "@deepseek-ai/dsh-chunked-list": "^0.1.6-alpha.2",
78
+ "@deepseek-ai/dsh-client-locale": "^0.1.6-alpha.2",
79
+ "@deepseek-ai/dsh-client-connection": "^0.1.6-alpha.2",
80
+ "@deepseek-ai/dsh-client-modules": "^0.1.6-alpha.2",
81
+ "@deepseek-ai/dsh-client-resources": "^0.1.6-alpha.2",
82
+ "@deepseek-ai/dsh-client-ui-approval": "^0.1.6-alpha.2",
83
+ "@deepseek-ai/dsh-client-ui-attachment": "^0.1.6-alpha.2",
84
+ "@deepseek-ai/dsh-client-ui-brand-official": "^0.1.6-alpha.2",
85
+ "@deepseek-ai/dsh-client-ui-chat": "^0.1.6-alpha.2",
56
86
  "@deepseek-ai/dsh-client-ui-agent-preset": "^0.1.6-alpha.2",
57
- "@deepseek-ai/dsh-cmdline": "^0.1.6-alpha.2",
58
- "@deepseek-ai/cordis-plugin-group": "^1.0.2",
59
- "@deepseek-ai/dsh-agent-tool-presentation": "^0.1.6-alpha.2",
87
+ "@deepseek-ai/dsh-client-ui-conversation": "^0.1.6-alpha.2",
88
+ "@deepseek-ai/dsh-client-file-upload": "^0.1.6-alpha.2",
89
+ "@deepseek-ai/dsh-client-ui-commands": "^0.1.6-alpha.2",
90
+ "@deepseek-ai/dsh-client-ui-deliverables": "^0.1.6-alpha.2",
91
+ "@deepseek-ai/dsh-client-ui-directory-picker-native": "^0.1.6-alpha.2",
92
+ "@deepseek-ai/dsh-client-ui-directory-picker-browse": "^0.1.6-alpha.2",
60
93
  "@deepseek-ai/dsh-client-ui-cordis": "^0.1.6-alpha.2",
61
- "@deepseek-ai/dsh-base": "^0.1.6-alpha.2",
62
- "@deepseek-ai/dsh-compaction-basic": "^0.1.6-alpha.2",
63
- "@deepseek-ai/dsh-command-goal": "^0.1.6-alpha.2",
94
+ "@deepseek-ai/dsh-client-ui-jobs": "^0.1.6-alpha.2",
95
+ "@deepseek-ai/dsh-client-ui-goal": "^0.1.6-alpha.2",
96
+ "@deepseek-ai/dsh-client-ui-model-selection": "^0.1.6-alpha.2",
97
+ "@deepseek-ai/dsh-client-ui-message-feedback": "^0.1.6-alpha.2",
98
+ "@deepseek-ai/dsh-client-ui-open-in-app": "^0.1.6-alpha.2",
99
+ "@deepseek-ai/dsh-client-ui-permission-presets": "^0.1.6-alpha.2",
100
+ "@deepseek-ai/dsh-client-ui-plan": "^0.1.6-alpha.2",
101
+ "@deepseek-ai/dsh-client-ui-plugin-manager": "^0.1.6-alpha.2",
102
+ "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.6-alpha.2",
103
+ "@deepseek-ai/dsh-client-ui-reference": "^0.1.6-alpha.2",
104
+ "@deepseek-ai/dsh-client-hmr": "^0.1.6-alpha.2",
105
+ "@deepseek-ai/dsh-client-ui-renderer": "^0.1.6-alpha.2",
106
+ "@deepseek-ai/dsh-client-ui-primitives": "^0.1.6-alpha.2",
107
+ "@deepseek-ai/dsh-client-ui-settings-general": "^0.1.6-alpha.2",
108
+ "@deepseek-ai/dsh-client-ui-session": "^0.1.6-alpha.2",
109
+ "@deepseek-ai/dsh-client-ui-schedule": "^0.1.6-alpha.2",
110
+ "@deepseek-ai/dsh-client-ui-settings-models": "^0.1.6-alpha.2",
111
+ "@deepseek-ai/dsh-client-ui-settings-plugin-inventory": "^0.1.6-alpha.2",
112
+ "@deepseek-ai/dsh-client-ui-layout": "^0.1.6-alpha.2",
113
+ "@deepseek-ai/dsh-client-ui-settings-unarchive-sessions": "^0.1.6-alpha.2",
114
+ "@deepseek-ai/dsh-client-ui-sidebar": "^0.1.6-alpha.2",
115
+ "@deepseek-ai/dsh-client-ui-settings": "^0.1.6-alpha.2",
116
+ "@deepseek-ai/dsh-client-ui-sidebar-documentpreview": "^0.1.6-alpha.2",
117
+ "@deepseek-ai/dsh-client-ui-sidebar-files": "^0.1.6-alpha.2",
118
+ "@deepseek-ai/dsh-client-ui-sidebar-right": "^0.1.6-alpha.2",
119
+ "@deepseek-ai/dsh-client-ui-sidebar-terminal": "^0.1.6-alpha.2",
120
+ "@deepseek-ai/dsh-client-ui-sidebar-browser": "^0.1.6-alpha.2",
121
+ "@deepseek-ai/dsh-client-ui-skill": "^0.1.6-alpha.2",
122
+ "@deepseek-ai/dsh-client-ui-settings-plugins": "^0.1.6-alpha.2",
123
+ "@deepseek-ai/dsh-client-ui-theme": "^0.1.6-alpha.2",
124
+ "@deepseek-ai/dsh-client-ui-subagent": "^0.1.6-alpha.2",
125
+ "@deepseek-ai/dsh-client-ui-tool": "^0.1.6-alpha.2",
126
+ "@deepseek-ai/dsh-client-ui-slots": "^0.1.6-alpha.2",
127
+ "@deepseek-ai/dsh-client-ui-user-questions": "^0.1.6-alpha.2",
128
+ "@deepseek-ai/dsh-client-ui-workspace": "^0.1.6-alpha.2",
64
129
  "@deepseek-ai/dsh-command-compact": "^0.1.6-alpha.2",
130
+ "@deepseek-ai/dsh-cmdline": "^0.1.6-alpha.2",
131
+ "@deepseek-ai/dsh-client-ui-workflow-run": "^0.1.6-alpha.2",
132
+ "@deepseek-ai/dsh-command-goal": "^0.1.6-alpha.2",
133
+ "@deepseek-ai/dsh-compaction-image-offload": "^0.1.6-alpha.2",
134
+ "@deepseek-ai/dsh-command-feedback": "^0.1.6-alpha.2",
135
+ "@deepseek-ai/dsh-compaction": "^0.1.6-alpha.2",
136
+ "@deepseek-ai/dsh-compaction-basic": "^0.1.6-alpha.2",
137
+ "@deepseek-ai/dsh-commands": "^0.1.6-alpha.2",
138
+ "@deepseek-ai/dsh-client-ui-trajectory": "^0.1.6-alpha.2",
139
+ "@deepseek-ai/dsh-cordis-host-runner": "^0.1.6-alpha.2",
140
+ "@deepseek-ai/dsh-credentials-local": "^0.1.6-alpha.2",
65
141
  "@deepseek-ai/dsh-cordis-client-runner": "^0.1.6-alpha.2",
66
142
  "@deepseek-ai/dsh-compaction-tool-result-pruner": "^0.1.6-alpha.2",
143
+ "@deepseek-ai/dsh-credentials": "^0.1.6-alpha.2",
144
+ "@deepseek-ai/dsh-deepseek-llm-api-extensions": "^0.1.6-alpha.2",
145
+ "@deepseek-ai/dsh-deque": "^0.1.6-alpha.2",
146
+ "@deepseek-ai/dsh-experimental-agent-team": "^0.1.6-alpha.2",
147
+ "@deepseek-ai/dsh-experimental-client-ui-agent-team": "^0.1.6-alpha.2",
148
+ "@deepseek-ai/dsh-experimental-ptc-runtime-python": "^0.1.6-alpha.2",
149
+ "@deepseek-ai/dsh-experimental-agent-team-web-profile": "^0.1.6-alpha.2",
150
+ "@deepseek-ai/dsh-file-reference-local": "^0.1.6-alpha.2",
151
+ "@deepseek-ai/dsh-experimental-agent-team-profile": "^0.1.6-alpha.2",
152
+ "@deepseek-ai/dsh-file-reference": "^0.1.6-alpha.2",
153
+ "@deepseek-ai/dsh-fs-observation-policy": "^0.1.6-alpha.2",
154
+ "@deepseek-ai/dsh-fs-local": "^0.1.6-alpha.2",
155
+ "@deepseek-ai/dsh-experimental-tool-agent-team": "^0.1.6-alpha.2",
156
+ "@deepseek-ai/dsh-fs": "^0.1.6-alpha.2",
67
157
  "@deepseek-ai/dsh-goal": "^0.1.6-alpha.2",
158
+ "@deepseek-ai/dsh-hmr": "^0.1.6-alpha.2",
159
+ "@deepseek-ai/dsh-fs-sandbox": "^0.1.6-alpha.2",
68
160
  "@deepseek-ai/dsh-headless": "^0.1.6-alpha.2",
69
- "@deepseek-ai/dsh-fs-local": "^0.1.6-alpha.2",
70
- "@deepseek-ai/dsh-experimental-agent-team-web-profile": "^0.1.6-alpha.2",
71
- "@deepseek-ai/dsh-jobs-local": "^0.1.6-alpha.2",
161
+ "@deepseek-ai/dsh-hooks-claude-code": "^0.1.6-alpha.2",
72
162
  "@deepseek-ai/dsh-home-paths": "^0.1.6-alpha.2",
73
163
  "@deepseek-ai/dsh-hooks-codex": "^0.1.6-alpha.2",
74
- "@deepseek-ai/dsh-mcp-client": "^0.1.6-alpha.2",
75
- "@deepseek-ai/dsh-pwsh-sandbox": "^0.1.6-alpha.2",
76
164
  "@deepseek-ai/dsh-goal-round-driver": "^0.1.6-alpha.2",
165
+ "@deepseek-ai/dsh-hook-protocol": "^0.1.6-alpha.2",
166
+ "@deepseek-ai/dsh-host-directory-picker-auto": "^0.1.6-alpha.2",
167
+ "@deepseek-ai/dsh-host-directory-picker": "^0.1.6-alpha.2",
168
+ "@deepseek-ai/dsh-host-directory-picker-browse": "^0.1.6-alpha.2",
169
+ "@deepseek-ai/dsh-host-frontend-static": "^0.1.6-alpha.2",
170
+ "@deepseek-ai/dsh-host-open-in-app": "^0.1.6-alpha.2",
171
+ "@deepseek-ai/dsh-host-webserver": "^0.1.6-alpha.2",
172
+ "@deepseek-ai/dsh-host-plugin-inventory": "^0.1.6-alpha.2",
173
+ "@deepseek-ai/dsh-http-proxy": "^0.1.6-alpha.2",
174
+ "@deepseek-ai/dsh-jobs-local": "^0.1.6-alpha.2",
175
+ "@deepseek-ai/dsh-host-directory-picker-native": "^0.1.6-alpha.2",
176
+ "@deepseek-ai/dsh-jobs": "^0.1.6-alpha.2",
177
+ "@deepseek-ai/dsh-lazy-require": "^0.1.6-alpha.2",
77
178
  "@deepseek-ai/dsh-launch-environment": "^0.1.6-alpha.2",
78
- "@deepseek-ai/dsh-hooks-claude-code": "^0.1.6-alpha.2",
79
- "@deepseek-ai/dsh-pwsh-local": "^0.1.6-alpha.2",
179
+ "@deepseek-ai/dsh-invariants": "^0.1.6-alpha.2",
180
+ "@deepseek-ai/dsh-llm": "^0.1.6-alpha.2",
181
+ "@deepseek-ai/dsh-llm-pi-ai": "^0.1.6-alpha.2",
182
+ "@deepseek-ai/dsh-mcp-resources": "^0.1.6-alpha.2",
183
+ "@deepseek-ai/dsh-llm-deepseek": "^0.1.6-alpha.2",
184
+ "@deepseek-ai/dsh-llm-retry": "^0.1.6-alpha.2",
185
+ "@deepseek-ai/dsh-mcp-client": "^0.1.6-alpha.2",
186
+ "@deepseek-ai/dsh-package-manifest": "^0.1.6-alpha.2",
187
+ "@deepseek-ai/dsh-permission-presets": "^0.1.6-alpha.2",
188
+ "@deepseek-ai/dsh-output-retention": "^0.1.6-alpha.2",
189
+ "@deepseek-ai/dsh-office-to-pdf": "^0.1.6-alpha.2",
190
+ "@deepseek-ai/dsh-message-feedback": "^0.1.6-alpha.2",
80
191
  "@deepseek-ai/dsh-persona": "^0.1.6-alpha.2",
81
- "@deepseek-ai/dsh-schedule": "^0.1.6-alpha.2",
192
+ "@deepseek-ai/dsh-native-command": "^0.1.6-alpha.2",
193
+ "@deepseek-ai/dsh-plan-mode": "^0.1.6-alpha.2",
194
+ "@deepseek-ai/dsh-ptc-runtime": "^0.1.6-alpha.2",
195
+ "@deepseek-ai/dsh-plugin-package-inventory-deepseek": "^0.1.6-alpha.2",
196
+ "@deepseek-ai/dsh-ptc-runtime-node": "^0.1.6-alpha.2",
197
+ "@deepseek-ai/dsh-pwsh-local": "^0.1.6-alpha.2",
198
+ "@deepseek-ai/dsh-sandbox": "^0.1.6-alpha.2",
199
+ "@deepseek-ai/dsh-pwsh-sandbox": "^0.1.6-alpha.2",
200
+ "@deepseek-ai/dsh-repeat-tool-reminder": "^0.1.6-alpha.2",
201
+ "@deepseek-ai/dsh-sandbox-local": "^0.1.6-alpha.2",
202
+ "@deepseek-ai/dsh-sandbox-policy": "^0.1.6-alpha.2",
203
+ "@deepseek-ai/dsh-sandbox-windows-acl": "^0.1.6-alpha.2",
204
+ "@deepseek-ai/dsh-sdk-app": "^0.1.6-alpha.2",
205
+ "@deepseek-ai/dsh-sdk-protocol": "^0.1.6-alpha.2",
206
+ "@deepseek-ai/dsh-plugin-manager": "^0.1.6-alpha.2",
207
+ "@deepseek-ai/dsh-session": "^0.1.6-alpha.2",
208
+ "@deepseek-ai/dsh-sdk-jsonrpc-server": "^0.1.6-alpha.2",
209
+ "@deepseek-ai/dsh-scope": "^0.1.6-alpha.2",
82
210
  "@deepseek-ai/dsh-sdk-minimal": "^0.1.6-alpha.2",
83
- "@deepseek-ai/dsh-experimental-agent-team-profile": "^0.1.6-alpha.2",
211
+ "@deepseek-ai/dsh-schedule": "^0.1.6-alpha.2",
212
+ "@deepseek-ai/dsh-session-format": "^0.1.6-alpha.2",
213
+ "@deepseek-ai/dsh-session-persistence": "^0.1.6-alpha.2",
214
+ "@deepseek-ai/dsh-session-format-v1-to-v2": "^0.1.6-alpha.2",
215
+ "@deepseek-ai/dsh-session-format-catalog": "^0.1.6-alpha.2",
216
+ "@deepseek-ai/dsh-session-format-v2-to-v3": "^0.1.6-alpha.2",
217
+ "@deepseek-ai/dsh-session-checkpoint-policy": "^0.1.6-alpha.2",
218
+ "@deepseek-ai/dsh-session-persistence-jsonl": "^0.1.6-alpha.2",
219
+ "@deepseek-ai/dsh-session-log-export": "^0.1.6-alpha.2",
84
220
  "@deepseek-ai/dsh-session-projection": "^0.1.6-alpha.2",
85
- "@deepseek-ai/dsh-system-prompt": "^0.1.6-alpha.2",
86
- "@deepseek-ai/dsh-skill-filesystem": "^0.1.6-alpha.2",
221
+ "@deepseek-ai/dsh-session-format-v0-to-v1": "^0.1.6-alpha.2",
222
+ "@deepseek-ai/dsh-session-query": "^0.1.6-alpha.2",
223
+ "@deepseek-ai/dsh-session-projection-cache": "^0.1.6-alpha.2",
87
224
  "@deepseek-ai/dsh-session-reference": "^0.1.6-alpha.2",
225
+ "@deepseek-ai/dsh-session-telemetry": "^0.1.6-alpha.2",
226
+ "@deepseek-ai/dsh-session-query-sqlite": "^0.1.6-alpha.2",
227
+ "@deepseek-ai/dsh-session-stats": "^0.1.6-alpha.2",
228
+ "@deepseek-ai/dsh-session-log-deepseek": "^0.1.6-alpha.2",
229
+ "@deepseek-ai/dsh-session-title": "^0.1.6-alpha.2",
230
+ "@deepseek-ai/dsh-session-title-llm": "^0.1.6-alpha.2",
231
+ "@deepseek-ai/dsh-session-telemetry-otel": "^0.1.6-alpha.2",
232
+ "@deepseek-ai/dsh-session-title-first-prompt-llm": "^0.1.6-alpha.2",
233
+ "@deepseek-ai/dsh-settings": "^0.1.6-alpha.2",
234
+ "@deepseek-ai/dsh-settings-file": "^0.1.6-alpha.2",
235
+ "@deepseek-ai/dsh-session-turn-outline": "^0.1.6-alpha.2",
236
+ "@deepseek-ai/dsh-shell": "^0.1.6-alpha.2",
237
+ "@deepseek-ai/dsh-shell-env": "^0.1.6-alpha.2",
238
+ "@deepseek-ai/dsh-skill-badge": "^0.1.6-alpha.2",
239
+ "@deepseek-ai/dsh-skill": "^0.1.6-alpha.2",
240
+ "@deepseek-ai/dsh-spill": "^0.1.6-alpha.2",
241
+ "@deepseek-ai/dsh-spill-policy": "^0.1.6-alpha.2",
242
+ "@deepseek-ai/dsh-spill-local": "^0.1.6-alpha.2",
243
+ "@deepseek-ai/dsh-storage": "^0.1.6-alpha.2",
244
+ "@deepseek-ai/dsh-storage-domain": "^0.1.6-alpha.2",
245
+ "@deepseek-ai/dsh-skill-filesystem": "^0.1.6-alpha.2",
246
+ "@deepseek-ai/dsh-storage-json": "^0.1.6-alpha.2",
247
+ "@deepseek-ai/dsh-subagent-fork-in-process": "^0.1.6-alpha.2",
248
+ "@deepseek-ai/dsh-subagent-in-process-driver": "^0.1.6-alpha.2",
249
+ "@deepseek-ai/dsh-subagent-spawn-in-process": "^0.1.6-alpha.2",
250
+ "@deepseek-ai/dsh-subagent": "^0.1.6-alpha.2",
251
+ "@deepseek-ai/dsh-subprocess": "^0.1.6-alpha.2",
252
+ "@deepseek-ai/dsh-subprocess-local": "^0.1.6-alpha.2",
253
+ "@deepseek-ai/dsh-system-prompt": "^0.1.6-alpha.2",
254
+ "@deepseek-ai/dsh-terminal-bash": "^0.1.6-alpha.2",
88
255
  "@deepseek-ai/dsh-terminal": "^0.1.6-alpha.2",
89
- "@deepseek-ai/dsh-sdk-app": "^0.1.6-alpha.2",
90
- "@deepseek-ai/dsh-tmux-context": "^0.1.6-alpha.2",
91
256
  "@deepseek-ai/dsh-time-context": "^0.1.6-alpha.2",
92
- "@deepseek-ai/dsh-terminal-bash": "^0.1.6-alpha.2",
93
- "@deepseek-ai/dsh-tool-ask-user": "^0.1.6-alpha.2",
257
+ "@deepseek-ai/dsh-tmux-context": "^0.1.6-alpha.2",
258
+ "@deepseek-ai/dsh-timeout": "^0.1.6-alpha.2",
94
259
  "@deepseek-ai/dsh-tool-bash": "^0.1.6-alpha.2",
95
260
  "@deepseek-ai/dsh-token-meter": "^0.1.6-alpha.2",
96
- "@deepseek-ai/dsh-tool-present": "^0.1.6-alpha.2",
261
+ "@deepseek-ai/dsh-tool-bash-persistent": "^0.1.6-alpha.2",
262
+ "@deepseek-ai/dsh-tool-call-timeout-policy": "^0.1.6-alpha.2",
97
263
  "@deepseek-ai/dsh-tool-fs": "^0.1.6-alpha.2",
98
- "@deepseek-ai/dsh-tool-fs-search": "^0.1.6-alpha.2",
99
264
  "@deepseek-ai/dsh-tool-cordis": "^0.1.6-alpha.2",
100
- "@deepseek-ai/dsh-skill": "^0.1.6-alpha.2",
265
+ "@deepseek-ai/dsh-tool-ask-user": "^0.1.6-alpha.2",
266
+ "@deepseek-ai/dsh-tool-goal": "^0.1.6-alpha.2",
267
+ "@deepseek-ai/dsh-tool-jobs": "^0.1.6-alpha.2",
101
268
  "@deepseek-ai/dsh-tool-pwsh": "^0.1.6-alpha.2",
269
+ "@deepseek-ai/dsh-tool-present": "^0.1.6-alpha.2",
102
270
  "@deepseek-ai/dsh-tool-pwsh-persistent": "^0.1.6-alpha.2",
103
- "@deepseek-ai/dsh-tool-jobs": "^0.1.6-alpha.2",
104
- "@deepseek-ai/dsh-tool-goal": "^0.1.6-alpha.2",
105
- "@deepseek-ai/dsh-tool-skill": "^0.1.6-alpha.2",
271
+ "@deepseek-ai/dsh-tool-ralph": "^0.1.6-alpha.2",
106
272
  "@deepseek-ai/dsh-tool-subagent": "^0.1.6-alpha.2",
107
273
  "@deepseek-ai/dsh-tool-str-replace-editor": "^0.1.6-alpha.2",
108
- "@deepseek-ai/dsh-tool-ralph": "^0.1.6-alpha.2",
109
274
  "@deepseek-ai/dsh-tool-subagent-control": "^0.1.6-alpha.2",
110
- "@deepseek-ai/dsh-tool-web": "^0.1.6-alpha.2",
275
+ "@deepseek-ai/dsh-tool-skill": "^0.1.6-alpha.2",
111
276
  "@deepseek-ai/dsh-tool-todo": "^0.1.6-alpha.2",
112
- "@deepseek-ai/dsh-webhook": "^0.1.6-alpha.2",
113
- "@deepseek-ai/dsh-web-app": "^0.1.6-alpha.2",
114
277
  "@deepseek-ai/dsh-tool-workflow": "^0.1.6-alpha.2",
278
+ "@deepseek-ai/dsh-tools": "^0.1.6-alpha.2",
279
+ "@deepseek-ai/dsh-typert-loader": "^0.1.6-alpha.2",
280
+ "@deepseek-ai/dsh-tool-web": "^0.1.6-alpha.2",
281
+ "@deepseek-ai/dsh-typert-protocol": "^0.1.6-alpha.2",
282
+ "@deepseek-ai/dsh-user-questions": "^0.1.6-alpha.2",
283
+ "@deepseek-ai/dsh-tool-fs-search": "^0.1.6-alpha.2",
284
+ "@deepseek-ai/dsh-typert-registry": "^0.1.6-alpha.2",
285
+ "@deepseek-ai/dsh-util-values": "^0.1.6-alpha.2",
286
+ "@deepseek-ai/dsh-util-crypto": "^0.1.6-alpha.2",
287
+ "@deepseek-ai/dsh-util-workspace-path": "^0.1.6-alpha.2",
288
+ "@deepseek-ai/dsh-user-approval": "^0.1.6-alpha.2",
289
+ "@deepseek-ai/dsh-web": "^0.1.6-alpha.2",
290
+ "@deepseek-ai/dsh-web-fetch-http": "^0.1.6-alpha.2",
291
+ "@deepseek-ai/dsh-util-time": "^0.1.6-alpha.2",
292
+ "@deepseek-ai/dsh-web-app": "^0.1.6-alpha.2",
293
+ "@deepseek-ai/dsh-webhook": "^0.1.6-alpha.2",
294
+ "@deepseek-ai/dsh-web-search-deepseek": "^0.1.6-alpha.2",
115
295
  "@deepseek-ai/dsh-webhook-github": "^0.1.6-alpha.2",
116
- "@deepseek-ai/schemastery": "^3.18.2",
117
- "@deepseek-ai/dsh-mcp-resources": "^0.1.6-alpha.2",
118
- "@deepseek-ai/dsh-http-proxy": "^0.1.6-alpha.2",
119
- "@deepseek-ai/dsh-atomic-write": "^0.1.6-alpha.2",
120
- "@deepseek-ai/dsh-plugin-manager": "^0.1.6-alpha.2",
121
- "@deepseek-ai/dsh-tool-bash-persistent": "^0.1.6-alpha.2",
122
- "@deepseek-ai/dsh-plan-mode": "^0.1.6-alpha.2",
123
- "@deepseek-ai/dsh-workflow-ptc": "^0.1.6-alpha.2"
296
+ "@deepseek-ai/dsh-web-frontend": "^0.1.6-alpha.2",
297
+ "@deepseek-ai/dsh-workflow-ptc": "^0.1.6-alpha.2",
298
+ "@deepseek-ai/dsh-win32-process": "^0.1.6-alpha.2",
299
+ "@deepseek-ai/dsh-workspace": "^0.1.6-alpha.2",
300
+ "@deepseek-ai/dsh-workspace-changes": "^0.1.6-alpha.2",
301
+ "@deepseek-ai/dsh-workflow": "^0.1.6-alpha.2",
302
+ "@deepseek-ai/schemastery": "^3.18.2"
124
303
  },
125
304
  "devDependencies": {
126
305
  "@agentclientprotocol/sdk": "1.4.0",
@@ -128,45 +307,11 @@
128
307
  "@types/ws": "8.18.1",
129
308
  "execa": "^10.0.0",
130
309
  "ws": "8.21.0",
131
- "@deepseek-ai/dsh-acp": "^0.1.6-alpha.2",
132
- "@deepseek-ai/dsh-agent": "^0.1.6-alpha.2",
133
- "@deepseek-ai/dsh-attachment-local": "^0.1.6-alpha.2",
134
- "@deepseek-ai/dsh-bash-local": "^0.1.6-alpha.2",
135
- "@deepseek-ai/dsh-credentials-local": "^0.1.6-alpha.2",
136
- "@deepseek-ai/dsh-experimental-agent-team": "^0.1.6-alpha.2",
137
310
  "@deepseek-ai/dsh-agent-loop-testkit": "^0.1.6-alpha.2",
138
- "@deepseek-ai/dsh-agent-loop": "^0.1.6-alpha.2",
139
- "@deepseek-ai/dsh-fs-observation-policy": "^0.1.6-alpha.2",
140
- "@deepseek-ai/dsh-host-frontend-static": "^0.1.6-alpha.2",
141
- "@deepseek-ai/dsh-experimental-tool-agent-team": "^0.1.6-alpha.2",
142
- "@deepseek-ai/dsh-deepseek-llm-api-extensions": "^0.1.6-alpha.2",
143
- "@deepseek-ai/dsh-llm-deepseek": "^0.1.6-alpha.2",
144
- "@deepseek-ai/dsh-host-webserver": "^0.1.6-alpha.2",
145
- "@deepseek-ai/dsh-llm": "^0.1.6-alpha.2",
146
- "@deepseek-ai/dsh-fs-sandbox": "^0.1.6-alpha.2",
147
- "@deepseek-ai/dsh-llm-pi-ai": "^0.1.6-alpha.2",
148
311
  "@deepseek-ai/dsh-llm-mock-server": "^0.1.6-alpha.2",
149
- "@deepseek-ai/dsh-llm-replay": "^0.1.6-alpha.2",
150
- "@deepseek-ai/dsh-plugin-package-inventory-deepseek": "^0.1.6-alpha.2",
151
312
  "@deepseek-ai/dsh-loader-smoke": "^0.1.6-alpha.2",
152
- "@deepseek-ai/dsh-experimental-ptc-runtime-python": "^0.1.6-alpha.2",
153
- "@deepseek-ai/dsh-sandbox-policy": "^0.1.6-alpha.2",
154
- "@deepseek-ai/dsh-sandbox-local": "^0.1.6-alpha.2",
155
- "@deepseek-ai/dsh-session-log-deepseek": "^0.1.6-alpha.2",
156
- "@deepseek-ai/dsh-session-checkpoint-policy": "^0.1.6-alpha.2",
157
- "@deepseek-ai/dsh-session": "^0.1.6-alpha.2",
158
- "@deepseek-ai/dsh-shell-env": "^0.1.6-alpha.2",
159
- "@deepseek-ai/dsh-session-query": "^0.1.6-alpha.2",
160
- "@deepseek-ai/dsh-subagent-fork-in-process": "^0.1.6-alpha.2",
161
- "@deepseek-ai/dsh-settings-file": "^0.1.6-alpha.2",
162
- "@deepseek-ai/dsh-subagent": "^0.1.6-alpha.2",
163
- "@deepseek-ai/dsh-session-persistence-jsonl": "^0.1.6-alpha.2",
164
- "@deepseek-ai/dsh-subprocess-local": "^0.1.6-alpha.2",
165
- "@deepseek-ai/dsh-settings": "^0.1.6-alpha.2",
166
- "@deepseek-ai/dsh-system-prompt": "^0.1.6-alpha.2",
167
- "@deepseek-ai/dsh-tools": "^0.1.6-alpha.2",
168
- "@deepseek-ai/dsh-subagent-spawn-in-process": "^0.1.6-alpha.2",
169
- "@deepseek-ai/dsh-user-approval": "^0.1.6-alpha.2"
313
+ "@deepseek-ai/dsh-llm-replay": "^0.1.6-alpha.2",
314
+ "@deepseek-ai/dsh-system-prompt": "^0.1.6-alpha.2"
170
315
  },
171
316
  "exports": {
172
317
  "./profile-boot": {