@deepseek-harness-tui/dsh-tui 0.8.2 → 0.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -2
- package/bin/dsh-tui.js +43 -7
- package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin.js +17 -0
- package/lib/types/i18n.d.ts +8 -0
- package/lib/types/i18n.d.ts.map +1 -1
- package/lib/types/i18n.js +10 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -93,8 +93,14 @@ sh install.sh
|
|
|
93
93
|
已上架 VS Code Marketplace**)见
|
|
94
94
|
[在 VS Code 中运行 dsh-TUI](docs/vscode.md)。
|
|
95
95
|
|
|
96
|
-
TUI 启动后会在后台检查 npm
|
|
97
|
-
|
|
96
|
+
TUI 启动后会在后台检查 npm 是否有新版本;发现更新时可输入 `/update`。
|
|
97
|
+
`/update` 更新当前 `dsh-tui` profile 中的 runtime 并重启会话,它不会静默修改
|
|
98
|
+
npm/pnpm 的全局安装。若通过全局 `dsh-tui` 命令启动且 Launcher 版本落后,
|
|
99
|
+
0.8.3 起会给出精确的全局对齐命令,例如:
|
|
100
|
+
|
|
101
|
+
```sh
|
|
102
|
+
npm install -g @deepseek-harness-tui/dsh-tui@<profile-version>
|
|
103
|
+
```
|
|
98
104
|
|
|
99
105
|
旧版 `dsh-cc-tui` / `cc-tui` profile 的迁移命令与兼容数据说明见
|
|
100
106
|
[安装与快速开始](docs/getting-started.md#从旧包迁移)。
|
package/bin/dsh-tui.js
CHANGED
|
@@ -30,6 +30,7 @@ import { existsSync, readFileSync } from 'node:fs'
|
|
|
30
30
|
import { homedir } from 'node:os'
|
|
31
31
|
import { isAbsolute, join, resolve } from 'node:path'
|
|
32
32
|
import { fileURLToPath } from 'node:url'
|
|
33
|
+
import { gt, valid } from 'semver'
|
|
33
34
|
import { shellQuote } from '../lib/types/utils/shellQuote.js'
|
|
34
35
|
import { detectLegacyEnv, RENAMED_ENV } from '../lib/types/utils/paths.js'
|
|
35
36
|
|
|
@@ -63,15 +64,32 @@ const MSG = {
|
|
|
63
64
|
en: `[dsh-tui] Plugin install failed. Retry manually later:\n dsh plugin --profile ${PROFILE} add -w ${PACKAGE}@${ownVersion}`,
|
|
64
65
|
zh: `[dsh-tui] 插件安装失败。可稍后手工重试:\n dsh plugin --profile ${PROFILE} add -w ${PACKAGE}@${ownVersion}`,
|
|
65
66
|
},
|
|
66
|
-
|
|
67
|
+
// Non-fatal skew comes in two directions and each needs its own repair:
|
|
68
|
+
// a profile NEWER than the launcher (typical after /update) must point at
|
|
69
|
+
// the global install, while a profile older only in patch must point back
|
|
70
|
+
// at the profile. The old generic message told forward-skew users to run
|
|
71
|
+
// /update again — an "Already up to date" loop.
|
|
72
|
+
profileOutdated: {
|
|
67
73
|
en: (installed, own) =>
|
|
68
74
|
`[dsh-tui] note: the profile is running v${installed} but this launcher is v${own}.\n` +
|
|
69
|
-
`
|
|
70
|
-
` dsh plugin --profile ${PROFILE} add ${PACKAGE}
|
|
75
|
+
` Align the profile to this launcher:\n` +
|
|
76
|
+
` dsh plugin --profile ${PROFILE} add ${PACKAGE}@${own}`,
|
|
71
77
|
zh: (installed, own) =>
|
|
72
|
-
`[dsh-tui] 提示:profile 内运行的是 v${installed}
|
|
73
|
-
`
|
|
74
|
-
` dsh plugin --profile ${PROFILE} add ${PACKAGE}
|
|
78
|
+
`[dsh-tui] 提示:profile 内运行的是 v${installed},启动器是 v${own}。\n` +
|
|
79
|
+
` 请把 profile 对齐到启动器版本:\n` +
|
|
80
|
+
` dsh plugin --profile ${PROFILE} add ${PACKAGE}@${own}`,
|
|
81
|
+
},
|
|
82
|
+
launcherOutdated: {
|
|
83
|
+
en: (installed, own) =>
|
|
84
|
+
`[dsh-tui] note: the profile is already v${installed}, but the global launcher is still v${own}.\n` +
|
|
85
|
+
` Align the global dsh-tui launcher to the profile:\n` +
|
|
86
|
+
` npm install -g ${PACKAGE}@${installed}\n` +
|
|
87
|
+
` (if you installed it globally with pnpm: pnpm add -g ${PACKAGE}@${installed})`,
|
|
88
|
+
zh: (installed, own) =>
|
|
89
|
+
`[dsh-tui] 提示:profile 已是 v${installed},但全局启动器仍是 v${own}。\n` +
|
|
90
|
+
` 请把全局 dsh-tui 启动器对齐到 profile 版本:\n` +
|
|
91
|
+
` npm install -g ${PACKAGE}@${installed}\n` +
|
|
92
|
+
` (如果你使用 pnpm 全局安装:pnpm add -g ${PACKAGE}@${installed})`,
|
|
75
93
|
},
|
|
76
94
|
// Reverse skew (issue #183): the dsh CLI reads the bundle patch from the
|
|
77
95
|
// FIRST copy found from its own install anchor — this globally installed
|
|
@@ -182,7 +200,19 @@ if (installedVersion === undefined) {
|
|
|
182
200
|
console.error(MSG.profileOlderThanLauncher[lang](installedVersion, ownVersion))
|
|
183
201
|
process.exit(1)
|
|
184
202
|
}
|
|
185
|
-
|
|
203
|
+
|
|
204
|
+
// Non-fatal skew: repair in the direction the versions actually moved.
|
|
205
|
+
// A profile NEWER than the launcher (e.g. right after /update) means the
|
|
206
|
+
// GLOBAL launcher is stale — never point those users back at /update.
|
|
207
|
+
// Exact versions only: @latest could skip past the alignment point if a
|
|
208
|
+
// newer release or a mirror dist-tag is in play.
|
|
209
|
+
const installedSemver = valid(installedVersion)
|
|
210
|
+
const ownSemver = valid(ownVersion)
|
|
211
|
+
if (installedSemver !== null && ownSemver !== null && gt(installedSemver, ownSemver)) {
|
|
212
|
+
console.error(MSG.launcherOutdated[lang](installedVersion, ownVersion))
|
|
213
|
+
} else {
|
|
214
|
+
console.error(MSG.profileOutdated[lang](installedVersion, ownVersion))
|
|
215
|
+
}
|
|
186
216
|
}
|
|
187
217
|
|
|
188
218
|
// --- 3. --resume 拦截 ---------------------------------------------------------
|
|
@@ -240,6 +270,12 @@ for (const oldName of detectLegacyEnv()) {
|
|
|
240
270
|
}
|
|
241
271
|
|
|
242
272
|
// --- 4. 启动 ------------------------------------------------------------------
|
|
273
|
+
// Contract for the profile runtime: lets /update diagnose whether the
|
|
274
|
+
// global dsh-tui launcher is older than the profile it just installed.
|
|
275
|
+
// Not a one-shot marker — it must survive restarts so the runtime always
|
|
276
|
+
// knows the launcher generation it boots under.
|
|
277
|
+
process.env.DSH_TUI_LAUNCHER_VERSION = ownVersion
|
|
278
|
+
|
|
243
279
|
const child = spawn(...cmd('dsh', ['--profile', PROFILE, ...args]), {
|
|
244
280
|
stdio: 'inherit',
|
|
245
281
|
env: process.env,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/plugin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAe,MAAM,wBAAwB,CAAA;AAGhE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAGlD,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAmCnC;;;;;;;;GAQG;AACH,wBAAsB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/plugin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAe,MAAM,wBAAwB,CAAA;AAGhE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAGlD,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAmCnC;;;;;;;;GAQG;AACH,wBAAsB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAonBvE;AA6GD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IAAE,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;CAAE,GAAG;IACjF,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,YAAY,EAAE,MAAM,IAAI,CAAA;CACzB,CAcA;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,KAAK,GAAG,SAAS,CAAA;IAC5B,YAAY,EAAE,KAAK,CAAA;CACpB,GAAG,OAAO,CAQV"}
|
|
@@ -112,6 +112,23 @@ export async function apply(ctx, config) {
|
|
|
112
112
|
`可能是镜像 registry 未同步,请稍后重试或检查 registry 配置。\n`);
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
|
+
else if (process.stderr.isTTY) {
|
|
116
|
+
// Launcher alignment bridge (0.8.3): /update only replaces the
|
|
117
|
+
// package inside the DSH profile; a globally installed `dsh-tui`
|
|
118
|
+
// launcher is a separate copy that keeps its old version. Launchers
|
|
119
|
+
// >=0.8.3 export DSH_TUI_LAUNCHER_VERSION so we can tell whether
|
|
120
|
+
// the outer launcher lags the freshly installed profile. Launchers
|
|
121
|
+
// <=0.8.2 never set the marker — the generic branch below is
|
|
122
|
+
// intentionally one-shot: DSH_TUI_UPDATED_FROM exists only on the
|
|
123
|
+
// replacement process immediately after /update.
|
|
124
|
+
const launcherVersion = process.env.DSH_TUI_LAUNCHER_VERSION;
|
|
125
|
+
if (launcherVersion === undefined) {
|
|
126
|
+
process.stderr.write(`\n[dsh-tui] ${t('update-launcher-align-unknown', { version: now })}\n`);
|
|
127
|
+
}
|
|
128
|
+
else if (isVersionNewer(now, launcherVersion)) {
|
|
129
|
+
process.stderr.write(`\n[dsh-tui] ${t('update-launcher-outdated', { profile: now, launcher: launcherVersion })}\n`);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
115
132
|
}
|
|
116
133
|
}
|
|
117
134
|
// DSH user-interaction seam: the model's ask_user_question tool parks on
|
package/lib/types/i18n.d.ts
CHANGED
|
@@ -907,6 +907,14 @@ declare const dict: {
|
|
|
907
907
|
readonly zh: "dsh-tui 更新中止:未解析到 dsh profile。";
|
|
908
908
|
readonly en: "dsh-tui update aborted: no dsh profile resolved.";
|
|
909
909
|
};
|
|
910
|
+
readonly 'update-launcher-align-unknown': {
|
|
911
|
+
readonly zh: "Profile 已更新到 v{{version}}。如果你平时使用全局 dsh-tui 命令启动,请同步更新全局启动器:\n npm install -g @deepseek-harness-tui/dsh-tui@{{version}}";
|
|
912
|
+
readonly en: "The profile is now v{{version}}. If you normally launch with the global dsh-tui command, align the global launcher too:\n npm install -g @deepseek-harness-tui/dsh-tui@{{version}}";
|
|
913
|
+
};
|
|
914
|
+
readonly 'update-launcher-outdated': {
|
|
915
|
+
readonly zh: "Profile 已更新到 v{{profile}},但全局启动器仍是 v{{launcher}}。请同步更新:\n npm install -g @deepseek-harness-tui/dsh-tui@{{profile}}";
|
|
916
|
+
readonly en: "The profile is now v{{profile}}, but the global launcher is still v{{launcher}}. Align it with:\n npm install -g @deepseek-harness-tui/dsh-tui@{{profile}}";
|
|
917
|
+
};
|
|
910
918
|
readonly 'activity-ctx-warn': {
|
|
911
919
|
readonly zh: "⚠ 上下文";
|
|
912
920
|
readonly en: "⚠ ctx ";
|
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;;;;;;;;;;;;;;;;GAgBG;AAMH,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAI9B,+DAA+D;AAC/D,eAAO,MAAM,KAAK,uBAAwB,CAAA;AAE1C,QAAA,MAAM,IAAI
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/i18n.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAI9B,+DAA+D;AAC/D,eAAO,MAAM,KAAK,uBAAwB,CAAA;AAE1C,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+tBA,CAAA;AAEV,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,IAAI,CAAA;AACvC,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;AAUxD,uEAAuE;AACvE,KAAK,QAAQ,GAAG,MAAM,IAAI,CAAA;AAG1B,8EAA8E;AAC9E,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,IAAI,CAG5D;AAED,qCAAqC;AACrC,wBAAgB,OAAO,IAAI,IAAI,CAE9B;AAED,yDAAyD;AACzD,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAGxC;AAED,iDAAiD;AACjD,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,IAAI,CAEpD;AAED;;;;;;GAMG;AACH,wBAAgB,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,GAAE,UAAe,GAAG,MAAM,CAM/D;AAED;;;;;;;;GAQG;AACH,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGzD;AAID;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAS5D;AAED,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,GAAG,GAAE,MAAkB,GAAG,IAAI,GAAG,SAAS,CAMtE;AAED,iDAAiD;AACjD,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,GAAE,MAAkB,GAAG,OAAO,CAQ1E;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAavC;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC"}
|
package/lib/types/i18n.js
CHANGED
|
@@ -251,6 +251,16 @@ const dict = {
|
|
|
251
251
|
'legacy-env-renamed': { zh: '环境变量 {{old}} 已更名为 {{new}},旧名不再生效', en: 'Environment variable {{old}} was renamed to {{new}}; the old name no longer takes effect' },
|
|
252
252
|
// ── plugin.ts — /update flow ───────────────────────────────────────
|
|
253
253
|
'update-aborted-no-profile': { zh: 'dsh-tui 更新中止:未解析到 dsh profile。', en: 'dsh-tui update aborted: no dsh profile resolved.' },
|
|
254
|
+
// 0.8.3 launcher alignment bridge: /update only replaces the profile
|
|
255
|
+
// copy; the global `dsh-tui` launcher must be aligned separately.
|
|
256
|
+
'update-launcher-align-unknown': {
|
|
257
|
+
zh: 'Profile 已更新到 v{{version}}。如果你平时使用全局 dsh-tui 命令启动,请同步更新全局启动器:\n npm install -g @deepseek-harness-tui/dsh-tui@{{version}}',
|
|
258
|
+
en: 'The profile is now v{{version}}. If you normally launch with the global dsh-tui command, align the global launcher too:\n npm install -g @deepseek-harness-tui/dsh-tui@{{version}}',
|
|
259
|
+
},
|
|
260
|
+
'update-launcher-outdated': {
|
|
261
|
+
zh: 'Profile 已更新到 v{{profile}},但全局启动器仍是 v{{launcher}}。请同步更新:\n npm install -g @deepseek-harness-tui/dsh-tui@{{profile}}',
|
|
262
|
+
en: 'The profile is now v{{profile}}, but the global launcher is still v{{launcher}}. Align it with:\n npm install -g @deepseek-harness-tui/dsh-tui@{{profile}}',
|
|
263
|
+
},
|
|
254
264
|
// ── components/ActivityLine.tsx ──────────────────────────────────────
|
|
255
265
|
'activity-ctx-warn': { zh: '⚠ 上下文', en: '⚠ ctx ' },
|
|
256
266
|
// ── components/ActivityPicker.tsx ─────────────────────────────────────
|
package/package.json
CHANGED