@deepseek-ai/dsh 0.1.7-alpha.1 → 0.1.7-rc.1
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.i18n.yaml +2 -2
- package/README.md +2 -0
- package/README.zh.md +2 -0
- package/lib/bin.js +5 -11
- package/lib/{dump-config-C-0P1h0W.js → dump-config-B2Uwz7II.js} +2 -2
- package/lib/dump-config-D8-AsuR8.js +2 -0
- package/lib/{dump-config-schema-BgEU7VYz.js → dump-config-schema-DyIQpuQH.js} +2 -2
- package/lib/plugin-Dr5KNRuz.js +83 -0
- package/lib/profile-boot.js +1 -1
- package/lib/types/plugin.d.ts +2 -2
- package/package.json +116 -116
- package/lib/dump-config-DaAE0NHG.js +0 -2
- package/lib/plugin-CnNK4cws.js +0 -31
- package/lib/{profile-boot-DIiro1p-.js → profile-boot-CO0MPY31.js} +2 -2
package/README.i18n.yaml
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
|
3
3
|
# after editing either side, bring the other along and re-record with:
|
|
4
4
|
# pnpm run verify-translation-pairing --write apps/cli/README.md
|
|
5
|
-
README.md:
|
|
6
|
-
README.zh.md:
|
|
5
|
+
README.md: 765440438175083d2dbd765592731df5ec148bcf
|
|
6
|
+
README.zh.md: 08db105b160199cb9a64276f273b8b00f0d21c09
|
package/README.md
CHANGED
|
@@ -36,6 +36,8 @@ dsh --help # the launcher's own help
|
|
|
36
36
|
|
|
37
37
|
A profile directory holds a `package.json` (out-of-tree plugin dependencies plus the profile manifest `dsh.profile` with its ordered `bundles` list) and a `cordis.patch.yml` (the user's own patch layer). `dsh-hmr`, when enabled in YAML, watches the profile manifest and both profile and home patch files, then recomposes all layers through one serialized reload. Without HMR, changes apply on restart. Edits arriving during watcher registration use the same nonfatal reload reporting as later edits. [Plugin Manager](../../packages/boot/plugin-manager/README.md) shares package operations and the profile write lock with `dsh plugin`; package updates retain disabled bundle selections. CLI package commands inherit authentication variables and terminal descriptors, including interactive build approval; service calls retain their scrubbed environment and captured diagnostics.
|
|
38
38
|
|
|
39
|
+
Installation and profile startup enforce declared DSH peer ranges against the same runtime version shown by `dsh --version`. Incompatible plugins require an explicitly acknowledged exact-version exemption. The [plugin manager's compatibility reference](../../packages/boot/plugin-manager/README.md#version-compatibility-and-exemptions) documents `version-exemptions`, `allow-version`, `revoke-version`, persistence, and risks.
|
|
40
|
+
|
|
39
41
|
The tree composes over an empty root:
|
|
40
42
|
- each bundle's patch in `dsh.profile.bundles` order
|
|
41
43
|
- then the profile's `cordis.patch.yml`, then the home-level `$DSH_HOME/cordis.patch.yml`
|
package/README.zh.md
CHANGED
|
@@ -36,6 +36,8 @@ dsh --help # the launcher's own help
|
|
|
36
36
|
|
|
37
37
|
profile 目录包含一个 `package.json`,其中记录树外插件依赖,以及 profile manifest(元数据清单)`dsh.profile`、其中按顺序排列的 `bundles` 列表;还包含一个 `cordis.patch.yml`,其中保存用户自己的 patch 层。在 YAML 中启用的 `dsh-hmr` 监视 profile manifest、profile 与 home 级 patch 文件,再通过统一串行重载重新组合所有层。未启用 HMR 时,更改在重启后生效。监听器注册期间发生的编辑与后续编辑使用相同的非致命重载错误报告。[插件管理器](../../packages/boot/plugin-manager/README.zh.md) 与 `dsh plugin` 共享包操作和 profile 写锁;更新依赖会保留已停用的组合包选择。CLI 包操作继承认证环境和终端描述符,支持交互式构建批准;service 调用保留清理后的环境并捕获诊断。
|
|
38
38
|
|
|
39
|
+
安装和 profile 启动会按声明的 DSH peer 范围,检查与 `dsh --version` 显示值相同的运行时版本。不兼容插件需要用户明确确认精确版本豁免。[插件管理器的兼容性参考](../../packages/boot/plugin-manager/README.zh.md#version-compatibility-and-exemptions)说明 `version-exemptions`、`allow-version`、`revoke-version`、持久化规则与风险。
|
|
40
|
+
|
|
39
41
|
配置树以空根为起点,依次叠加以下配置层:
|
|
40
42
|
- `dsh.profile.bundles` 中各组合包的 patch
|
|
41
43
|
- profile 自身的 `cordis.patch.yml`,然后是 home 级的 `$DSH_HOME/cordis.patch.yml`
|
package/lib/bin.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
import { fileURLToPath } from "node:url";
|
|
4
|
-
import { StartupError, loadLayeredEnv } from "@deepseek-ai/dsh-app-boot";
|
|
2
|
+
import { StartupError, getDshRuntimeVersion, loadLayeredEnv } from "@deepseek-ai/dsh-app-boot";
|
|
5
3
|
import { resolveDshHome } from "@deepseek-ai/dsh-home-paths";
|
|
6
4
|
import { Command, CommanderError, InvalidArgumentError } from "commander";
|
|
7
5
|
import { randomUUID } from "node:crypto";
|
|
@@ -200,16 +198,12 @@ async function reportStartupFailure(error, context, write = writeStderr) {
|
|
|
200
198
|
* @module @deepseek-ai/dsh/bin
|
|
201
199
|
*/
|
|
202
200
|
/* v8 ignore file -- built-bin acceptance exercises this self-executing dispatch. */
|
|
203
|
-
function readVersion() {
|
|
204
|
-
const manifest = JSON.parse(readFileSync(fileURLToPath(new URL("../package.json", import.meta.url)), "utf8"));
|
|
205
|
-
return typeof manifest.version === "string" ? manifest.version : "0.0.0";
|
|
206
|
-
}
|
|
207
201
|
/**
|
|
208
202
|
* Run the public dsh command-line interface.
|
|
209
203
|
* @returns a promise that settles when the selected command mode finishes.
|
|
210
204
|
*/
|
|
211
205
|
async function runCli() {
|
|
212
|
-
const version =
|
|
206
|
+
const version = getDshRuntimeVersion();
|
|
213
207
|
const invocation = parseDshArgs(process.argv.slice(2), version);
|
|
214
208
|
switch (invocation.mode) {
|
|
215
209
|
case "profile": {
|
|
@@ -234,17 +228,17 @@ async function runCli() {
|
|
|
234
228
|
break;
|
|
235
229
|
}
|
|
236
230
|
case "plugin": {
|
|
237
|
-
const { runPlugin } = await import("./plugin-
|
|
231
|
+
const { runPlugin } = await import("./plugin-Dr5KNRuz.js");
|
|
238
232
|
process.exit(await runPlugin(invocation.profile, invocation.args));
|
|
239
233
|
break;
|
|
240
234
|
}
|
|
241
235
|
case "dump-config": {
|
|
242
|
-
const { runDumpConfig } = await import("./dump-config-
|
|
236
|
+
const { runDumpConfig } = await import("./dump-config-D8-AsuR8.js");
|
|
243
237
|
runDumpConfig(invocation.profile, invocation.defaultOnly, invocation.patches, invocation.fromDefaultProfile);
|
|
244
238
|
break;
|
|
245
239
|
}
|
|
246
240
|
case "dump-config-schema": {
|
|
247
|
-
const { runDumpConfigSchema } = await import("./dump-config-schema-
|
|
241
|
+
const { runDumpConfigSchema } = await import("./dump-config-schema-DyIQpuQH.js");
|
|
248
242
|
await runDumpConfigSchema(invocation.profile, invocation.patches, invocation.fromDefaultProfile);
|
|
249
243
|
break;
|
|
250
244
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { a as prepareProfile, n as PROFILE_ROOT_FILENAME, r as homePatchPath } from "./profile-boot-
|
|
2
|
-
import { existsSync } from "node:fs";
|
|
1
|
+
import { a as prepareProfile, n as PROFILE_ROOT_FILENAME, r as homePatchPath } from "./profile-boot-CO0MPY31.js";
|
|
3
2
|
import { loadOptionalPatches, loadOverlayPatches, renderConfigDump } from "@deepseek-ai/dsh-app-boot";
|
|
4
3
|
import { join, resolve } from "node:path";
|
|
4
|
+
import { existsSync } from "node:fs";
|
|
5
5
|
//#region lib/types/dump-config.js
|
|
6
6
|
/**
|
|
7
7
|
* Config-dump entry for `dsh --profile <name> --dump-config`: compose the
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as prepareProfile, t as INSTALL_ANCHOR } from "./profile-boot-
|
|
2
|
-
import { t as collectConfigDumpLayers } from "./dump-config-
|
|
1
|
+
import { a as prepareProfile, t as INSTALL_ANCHOR } from "./profile-boot-CO0MPY31.js";
|
|
2
|
+
import { t as collectConfigDumpLayers } from "./dump-config-B2Uwz7II.js";
|
|
3
3
|
import { generateConfigSchema } from "@deepseek-ai/dsh-app-boot";
|
|
4
4
|
//#region lib/types/dump-config-schema.js
|
|
5
5
|
/**
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { t as INSTALL_ANCHOR } from "./profile-boot-CO0MPY31.js";
|
|
2
|
+
import { DEFAULT_PROFILE_BUNDLES, PROFILE_TEMPLATES, initProfile, readProfileCompatibility, resolveProfileDir } from "@deepseek-ai/dsh-app-boot";
|
|
3
|
+
import { mkdir } from "node:fs/promises";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { existsSync } from "node:fs";
|
|
6
|
+
import { runPluginCommand, setProfileVersionExemption } from "@deepseek-ai/dsh-plugin-manager/operations";
|
|
7
|
+
import { withFileLock } from "@deepseek-ai/dsh-atomic-write";
|
|
8
|
+
//#region lib/types/plugin.js
|
|
9
|
+
/** Profile package management and explicit, exact-version compatibility approvals. */
|
|
10
|
+
/** Parse only DSH-owned commands; all other arguments remain pnpm's responsibility. */
|
|
11
|
+
async function versionCommand(profile, args) {
|
|
12
|
+
const [command, ...rest] = args;
|
|
13
|
+
if (command !== "allow-version" && command !== "revoke-version" && command !== "version-exemptions") return void 0;
|
|
14
|
+
try {
|
|
15
|
+
let packageVersion;
|
|
16
|
+
let runtimeVersion;
|
|
17
|
+
let acceptRisk = false;
|
|
18
|
+
const argumentsIterator = rest.values();
|
|
19
|
+
for (const argument of argumentsIterator) if (argument === "--accept-risk" && command === "allow-version" && !acceptRisk) acceptRisk = true;
|
|
20
|
+
else if (argument === "--dsh-version" && runtimeVersion === void 0) runtimeVersion = argumentsIterator.next().value;
|
|
21
|
+
else if (argument.startsWith("--dsh-version=") && runtimeVersion === void 0) runtimeVersion = argument.slice(14);
|
|
22
|
+
else if (!argument.startsWith("-") && packageVersion === void 0) packageVersion = argument;
|
|
23
|
+
else throw new Error(`unexpected argument ${JSON.stringify(argument)}`);
|
|
24
|
+
if (command === "version-exemptions" && rest.length > 0) throw new Error("usage: dsh plugin version-exemptions");
|
|
25
|
+
let request;
|
|
26
|
+
if (command !== "version-exemptions") {
|
|
27
|
+
if (packageVersion === void 0 || runtimeVersion === void 0) throw new Error(`usage: dsh plugin ${command} <package@version> --dsh-version <exact>${command === "allow-version" ? " --accept-risk" : ""}`);
|
|
28
|
+
request = {
|
|
29
|
+
packageVersion,
|
|
30
|
+
runtimeVersion
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
if (command === "allow-version") process.stderr.write("dsh: warning: allowing incompatible plugin versions can break the application or corrupt data. Approval applies only to the exact package and DSH versions.\n");
|
|
34
|
+
const dir = resolveProfileDir(profile);
|
|
35
|
+
await mkdir(dir, { recursive: true });
|
|
36
|
+
await withFileLock(join(dir, "package.json"), async () => {
|
|
37
|
+
if (!existsSync(join(dir, "package.json"))) initProfile(dir, PROFILE_TEMPLATES[profile]?.bundles ?? DEFAULT_PROFILE_BUNDLES);
|
|
38
|
+
if (request === void 0) {
|
|
39
|
+
const { exemptions, warnings } = readProfileCompatibility(dir);
|
|
40
|
+
for (const warning of warnings) process.stderr.write(`dsh: warning: ${warning}\n`);
|
|
41
|
+
process.stdout.write(JSON.stringify(exemptions, void 0, 2) + "\n");
|
|
42
|
+
} else {
|
|
43
|
+
await setProfileVersionExemption(dir, request.packageVersion, request.runtimeVersion, command === "allow-version", acceptRisk);
|
|
44
|
+
process.stdout.write(`dsh: ${command === "allow-version" ? "allowed" : "revoked"} ${request.packageVersion} for DSH ${request.runtimeVersion}\n`);
|
|
45
|
+
}
|
|
46
|
+
}, { waitMs: 12e4 });
|
|
47
|
+
return 0;
|
|
48
|
+
} catch (error) {
|
|
49
|
+
process.stderr.write(`dsh: ${String(error)}\n`);
|
|
50
|
+
return 1;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/** Run package management for a profile.
|
|
54
|
+
* @param profile Profile name.
|
|
55
|
+
* @param args DSH exemption command or pnpm arguments relative to the invoking directory.
|
|
56
|
+
* @returns Zero on success; nonzero on invalid approval or package-manager failure.
|
|
57
|
+
*/
|
|
58
|
+
async function runPlugin(profile, args) {
|
|
59
|
+
const versionResult = await versionCommand(profile, args);
|
|
60
|
+
if (versionResult !== void 0) return versionResult;
|
|
61
|
+
const dir = resolveProfileDir(profile);
|
|
62
|
+
if (existsSync(join(dir, "package.json"))) for (const warning of readProfileCompatibility(dir).warnings) process.stderr.write(`dsh: warning: ${warning}\n`);
|
|
63
|
+
const result = await runPluginCommand({
|
|
64
|
+
profile,
|
|
65
|
+
installAnchor: INSTALL_ANCHOR,
|
|
66
|
+
cwd: process.cwd()
|
|
67
|
+
}, args, {
|
|
68
|
+
execution: "cli",
|
|
69
|
+
outputBytes: 16384,
|
|
70
|
+
lockWaitMs: 12e4,
|
|
71
|
+
lookupTimeoutMs: 12e4,
|
|
72
|
+
onOutput: (text, stream) => {
|
|
73
|
+
process[stream].write(text);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
if (result.exitCode === 127) process.stderr.write("dsh: pnpm was not found; install pnpm and make it available on PATH.\n");
|
|
77
|
+
for (const { name, version, runtimeVersion } of result.incompatible ?? []) process.stderr.write(`dsh: to accept the risk, run: dsh plugin --profile ${profile} allow-version ${name}@${version} --dsh-version ${runtimeVersion} --accept-risk\n`);
|
|
78
|
+
if (result.exitCode !== 0) process.stderr.write(`dsh: plugin command failed; diagnostics: ${result.logPath}\n`);
|
|
79
|
+
if (result.exitCode !== 0 && args.some((argument) => /^git\+|^github:|\.git(?:#|$)/.test(argument))) process.stderr.write(`dsh: git-hosted plugins build on install via their prepare script, which pnpm blocks until allowed — add the exact key pnpm printed above under allowBuilds in ${join(resolveProfileDir(profile), "pnpm-workspace.yaml")}, then re-run\n`);
|
|
80
|
+
return result.exitCode;
|
|
81
|
+
}
|
|
82
|
+
//#endregion
|
|
83
|
+
export { runPlugin };
|
package/lib/profile-boot.js
CHANGED
|
@@ -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-
|
|
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-CO0MPY31.js";
|
|
2
2
|
export { INSTALL_ANCHOR, PROFILE_ROOT_FILENAME, homePatchPath, initializeProfileFromDefault, prepareProfile, runProfile };
|
package/lib/types/plugin.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** Run package management for a profile.
|
|
2
2
|
* @param profile Profile name.
|
|
3
|
-
* @param args
|
|
4
|
-
* @returns
|
|
3
|
+
* @param args DSH exemption command or pnpm arguments relative to the invoking directory.
|
|
4
|
+
* @returns Zero on success; nonzero on invalid approval or package-manager failure.
|
|
5
5
|
*/
|
|
6
6
|
export declare function runPlugin(profile: string, args: readonly string[]): Promise<number>;
|
|
7
7
|
//# sourceMappingURL=plugin.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deepseek-ai/dsh",
|
|
3
3
|
"description": "dsh CLI: profile launch, plugin management, and configuration inspection",
|
|
4
|
-
"version": "0.1.7-
|
|
4
|
+
"version": "0.1.7-rc.1",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -23,83 +23,83 @@
|
|
|
23
23
|
"commander": "^15.0.0",
|
|
24
24
|
"js-yaml": "^4.2.0",
|
|
25
25
|
"node-addon-require-builtin": "^0.1.6",
|
|
26
|
-
"@deepseek-ai/cordis": "
|
|
27
|
-
"@deepseek-ai/
|
|
28
|
-
"@deepseek-ai/
|
|
29
|
-
"@deepseek-ai/cordis-plugin-
|
|
30
|
-
"@deepseek-ai/
|
|
31
|
-
"@deepseek-ai/
|
|
32
|
-
"@deepseek-ai/dsh-agent-instructions": "
|
|
33
|
-
"@deepseek-ai/dsh-agent-tool-presentation": "
|
|
34
|
-
"@deepseek-ai/dsh-app-boot": "
|
|
35
|
-
"@deepseek-ai/dsh-base": "
|
|
36
|
-
"@deepseek-ai/dsh-client-ui-agent-preset": "
|
|
37
|
-
"@deepseek-ai/dsh-client-ui-cordis": "
|
|
38
|
-
"@deepseek-ai/dsh-cmdline": "
|
|
39
|
-
"@deepseek-ai/dsh-command-compact": "
|
|
40
|
-
"@deepseek-ai/dsh-command-goal": "
|
|
41
|
-
"@deepseek-ai/dsh-compaction-basic": "
|
|
42
|
-
"@deepseek-ai/dsh-compaction-tool-result-pruner": "
|
|
43
|
-
"@deepseek-ai/dsh-cordis-client-runner": "
|
|
44
|
-
"@deepseek-ai/dsh-experimental-agent-team-profile": "
|
|
45
|
-
"@deepseek-ai/dsh-fs-local": "
|
|
46
|
-
"@deepseek-ai/dsh-goal": "
|
|
47
|
-
"@deepseek-ai/dsh-goal-round-driver": "
|
|
48
|
-
"@deepseek-ai/dsh-headless": "
|
|
49
|
-
"@deepseek-ai/dsh-home-paths": "
|
|
50
|
-
"@deepseek-ai/dsh-hooks-claude-code": "
|
|
51
|
-
"@deepseek-ai/dsh-hooks-codex": "
|
|
52
|
-
"@deepseek-ai/dsh-jobs-local": "
|
|
53
|
-
"@deepseek-ai/dsh-
|
|
54
|
-
"@deepseek-ai/dsh-
|
|
55
|
-
"@deepseek-ai/dsh-
|
|
56
|
-
"@deepseek-ai/dsh-plan-mode": "
|
|
57
|
-
"@deepseek-ai/dsh-pwsh-
|
|
58
|
-
"@deepseek-ai/dsh-
|
|
59
|
-
"@deepseek-ai/dsh-
|
|
60
|
-
"@deepseek-ai/dsh-
|
|
61
|
-
"@deepseek-ai/dsh-sdk-minimal": "
|
|
62
|
-
"@deepseek-ai/dsh-session-reference": "
|
|
63
|
-
"@deepseek-ai/dsh-skill": "
|
|
64
|
-
"@deepseek-ai/dsh-skill-filesystem": "
|
|
65
|
-
"@deepseek-ai/dsh-
|
|
66
|
-
"@deepseek-ai/dsh-
|
|
67
|
-
"@deepseek-ai/dsh-
|
|
68
|
-
"@deepseek-ai/dsh-terminal": "
|
|
69
|
-
"@deepseek-ai/dsh-terminal-bash": "
|
|
70
|
-
"@deepseek-ai/dsh-time-context": "
|
|
71
|
-
"@deepseek-ai/dsh-
|
|
72
|
-
"@deepseek-ai/dsh-
|
|
73
|
-
"@deepseek-ai/dsh-tool-
|
|
74
|
-
"@deepseek-ai/dsh-
|
|
75
|
-
"@deepseek-ai/dsh-tool-
|
|
76
|
-
"@deepseek-ai/dsh-tool-
|
|
77
|
-
"@deepseek-ai/dsh-tool-
|
|
78
|
-
"@deepseek-ai/dsh-tool-fs": "
|
|
79
|
-
"@deepseek-ai/dsh-tool-fs-search": "
|
|
80
|
-
"@deepseek-ai/dsh-tool-
|
|
81
|
-
"@deepseek-ai/dsh-tool-
|
|
82
|
-
"@deepseek-ai/dsh-tool-pwsh
|
|
83
|
-
"@deepseek-ai/dsh-tool-
|
|
84
|
-
"@deepseek-ai/dsh-tool-
|
|
85
|
-
"@deepseek-ai/dsh-tool-skill": "
|
|
86
|
-
"@deepseek-ai/dsh-tool-str-replace-editor": "
|
|
87
|
-
"@deepseek-ai/dsh-tool-subagent": "
|
|
88
|
-
"@deepseek-ai/dsh-tool-
|
|
89
|
-
"@deepseek-ai/dsh-tool-web": "
|
|
90
|
-
"@deepseek-ai/dsh-tool-workflow": "
|
|
91
|
-
"@deepseek-ai/dsh-web-app": "
|
|
92
|
-
"@deepseek-ai/dsh-webhook": "
|
|
93
|
-
"@deepseek-ai/dsh-
|
|
94
|
-
"@deepseek-ai/dsh-
|
|
95
|
-
"@deepseek-ai/
|
|
96
|
-
"@deepseek-ai/
|
|
97
|
-
"@deepseek-ai/dsh-
|
|
98
|
-
"@deepseek-ai/dsh-
|
|
99
|
-
"@deepseek-ai/dsh-atomic-write": "
|
|
100
|
-
"@deepseek-ai/dsh-agent-preset": "
|
|
101
|
-
"@deepseek-ai/dsh-
|
|
102
|
-
"@deepseek-ai/dsh-
|
|
26
|
+
"@deepseek-ai/cordis": "~4.0.4",
|
|
27
|
+
"@deepseek-ai/dsh-hmr": "0.1.7-rc.1",
|
|
28
|
+
"@deepseek-ai/cordis-plugin-loader": "~1.0.5",
|
|
29
|
+
"@deepseek-ai/cordis-plugin-timer": "~1.1.6",
|
|
30
|
+
"@deepseek-ai/dsh-acp-app": "0.1.7-rc.1",
|
|
31
|
+
"@deepseek-ai/cordis-plugin-include": "~1.0.9",
|
|
32
|
+
"@deepseek-ai/dsh-agent-instructions": "0.1.7-rc.1",
|
|
33
|
+
"@deepseek-ai/dsh-agent-tool-presentation": "0.1.7-rc.1",
|
|
34
|
+
"@deepseek-ai/dsh-app-boot": "0.1.7-rc.1",
|
|
35
|
+
"@deepseek-ai/dsh-base": "0.1.7-rc.1",
|
|
36
|
+
"@deepseek-ai/dsh-client-ui-agent-preset": "0.1.7-rc.1",
|
|
37
|
+
"@deepseek-ai/dsh-client-ui-cordis": "0.1.7-rc.1",
|
|
38
|
+
"@deepseek-ai/dsh-cmdline": "0.1.7-rc.1",
|
|
39
|
+
"@deepseek-ai/dsh-command-compact": "0.1.7-rc.1",
|
|
40
|
+
"@deepseek-ai/dsh-command-goal": "0.1.7-rc.1",
|
|
41
|
+
"@deepseek-ai/dsh-compaction-basic": "0.1.7-rc.1",
|
|
42
|
+
"@deepseek-ai/dsh-compaction-tool-result-pruner": "0.1.7-rc.1",
|
|
43
|
+
"@deepseek-ai/dsh-cordis-client-runner": "0.1.7-rc.1",
|
|
44
|
+
"@deepseek-ai/dsh-experimental-agent-team-profile": "0.1.7-rc.1",
|
|
45
|
+
"@deepseek-ai/dsh-fs-local": "0.1.7-rc.1",
|
|
46
|
+
"@deepseek-ai/dsh-goal": "0.1.7-rc.1",
|
|
47
|
+
"@deepseek-ai/dsh-goal-round-driver": "0.1.7-rc.1",
|
|
48
|
+
"@deepseek-ai/dsh-headless": "0.1.7-rc.1",
|
|
49
|
+
"@deepseek-ai/dsh-home-paths": "0.1.7-rc.1",
|
|
50
|
+
"@deepseek-ai/dsh-hooks-claude-code": "0.1.7-rc.1",
|
|
51
|
+
"@deepseek-ai/dsh-hooks-codex": "0.1.7-rc.1",
|
|
52
|
+
"@deepseek-ai/dsh-jobs-local": "0.1.7-rc.1",
|
|
53
|
+
"@deepseek-ai/dsh-launch-environment": "0.1.7-rc.1",
|
|
54
|
+
"@deepseek-ai/dsh-mcp-client": "0.1.7-rc.1",
|
|
55
|
+
"@deepseek-ai/dsh-persona": "0.1.7-rc.1",
|
|
56
|
+
"@deepseek-ai/dsh-plan-mode": "0.1.7-rc.1",
|
|
57
|
+
"@deepseek-ai/dsh-pwsh-local": "0.1.7-rc.1",
|
|
58
|
+
"@deepseek-ai/dsh-pwsh-sandbox": "0.1.7-rc.1",
|
|
59
|
+
"@deepseek-ai/dsh-schedule": "0.1.7-rc.1",
|
|
60
|
+
"@deepseek-ai/dsh-sdk-app": "0.1.7-rc.1",
|
|
61
|
+
"@deepseek-ai/dsh-sdk-minimal": "0.1.7-rc.1",
|
|
62
|
+
"@deepseek-ai/dsh-session-reference": "0.1.7-rc.1",
|
|
63
|
+
"@deepseek-ai/dsh-skill": "0.1.7-rc.1",
|
|
64
|
+
"@deepseek-ai/dsh-skill-filesystem": "0.1.7-rc.1",
|
|
65
|
+
"@deepseek-ai/dsh-skill-office": "0.1.7-rc.1",
|
|
66
|
+
"@deepseek-ai/dsh-tool-workspace-dependencies": "0.1.7-rc.1",
|
|
67
|
+
"@deepseek-ai/dsh-session-projection": "0.1.7-rc.1",
|
|
68
|
+
"@deepseek-ai/dsh-terminal": "0.1.7-rc.1",
|
|
69
|
+
"@deepseek-ai/dsh-terminal-bash": "0.1.7-rc.1",
|
|
70
|
+
"@deepseek-ai/dsh-time-context": "0.1.7-rc.1",
|
|
71
|
+
"@deepseek-ai/dsh-tmux-context": "0.1.7-rc.1",
|
|
72
|
+
"@deepseek-ai/dsh-token-meter": "0.1.7-rc.1",
|
|
73
|
+
"@deepseek-ai/dsh-tool-ask-user": "0.1.7-rc.1",
|
|
74
|
+
"@deepseek-ai/dsh-tool-bash-persistent": "0.1.7-rc.1",
|
|
75
|
+
"@deepseek-ai/dsh-tool-cordis": "0.1.7-rc.1",
|
|
76
|
+
"@deepseek-ai/dsh-tool-present": "0.1.7-rc.1",
|
|
77
|
+
"@deepseek-ai/dsh-tool-bash": "0.1.7-rc.1",
|
|
78
|
+
"@deepseek-ai/dsh-tool-fs": "0.1.7-rc.1",
|
|
79
|
+
"@deepseek-ai/dsh-tool-fs-search": "0.1.7-rc.1",
|
|
80
|
+
"@deepseek-ai/dsh-tool-goal": "0.1.7-rc.1",
|
|
81
|
+
"@deepseek-ai/dsh-tool-jobs": "0.1.7-rc.1",
|
|
82
|
+
"@deepseek-ai/dsh-tool-pwsh": "0.1.7-rc.1",
|
|
83
|
+
"@deepseek-ai/dsh-tool-pwsh-persistent": "0.1.7-rc.1",
|
|
84
|
+
"@deepseek-ai/dsh-tool-ralph": "0.1.7-rc.1",
|
|
85
|
+
"@deepseek-ai/dsh-tool-skill": "0.1.7-rc.1",
|
|
86
|
+
"@deepseek-ai/dsh-tool-str-replace-editor": "0.1.7-rc.1",
|
|
87
|
+
"@deepseek-ai/dsh-tool-subagent": "0.1.7-rc.1",
|
|
88
|
+
"@deepseek-ai/dsh-tool-todo": "0.1.7-rc.1",
|
|
89
|
+
"@deepseek-ai/dsh-tool-web": "0.1.7-rc.1",
|
|
90
|
+
"@deepseek-ai/dsh-tool-workflow": "0.1.7-rc.1",
|
|
91
|
+
"@deepseek-ai/dsh-web-app": "0.1.7-rc.1",
|
|
92
|
+
"@deepseek-ai/dsh-webhook": "0.1.7-rc.1",
|
|
93
|
+
"@deepseek-ai/dsh-webhook-github": "0.1.7-rc.1",
|
|
94
|
+
"@deepseek-ai/dsh-workflow-ptc": "0.1.7-rc.1",
|
|
95
|
+
"@deepseek-ai/schemastery": "~3.18.4",
|
|
96
|
+
"@deepseek-ai/dsh-http-proxy": "0.1.7-rc.1",
|
|
97
|
+
"@deepseek-ai/dsh-mcp-resources": "0.1.7-rc.1",
|
|
98
|
+
"@deepseek-ai/dsh-tool-subagent-control": "0.1.7-rc.1",
|
|
99
|
+
"@deepseek-ai/dsh-atomic-write": "0.1.7-rc.1",
|
|
100
|
+
"@deepseek-ai/dsh-agent-preset": "0.1.7-rc.1",
|
|
101
|
+
"@deepseek-ai/dsh-plugin-manager": "0.1.7-rc.1",
|
|
102
|
+
"@deepseek-ai/dsh-experimental-voice-input-bundle": "0.1.7-rc.1"
|
|
103
103
|
},
|
|
104
104
|
"devDependencies": {
|
|
105
105
|
"@agentclientprotocol/sdk": "1.4.0",
|
|
@@ -108,44 +108,44 @@
|
|
|
108
108
|
"ajv": "^8.20.0",
|
|
109
109
|
"execa": "^10.0.0",
|
|
110
110
|
"ws": "8.21.0",
|
|
111
|
-
"@deepseek-ai/dsh-acp": "
|
|
112
|
-
"@deepseek-ai/dsh-agent": "
|
|
113
|
-
"@deepseek-ai/dsh-agent-loop": "
|
|
114
|
-
"@deepseek-ai/dsh-
|
|
115
|
-
"@deepseek-ai/dsh-
|
|
116
|
-
"@deepseek-ai/dsh-bash-local": "
|
|
117
|
-
"@deepseek-ai/dsh-credentials-local": "
|
|
118
|
-
"@deepseek-ai/dsh-deepseek-llm-api-extensions": "
|
|
119
|
-
"@deepseek-ai/dsh-experimental-agent-team": "
|
|
120
|
-
"@deepseek-ai/dsh-experimental-ptc-runtime-python": "
|
|
121
|
-
"@deepseek-ai/dsh-experimental-tool-agent-team": "
|
|
122
|
-
"@deepseek-ai/dsh-fs-observation-policy": "
|
|
123
|
-
"@deepseek-ai/dsh-
|
|
124
|
-
"@deepseek-ai/dsh-host-
|
|
125
|
-
"@deepseek-ai/dsh-
|
|
126
|
-
"@deepseek-ai/dsh-llm": "
|
|
127
|
-
"@deepseek-ai/dsh-llm-deepseek": "
|
|
128
|
-
"@deepseek-ai/dsh-llm-
|
|
129
|
-
"@deepseek-ai/dsh-llm-
|
|
130
|
-
"@deepseek-ai/dsh-
|
|
131
|
-
"@deepseek-ai/dsh-
|
|
132
|
-
"@deepseek-ai/dsh-
|
|
133
|
-
"@deepseek-ai/dsh-
|
|
134
|
-
"@deepseek-ai/dsh-
|
|
135
|
-
"@deepseek-ai/dsh-session": "
|
|
136
|
-
"@deepseek-ai/dsh-session-
|
|
137
|
-
"@deepseek-ai/dsh-
|
|
138
|
-
"@deepseek-ai/dsh-
|
|
139
|
-
"@deepseek-ai/dsh-
|
|
140
|
-
"@deepseek-ai/dsh-
|
|
141
|
-
"@deepseek-ai/dsh-
|
|
142
|
-
"@deepseek-ai/dsh-subagent": "
|
|
143
|
-
"@deepseek-ai/dsh-subprocess-local": "
|
|
144
|
-
"@deepseek-ai/dsh-system-prompt": "
|
|
145
|
-
"@deepseek-ai/dsh-
|
|
146
|
-
"@deepseek-ai/dsh-
|
|
147
|
-
"@deepseek-ai/dsh-
|
|
148
|
-
"@deepseek-ai/dsh-
|
|
111
|
+
"@deepseek-ai/dsh-acp": "0.1.7-rc.1",
|
|
112
|
+
"@deepseek-ai/dsh-agent": "0.1.7-rc.1",
|
|
113
|
+
"@deepseek-ai/dsh-agent-loop": "0.1.7-rc.1",
|
|
114
|
+
"@deepseek-ai/dsh-attachment-local": "0.1.7-rc.1",
|
|
115
|
+
"@deepseek-ai/dsh-agent-loop-testkit": "0.1.7-rc.1",
|
|
116
|
+
"@deepseek-ai/dsh-bash-local": "0.1.7-rc.1",
|
|
117
|
+
"@deepseek-ai/dsh-credentials-local": "0.1.7-rc.1",
|
|
118
|
+
"@deepseek-ai/dsh-deepseek-llm-api-extensions": "0.1.7-rc.1",
|
|
119
|
+
"@deepseek-ai/dsh-experimental-agent-team": "0.1.7-rc.1",
|
|
120
|
+
"@deepseek-ai/dsh-experimental-ptc-runtime-python": "0.1.7-rc.1",
|
|
121
|
+
"@deepseek-ai/dsh-experimental-tool-agent-team": "0.1.7-rc.1",
|
|
122
|
+
"@deepseek-ai/dsh-fs-observation-policy": "0.1.7-rc.1",
|
|
123
|
+
"@deepseek-ai/dsh-fs-sandbox": "0.1.7-rc.1",
|
|
124
|
+
"@deepseek-ai/dsh-host-frontend-static": "0.1.7-rc.1",
|
|
125
|
+
"@deepseek-ai/dsh-host-webserver": "0.1.7-rc.1",
|
|
126
|
+
"@deepseek-ai/dsh-llm": "0.1.7-rc.1",
|
|
127
|
+
"@deepseek-ai/dsh-llm-deepseek": "0.1.7-rc.1",
|
|
128
|
+
"@deepseek-ai/dsh-llm-pi-ai": "0.1.7-rc.1",
|
|
129
|
+
"@deepseek-ai/dsh-llm-replay": "0.1.7-rc.1",
|
|
130
|
+
"@deepseek-ai/dsh-loader-smoke": "0.1.7-rc.1",
|
|
131
|
+
"@deepseek-ai/dsh-sandbox-local": "0.1.7-rc.1",
|
|
132
|
+
"@deepseek-ai/dsh-sandbox-policy": "0.1.7-rc.1",
|
|
133
|
+
"@deepseek-ai/dsh-session": "0.1.7-rc.1",
|
|
134
|
+
"@deepseek-ai/dsh-session-checkpoint-policy": "0.1.7-rc.1",
|
|
135
|
+
"@deepseek-ai/dsh-session-log-deepseek": "0.1.7-rc.1",
|
|
136
|
+
"@deepseek-ai/dsh-session-persistence-jsonl": "0.1.7-rc.1",
|
|
137
|
+
"@deepseek-ai/dsh-shell-env": "0.1.7-rc.1",
|
|
138
|
+
"@deepseek-ai/dsh-settings": "0.1.7-rc.1",
|
|
139
|
+
"@deepseek-ai/dsh-subagent": "0.1.7-rc.1",
|
|
140
|
+
"@deepseek-ai/dsh-session-query": "0.1.7-rc.1",
|
|
141
|
+
"@deepseek-ai/dsh-subagent-fork-in-process": "0.1.7-rc.1",
|
|
142
|
+
"@deepseek-ai/dsh-subagent-spawn-in-process": "0.1.7-rc.1",
|
|
143
|
+
"@deepseek-ai/dsh-subprocess-local": "0.1.7-rc.1",
|
|
144
|
+
"@deepseek-ai/dsh-system-prompt": "0.1.7-rc.1",
|
|
145
|
+
"@deepseek-ai/dsh-tools": "0.1.7-rc.1",
|
|
146
|
+
"@deepseek-ai/dsh-user-approval": "0.1.7-rc.1",
|
|
147
|
+
"@deepseek-ai/dsh-llm-mock-server": "0.1.7-rc.1",
|
|
148
|
+
"@deepseek-ai/dsh-plugin-package-inventory-deepseek": "0.1.7-rc.1"
|
|
149
149
|
},
|
|
150
150
|
"exports": {
|
|
151
151
|
"./profile-boot": {
|
package/lib/plugin-CnNK4cws.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { t as INSTALL_ANCHOR } from "./profile-boot-DIiro1p-.js";
|
|
2
|
-
import { resolveProfileDir } from "@deepseek-ai/dsh-app-boot";
|
|
3
|
-
import { join } from "node:path";
|
|
4
|
-
import { runPluginCommand } from "@deepseek-ai/dsh-plugin-manager/operations";
|
|
5
|
-
//#region lib/types/plugin.js
|
|
6
|
-
/** dsh plugin forwards pnpm through the shared profile package operations. */
|
|
7
|
-
/** Run package management for a profile.
|
|
8
|
-
* @param profile Profile name.
|
|
9
|
-
* @param args Pnpm arguments relative to the invoking directory.
|
|
10
|
-
* @returns Pnpm exit code.
|
|
11
|
-
*/
|
|
12
|
-
async function runPlugin(profile, args) {
|
|
13
|
-
const result = await runPluginCommand({
|
|
14
|
-
profile,
|
|
15
|
-
installAnchor: INSTALL_ANCHOR,
|
|
16
|
-
cwd: process.cwd()
|
|
17
|
-
}, args, {
|
|
18
|
-
execution: "cli",
|
|
19
|
-
outputBytes: 16384,
|
|
20
|
-
lockWaitMs: 12e4,
|
|
21
|
-
onOutput: (text, stream) => {
|
|
22
|
-
process[stream].write(text);
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
if (result.exitCode === 127) process.stderr.write("dsh: pnpm was not found; install pnpm and make it available on PATH.\n");
|
|
26
|
-
if (result.exitCode !== 0) process.stderr.write(`dsh: pnpm failed; diagnostics: ${result.logPath}\n`);
|
|
27
|
-
if (result.exitCode !== 0 && args.some((argument) => /^git\+|^github:|\.git(?:#|$)/.test(argument))) process.stderr.write(`dsh: git-hosted plugins build on install via their prepare script, which pnpm blocks until allowed — add the exact key pnpm printed above under allowBuilds in ${join(resolveProfileDir(profile), "pnpm-workspace.yaml")}, then re-run\n`);
|
|
28
|
-
return result.exitCode;
|
|
29
|
-
}
|
|
30
|
-
//#endregion
|
|
31
|
-
export { runPlugin };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { existsSync, mkdirSync, rmSync, writeFileSync } from "node:fs";
|
|
2
|
-
import { fileURLToPath } from "node:url";
|
|
3
1
|
import { PROFILE_PATCH_FILENAME, PROFILE_TEMPLATES, PluginPackages, boot, createRuntimeResolution, initProfile, installFailLoud, loadOverlayPatches, loadProfile, readProfilePatches, resolveProfileDir } from "@deepseek-ai/dsh-app-boot";
|
|
4
2
|
import { resolveDshHome } from "@deepseek-ai/dsh-home-paths";
|
|
5
3
|
import { dirname, join, resolve } from "node:path";
|
|
4
|
+
import { existsSync, mkdirSync, rmSync, writeFileSync } from "node:fs";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
6
6
|
import { installProxyFromEnvironment } from "@deepseek-ai/dsh-http-proxy";
|
|
7
7
|
import { DSH_LAUNCH_ENVIRONMENT_KEY } from "@deepseek-ai/dsh-launch-environment";
|
|
8
8
|
import { provideCmdline } from "@deepseek-ai/dsh-cmdline";
|