@askdkc/dsh-cli 0.13.3 → 0.13.5
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 +2 -2
- package/lib/types/components/LogoV2.d.ts +1 -5
- package/lib/types/components/LogoV2.d.ts.map +1 -1
- package/lib/types/components/LogoV2.js +3 -12
- package/lib/types/dsh-adapter/contract.d.ts +6 -55
- package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
- package/lib/types/dsh-adapter/contract.js +15 -129
- package/lib/types/dsh-adapter/index.d.ts +2 -2
- package/lib/types/dsh-adapter/index.d.ts.map +1 -1
- package/lib/types/dsh-adapter/index.js +6 -12
- package/lib/types/i18n.d.ts +0 -16
- package/lib/types/i18n.d.ts.map +1 -1
- package/lib/types/i18n.js +0 -18
- package/lib/types/update.d.ts +2 -2
- package/lib/types/update.js +2 -2
- package/node_modules/@askdkc/dsh-auth/package.json +29 -11
- package/node_modules/dsh-working-activity/package.json +27 -9
- package/package.json +107 -95
package/README.md
CHANGED
|
@@ -42,8 +42,8 @@ This is dkc's independently developed fork of [dsh-TUI by chimney](https://githu
|
|
|
42
42
|
Requires [Node.js](https://nodejs.org/en) `^22.19 || >=24`, pnpm 11, a
|
|
43
43
|
[DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) source
|
|
44
44
|
checkout with dependencies installed, and `DEEPSEEK_API_KEY`. We aim to support
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
current DSH APIs. Compatibility is checked against installed packages and the
|
|
46
|
+
upstream default branch, without a release allowlist; see [ADAPTER.md](ADAPTER.md).
|
|
47
47
|
|
|
48
48
|
Clone recursively to fetch submodules. In an existing checkout, run
|
|
49
49
|
`git submodule update --init --recursive` before installation.
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { type Tip } from '../tips.js';
|
|
3
|
-
import { type UpstreamDriftSummary } from '../dsh-adapter/contract.js';
|
|
4
3
|
import { type WhaleIntroId } from './whaleFrames.js';
|
|
5
4
|
/**
|
|
6
5
|
* The header splash: one layout, two phases. The **opening** (~1.7–3.5s,
|
|
@@ -20,7 +19,7 @@ import { type WhaleIntroId } from './whaleFrames.js';
|
|
|
20
19
|
* blue. Narrow terminals show complete big text, then the whale alone,
|
|
21
20
|
* then a plain title as space runs out.
|
|
22
21
|
*/
|
|
23
|
-
export declare function LogoV2({ model, effort, cwd, skipIntro, intro, tip, whale, whaleIdle, working,
|
|
22
|
+
export declare function LogoV2({ model, effort, cwd, skipIntro, intro, tip, whale, whaleIdle, working, }: {
|
|
24
23
|
model: string;
|
|
25
24
|
effort?: string | undefined;
|
|
26
25
|
cwd: string;
|
|
@@ -42,8 +41,5 @@ export declare function LogoV2({ model, effort, cwd, skipIntro, intro, tip, whal
|
|
|
42
41
|
* click-hearts are welcome-phase features); sustained !working before
|
|
43
42
|
* that lets it fall asleep. */
|
|
44
43
|
working?: boolean;
|
|
45
|
-
/** Test seam: pin/suppress the upstream-drift notice (`null` forces it off;
|
|
46
|
-
* `undefined` — the production default — auto-detects the install). */
|
|
47
|
-
drift?: UpstreamDriftSummary | null;
|
|
48
44
|
}): React.ReactNode;
|
|
49
45
|
//# sourceMappingURL=LogoV2.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogoV2.d.ts","sourceRoot":"","sources":["../../../src/components/LogoV2.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAiB,KAAK,GAAG,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"LogoV2.d.ts","sourceRoot":"","sources":["../../../src/components/LogoV2.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAiB,KAAK,GAAG,EAAE,MAAM,YAAY,CAAA;AAapD,OAAO,EAA+E,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAA;AA4CjI;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,MAAM,EACN,GAAG,EACH,SAAiB,EACjB,KAAK,EACL,GAAG,EACH,KAAY,EACZ,SAAgB,EAChB,OAAe,GAChB,EAAE;IACD,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,iFAAiF;IACjF,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,YAAY,CAAA;IACpB,6EAA6E;IAC7E,GAAG,CAAC,EAAE,GAAG,CAAA;IACT,mFAAmF;IACnF,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;;4CAGwC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;mCAG+B;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,GAAG,KAAK,CAAC,SAAS,CA+MlB"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import { getLang, t as tr
|
|
3
|
+
import { getLang, t as tr } from '../i18n.js';
|
|
4
4
|
import { pickRandomTip } from '../tips.js';
|
|
5
|
-
import { upstreamDriftSummary, UPSTREAM_VALIDATED_VERSION } from '../dsh-adapter/contract.js';
|
|
6
5
|
import { readFileSync } from 'node:fs';
|
|
7
6
|
import { dirname, join } from 'node:path';
|
|
8
7
|
import { fileURLToPath } from 'node:url';
|
|
@@ -69,7 +68,7 @@ function capitalize(text) {
|
|
|
69
68
|
* blue. Narrow terminals show complete big text, then the whale alone,
|
|
70
69
|
* then a plain title as space runs out.
|
|
71
70
|
*/
|
|
72
|
-
export function LogoV2({ model, effort, cwd, skipIntro = false, intro, tip, whale = true, whaleIdle = true, working = false,
|
|
71
|
+
export function LogoV2({ model, effort, cwd, skipIntro = false, intro, tip, whale = true, whaleIdle = true, working = false, }) {
|
|
73
72
|
// One intro per logo mount: the production path rolls (startup splash
|
|
74
73
|
// and each /deepseek replay roll independently), the `intro` seam pins
|
|
75
74
|
// a specific animation for probes.
|
|
@@ -199,10 +198,6 @@ export function LogoV2({ model, effort, cwd, skipIntro = false, intro, tip, whal
|
|
|
199
198
|
// repaint (language switch, terminal resize), or the line would flicker.
|
|
200
199
|
// `tip` is a test seam; production always passes undefined and rolls.
|
|
201
200
|
const [randomTip] = React.useState(() => tip ?? pickRandomTip());
|
|
202
|
-
// Upstream-drift notice, merged to one line: computed once per mount from
|
|
203
|
-
// the same memoized contract data the adapter checks (undefined when the
|
|
204
|
-
// install matches). `drift` is a test seam to pin or suppress it.
|
|
205
|
-
const [driftLine] = React.useState(() => drift === undefined ? upstreamDriftSummary() : drift);
|
|
206
201
|
// Indent that centers the tagline under the whale art's bounding box.
|
|
207
202
|
const welcomePad = showWhale
|
|
208
203
|
? Math.max(0, Math.round(WHALE_CENTER - stringWidth(tagline) / 2))
|
|
@@ -225,9 +220,5 @@ export function LogoV2({ model, effort, cwd, skipIntro = false, intro, tip, whal
|
|
|
225
220
|
setHeartSeq(0);
|
|
226
221
|
setHeartKey(k => k + 1);
|
|
227
222
|
}
|
|
228
|
-
}, children: _jsx(WhaleArt, { frameIndex: frameIndex, pose: settled && whaleIdle && !whaleFrozen ? (idlePose ?? RESTING_POSE) : undefined, width: WHALE_BOX_WIDTH }) })), (showBigTitle || showPlainTitle) && _jsxs(Box, { flexDirection: "column", flexShrink: 1, children: [_jsxs(Text, { wrap: "truncate-end", children: [sweep('✦ dsh-CLI', t, wordmarkRGB, wordmarkShimmerRGB, 60), _jsx(Text, { dimColor: true, children: ' v' + VERSION })] }), showBigTitle ? _jsxs(_Fragment, { children: [bigDeepSeek.map((row, index) => (_jsx(Text, { wrap: "truncate-end", children: row }, `ds-${index}`))), bigHarness.map((row, index) => (_jsx(Text, { wrap: "truncate-end", children: row }, `h-${index}`)))] }) : _jsx(Text, { color: "accent", bold: true, wrap: "truncate-end", children: "DeepSeek Harness" }), _jsxs(Text, { wrap: "truncate-end", children: [model, effort !== undefined && _jsx(Text, { dimColor: true, children: ' · ' + capitalize(effort) + ' effort' })] }), _jsx(Text, { dimColor: true, wrap: "truncate-end", children: cwd }), _jsxs(Text, { wrap: "truncate-end", children: [_jsx(Text, { dimColor: true, children: tr('logo-tip-prefix') }), getLang() === 'zh' ? randomTip.zh : randomTip.en, _jsx(Text, { dimColor: true, children: ' · /tips ' + tr('logo-tip-more') })] })
|
|
229
|
-
installed: driftLine.versions.join(' / '),
|
|
230
|
-
validated: UPSTREAM_VALIDATED_VERSION,
|
|
231
|
-
primary: UPSTREAM_VALIDATED_VERSION,
|
|
232
|
-
})] }))] })] }), _jsx(Box, { marginTop: 1, paddingLeft: welcomePad, children: _jsx(Text, { children: sweep(tagline, t, taglineRGB, FLASH, 60) }) })] }));
|
|
223
|
+
}, children: _jsx(WhaleArt, { frameIndex: frameIndex, pose: settled && whaleIdle && !whaleFrozen ? (idlePose ?? RESTING_POSE) : undefined, width: WHALE_BOX_WIDTH }) })), (showBigTitle || showPlainTitle) && _jsxs(Box, { flexDirection: "column", flexShrink: 1, children: [_jsxs(Text, { wrap: "truncate-end", children: [sweep('✦ dsh-CLI', t, wordmarkRGB, wordmarkShimmerRGB, 60), _jsx(Text, { dimColor: true, children: ' v' + VERSION })] }), showBigTitle ? _jsxs(_Fragment, { children: [bigDeepSeek.map((row, index) => (_jsx(Text, { wrap: "truncate-end", children: row }, `ds-${index}`))), bigHarness.map((row, index) => (_jsx(Text, { wrap: "truncate-end", children: row }, `h-${index}`)))] }) : _jsx(Text, { color: "accent", bold: true, wrap: "truncate-end", children: "DeepSeek Harness" }), _jsxs(Text, { wrap: "truncate-end", children: [model, effort !== undefined && _jsx(Text, { dimColor: true, children: ' · ' + capitalize(effort) + ' effort' })] }), _jsx(Text, { dimColor: true, wrap: "truncate-end", children: cwd }), _jsxs(Text, { wrap: "truncate-end", children: [_jsx(Text, { dimColor: true, children: tr('logo-tip-prefix') }), getLang() === 'zh' ? randomTip.zh : randomTip.en, _jsx(Text, { dimColor: true, children: ' · /tips ' + tr('logo-tip-more') })] })] })] }), _jsx(Box, { marginTop: 1, paddingLeft: welcomePad, children: _jsx(Text, { children: sweep(tagline, t, taglineRGB, FLASH, 60) }) })] }));
|
|
233
224
|
}
|
|
@@ -1,62 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
export declare const UPSTREAM_VALIDATED_VERSION = "0.2.0-rc.2";
|
|
3
|
-
/** Update the baseline in place; older releases are unsupported. */
|
|
4
|
-
export declare const UPSTREAM_VALIDATED_VERSIONS: readonly ["0.2.0-rc.2"];
|
|
5
|
-
/**
|
|
6
|
-
* Framework packages version on their own lines; the contract validates
|
|
7
|
-
* their MAJOR (breaking surface), not the harness prerelease number.
|
|
8
|
-
*/
|
|
1
|
+
/** Frameworks have independent, breaking major versions. */
|
|
9
2
|
export declare const UPSTREAM_FRAMEWORK_MAJORS: Record<string, number>;
|
|
10
3
|
/** Official packages the adapter consumes at runtime or as types. */
|
|
11
4
|
export declare const UPSTREAM_BLESSED_PACKAGES: readonly ["@deepseek-ai/cordis", "@deepseek-ai/schemastery", "@deepseek-ai/dsh-invariants", "@deepseek-ai/dsh-agent", "@deepseek-ai/dsh-agent-instructions", "@deepseek-ai/dsh-agent-preset-registry", "@deepseek-ai/dsh-atomic-write", "@deepseek-ai/dsh-ptc-runtime-node", "@deepseek-ai/dsh-commands", "@deepseek-ai/dsh-cordis-host-runner", "@deepseek-ai/dsh-llm", "@deepseek-ai/dsh-llm-pi-ai", "@deepseek-ai/dsh-persona", "@deepseek-ai/dsh-session", "@deepseek-ai/dsh-settings", "@deepseek-ai/dsh-skill", "@deepseek-ai/dsh-storage", "@deepseek-ai/dsh-storage-domain", "@deepseek-ai/dsh-storage-json", "@deepseek-ai/dsh-workspace", "@deepseek-ai/dsh-web-app", "@deepseek-ai/dsh-system-prompt", "@deepseek-ai/dsh-terminal", "@deepseek-ai/dsh-terminal-bash", "@deepseek-ai/dsh-tool-ask-user", "@deepseek-ai/dsh-tool-bash-persistent", "@deepseek-ai/dsh-tool-cordis", "@deepseek-ai/dsh-tool-subagent", "@deepseek-ai/dsh-user-approval", "@deepseek-ai/dsh-user-questions"];
|
|
12
|
-
export
|
|
5
|
+
export declare function installedUpstreamVersions(): Record<string, string | undefined>;
|
|
6
|
+
export interface UpstreamDependencyIssue {
|
|
13
7
|
package: string;
|
|
14
8
|
installed: string | undefined;
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
/** Supported upstream prerelease channels in ascending precedence order. */
|
|
18
|
-
export type UpstreamPrereleaseChannel = 'alpha' | 'beta' | 'rc';
|
|
19
|
-
/** A parsed upstream prerelease version, e.g. `0.1.2-alpha.1` → `[0, 1, 2, 'alpha', 1]`. */
|
|
20
|
-
export type UpstreamVersionTuple = readonly [number, number, number, UpstreamPrereleaseChannel, number];
|
|
21
|
-
/** Parse an upstream prerelease version; undefined when unparseable. */
|
|
22
|
-
export declare function parseUpstreamVersion(version: string | undefined): UpstreamVersionTuple | undefined;
|
|
23
|
-
/** Order two parsed versions: negative/positive/zero as a `<`/`>`/`=`. */
|
|
24
|
-
export declare function compareVersions(a: UpstreamVersionTuple, b: UpstreamVersionTuple): number;
|
|
25
|
-
/** Human-readable supported release. */
|
|
26
|
-
export declare const UPSTREAM_VALIDATED_LABEL = "0.2.0-rc.2";
|
|
27
|
-
export declare function installedUpstreamVersions(): Record<string, string | undefined>;
|
|
28
|
-
/**
|
|
29
|
-
* The distinct installed prerelease versions across the blessed harness
|
|
30
|
-
* packages (framework packages excluded). One entry = coherent install;
|
|
31
|
-
* several = a mixed tree, which the per-package drift check cannot see.
|
|
32
|
-
* Empty when nothing (or no harness package) is installed.
|
|
33
|
-
*/
|
|
34
|
-
export declare function installedUpstreamLines(installedVersions?: Readonly<Record<string, string | undefined>>): string[];
|
|
35
|
-
/**
|
|
36
|
-
* Report every blessed package whose installed version is NOT one of the
|
|
37
|
-
* validated release lines. Empty array = the running install matches the
|
|
38
|
-
* contract.
|
|
39
|
-
*/
|
|
40
|
-
export declare function upstreamDrift(installedVersions?: Readonly<Record<string, string | undefined>>): UpstreamDriftEntry[];
|
|
41
|
-
/**
|
|
42
|
-
* Classification of a drifted install for the one-line boot notice:
|
|
43
|
-
* `newer` / `older` — every drifted harness package sits on a single
|
|
44
|
-
* parseable version off one end of the validated window; `mixed` — several
|
|
45
|
-
* distinct versions coexist (unstable tree); `broken` — something is
|
|
46
|
-
* missing or unparseable and wording cannot get more specific.
|
|
47
|
-
*/
|
|
48
|
-
export type UpstreamDriftKind = 'newer' | 'older' | 'mixed' | 'broken';
|
|
49
|
-
/** Merged drift verdict consumed by the logo header notice (LogoV2). */
|
|
50
|
-
export interface UpstreamDriftSummary {
|
|
51
|
-
kind: UpstreamDriftKind;
|
|
52
|
-
/** Distinct installed versions among drifted packages ('missing' for absent ones). */
|
|
53
|
-
versions: string[];
|
|
9
|
+
reason: string;
|
|
54
10
|
}
|
|
55
|
-
/**
|
|
56
|
-
|
|
57
|
-
* undefined when the install matches the contract. Only harness prerelease packages
|
|
58
|
-
* decide newer/older/mixed; a framework-only drift (e.g. a cordis major
|
|
59
|
-
* bump) reports `broken`, since its version line is not comparable.
|
|
60
|
-
*/
|
|
61
|
-
export declare function upstreamDriftSummary(installedVersions?: Readonly<Record<string, string | undefined>>): UpstreamDriftSummary | undefined;
|
|
11
|
+
/** Require the development dependency surface without restricting DSH releases. */
|
|
12
|
+
export declare function upstreamDependencyIssues(installedVersions?: Readonly<Record<string, string | undefined>>): UpstreamDependencyIssue[];
|
|
62
13
|
//# sourceMappingURL=contract.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/contract.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/contract.ts"],"names":[],"mappings":"AAIA,4DAA4D;AAC5D,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAG5D,CAAA;AAED,qEAAqE;AACrE,eAAO,MAAM,yBAAyB,o8BA+B5B,CAAA;AAYV,wBAAgB,yBAAyB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAqB9E;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,MAAM,EAAE,MAAM,CAAA;CACf;AAED,mFAAmF;AACnF,wBAAgB,wBAAwB,CACtC,iBAAiB,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAA+B,GAC5F,uBAAuB,EAAE,CAY3B"}
|
|
@@ -1,25 +1,7 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Upstream compatibility contract.
|
|
3
|
-
*
|
|
4
|
-
* The TUI supports one validated upstream release: 0.2.0-rc.2.
|
|
5
|
-
* Every official package this adapter touches is blessed here; anything
|
|
6
|
-
* else must go through upstream channels or the adapter, never the UI.
|
|
7
|
-
*
|
|
8
|
-
* `upstreamDrift()` powers the CI gate (scripts/verify-upstream-contract.ts)
|
|
9
|
-
* so a mismatched install fails in CI before it fails on a user's machine.
|
|
10
|
-
* `upstreamDriftSummary()` collapses the per-package entries into the
|
|
11
|
-
* single natural-language boot notice the logo header shows (see LogoV2).
|
|
12
|
-
*/
|
|
1
|
+
/** Host dependency boundary. Release labels are diagnostic data, not an allowlist. */
|
|
13
2
|
import { readFileSync } from 'node:fs';
|
|
14
3
|
import { fileURLToPath } from 'node:url';
|
|
15
|
-
/**
|
|
16
|
-
export const UPSTREAM_VALIDATED_VERSION = '0.2.0-rc.2';
|
|
17
|
-
/** Update the baseline in place; older releases are unsupported. */
|
|
18
|
-
export const UPSTREAM_VALIDATED_VERSIONS = [UPSTREAM_VALIDATED_VERSION];
|
|
19
|
-
/**
|
|
20
|
-
* Framework packages version on their own lines; the contract validates
|
|
21
|
-
* their MAJOR (breaking surface), not the harness prerelease number.
|
|
22
|
-
*/
|
|
4
|
+
/** Frameworks have independent, breaking major versions. */
|
|
23
5
|
export const UPSTREAM_FRAMEWORK_MAJORS = {
|
|
24
6
|
'@deepseek-ai/cordis': 4,
|
|
25
7
|
'@deepseek-ai/schemastery': 3,
|
|
@@ -57,33 +39,6 @@ export const UPSTREAM_BLESSED_PACKAGES = [
|
|
|
57
39
|
'@deepseek-ai/dsh-user-approval',
|
|
58
40
|
'@deepseek-ai/dsh-user-questions',
|
|
59
41
|
];
|
|
60
|
-
// These capabilities are optional at runtime. CI requires the complete dev tree.
|
|
61
|
-
const OPTIONAL_RUNTIME_PACKAGES = new Set([
|
|
62
|
-
'@deepseek-ai/dsh-agent-preset-registry',
|
|
63
|
-
'@deepseek-ai/dsh-ptc-runtime-node',
|
|
64
|
-
'@deepseek-ai/dsh-web-app',
|
|
65
|
-
]);
|
|
66
|
-
/** Parse an upstream prerelease version; undefined when unparseable. */
|
|
67
|
-
export function parseUpstreamVersion(version) {
|
|
68
|
-
const match = /^(\d+)\.(\d+)\.(\d+)-(alpha|beta|rc)\.(\d+)$/u.exec(version ?? '');
|
|
69
|
-
return match === null
|
|
70
|
-
? undefined
|
|
71
|
-
: [Number(match[1]), Number(match[2]), Number(match[3]), match[4], Number(match[5])];
|
|
72
|
-
}
|
|
73
|
-
/** Order two parsed versions: negative/positive/zero as a `<`/`>`/`=`. */
|
|
74
|
-
export function compareVersions(a, b) {
|
|
75
|
-
for (const index of [0, 1, 2]) {
|
|
76
|
-
if (a[index] > b[index])
|
|
77
|
-
return 1;
|
|
78
|
-
if (a[index] < b[index])
|
|
79
|
-
return -1;
|
|
80
|
-
}
|
|
81
|
-
const channelRank = { alpha: 0, beta: 1, rc: 2 };
|
|
82
|
-
const channelOrder = channelRank[a[3]] - channelRank[b[3]];
|
|
83
|
-
return channelOrder !== 0 ? channelOrder : a[4] - b[4];
|
|
84
|
-
}
|
|
85
|
-
/** Human-readable supported release. */
|
|
86
|
-
export const UPSTREAM_VALIDATED_LABEL = UPSTREAM_VALIDATED_VERSION;
|
|
87
42
|
function resolvePackageJson(packageName) {
|
|
88
43
|
try {
|
|
89
44
|
const path = import.meta.resolve(`${packageName}/package.json`);
|
|
@@ -95,7 +50,7 @@ function resolvePackageJson(packageName) {
|
|
|
95
50
|
}
|
|
96
51
|
let cachedVersions;
|
|
97
52
|
export function installedUpstreamVersions() {
|
|
98
|
-
// Package manifests do not change
|
|
53
|
+
// Package manifests do not change during one verification process.
|
|
99
54
|
// Frozen so callers can
|
|
100
55
|
// never corrupt the shared cache.
|
|
101
56
|
if (cachedVersions !== undefined)
|
|
@@ -107,7 +62,7 @@ export function installedUpstreamVersions() {
|
|
|
107
62
|
if (path !== undefined) {
|
|
108
63
|
try {
|
|
109
64
|
const manifest = JSON.parse(readFileSync(path, 'utf8'));
|
|
110
|
-
version = manifest.version;
|
|
65
|
+
version = typeof manifest.version === 'string' ? manifest.version : undefined;
|
|
111
66
|
}
|
|
112
67
|
catch {
|
|
113
68
|
version = undefined;
|
|
@@ -118,87 +73,18 @@ export function installedUpstreamVersions() {
|
|
|
118
73
|
cachedVersions = Object.freeze(result);
|
|
119
74
|
return cachedVersions;
|
|
120
75
|
}
|
|
121
|
-
/**
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
for (const packageName of UPSTREAM_BLESSED_PACKAGES) {
|
|
130
|
-
if (UPSTREAM_FRAMEWORK_MAJORS[packageName] !== undefined)
|
|
131
|
-
continue;
|
|
132
|
-
const version = installedVersions[packageName];
|
|
133
|
-
if (version !== undefined && parseUpstreamVersion(version) !== undefined)
|
|
134
|
-
lines.add(version);
|
|
135
|
-
}
|
|
136
|
-
return [...lines].sort((a, b) => compareVersions(parseUpstreamVersion(a), parseUpstreamVersion(b)));
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Report every blessed package whose installed version is NOT one of the
|
|
140
|
-
* validated release lines. Empty array = the running install matches the
|
|
141
|
-
* contract.
|
|
142
|
-
*/
|
|
143
|
-
export function upstreamDrift(installedVersions = installedUpstreamVersions()) {
|
|
144
|
-
const validated = new Set(UPSTREAM_VALIDATED_VERSIONS);
|
|
145
|
-
const drift = [];
|
|
146
|
-
for (const [packageName, installed] of Object.entries(installedVersions)) {
|
|
147
|
-
const expected = UPSTREAM_BLESSED_PACKAGES.includes(packageName);
|
|
148
|
-
if (!expected)
|
|
149
|
-
continue;
|
|
150
|
-
let matches;
|
|
151
|
-
const frameworkMajor = UPSTREAM_FRAMEWORK_MAJORS[packageName];
|
|
152
|
-
if (frameworkMajor !== undefined) {
|
|
153
|
-
const installedMajor = Number((installed ?? '').split('.')[0]);
|
|
154
|
-
matches = installedMajor === frameworkMajor;
|
|
155
|
-
}
|
|
156
|
-
else {
|
|
157
|
-
matches = installed !== undefined && validated.has(installed);
|
|
76
|
+
/** Require the development dependency surface without restricting DSH releases. */
|
|
77
|
+
export function upstreamDependencyIssues(installedVersions = installedUpstreamVersions()) {
|
|
78
|
+
const issues = [];
|
|
79
|
+
for (const name of UPSTREAM_BLESSED_PACKAGES) {
|
|
80
|
+
const installed = installedVersions[name];
|
|
81
|
+
const major = UPSTREAM_FRAMEWORK_MAJORS[name];
|
|
82
|
+
if (typeof installed !== 'string' || installed.trim() === '') {
|
|
83
|
+
issues.push({ package: name, installed, reason: 'package manifest or version is missing' });
|
|
158
84
|
}
|
|
159
|
-
if (!
|
|
160
|
-
|
|
161
|
-
package: packageName,
|
|
162
|
-
installed,
|
|
163
|
-
validated: frameworkMajor !== undefined ? `major ${frameworkMajor}` : UPSTREAM_VALIDATED_LABEL,
|
|
164
|
-
});
|
|
85
|
+
else if (major !== undefined && !installed.startsWith(`${major}.`)) {
|
|
86
|
+
issues.push({ package: name, installed, reason: `requires framework major ${major}` });
|
|
165
87
|
}
|
|
166
88
|
}
|
|
167
|
-
return
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* Collapse {@link upstreamDrift} into a single summary for the boot notice:
|
|
171
|
-
* undefined when the install matches the contract. Only harness prerelease packages
|
|
172
|
-
* decide newer/older/mixed; a framework-only drift (e.g. a cordis major
|
|
173
|
-
* bump) reports `broken`, since its version line is not comparable.
|
|
174
|
-
*/
|
|
175
|
-
export function upstreamDriftSummary(installedVersions = installedUpstreamVersions()) {
|
|
176
|
-
const installedLines = installedUpstreamLines(installedVersions);
|
|
177
|
-
if (installedLines.length > 1)
|
|
178
|
-
return { kind: 'mixed', versions: installedLines };
|
|
179
|
-
const drift = upstreamDrift(installedVersions).filter(entry => entry.installed !== undefined || !OPTIONAL_RUNTIME_PACKAGES.has(entry.package));
|
|
180
|
-
if (drift.length === 0)
|
|
181
|
-
return undefined;
|
|
182
|
-
const harness = drift.filter(entry => UPSTREAM_FRAMEWORK_MAJORS[entry.package] === undefined);
|
|
183
|
-
const versions = [...new Set(drift.map(entry => entry.installed ?? 'missing'))];
|
|
184
|
-
if (harness.some(entry => entry.installed === undefined)) {
|
|
185
|
-
return { kind: 'broken', versions };
|
|
186
|
-
}
|
|
187
|
-
const harnessVersions = [...new Set(harness.map(entry => entry.installed))];
|
|
188
|
-
if (harnessVersions.length > 1) {
|
|
189
|
-
return { kind: 'mixed', versions };
|
|
190
|
-
}
|
|
191
|
-
const installed = parseUpstreamVersion(harnessVersions[0] ?? '');
|
|
192
|
-
const validated = parseUpstreamVersion(UPSTREAM_VALIDATED_VERSION);
|
|
193
|
-
if (installed === undefined) {
|
|
194
|
-
return { kind: 'broken', versions };
|
|
195
|
-
}
|
|
196
|
-
const order = compareVersions(installed, validated);
|
|
197
|
-
if (order > 0)
|
|
198
|
-
return { kind: 'newer', versions };
|
|
199
|
-
if (order < 0)
|
|
200
|
-
return { kind: 'older', versions };
|
|
201
|
-
// Identical to the primary validated version — cannot happen (it would
|
|
202
|
-
// not be drift); report broken rather than staying silent.
|
|
203
|
-
return { kind: 'broken', versions };
|
|
89
|
+
return issues;
|
|
204
90
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* dsh-tui plugin entry. The TUI implementation lives in `./plugin.
|
|
2
|
+
* dsh-tui plugin entry. The TUI implementation lives in `./plugin.ts` (its
|
|
3
3
|
* render path is JSX); this module owns the plugin surface (`name`/`inject`/
|
|
4
4
|
* `Config`/`apply`) at the package entry module and delegates
|
|
5
5
|
* `apply` through a dynamic import so entry-scanning tooling and the Loader
|
|
@@ -142,7 +142,7 @@ export interface Config {
|
|
|
142
142
|
export declare const Config: Schema<Config, RuntimeConfig<Config>>;
|
|
143
143
|
/**
|
|
144
144
|
* Start the interactive TUI front door, delegating to the JSX implementation
|
|
145
|
-
* in `./plugin.
|
|
145
|
+
* in `./plugin.ts` (see its module doc for the full contract).
|
|
146
146
|
* @param ctx - the plugin context.
|
|
147
147
|
* @param config - the validated dsh-tui configuration.
|
|
148
148
|
* @returns a promise settling when the Loader entry has scheduled its runtime.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -86,26 +86,20 @@ export const Config = editableConfig(Schema.object({
|
|
|
86
86
|
]);
|
|
87
87
|
/**
|
|
88
88
|
* Start the interactive TUI front door, delegating to the JSX implementation
|
|
89
|
-
* in `./plugin.
|
|
89
|
+
* in `./plugin.ts` (see its module doc for the full contract).
|
|
90
90
|
* @param ctx - the plugin context.
|
|
91
91
|
* @param config - the validated dsh-tui configuration.
|
|
92
92
|
* @returns a promise settling when the Loader entry has scheduled its runtime.
|
|
93
93
|
*/
|
|
94
94
|
export async function apply(ctx, config) {
|
|
95
|
-
// Upstream drift is NO LONGER spammed to stderr here: per-package
|
|
96
|
-
// console.warn lines interleave with the TUI frame redraw and arrive
|
|
97
|
-
// garbled (typewriter animation repaints over them). The merged,
|
|
98
|
-
// natural-language notice now renders in the logo header under the
|
|
99
|
-
// startup tip (LogoV2 ← upstreamDriftSummary); CI keeps the hard gate
|
|
100
|
-
// via scripts/verify-upstream-contract.ts.
|
|
101
95
|
const { apply: tuiApply, handleStartupError } = await import('./plugin.js');
|
|
102
96
|
let disposed = false;
|
|
103
97
|
ctx.effect(() => () => { disposed = true; });
|
|
104
|
-
//
|
|
105
|
-
//
|
|
106
|
-
//
|
|
107
|
-
|
|
108
|
-
void
|
|
98
|
+
// Entry injection already orders the required Host services. Waiting on the
|
|
99
|
+
// whole Loader here can capture this entry's own activation and never start
|
|
100
|
+
// the frontend. Wait for our owner to settle, then start its Cordis-owned
|
|
101
|
+
// child; the original row continues to own volatile Config.
|
|
102
|
+
void ctx.fiber.await().then(() => {
|
|
109
103
|
if (disposed)
|
|
110
104
|
return;
|
|
111
105
|
return ctx.plugin({
|
package/lib/types/i18n.d.ts
CHANGED
|
@@ -2164,22 +2164,6 @@ declare const dict: {
|
|
|
2164
2164
|
readonly zh: "更多技巧";
|
|
2165
2165
|
readonly en: "more tips";
|
|
2166
2166
|
};
|
|
2167
|
-
readonly 'logo-drift-newer': {
|
|
2168
|
-
readonly zh: "dsh 引擎为 {{installed}},比本界面验证过的 {{validated}} 新,可能出现兼容问题;求稳可执行 npm i -g @deepseek-ai/dsh@{{primary}} 降级,或等待 dsh-tui 适配新版。";
|
|
2169
|
-
readonly en: "The dsh engine ({{installed}}) is newer than the {{validated}} this UI is validated against, so issues are possible; downgrade via npm i -g @deepseek-ai/dsh@{{primary}} for stability, or wait for a dsh-tui update.";
|
|
2170
|
-
};
|
|
2171
|
-
readonly 'logo-drift-older': {
|
|
2172
|
-
readonly zh: "dsh 引擎为 {{installed}},低于本界面验证过的 {{validated}},部分功能可能不可用;建议执行 npm i -g @deepseek-ai/dsh@{{primary}} 升级。";
|
|
2173
|
-
readonly en: "The dsh engine ({{installed}}) is older than the {{validated}} this UI is validated against; some features may be missing. Upgrade via npm i -g @deepseek-ai/dsh@{{primary}}.";
|
|
2174
|
-
};
|
|
2175
|
-
readonly 'logo-drift-mixed': {
|
|
2176
|
-
readonly zh: "检测到 dsh 引擎多版本混装({{installed}}),容易出现奇怪问题;建议执行 npm i -g @deepseek-ai/dsh@{{primary}} 统一版本。";
|
|
2177
|
-
readonly en: "Mixed dsh engine versions detected ({{installed}}), which can cause odd behavior; unify them via npm i -g @deepseek-ai/dsh@{{primary}}.";
|
|
2178
|
-
};
|
|
2179
|
-
readonly 'logo-drift-broken': {
|
|
2180
|
-
readonly zh: "dsh 引擎版本异常({{installed}}),本界面验证过 {{validated}};建议执行 npm i -g @deepseek-ai/dsh@{{primary}} 重装。";
|
|
2181
|
-
readonly en: "Unexpected dsh engine versions ({{installed}}); this UI is validated against {{validated}}. Reinstall via npm i -g @deepseek-ai/dsh@{{primary}}.";
|
|
2182
|
-
};
|
|
2183
2167
|
readonly 'input-sent-after-turn': {
|
|
2184
2168
|
readonly zh: "已发送,当前回合结束后处理";
|
|
2185
2169
|
readonly en: "Sent, processed after the current turn";
|
package/lib/types/i18n.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/i18n.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAMH,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAI9B,+DAA+D;AAC/D,eAAO,MAAM,KAAK,uBAAwB,CAAA;AAE1C;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAE9D,QAAA,MAAM,IAAI
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/i18n.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAMH,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAI9B,+DAA+D;AAC/D,eAAO,MAAM,KAAK,uBAAwB,CAAA;AAE1C;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAE9D,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
package/lib/types/i18n.js
CHANGED
|
@@ -661,24 +661,6 @@ const dict = {
|
|
|
661
661
|
'logo-tagline': { zh: '探索未至之境!', en: 'Explore the uncharted!' },
|
|
662
662
|
'logo-tip-prefix': { zh: '提示:', en: 'Tip: ' },
|
|
663
663
|
'logo-tip-more': { zh: '更多技巧', en: 'more tips' },
|
|
664
|
-
// Upstream-drift notice (merged one-liner under the tip; copy explains
|
|
665
|
-
// the problem AND the fix — the command pins the validated line).
|
|
666
|
-
'logo-drift-newer': {
|
|
667
|
-
zh: 'dsh 引擎为 {{installed}},比本界面验证过的 {{validated}} 新,可能出现兼容问题;求稳可执行 npm i -g @deepseek-ai/dsh@{{primary}} 降级,或等待 dsh-tui 适配新版。',
|
|
668
|
-
en: 'The dsh engine ({{installed}}) is newer than the {{validated}} this UI is validated against, so issues are possible; downgrade via npm i -g @deepseek-ai/dsh@{{primary}} for stability, or wait for a dsh-tui update.',
|
|
669
|
-
},
|
|
670
|
-
'logo-drift-older': {
|
|
671
|
-
zh: 'dsh 引擎为 {{installed}},低于本界面验证过的 {{validated}},部分功能可能不可用;建议执行 npm i -g @deepseek-ai/dsh@{{primary}} 升级。',
|
|
672
|
-
en: 'The dsh engine ({{installed}}) is older than the {{validated}} this UI is validated against; some features may be missing. Upgrade via npm i -g @deepseek-ai/dsh@{{primary}}.',
|
|
673
|
-
},
|
|
674
|
-
'logo-drift-mixed': {
|
|
675
|
-
zh: '检测到 dsh 引擎多版本混装({{installed}}),容易出现奇怪问题;建议执行 npm i -g @deepseek-ai/dsh@{{primary}} 统一版本。',
|
|
676
|
-
en: 'Mixed dsh engine versions detected ({{installed}}), which can cause odd behavior; unify them via npm i -g @deepseek-ai/dsh@{{primary}}.',
|
|
677
|
-
},
|
|
678
|
-
'logo-drift-broken': {
|
|
679
|
-
zh: 'dsh 引擎版本异常({{installed}}),本界面验证过 {{validated}};建议执行 npm i -g @deepseek-ai/dsh@{{primary}} 重装。',
|
|
680
|
-
en: 'Unexpected dsh engine versions ({{installed}}); this UI is validated against {{validated}}. Reinstall via npm i -g @deepseek-ai/dsh@{{primary}}.',
|
|
681
|
-
},
|
|
682
664
|
// ── components/PromptInput.tsx ──────────────────────────────────────
|
|
683
665
|
'input-sent-after-turn': { zh: '已发送,当前回合结束后处理', en: 'Sent, processed after the current turn' },
|
|
684
666
|
'input-injected': { zh: '已从编辑器发送', en: 'Sent from editor' },
|
package/lib/types/update.d.ts
CHANGED
|
@@ -200,8 +200,8 @@ export interface ExtractedTreeCheck {
|
|
|
200
200
|
* link; `../` members are also refused by tar/unzip themselves, but the
|
|
201
201
|
* prefix check here keeps the guard local and future-proof against a
|
|
202
202
|
* different extractor. The node-tar strict equivalent (preservePaths: false +
|
|
203
|
-
* strict) is in standalone/entry.
|
|
204
|
-
* entry.
|
|
203
|
+
* strict) is in standalone/entry.cjs — this covers the system-tool paths
|
|
204
|
+
* entry.cjs cannot. Symlinks are rejected outright (defense in depth: a
|
|
205
205
|
* "harmless" in-tree link is still indistinguishable from a hostile one at
|
|
206
206
|
* this layer), as are fifo/socket/device entries — and hard links (red-team
|
|
207
207
|
* review): GNU tar refusing external linkname targets is extractor behavior,
|
package/lib/types/update.js
CHANGED
|
@@ -442,8 +442,8 @@ function windowsTarAvailable() {
|
|
|
442
442
|
* link; `../` members are also refused by tar/unzip themselves, but the
|
|
443
443
|
* prefix check here keeps the guard local and future-proof against a
|
|
444
444
|
* different extractor. The node-tar strict equivalent (preservePaths: false +
|
|
445
|
-
* strict) is in standalone/entry.
|
|
446
|
-
* entry.
|
|
445
|
+
* strict) is in standalone/entry.cjs — this covers the system-tool paths
|
|
446
|
+
* entry.cjs cannot. Symlinks are rejected outright (defense in depth: a
|
|
447
447
|
* "harmless" in-tree link is still indistinguishable from a hostile one at
|
|
448
448
|
* this layer), as are fifo/socket/device entries — and hard links (red-team
|
|
449
449
|
* review): GNU tar refusing external linkname targets is extractor behavior,
|
|
@@ -50,11 +50,11 @@
|
|
|
50
50
|
},
|
|
51
51
|
"peerDependencies": {
|
|
52
52
|
"@deepseek-ai/cordis": "^4.0.1",
|
|
53
|
-
"@deepseek-ai/dsh-attachment": "
|
|
54
|
-
"@deepseek-ai/dsh-commands": "
|
|
55
|
-
"@deepseek-ai/dsh-llm": "
|
|
56
|
-
"@deepseek-ai/dsh-llm-pi-ai": "
|
|
57
|
-
"@deepseek-ai/dsh-user-questions": "
|
|
53
|
+
"@deepseek-ai/dsh-attachment": "*",
|
|
54
|
+
"@deepseek-ai/dsh-commands": "*",
|
|
55
|
+
"@deepseek-ai/dsh-llm": "*",
|
|
56
|
+
"@deepseek-ai/dsh-llm-pi-ai": "*",
|
|
57
|
+
"@deepseek-ai/dsh-user-questions": "*",
|
|
58
58
|
"@deepseek-ai/schemastery": "^3.18.1"
|
|
59
59
|
},
|
|
60
60
|
"peerDependenciesMeta": {
|
|
@@ -63,15 +63,30 @@
|
|
|
63
63
|
},
|
|
64
64
|
"@deepseek-ai/dsh-llm-pi-ai": {
|
|
65
65
|
"optional": true
|
|
66
|
+
},
|
|
67
|
+
"@deepseek-ai/cordis": {
|
|
68
|
+
"optional": true
|
|
69
|
+
},
|
|
70
|
+
"@deepseek-ai/dsh-commands": {
|
|
71
|
+
"optional": true
|
|
72
|
+
},
|
|
73
|
+
"@deepseek-ai/dsh-llm": {
|
|
74
|
+
"optional": true
|
|
75
|
+
},
|
|
76
|
+
"@deepseek-ai/dsh-user-questions": {
|
|
77
|
+
"optional": true
|
|
78
|
+
},
|
|
79
|
+
"@deepseek-ai/schemastery": {
|
|
80
|
+
"optional": true
|
|
66
81
|
}
|
|
67
82
|
},
|
|
68
83
|
"devDependencies": {
|
|
69
84
|
"@deepseek-ai/cordis": "^4.0.1",
|
|
70
|
-
"@deepseek-ai/dsh-attachment": "
|
|
71
|
-
"@deepseek-ai/dsh-commands": "
|
|
72
|
-
"@deepseek-ai/dsh-llm": "
|
|
73
|
-
"@deepseek-ai/dsh-llm-pi-ai": "
|
|
74
|
-
"@deepseek-ai/dsh-user-questions": "
|
|
85
|
+
"@deepseek-ai/dsh-attachment": "alpha",
|
|
86
|
+
"@deepseek-ai/dsh-commands": "alpha",
|
|
87
|
+
"@deepseek-ai/dsh-llm": "alpha",
|
|
88
|
+
"@deepseek-ai/dsh-llm-pi-ai": "alpha",
|
|
89
|
+
"@deepseek-ai/dsh-user-questions": "alpha",
|
|
75
90
|
"@deepseek-ai/schemastery": "^3.18.1",
|
|
76
91
|
"@types/node": "^22.0.0",
|
|
77
92
|
"typescript": "^6.0.3",
|
|
@@ -82,6 +97,9 @@
|
|
|
82
97
|
"@ai-sdk/provider": "4.0.21",
|
|
83
98
|
"esbuild": "0.28.2",
|
|
84
99
|
"zod": "4.1.8",
|
|
85
|
-
"tsx": "4.23.13"
|
|
100
|
+
"tsx": "4.23.13",
|
|
101
|
+
"@deepseek-ai/dsh-launch-environment": "alpha",
|
|
102
|
+
"@deepseek-ai/dsh-authorization": "alpha",
|
|
103
|
+
"@deepseek-ai/dsh-credentials": "alpha"
|
|
86
104
|
}
|
|
87
105
|
}
|
|
@@ -73,15 +73,15 @@
|
|
|
73
73
|
},
|
|
74
74
|
"peerDependencies": {
|
|
75
75
|
"@deepseek-ai/cordis": "^4.0.1",
|
|
76
|
-
"@deepseek-ai/dsh-agent": "
|
|
77
|
-
"@deepseek-ai/dsh-client-ui-conversation": "
|
|
78
|
-
"@deepseek-ai/dsh-client-ui-renderer": "
|
|
79
|
-
"@deepseek-ai/dsh-client-ui-session": "
|
|
80
|
-
"@deepseek-ai/dsh-client-ui-slots": "
|
|
81
|
-
"@deepseek-ai/dsh-invariants": "
|
|
82
|
-
"@deepseek-ai/dsh-session": "
|
|
83
|
-
"@deepseek-ai/dsh-session-projection": "
|
|
84
|
-
"@deepseek-ai/dsh-system-prompt": "
|
|
76
|
+
"@deepseek-ai/dsh-agent": "*",
|
|
77
|
+
"@deepseek-ai/dsh-client-ui-conversation": "*",
|
|
78
|
+
"@deepseek-ai/dsh-client-ui-renderer": "*",
|
|
79
|
+
"@deepseek-ai/dsh-client-ui-session": "*",
|
|
80
|
+
"@deepseek-ai/dsh-client-ui-slots": "*",
|
|
81
|
+
"@deepseek-ai/dsh-invariants": "*",
|
|
82
|
+
"@deepseek-ai/dsh-session": "*",
|
|
83
|
+
"@deepseek-ai/dsh-session-projection": "*",
|
|
84
|
+
"@deepseek-ai/dsh-system-prompt": "*",
|
|
85
85
|
"@deepseek-ai/schemastery": "^3.18.1",
|
|
86
86
|
"react": "^18.2.0"
|
|
87
87
|
},
|
|
@@ -103,6 +103,24 @@
|
|
|
103
103
|
},
|
|
104
104
|
"react": {
|
|
105
105
|
"optional": true
|
|
106
|
+
},
|
|
107
|
+
"@deepseek-ai/cordis": {
|
|
108
|
+
"optional": true
|
|
109
|
+
},
|
|
110
|
+
"@deepseek-ai/dsh-agent": {
|
|
111
|
+
"optional": true
|
|
112
|
+
},
|
|
113
|
+
"@deepseek-ai/dsh-invariants": {
|
|
114
|
+
"optional": true
|
|
115
|
+
},
|
|
116
|
+
"@deepseek-ai/dsh-session": {
|
|
117
|
+
"optional": true
|
|
118
|
+
},
|
|
119
|
+
"@deepseek-ai/dsh-system-prompt": {
|
|
120
|
+
"optional": true
|
|
121
|
+
},
|
|
122
|
+
"@deepseek-ai/schemastery": {
|
|
123
|
+
"optional": true
|
|
106
124
|
}
|
|
107
125
|
}
|
|
108
126
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@askdkc/dsh-cli",
|
|
3
|
-
"version": "0.13.
|
|
3
|
+
"version": "0.13.5",
|
|
4
4
|
"description": "Interactive terminal interface for DeepSeek Harness agents, sessions and tools.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"dsh",
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
"tui": "node --import tsx/esm scripts/run.ts",
|
|
129
129
|
"smoke": "node --import tsx/esm scripts/smoke.tsx",
|
|
130
130
|
"verify:build": "node scripts/run-verify-build.mjs",
|
|
131
|
-
"verify:build:inner": "npm run verify:boundary && npm run verify:contract && npm run verify:herdr && npm run verify:manifest-deps && npm run verify:patch-surface && npm run verify:web-coexistence && npm run verify:plugin-spec && npm run verify:plugin-grants && npm run verify:plugin-storage && npm run verify:plugin-messages && npm run verify:plugin-ledger && npm run verify:plugin-commands && npm run verify:plugin-negotiation && npm run verify:plugin-lifecycle && npm run verify:runtime-themes && npm run verify:packaged-presets && npm run verify:history-search && npm run verify:initial-prompt && npm run verify:minimal-preset-tools && npm run verify:liangshen-bootstrap && npm run verify:inject-channel && npm run verify:wheel-selection && npm run verify:win32-protocol && npm run verify:selection-resize && npm run verify:selection-stale-guard && npm run verify:liangshen-instruction-hint && npm run verify:pointer-events && npm run verify:terminal-images && npm run verify:overlay-occlusion && npm run verify:transcript-images && npm run verify:image-preview && npm run verify:backdrop-dim && npm run verify:composer-image-tokens && npm run verify:image-downsample && npm run verify:chat-overlay && npm run verify:i18n && npm run verify:approval-visibility && npm run verify:adapter-skeleton && npm run verify:adapter-ports && npm run verify:adapter-effect-class && npm run verify:adapter-shadow && npm run verify:adapter-descriptor && npm run verify:adapter-upstream-driver && npm run verify:adapter-kernel-runtime && npm run verify:adapter-live-probes && npm run verify:adapter-slices && npm run verify:adapter-channel && npm run verify:binding-transaction && npm run verify:session-extraction && npm run verify:rewind-edit && npm run verify:model-mode-workspace-extraction && npm run verify:model-lifecycle-fences && npm run verify:reports-metadata && npm run verify:background-extraction && npm run verify:plugin-catalog-extraction && npm run verify:session-reset && npm run verify:channel-ui && npm run verify:adapter-detection && npm run verify:adapter-replay-harness && npm run verify:adapter-channel-conformance && npm run verify:protocol-single-source && npm run verify:compat-removal && npm run verify:terminal-images-sixel && npm run verify:sixel-transcript && npm run verify:migrate-sessions && npm run verify:fixed-window && npm run verify:source-hygiene && npm run verify:renderer-primitives && npm run verify:product-migration && npm run verify:spinner-identity && npm run verify:table-layout && npm run verify:mermaid-diagram && npm run verify:btw && npm run verify:session-mounts && npm run verify:progress-language && npm run verify:response-language",
|
|
131
|
+
"verify:build:inner": "npm run verify:boundary && npm run verify:contract && npm run verify:tui-startup-lifecycle && npm run verify:herdr && npm run verify:manifest-deps && npm run verify:patch-surface && npm run verify:patch-surface-regression && npm run verify:web-coexistence && npm run verify:plugin-spec && npm run verify:plugin-grants && npm run verify:plugin-storage && npm run verify:plugin-messages && npm run verify:plugin-ledger && npm run verify:plugin-commands && npm run verify:plugin-negotiation && npm run verify:plugin-lifecycle && npm run verify:runtime-themes && npm run verify:packaged-presets && npm run verify:history-search && npm run verify:initial-prompt && npm run verify:minimal-preset-tools && npm run verify:liangshen-bootstrap && npm run verify:inject-channel && npm run verify:wheel-selection && npm run verify:win32-protocol && npm run verify:selection-resize && npm run verify:selection-stale-guard && npm run verify:liangshen-instruction-hint && npm run verify:pointer-events && npm run verify:terminal-images && npm run verify:overlay-occlusion && npm run verify:transcript-images && npm run verify:image-preview && npm run verify:backdrop-dim && npm run verify:composer-image-tokens && npm run verify:image-downsample && npm run verify:chat-overlay && npm run verify:i18n && npm run verify:approval-visibility && npm run verify:adapter-skeleton && npm run verify:adapter-ports && npm run verify:adapter-effect-class && npm run verify:adapter-shadow && npm run verify:adapter-descriptor && npm run verify:adapter-upstream-driver && npm run verify:adapter-kernel-runtime && npm run verify:adapter-live-probes && npm run verify:adapter-slices && npm run verify:adapter-channel && npm run verify:binding-transaction && npm run verify:session-extraction && npm run verify:rewind-edit && npm run verify:model-mode-workspace-extraction && npm run verify:model-lifecycle-fences && npm run verify:reports-metadata && npm run verify:background-extraction && npm run verify:plugin-catalog-extraction && npm run verify:session-reset && npm run verify:channel-ui && npm run verify:adapter-detection && npm run verify:adapter-replay-harness && npm run verify:adapter-channel-conformance && npm run verify:protocol-single-source && npm run verify:compat-removal && npm run verify:terminal-images-sixel && npm run verify:sixel-transcript && npm run verify:migrate-sessions && npm run verify:fixed-window && npm run verify:source-hygiene && npm run verify:renderer-primitives && npm run verify:product-migration && npm run verify:spinner-identity && npm run verify:table-layout && npm run verify:mermaid-diagram && npm run verify:btw && npm run verify:session-mounts && npm run verify:progress-language && npm run verify:response-language",
|
|
132
132
|
"verify:boundary": "node --import tsx/esm scripts/verify-adapter-boundary.ts",
|
|
133
133
|
"verify:i18n": "node --import tsx/esm scripts/verify-i18n.ts",
|
|
134
134
|
"verify:contract": "node --import tsx/esm scripts/verify-upstream-contract.ts",
|
|
@@ -136,6 +136,8 @@
|
|
|
136
136
|
"verify:manifest-deps": "node --import tsx/esm scripts/verify-manifest-deps.ts",
|
|
137
137
|
"verify:patch-surface": "node --import tsx/esm scripts/verify-patch-surface.ts",
|
|
138
138
|
"verify:fixed-window": "node scripts/verify-fixed-window.mjs",
|
|
139
|
+
"verify:patch-surface-regression": "node scripts/verify-patch-surface-regression.mjs",
|
|
140
|
+
"verify:standalone-runtime": "node scripts/verify-standalone-runtime.mjs",
|
|
139
141
|
"verify:web-coexistence": "node scripts/verify-web-coexistence.mjs",
|
|
140
142
|
"verify:plugin-spec": "node --import tsx/esm scripts/verify-plugin-spec.ts",
|
|
141
143
|
"verify:plugin-grants": "node --import tsx/esm scripts/verify-plugin-grants.ts",
|
|
@@ -233,38 +235,40 @@
|
|
|
233
235
|
"verify:response-language": "node --import tsx/esm scripts/verify-response-language.mjs",
|
|
234
236
|
"verify:progress-language": "node --import tsx/esm scripts/verify-progress-language.mjs",
|
|
235
237
|
"verify:opencode-profile": "node scripts/verify-opencode-profile.mjs",
|
|
236
|
-
"verify:upstream-source": "node scripts/verify-upstream-source.mjs"
|
|
238
|
+
"verify:upstream-source": "node scripts/verify-upstream-source.mjs",
|
|
239
|
+
"update:dsh": "pnpm update '@deepseek-ai/dsh-*'",
|
|
240
|
+
"verify:tui-startup-lifecycle": "node --import tsx/esm scripts/verify-tui-startup-lifecycle.mjs"
|
|
237
241
|
},
|
|
238
242
|
"peerDependencies": {
|
|
239
243
|
"@deepseek-ai/cordis": "^4.0.1",
|
|
240
|
-
"@deepseek-ai/dsh-agent": "
|
|
241
|
-
"@deepseek-ai/dsh-agent-instructions": "
|
|
242
|
-
"@deepseek-ai/dsh-agent-preset-registry": "
|
|
243
|
-
"@deepseek-ai/dsh-atomic-write": "
|
|
244
|
-
"@deepseek-ai/dsh-commands": "
|
|
245
|
-
"@deepseek-ai/dsh-cordis-host-runner": "
|
|
246
|
-
"@deepseek-ai/dsh-invariants": "
|
|
247
|
-
"@deepseek-ai/dsh-llm": "
|
|
248
|
-
"@deepseek-ai/dsh-llm-pi-ai": "
|
|
249
|
-
"@deepseek-ai/dsh-persona": "
|
|
250
|
-
"@deepseek-ai/dsh-ptc-runtime-node": "
|
|
251
|
-
"@deepseek-ai/dsh-session": "
|
|
252
|
-
"@deepseek-ai/dsh-settings": "
|
|
253
|
-
"@deepseek-ai/dsh-skill": "
|
|
254
|
-
"@deepseek-ai/dsh-storage": "
|
|
255
|
-
"@deepseek-ai/dsh-storage-domain": "
|
|
256
|
-
"@deepseek-ai/dsh-storage-json": "
|
|
257
|
-
"@deepseek-ai/dsh-system-prompt": "
|
|
258
|
-
"@deepseek-ai/dsh-terminal": "
|
|
259
|
-
"@deepseek-ai/dsh-terminal-bash": "
|
|
260
|
-
"@deepseek-ai/dsh-tool-ask-user": "
|
|
261
|
-
"@deepseek-ai/dsh-tool-bash-persistent": "
|
|
262
|
-
"@deepseek-ai/dsh-tool-cordis": "
|
|
263
|
-
"@deepseek-ai/dsh-tool-subagent": "
|
|
264
|
-
"@deepseek-ai/dsh-user-approval": "
|
|
265
|
-
"@deepseek-ai/dsh-user-questions": "
|
|
266
|
-
"@deepseek-ai/dsh-web-app": "
|
|
267
|
-
"@deepseek-ai/dsh-workspace": "
|
|
244
|
+
"@deepseek-ai/dsh-agent": "*",
|
|
245
|
+
"@deepseek-ai/dsh-agent-instructions": "*",
|
|
246
|
+
"@deepseek-ai/dsh-agent-preset-registry": "*",
|
|
247
|
+
"@deepseek-ai/dsh-atomic-write": "*",
|
|
248
|
+
"@deepseek-ai/dsh-commands": "*",
|
|
249
|
+
"@deepseek-ai/dsh-cordis-host-runner": "*",
|
|
250
|
+
"@deepseek-ai/dsh-invariants": "*",
|
|
251
|
+
"@deepseek-ai/dsh-llm": "*",
|
|
252
|
+
"@deepseek-ai/dsh-llm-pi-ai": "*",
|
|
253
|
+
"@deepseek-ai/dsh-persona": "*",
|
|
254
|
+
"@deepseek-ai/dsh-ptc-runtime-node": "*",
|
|
255
|
+
"@deepseek-ai/dsh-session": "*",
|
|
256
|
+
"@deepseek-ai/dsh-settings": "*",
|
|
257
|
+
"@deepseek-ai/dsh-skill": "*",
|
|
258
|
+
"@deepseek-ai/dsh-storage": "*",
|
|
259
|
+
"@deepseek-ai/dsh-storage-domain": "*",
|
|
260
|
+
"@deepseek-ai/dsh-storage-json": "*",
|
|
261
|
+
"@deepseek-ai/dsh-system-prompt": "*",
|
|
262
|
+
"@deepseek-ai/dsh-terminal": "*",
|
|
263
|
+
"@deepseek-ai/dsh-terminal-bash": "*",
|
|
264
|
+
"@deepseek-ai/dsh-tool-ask-user": "*",
|
|
265
|
+
"@deepseek-ai/dsh-tool-bash-persistent": "*",
|
|
266
|
+
"@deepseek-ai/dsh-tool-cordis": "*",
|
|
267
|
+
"@deepseek-ai/dsh-tool-subagent": "*",
|
|
268
|
+
"@deepseek-ai/dsh-user-approval": "*",
|
|
269
|
+
"@deepseek-ai/dsh-user-questions": "*",
|
|
270
|
+
"@deepseek-ai/dsh-web-app": "*",
|
|
271
|
+
"@deepseek-ai/dsh-workspace": "*",
|
|
268
272
|
"@deepseek-ai/schemastery": "^3.18.1"
|
|
269
273
|
},
|
|
270
274
|
"peerDependenciesMeta": {
|
|
@@ -419,69 +423,69 @@
|
|
|
419
423
|
"@deepseek-ai/cordis-plugin-loader": "^1.0.5",
|
|
420
424
|
"@deepseek-ai/cordis-plugin-timer": "^1.1.6",
|
|
421
425
|
"@deepseek-ai/cosmokit": "^1.8.5",
|
|
422
|
-
"@deepseek-ai/dsh-agent": "
|
|
423
|
-
"@deepseek-ai/dsh-agent-instructions": "
|
|
424
|
-
"@deepseek-ai/dsh-agent-loop": "
|
|
425
|
-
"@deepseek-ai/dsh-agent-preset-registry": "
|
|
426
|
-
"@deepseek-ai/dsh-atomic-write": "
|
|
427
|
-
"@deepseek-ai/dsh-attachment": "
|
|
428
|
-
"@deepseek-ai/dsh-brand": "
|
|
429
|
-
"@deepseek-ai/dsh-command-compact": "
|
|
430
|
-
"@deepseek-ai/dsh-commands": "
|
|
431
|
-
"@deepseek-ai/dsh-compaction-basic": "
|
|
432
|
-
"@deepseek-ai/dsh-compaction-tool-result-pruner": "
|
|
433
|
-
"@deepseek-ai/dsh-cordis-host-runner": "
|
|
434
|
-
"@deepseek-ai/dsh-fs": "
|
|
435
|
-
"@deepseek-ai/dsh-fs-local": "
|
|
436
|
-
"@deepseek-ai/dsh-home-paths": "
|
|
437
|
-
"@deepseek-ai/dsh-invariants": "
|
|
438
|
-
"@deepseek-ai/dsh-llm": "
|
|
439
|
-
"@deepseek-ai/dsh-llm-pi-ai": "
|
|
440
|
-
"@deepseek-ai/dsh-persona": "
|
|
441
|
-
"@deepseek-ai/dsh-plan-mode": "
|
|
442
|
-
"@deepseek-ai/dsh-ptc-runtime": "
|
|
443
|
-
"@deepseek-ai/dsh-ptc-runtime-node": "
|
|
444
|
-
"@deepseek-ai/dsh-sandbox": "
|
|
445
|
-
"@deepseek-ai/dsh-sandbox-policy": "
|
|
446
|
-
"@deepseek-ai/dsh-scope": "
|
|
447
|
-
"@deepseek-ai/dsh-session": "
|
|
448
|
-
"@deepseek-ai/dsh-session-format-catalog": "
|
|
449
|
-
"@deepseek-ai/dsh-session-format-v3-to-v4": "
|
|
450
|
-
"@deepseek-ai/dsh-session-persistence": "
|
|
451
|
-
"@deepseek-ai/dsh-session-persistence-jsonl": "
|
|
452
|
-
"@deepseek-ai/dsh-session-projection": "
|
|
453
|
-
"@deepseek-ai/dsh-settings": "
|
|
454
|
-
"@deepseek-ai/dsh-skill": "
|
|
455
|
-
"@deepseek-ai/dsh-skill-filesystem": "
|
|
456
|
-
"@deepseek-ai/dsh-storage": "
|
|
457
|
-
"@deepseek-ai/dsh-storage-domain": "
|
|
458
|
-
"@deepseek-ai/dsh-storage-json": "
|
|
459
|
-
"@deepseek-ai/dsh-subprocess": "
|
|
460
|
-
"@deepseek-ai/dsh-system-prompt": "
|
|
461
|
-
"@deepseek-ai/dsh-terminal": "
|
|
462
|
-
"@deepseek-ai/dsh-terminal-bash": "
|
|
463
|
-
"@deepseek-ai/dsh-timeout": "
|
|
464
|
-
"@deepseek-ai/dsh-tool-ask-user": "
|
|
465
|
-
"@deepseek-ai/dsh-tool-bash-persistent": "
|
|
466
|
-
"@deepseek-ai/dsh-tool-cordis": "
|
|
467
|
-
"@deepseek-ai/dsh-tool-fs": "
|
|
468
|
-
"@deepseek-ai/dsh-tool-fs-search": "
|
|
469
|
-
"@deepseek-ai/dsh-tool-goal": "
|
|
470
|
-
"@deepseek-ai/dsh-tool-jobs": "
|
|
471
|
-
"@deepseek-ai/dsh-tool-ralph": "
|
|
472
|
-
"@deepseek-ai/dsh-tool-str-replace-editor": "
|
|
473
|
-
"@deepseek-ai/dsh-tool-subagent": "
|
|
474
|
-
"@deepseek-ai/dsh-tool-subagent-control": "
|
|
475
|
-
"@deepseek-ai/dsh-tool-todo": "
|
|
476
|
-
"@deepseek-ai/dsh-tool-web": "
|
|
477
|
-
"@deepseek-ai/dsh-tool-workflow": "
|
|
478
|
-
"@deepseek-ai/dsh-tools": "
|
|
479
|
-
"@deepseek-ai/dsh-typert-protocol": "
|
|
480
|
-
"@deepseek-ai/dsh-user-approval": "
|
|
481
|
-
"@deepseek-ai/dsh-user-questions": "
|
|
482
|
-
"@deepseek-ai/dsh-web-app": "
|
|
483
|
-
"@deepseek-ai/dsh-workflow-ptc": "
|
|
484
|
-
"@deepseek-ai/dsh-workspace": "
|
|
426
|
+
"@deepseek-ai/dsh-agent": "alpha",
|
|
427
|
+
"@deepseek-ai/dsh-agent-instructions": "alpha",
|
|
428
|
+
"@deepseek-ai/dsh-agent-loop": "alpha",
|
|
429
|
+
"@deepseek-ai/dsh-agent-preset-registry": "alpha",
|
|
430
|
+
"@deepseek-ai/dsh-atomic-write": "alpha",
|
|
431
|
+
"@deepseek-ai/dsh-attachment": "alpha",
|
|
432
|
+
"@deepseek-ai/dsh-brand": "alpha",
|
|
433
|
+
"@deepseek-ai/dsh-command-compact": "alpha",
|
|
434
|
+
"@deepseek-ai/dsh-commands": "alpha",
|
|
435
|
+
"@deepseek-ai/dsh-compaction-basic": "alpha",
|
|
436
|
+
"@deepseek-ai/dsh-compaction-tool-result-pruner": "alpha",
|
|
437
|
+
"@deepseek-ai/dsh-cordis-host-runner": "alpha",
|
|
438
|
+
"@deepseek-ai/dsh-fs": "alpha",
|
|
439
|
+
"@deepseek-ai/dsh-fs-local": "alpha",
|
|
440
|
+
"@deepseek-ai/dsh-home-paths": "alpha",
|
|
441
|
+
"@deepseek-ai/dsh-invariants": "alpha",
|
|
442
|
+
"@deepseek-ai/dsh-llm": "alpha",
|
|
443
|
+
"@deepseek-ai/dsh-llm-pi-ai": "alpha",
|
|
444
|
+
"@deepseek-ai/dsh-persona": "alpha",
|
|
445
|
+
"@deepseek-ai/dsh-plan-mode": "alpha",
|
|
446
|
+
"@deepseek-ai/dsh-ptc-runtime": "alpha",
|
|
447
|
+
"@deepseek-ai/dsh-ptc-runtime-node": "alpha",
|
|
448
|
+
"@deepseek-ai/dsh-sandbox": "alpha",
|
|
449
|
+
"@deepseek-ai/dsh-sandbox-policy": "alpha",
|
|
450
|
+
"@deepseek-ai/dsh-scope": "alpha",
|
|
451
|
+
"@deepseek-ai/dsh-session": "alpha",
|
|
452
|
+
"@deepseek-ai/dsh-session-format-catalog": "alpha",
|
|
453
|
+
"@deepseek-ai/dsh-session-format-v3-to-v4": "alpha",
|
|
454
|
+
"@deepseek-ai/dsh-session-persistence": "alpha",
|
|
455
|
+
"@deepseek-ai/dsh-session-persistence-jsonl": "alpha",
|
|
456
|
+
"@deepseek-ai/dsh-session-projection": "alpha",
|
|
457
|
+
"@deepseek-ai/dsh-settings": "alpha",
|
|
458
|
+
"@deepseek-ai/dsh-skill": "alpha",
|
|
459
|
+
"@deepseek-ai/dsh-skill-filesystem": "alpha",
|
|
460
|
+
"@deepseek-ai/dsh-storage": "alpha",
|
|
461
|
+
"@deepseek-ai/dsh-storage-domain": "alpha",
|
|
462
|
+
"@deepseek-ai/dsh-storage-json": "alpha",
|
|
463
|
+
"@deepseek-ai/dsh-subprocess": "alpha",
|
|
464
|
+
"@deepseek-ai/dsh-system-prompt": "alpha",
|
|
465
|
+
"@deepseek-ai/dsh-terminal": "alpha",
|
|
466
|
+
"@deepseek-ai/dsh-terminal-bash": "alpha",
|
|
467
|
+
"@deepseek-ai/dsh-timeout": "alpha",
|
|
468
|
+
"@deepseek-ai/dsh-tool-ask-user": "alpha",
|
|
469
|
+
"@deepseek-ai/dsh-tool-bash-persistent": "alpha",
|
|
470
|
+
"@deepseek-ai/dsh-tool-cordis": "alpha",
|
|
471
|
+
"@deepseek-ai/dsh-tool-fs": "alpha",
|
|
472
|
+
"@deepseek-ai/dsh-tool-fs-search": "alpha",
|
|
473
|
+
"@deepseek-ai/dsh-tool-goal": "alpha",
|
|
474
|
+
"@deepseek-ai/dsh-tool-jobs": "alpha",
|
|
475
|
+
"@deepseek-ai/dsh-tool-ralph": "alpha",
|
|
476
|
+
"@deepseek-ai/dsh-tool-str-replace-editor": "alpha",
|
|
477
|
+
"@deepseek-ai/dsh-tool-subagent": "alpha",
|
|
478
|
+
"@deepseek-ai/dsh-tool-subagent-control": "alpha",
|
|
479
|
+
"@deepseek-ai/dsh-tool-todo": "alpha",
|
|
480
|
+
"@deepseek-ai/dsh-tool-web": "alpha",
|
|
481
|
+
"@deepseek-ai/dsh-tool-workflow": "alpha",
|
|
482
|
+
"@deepseek-ai/dsh-tools": "alpha",
|
|
483
|
+
"@deepseek-ai/dsh-typert-protocol": "alpha",
|
|
484
|
+
"@deepseek-ai/dsh-user-approval": "alpha",
|
|
485
|
+
"@deepseek-ai/dsh-user-questions": "alpha",
|
|
486
|
+
"@deepseek-ai/dsh-web-app": "alpha",
|
|
487
|
+
"@deepseek-ai/dsh-workflow-ptc": "alpha",
|
|
488
|
+
"@deepseek-ai/dsh-workspace": "alpha",
|
|
485
489
|
"@deepseek-ai/schemastery": "^3.18.1",
|
|
486
490
|
"@types/lodash-es": "^4.17.0",
|
|
487
491
|
"@types/node": "^26.4.0",
|
|
@@ -492,7 +496,15 @@
|
|
|
492
496
|
"esbuild": "0.28.2",
|
|
493
497
|
"tar": "^7.5.22",
|
|
494
498
|
"tsx": "^4.0.0",
|
|
495
|
-
"typescript": "^6.0.3"
|
|
499
|
+
"typescript": "^6.0.3",
|
|
500
|
+
"@deepseek-ai/dsh-client-ui-conversation": "alpha",
|
|
501
|
+
"@deepseek-ai/dsh-client-ui-renderer": "alpha",
|
|
502
|
+
"@deepseek-ai/dsh-client-ui-session": "alpha",
|
|
503
|
+
"@deepseek-ai/dsh-client-ui-slots": "alpha",
|
|
504
|
+
"@yao-pkg/pkg": "6.22.0",
|
|
505
|
+
"@deepseek-ai/dsh-launch-environment": "alpha",
|
|
506
|
+
"@deepseek-ai/dsh-authorization": "alpha",
|
|
507
|
+
"@deepseek-ai/dsh-credentials": "alpha"
|
|
496
508
|
},
|
|
497
509
|
"dsh": {
|
|
498
510
|
"bundle": {
|