@askdkc/dsh-cli 0.13.3 → 0.13.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
- the latest DSH release. The primary validated Harness version is `0.2.0-rc.2`;
46
- older supported versions are listed in [ADAPTER.md](ADAPTER.md).
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, drift, }: {
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;AACpD,OAAO,EAAoD,KAAK,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAaxH,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,EACf,KAAK,GACN,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;IACjB;2EACuE;IACvE,KAAK,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAA;CACpC,GAAG,KAAK,CAAC,SAAS,CAmOlB"}
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, tOr } from '../i18n.js';
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, drift, }) {
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') })] }), driftLine != null && (_jsxs(Text, { color: "warning", wrap: "wrap", children: ["\u26A0", ' ', tOr(`logo-drift-${driftLine.kind}`, `The dsh engine (${driftLine.versions.join(' / ')}) does not match the validated ${UPSTREAM_VALIDATED_VERSION}; reinstall via npm i -g @deepseek-ai/dsh@${UPSTREAM_VALIDATED_VERSION}.`, {
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
- /** Primary validated upstream line (newest). */
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 interface UpstreamDriftEntry {
5
+ export declare function installedUpstreamVersions(): Record<string, string | undefined>;
6
+ export interface UpstreamDependencyIssue {
13
7
  package: string;
14
8
  installed: string | undefined;
15
- validated: string;
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
- * Collapse {@link upstreamDrift} into a single summary for the boot notice:
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":"AAeA,gDAAgD;AAChD,eAAO,MAAM,0BAA0B,eAAe,CAAA;AAEtD,oEAAoE;AACpE,eAAO,MAAM,2BAA2B,yBAAwC,CAAA;AAEhF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAG5D,CAAA;AAED,qEAAqE;AACrE,eAAO,MAAM,yBAAyB,o8BA+B5B,CAAA;AAEV,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,SAAS,EAAE,MAAM,CAAA;CAClB;AASD,4EAA4E;AAC5E,MAAM,MAAM,yBAAyB,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,CAAA;AAE/D,4FAA4F;AAC5F,MAAM,MAAM,oBAAoB,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,yBAAyB,EAAE,MAAM,CAAC,CAAA;AAEvG,wEAAwE;AACxE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,oBAAoB,GAAG,SAAS,CAKlG;AAED,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,CAAC,EAAE,oBAAoB,EAAE,CAAC,EAAE,oBAAoB,GAAG,MAAM,CAQxF;AAED,wCAAwC;AACxC,eAAO,MAAM,wBAAwB,eAA6B,CAAA;AAYlE,wBAAgB,yBAAyB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAqB9E;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,iBAAiB,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAA+B,GAC5F,MAAM,EAAE,CAQV;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,iBAAiB,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAA+B,GAC5F,kBAAkB,EAAE,CAuBtB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAA;AAEtE,wEAAwE;AACxE,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,iBAAiB,CAAA;IACvB,sFAAsF;IACtF,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,iBAAiB,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAA+B,GAC5F,oBAAoB,GAAG,SAAS,CA0BlC"}
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
- /** Primary validated upstream line (newest). */
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 mid-process; memoize the boot diagnosis.
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
- * The distinct installed prerelease versions across the blessed harness
123
- * packages (framework packages excluded). One entry = coherent install;
124
- * several = a mixed tree, which the per-package drift check cannot see.
125
- * Empty when nothing (or no harness package) is installed.
126
- */
127
- export function installedUpstreamLines(installedVersions = installedUpstreamVersions()) {
128
- const lines = new Set();
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 (!matches) {
160
- drift.push({
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 drift;
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.tsx` (its
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.tsx` (see its module doc for the full contract).
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":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,MAAM,MAAM,0BAA0B,CAAA;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAA2C,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACzK,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC5E,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEzE,eAAO,MAAM,IAAI,YAAY,CAAA;AAU7B,eAAO,MAAM,MAAM,UAAa,CAAA;AAEhC;;;GAGG;AACH,MAAM,WAAW,MAAM;IACrB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;yEAKqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;gDAC4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;gFAE4E;IAC5E,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;oCACgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;sBAIkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,6EAA6E;IAC7E,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,oDAAoD;IACpD,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,mDAAmD;IACnD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;2BAGuB;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;wDAEoD;IACpD,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;;+DAI2D;IAC3D,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;kFAE8E;IAC9E,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;8GAC0G;IAC1G,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;gCAG4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;6DAEyD;IACzD,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAA;IACzC;;8EAE0E;IAC1E,YAAY,CAAC,EAAE,SAAS,GAAG,MAAM,CAAA;IACjC,sEAAsE;IACtE,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B;;2CAEuC;IACvC,YAAY,CAAC,EAAE,gBAAgB,CAAA;IAC/B;;;;iEAI6D;IAC7D,UAAU,CAAC,EAAE,iBAAiB,CAAA;IAC9B;;;0CAGsC;IACtC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;mEAC+D;IAC/D,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;;kDAG8C;IAC9C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;;mEAG+D;IAC/D,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB;;;;;sDAKkD;IAClD,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IACpC;;;;sCAIkC;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAA;IACrD;;;yDAGqD;IACrD,KAAK,CAAC,EAAE,eAAe,EAAE,CAAA;CAC1B;AAED,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CA6EvD,CAAA;AAEF;;;;;;GAMG;AACH,wBAAsB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBtF"}
@@ -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.tsx` (see its module doc for the full contract).
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
- // Registry diagnostics can await the whole Loader. Do not make this Host
105
- // row await the runtime in return. Let Host providers settle before starting
106
- // a Cordis-owned child; the original row still owns volatile Config.
107
- const loader = ctx.get('loader');
108
- void (loader?.await() ?? ctx.fiber.await()).then(() => {
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({
@@ -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";
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
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' },
@@ -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.mjs — this covers the system-tool paths
204
- * entry.mjs cannot. Symlinks are rejected outright (defense in depth: a
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,
@@ -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.mjs — this covers the system-tool paths
446
- * entry.mjs cannot. Symlinks are rejected outright (defense in depth: a
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": "0.2.0-rc.2",
54
- "@deepseek-ai/dsh-commands": "0.2.0-rc.2",
55
- "@deepseek-ai/dsh-llm": "0.2.0-rc.2",
56
- "@deepseek-ai/dsh-llm-pi-ai": "0.2.0-rc.2",
57
- "@deepseek-ai/dsh-user-questions": "0.2.0-rc.2",
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": "0.2.0-rc.2",
71
- "@deepseek-ai/dsh-commands": "0.2.0-rc.2",
72
- "@deepseek-ai/dsh-llm": "0.2.0-rc.2",
73
- "@deepseek-ai/dsh-llm-pi-ai": "0.2.0-rc.2",
74
- "@deepseek-ai/dsh-user-questions": "0.2.0-rc.2",
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": "^0.1.0-rc.6 || ^0.1.1-rc.1 || ^0.1.2-alpha.2 || ^0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
77
- "@deepseek-ai/dsh-client-ui-conversation": "^0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
78
- "@deepseek-ai/dsh-client-ui-renderer": "^0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
79
- "@deepseek-ai/dsh-client-ui-session": "^0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
80
- "@deepseek-ai/dsh-client-ui-slots": "^0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
81
- "@deepseek-ai/dsh-invariants": "^0.1.0-rc.6 || ^0.1.1-rc.1 || ^0.1.2-alpha.2 || ^0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
82
- "@deepseek-ai/dsh-session": "^0.1.0-rc.6 || ^0.1.1-rc.1 || ^0.1.2-alpha.2 || ^0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
83
- "@deepseek-ai/dsh-session-projection": "^0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
84
- "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.6 || ^0.1.1-rc.1 || ^0.1.2-alpha.2 || ^0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2",
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",
3
+ "version": "0.13.4",
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": "0.2.0-rc.2",
241
- "@deepseek-ai/dsh-agent-instructions": "0.2.0-rc.2",
242
- "@deepseek-ai/dsh-agent-preset-registry": "0.2.0-rc.2",
243
- "@deepseek-ai/dsh-atomic-write": "0.2.0-rc.2",
244
- "@deepseek-ai/dsh-commands": "0.2.0-rc.2",
245
- "@deepseek-ai/dsh-cordis-host-runner": "0.2.0-rc.2",
246
- "@deepseek-ai/dsh-invariants": "0.2.0-rc.2",
247
- "@deepseek-ai/dsh-llm": "0.2.0-rc.2",
248
- "@deepseek-ai/dsh-llm-pi-ai": "0.2.0-rc.2",
249
- "@deepseek-ai/dsh-persona": "0.2.0-rc.2",
250
- "@deepseek-ai/dsh-ptc-runtime-node": "0.2.0-rc.2",
251
- "@deepseek-ai/dsh-session": "0.2.0-rc.2",
252
- "@deepseek-ai/dsh-settings": "0.2.0-rc.2",
253
- "@deepseek-ai/dsh-skill": "0.2.0-rc.2",
254
- "@deepseek-ai/dsh-storage": "0.2.0-rc.2",
255
- "@deepseek-ai/dsh-storage-domain": "0.2.0-rc.2",
256
- "@deepseek-ai/dsh-storage-json": "0.2.0-rc.2",
257
- "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2",
258
- "@deepseek-ai/dsh-terminal": "0.2.0-rc.2",
259
- "@deepseek-ai/dsh-terminal-bash": "0.2.0-rc.2",
260
- "@deepseek-ai/dsh-tool-ask-user": "0.2.0-rc.2",
261
- "@deepseek-ai/dsh-tool-bash-persistent": "0.2.0-rc.2",
262
- "@deepseek-ai/dsh-tool-cordis": "0.2.0-rc.2",
263
- "@deepseek-ai/dsh-tool-subagent": "0.2.0-rc.2",
264
- "@deepseek-ai/dsh-user-approval": "0.2.0-rc.2",
265
- "@deepseek-ai/dsh-user-questions": "0.2.0-rc.2",
266
- "@deepseek-ai/dsh-web-app": "0.2.0-rc.2",
267
- "@deepseek-ai/dsh-workspace": "0.2.0-rc.2",
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": "0.2.0-rc.2",
423
- "@deepseek-ai/dsh-agent-instructions": "0.2.0-rc.2",
424
- "@deepseek-ai/dsh-agent-loop": "0.2.0-rc.2",
425
- "@deepseek-ai/dsh-agent-preset-registry": "0.2.0-rc.2",
426
- "@deepseek-ai/dsh-atomic-write": "0.2.0-rc.2",
427
- "@deepseek-ai/dsh-attachment": "0.2.0-rc.2",
428
- "@deepseek-ai/dsh-brand": "0.2.0-rc.2",
429
- "@deepseek-ai/dsh-command-compact": "0.2.0-rc.2",
430
- "@deepseek-ai/dsh-commands": "0.2.0-rc.2",
431
- "@deepseek-ai/dsh-compaction-basic": "0.2.0-rc.2",
432
- "@deepseek-ai/dsh-compaction-tool-result-pruner": "0.2.0-rc.2",
433
- "@deepseek-ai/dsh-cordis-host-runner": "0.2.0-rc.2",
434
- "@deepseek-ai/dsh-fs": "0.2.0-rc.2",
435
- "@deepseek-ai/dsh-fs-local": "0.2.0-rc.2",
436
- "@deepseek-ai/dsh-home-paths": "0.2.0-rc.2",
437
- "@deepseek-ai/dsh-invariants": "0.2.0-rc.2",
438
- "@deepseek-ai/dsh-llm": "0.2.0-rc.2",
439
- "@deepseek-ai/dsh-llm-pi-ai": "0.2.0-rc.2",
440
- "@deepseek-ai/dsh-persona": "0.2.0-rc.2",
441
- "@deepseek-ai/dsh-plan-mode": "0.2.0-rc.2",
442
- "@deepseek-ai/dsh-ptc-runtime": "0.2.0-rc.2",
443
- "@deepseek-ai/dsh-ptc-runtime-node": "0.2.0-rc.2",
444
- "@deepseek-ai/dsh-sandbox": "0.2.0-rc.2",
445
- "@deepseek-ai/dsh-sandbox-policy": "0.2.0-rc.2",
446
- "@deepseek-ai/dsh-scope": "0.2.0-rc.2",
447
- "@deepseek-ai/dsh-session": "0.2.0-rc.2",
448
- "@deepseek-ai/dsh-session-format-catalog": "0.2.0-rc.2",
449
- "@deepseek-ai/dsh-session-format-v3-to-v4": "0.2.0-rc.2",
450
- "@deepseek-ai/dsh-session-persistence": "0.2.0-rc.2",
451
- "@deepseek-ai/dsh-session-persistence-jsonl": "0.2.0-rc.2",
452
- "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2",
453
- "@deepseek-ai/dsh-settings": "0.2.0-rc.2",
454
- "@deepseek-ai/dsh-skill": "0.2.0-rc.2",
455
- "@deepseek-ai/dsh-skill-filesystem": "0.2.0-rc.2",
456
- "@deepseek-ai/dsh-storage": "0.2.0-rc.2",
457
- "@deepseek-ai/dsh-storage-domain": "0.2.0-rc.2",
458
- "@deepseek-ai/dsh-storage-json": "0.2.0-rc.2",
459
- "@deepseek-ai/dsh-subprocess": "0.2.0-rc.2",
460
- "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2",
461
- "@deepseek-ai/dsh-terminal": "0.2.0-rc.2",
462
- "@deepseek-ai/dsh-terminal-bash": "0.2.0-rc.2",
463
- "@deepseek-ai/dsh-timeout": "0.2.0-rc.2",
464
- "@deepseek-ai/dsh-tool-ask-user": "0.2.0-rc.2",
465
- "@deepseek-ai/dsh-tool-bash-persistent": "0.2.0-rc.2",
466
- "@deepseek-ai/dsh-tool-cordis": "0.2.0-rc.2",
467
- "@deepseek-ai/dsh-tool-fs": "0.2.0-rc.2",
468
- "@deepseek-ai/dsh-tool-fs-search": "0.2.0-rc.2",
469
- "@deepseek-ai/dsh-tool-goal": "0.2.0-rc.2",
470
- "@deepseek-ai/dsh-tool-jobs": "0.2.0-rc.2",
471
- "@deepseek-ai/dsh-tool-ralph": "0.2.0-rc.2",
472
- "@deepseek-ai/dsh-tool-str-replace-editor": "0.2.0-rc.2",
473
- "@deepseek-ai/dsh-tool-subagent": "0.2.0-rc.2",
474
- "@deepseek-ai/dsh-tool-subagent-control": "0.2.0-rc.2",
475
- "@deepseek-ai/dsh-tool-todo": "0.2.0-rc.2",
476
- "@deepseek-ai/dsh-tool-web": "0.2.0-rc.2",
477
- "@deepseek-ai/dsh-tool-workflow": "0.2.0-rc.2",
478
- "@deepseek-ai/dsh-tools": "0.2.0-rc.2",
479
- "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2",
480
- "@deepseek-ai/dsh-user-approval": "0.2.0-rc.2",
481
- "@deepseek-ai/dsh-user-questions": "0.2.0-rc.2",
482
- "@deepseek-ai/dsh-web-app": "0.2.0-rc.2",
483
- "@deepseek-ai/dsh-workflow-ptc": "0.2.0-rc.2",
484
- "@deepseek-ai/dsh-workspace": "0.2.0-rc.2",
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": {