openfeel 1.2.3 → 1.3.0

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.
Files changed (84) hide show
  1. package/README.en.md +40 -63
  2. package/README.md +39 -51
  3. package/README.zh-CN.md +40 -63
  4. package/dist/commands/archive.d.ts.map +1 -1
  5. package/dist/commands/archive.js +13 -2
  6. package/dist/commands/archive.js.map +1 -1
  7. package/dist/commands/config.d.ts.map +1 -1
  8. package/dist/commands/config.js +38 -2
  9. package/dist/commands/config.js.map +1 -1
  10. package/dist/commands/flow.d.ts.map +1 -1
  11. package/dist/commands/flow.js +45 -12
  12. package/dist/commands/flow.js.map +1 -1
  13. package/dist/commands/lint.d.ts.map +1 -1
  14. package/dist/commands/lint.js +78 -39
  15. package/dist/commands/lint.js.map +1 -1
  16. package/dist/commands/model.d.ts.map +1 -1
  17. package/dist/commands/model.js +86 -8
  18. package/dist/commands/model.js.map +1 -1
  19. package/dist/commands/plan.d.ts.map +1 -1
  20. package/dist/commands/plan.js +21 -1
  21. package/dist/commands/plan.js.map +1 -1
  22. package/dist/commands/roadmap.d.ts.map +1 -1
  23. package/dist/commands/roadmap.js +21 -2
  24. package/dist/commands/roadmap.js.map +1 -1
  25. package/dist/commands/setup.d.ts.map +1 -1
  26. package/dist/commands/setup.js +90 -5
  27. package/dist/commands/setup.js.map +1 -1
  28. package/dist/commands/update.d.ts.map +1 -1
  29. package/dist/commands/update.js +7 -2
  30. package/dist/commands/update.js.map +1 -1
  31. package/dist/core/archive/merge.d.ts +16 -1
  32. package/dist/core/archive/merge.d.ts.map +1 -1
  33. package/dist/core/archive/merge.js +27 -4
  34. package/dist/core/archive/merge.js.map +1 -1
  35. package/dist/core/config.js +2 -2
  36. package/dist/core/dsh-profile.d.ts +93 -0
  37. package/dist/core/dsh-profile.d.ts.map +1 -0
  38. package/dist/core/dsh-profile.js +398 -0
  39. package/dist/core/dsh-profile.js.map +1 -0
  40. package/dist/core/errors.d.ts +8 -3
  41. package/dist/core/errors.d.ts.map +1 -1
  42. package/dist/core/errors.js +6 -3
  43. package/dist/core/errors.js.map +1 -1
  44. package/dist/core/i18n-data/en.d.ts.map +1 -1
  45. package/dist/core/i18n-data/en.js +32 -2
  46. package/dist/core/i18n-data/en.js.map +1 -1
  47. package/dist/core/i18n-data/zh-CN.d.ts.map +1 -1
  48. package/dist/core/i18n-data/zh-CN.js +32 -2
  49. package/dist/core/i18n-data/zh-CN.js.map +1 -1
  50. package/dist/core/plan/roadmap.d.ts +29 -0
  51. package/dist/core/plan/roadmap.d.ts.map +1 -1
  52. package/dist/core/plan/roadmap.js +95 -0
  53. package/dist/core/plan/roadmap.js.map +1 -1
  54. package/dist/core/setup.d.ts +12 -1
  55. package/dist/core/setup.d.ts.map +1 -1
  56. package/dist/core/setup.js +25 -10
  57. package/dist/core/setup.js.map +1 -1
  58. package/dist/core/template-loader.d.ts.map +1 -1
  59. package/dist/core/template-loader.js +38 -19
  60. package/dist/core/template-loader.js.map +1 -1
  61. package/dist/core/update.d.ts +2 -0
  62. package/dist/core/update.d.ts.map +1 -1
  63. package/dist/core/update.js +45 -17
  64. package/dist/core/update.js.map +1 -1
  65. package/dsh/ACTION-GUIDE.md +366 -0
  66. package/dsh/ADAPTER.md +65 -0
  67. package/dsh/README.md +264 -0
  68. package/dsh/cordis.patch.yml +26 -0
  69. package/dsh/docs/compat/commands.md +873 -0
  70. package/dsh/docs/compat/kb-skills.md +883 -0
  71. package/dsh/docs/compat/persistence.md +1013 -0
  72. package/dsh/docs/compat/pipeline.md +1565 -0
  73. package/dsh/docs/compat/req.md +1243 -0
  74. package/dsh/docs/compat/stage.md +1437 -0
  75. package/dsh/lib/adapters/cli.js +624 -0
  76. package/dsh/lib/adapters/dashboard.js +393 -0
  77. package/dsh/lib/adapters/workspace.js +150 -0
  78. package/dsh/lib/index.js +189 -0
  79. package/dsh/lib/surface/command.js +186 -0
  80. package/dsh/lib/surface/prompt.js +131 -0
  81. package/dsh/lib/tools/index.js +1245 -0
  82. package/dsh/lib/tools/shared.js +320 -0
  83. package/dsh/package.json +45 -0
  84. package/package.json +9 -2
@@ -0,0 +1,398 @@
1
+ /**
2
+ * DSH profile 部署(v1.3.0-stage-101)
3
+ *
4
+ * 职责:把 `<openfeelRoot>/dsh` 以 `link:` 依赖写进 DSH profile 的 `package.json`、
5
+ * 追加 `dsh.profile.bundles`、按需执行 `pnpm install`。领域状态仍归 OpenFeel CLI,
6
+ * 本模块只做安装编排。
7
+ *
8
+ * 边界:
9
+ * - 不 import `node:os` 的 `homedir`(统一经 `global-paths.getHomedir()`,测试单点 mock)。
10
+ * - 写前备份 / 锁序遵循既有约定:备份与 `appendUpdateInfo` 在 profile 锁**外**,
11
+ * 锁内只做「重读 → 合并 → 按需预检 → 原子写」。
12
+ * - 错误码 `DSH_*` 仅内部使用;命令层映射到既有 `INVALID_ARGUMENT` / `INTERNAL_ERROR`,
13
+ * 不新增 CLI 稳定错误码。
14
+ */
15
+ import { spawnSync } from 'node:child_process';
16
+ import { existsSync, readFileSync, readdirSync, realpathSync, statSync } from 'node:fs';
17
+ import { createRequire } from 'node:module';
18
+ import { dirname, join, resolve } from 'node:path';
19
+ import { atomicWriteFileSync } from './fs/atomic-write.js';
20
+ import { globalLockPath, withFileLock } from './fs/file-lock.js';
21
+ import { getHomedir } from './global-paths.js';
22
+ import { backupFileBeforeWrite, notifyBackupIfTTY, BackupError } from './backup.js';
23
+ import { appendUpdateInfo } from './update-infos.js';
24
+ /** profile 依赖名(与 `dsh/package.json` 的 name 一致) */
25
+ export const DSH_ADAPTER_PACKAGE = 'openfeel-dsh';
26
+ /** 内部错误 → CLI 稳定错误码的 reason 映射(命令层 detail.reason) */
27
+ const ERROR_REASON = {
28
+ DSH_HOME_NOT_FOUND: 'dsh-home-not-found',
29
+ DSH_PROFILE_NOT_FOUND: 'dsh-profile-not-found',
30
+ DSH_PROFILE_UNKNOWN: 'dsh-profile-unknown',
31
+ DSH_PROFILE_INVALID_JSON: 'dsh-profile-invalid-json',
32
+ DSH_PROFILE_NOT_DSH: 'dsh-profile-not-dsh',
33
+ DSH_PROFILE_INVALID_SHAPE: 'dsh-profile-invalid-shape',
34
+ DSH_ADAPTER_MISSING: 'dsh-adapter-missing',
35
+ DSH_PNPM_MISSING: 'dsh-pnpm-missing',
36
+ DSH_BACKUP_FAILED: 'dsh-backup-failed',
37
+ DSH_PNPM_INSTALL_FAILED: 'dsh-pnpm-install-failed',
38
+ };
39
+ /** 内部错误 */
40
+ export class DshProfileError extends Error {
41
+ code;
42
+ detail;
43
+ constructor(code, detail = {}, message) {
44
+ super(message ?? `DSH profile error: ${code}`);
45
+ this.name = 'DshProfileError';
46
+ this.code = code;
47
+ this.detail = detail;
48
+ }
49
+ }
50
+ /** 纯函数:普通对象判定 */
51
+ function isRecord(value) {
52
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
53
+ }
54
+ /** 是否为目录 */
55
+ function isDirectory(path) {
56
+ try {
57
+ return statSync(path).isDirectory();
58
+ }
59
+ catch {
60
+ return false;
61
+ }
62
+ }
63
+ /** 正斜杠路径(pnpm link spec / 输出) */
64
+ function toPosix(path) {
65
+ return path.replace(/\\/g, '/');
66
+ }
67
+ /** 锁文件安全名 */
68
+ function safeLockName(name) {
69
+ return name.replace(/[^A-Za-z0-9_.-]/g, '-');
70
+ }
71
+ /** 读取文件文本 */
72
+ function readText(path) {
73
+ return readFileSync(path, 'utf-8');
74
+ }
75
+ /** 错误消息归一 */
76
+ function messageOf(error) {
77
+ return error instanceof Error ? error.message : String(error);
78
+ }
79
+ /** 解析 profile package.json 文本(严格 JSON) */
80
+ function parseProfileJson(text, path) {
81
+ let parsed;
82
+ try {
83
+ parsed = JSON.parse(text);
84
+ }
85
+ catch (error) {
86
+ throw new DshProfileError('DSH_PROFILE_INVALID_JSON', { path, err: messageOf(error) }, `DSH profile package.json is not valid JSON: ${path}`);
87
+ }
88
+ if (!isRecord(parsed)) {
89
+ throw new DshProfileError('DSH_PROFILE_INVALID_SHAPE', { path, field: 'root' }, `DSH profile package.json is not an object: ${path}`);
90
+ }
91
+ return parsed;
92
+ }
93
+ /** 解析 DSH_HOME(env 优先,绝对化) */
94
+ export function resolveDshHome() {
95
+ const fromEnv = process.env.DSH_HOME?.trim();
96
+ if (fromEnv !== undefined && fromEnv !== '') {
97
+ return resolve(fromEnv);
98
+ }
99
+ return join(getHomedir(), '.dsh');
100
+ }
101
+ /** 列出 `<dshHome>/profiles` 下含 package.json 的 profile(按 name 排序) */
102
+ export function listDshProfiles(dshHome) {
103
+ const profilesDir = join(dshHome, 'profiles');
104
+ if (!isDirectory(profilesDir)) {
105
+ throw new DshProfileError('DSH_HOME_NOT_FOUND', { dir: profilesDir }, `DSH profiles directory not found: ${profilesDir}`);
106
+ }
107
+ const profiles = [];
108
+ for (const entry of readdirSync(profilesDir, { withFileTypes: true })) {
109
+ if (!entry.isDirectory())
110
+ continue;
111
+ const profilePath = join(profilesDir, entry.name);
112
+ const packagePath = join(profilePath, 'package.json');
113
+ if (!existsSync(packagePath))
114
+ continue;
115
+ profiles.push({ name: entry.name, path: profilePath, packagePath });
116
+ }
117
+ profiles.sort((a, b) => a.name.localeCompare(b.name));
118
+ if (profiles.length === 0) {
119
+ throw new DshProfileError('DSH_PROFILE_NOT_FOUND', { dir: profilesDir }, `No recognizable DSH profile under: ${profilesDir}`);
120
+ }
121
+ return profiles;
122
+ }
123
+ /** 按名称选择 profile;未指定则返回全部 */
124
+ export function selectDshProfiles(profiles, requested) {
125
+ const name = requested?.trim();
126
+ if (name === undefined || name === '')
127
+ return profiles;
128
+ const matched = profiles.filter((profile) => profile.name === name);
129
+ if (matched.length === 0) {
130
+ throw new DshProfileError('DSH_PROFILE_UNKNOWN', { name, available: profiles.map((profile) => profile.name) }, `DSH profile not found: ${name}`);
131
+ }
132
+ return matched;
133
+ }
134
+ /** 读取并校验 profile package.json(严格 JSON + `dsh` 配置) */
135
+ export function readDshProfilePackage(profile) {
136
+ const json = parseProfileJson(readText(profile.packagePath), profile.packagePath);
137
+ if (!isRecord(json.dsh)) {
138
+ throw new DshProfileError('DSH_PROFILE_NOT_DSH', { path: profile.packagePath }, `Not a DSH profile (missing dsh config): ${profile.packagePath}`);
139
+ }
140
+ return json;
141
+ }
142
+ /** 纯函数:计算 profile package.json 的目标状态 */
143
+ export function buildDshProfileMerge(json, adapterDir) {
144
+ if (!isRecord(json)) {
145
+ throw new DshProfileError('DSH_PROFILE_INVALID_SHAPE', { field: 'root' });
146
+ }
147
+ const next = structuredClone(json);
148
+ const changes = [];
149
+ if (!isRecord(next.dsh)) {
150
+ throw new DshProfileError('DSH_PROFILE_NOT_DSH', {});
151
+ }
152
+ const dsh = next.dsh;
153
+ if (dsh.profile === undefined) {
154
+ dsh.profile = {};
155
+ }
156
+ else if (!isRecord(dsh.profile)) {
157
+ throw new DshProfileError('DSH_PROFILE_INVALID_SHAPE', { field: 'dsh.profile' });
158
+ }
159
+ const profile = dsh.profile;
160
+ if (profile.bundles === undefined) {
161
+ profile.bundles = [];
162
+ }
163
+ else if (!Array.isArray(profile.bundles) || profile.bundles.some((item) => typeof item !== 'string')) {
164
+ throw new DshProfileError('DSH_PROFILE_INVALID_SHAPE', { field: 'dsh.profile.bundles' });
165
+ }
166
+ if (next.dependencies === undefined) {
167
+ next.dependencies = {};
168
+ }
169
+ else if (!isRecord(next.dependencies)) {
170
+ throw new DshProfileError('DSH_PROFILE_INVALID_SHAPE', { field: 'dependencies' });
171
+ }
172
+ const dependencies = next.dependencies;
173
+ const linkSpec = toLinkSpec(adapterDir);
174
+ if (dependencies[DSH_ADAPTER_PACKAGE] !== linkSpec) {
175
+ dependencies[DSH_ADAPTER_PACKAGE] = linkSpec;
176
+ changes.push('dependency');
177
+ }
178
+ const bundles = profile.bundles;
179
+ if (!bundles.includes(DSH_ADAPTER_PACKAGE)) {
180
+ bundles.push(DSH_ADAPTER_PACKAGE);
181
+ changes.push('bundle');
182
+ }
183
+ return { next, changed: changes.length > 0, changes };
184
+ }
185
+ /** `link:` 依赖 spec(正斜杠) */
186
+ export function toLinkSpec(adapterDir) {
187
+ return `link:${toPosix(adapterDir)}`;
188
+ }
189
+ /** 当前 OpenFeel 包根(src/core 与 dist/core 均指向包根) */
190
+ export function getOpenfeelRootDir() {
191
+ const require = createRequire(import.meta.url);
192
+ return dirname(require.resolve('../../package.json'));
193
+ }
194
+ /** 适配器目录(校验 dsh/package.json 的 name) */
195
+ export function getDshAdapterDir(rootDir = getOpenfeelRootDir()) {
196
+ const adapterDir = join(rootDir, 'dsh');
197
+ const packagePath = join(adapterDir, 'package.json');
198
+ if (!existsSync(packagePath)) {
199
+ throw new DshProfileError('DSH_ADAPTER_MISSING', { path: packagePath }, `DSH adapter not found: ${packagePath}`);
200
+ }
201
+ let parsed;
202
+ try {
203
+ parsed = JSON.parse(readText(packagePath));
204
+ }
205
+ catch {
206
+ throw new DshProfileError('DSH_ADAPTER_MISSING', { path: packagePath }, `DSH adapter package.json is not valid JSON: ${packagePath}`);
207
+ }
208
+ if (!isRecord(parsed) || parsed.name !== DSH_ADAPTER_PACKAGE) {
209
+ throw new DshProfileError('DSH_ADAPTER_MISSING', { path: packagePath }, `DSH adapter package name mismatch: ${packagePath}`);
210
+ }
211
+ return adapterDir;
212
+ }
213
+ /** profile 的 node_modules/openfeel-dsh 是否已指向适配器目录 */
214
+ export function isLinkValid(profileDir, adapterDir) {
215
+ const target = join(profileDir, 'node_modules', DSH_ADAPTER_PACKAGE);
216
+ try {
217
+ // Windows junction 用 realpathSync 不会解析到目标;native 版本才会。
218
+ const realpath = process.platform === 'win32' ? realpathSync.native : realpathSync;
219
+ const actual = realpath(target);
220
+ const expected = realpath(adapterDir);
221
+ if (process.platform === 'win32') {
222
+ return actual.toLowerCase() === expected.toLowerCase();
223
+ }
224
+ return actual === expected;
225
+ }
226
+ catch {
227
+ return false;
228
+ }
229
+ }
230
+ /** 预检:home → profiles → 逐个结构校验 → adapter;不预检 pnpm,零写盘 */
231
+ export function planDshDeployment(options = {}) {
232
+ const home = options.dshHome ?? resolveDshHome();
233
+ const profiles = selectDshProfiles(listDshProfiles(home), options.dshProfile);
234
+ const adapterDir = options.adapterDir ?? getDshAdapterDir(options.openfeelRoot);
235
+ for (const profile of profiles) {
236
+ const json = readDshProfilePackage(profile);
237
+ // 纯结构校验(不写盘):dependencies / dsh.profile.bundles 类型错误在预检阶段暴露
238
+ try {
239
+ buildDshProfileMerge(json, adapterDir);
240
+ }
241
+ catch (error) {
242
+ if (error instanceof DshProfileError) {
243
+ if (error.detail.path === undefined)
244
+ error.detail.path = profile.packagePath;
245
+ throw error;
246
+ }
247
+ throw error;
248
+ }
249
+ }
250
+ return { home, adapterDir, profiles };
251
+ }
252
+ /** 预检 pnpm 是否可用(仅在需要 install 时调用) */
253
+ export function resolvePnpmCommand(profileDir) {
254
+ const result = spawnSync('pnpm', ['--version'], {
255
+ shell: process.platform === 'win32',
256
+ encoding: 'utf8',
257
+ timeout: 30_000,
258
+ });
259
+ if (result.error !== undefined || result.status !== 0) {
260
+ throw new DshProfileError('DSH_PNPM_MISSING', {
261
+ command: 'pnpm',
262
+ ...(profileDir === undefined ? {} : { path: profileDir }),
263
+ err: result.error === undefined ? `exit ${result.status}` : messageOf(result.error),
264
+ }, 'pnpm not found');
265
+ }
266
+ }
267
+ /** 在 profile 目录执行 pnpm install --prefer-offline */
268
+ export function runPnpmInstall(profileDir) {
269
+ const result = spawnSync('pnpm', ['install', '--prefer-offline'], {
270
+ cwd: profileDir,
271
+ shell: process.platform === 'win32',
272
+ encoding: 'utf8',
273
+ timeout: 180_000,
274
+ env: { ...process.env, CI: '1' },
275
+ });
276
+ if (result.error === undefined && result.status === 0)
277
+ return;
278
+ const stdoutTail = (result.stdout ?? '').slice(-2000);
279
+ const stderrTail = (result.stderr ?? '').slice(-2000);
280
+ throw new DshProfileError('DSH_PNPM_INSTALL_FAILED', {
281
+ path: profileDir,
282
+ stdoutTail,
283
+ stderrTail,
284
+ manualCommand: `cd ${profileDir} && pnpm install`,
285
+ err: result.error === undefined ? `exit ${result.status}` : messageOf(result.error),
286
+ }, `pnpm install failed: ${profileDir}`);
287
+ }
288
+ /**
289
+ * 执行部署(锁外备份 → 锁内重读/合并/按需预检/写 → 解锁后 install)。
290
+ * fail-fast:任一 profile 失败即停止,已完成项写入 detail.completed。
291
+ */
292
+ export function applyDshDeployment(plan) {
293
+ const results = [];
294
+ const completed = [];
295
+ for (const profile of plan.profiles) {
296
+ let lockedOriginalText;
297
+ let wrote = false;
298
+ let backupRel;
299
+ try {
300
+ const preJson = parseProfileJson(readText(profile.packagePath), profile.packagePath);
301
+ const preMerge = buildDshProfileMerge(preJson, plan.adapterDir);
302
+ const needsInstall = preMerge.changed || !isLinkValid(profile.path, plan.adapterDir);
303
+ if (!needsInstall) {
304
+ results.push({ name: profile.name, path: profile.packagePath, action: 'skipped', install: 'skipped' });
305
+ completed.push(profile.name);
306
+ continue;
307
+ }
308
+ // 锁外备份(任何可能写入的路径都先备份,覆盖 changed 竞态)
309
+ let backup;
310
+ try {
311
+ backup = backupFileBeforeWrite(profile.packagePath, { command: 'setup' });
312
+ }
313
+ catch (error) {
314
+ throw new DshProfileError('DSH_BACKUP_FAILED', { profile: profile.name, path: profile.packagePath, err: messageOf(error), completed: [...completed] }, `DSH profile backup failed: ${profile.packagePath}`);
315
+ }
316
+ if (backup !== null) {
317
+ backupRel = backup.backupRel;
318
+ appendUpdateInfo('backed', {
319
+ absolutePath: profile.packagePath,
320
+ backupRel: backup.backupRel,
321
+ command: 'setup',
322
+ });
323
+ notifyBackupIfTTY(backup.backupRel);
324
+ }
325
+ // 锁内重读 → 合并 → 按需 pnpm 预检 → 原子写
326
+ const locked = withFileLock(globalLockPath(`dsh-profile-${safeLockName(profile.name)}`), () => {
327
+ const text = readText(profile.packagePath);
328
+ const json = parseProfileJson(text, profile.packagePath);
329
+ const merge = buildDshProfileMerge(json, plan.adapterDir);
330
+ const install = merge.changed || !isLinkValid(profile.path, plan.adapterDir);
331
+ if (install)
332
+ resolvePnpmCommand(profile.path);
333
+ if (merge.changed) {
334
+ atomicWriteFileSync(profile.packagePath, `${JSON.stringify(merge.next, null, 2)}\n`);
335
+ }
336
+ return { text, changed: merge.changed, install };
337
+ });
338
+ lockedOriginalText = locked.text;
339
+ wrote = locked.changed;
340
+ if (locked.install) {
341
+ try {
342
+ runPnpmInstall(profile.path);
343
+ }
344
+ catch (error) {
345
+ let rollbackError;
346
+ if (wrote && lockedOriginalText !== undefined) {
347
+ try {
348
+ atomicWriteFileSync(profile.packagePath, lockedOriginalText);
349
+ }
350
+ catch (rollbackErr) {
351
+ rollbackError = messageOf(rollbackErr);
352
+ }
353
+ }
354
+ appendUpdateInfo('anomaly', {
355
+ absolutePath: profile.packagePath,
356
+ note: 'dsh_install_failed_rolled_back',
357
+ });
358
+ throw new DshProfileError('DSH_PNPM_INSTALL_FAILED', {
359
+ ...(error instanceof DshProfileError ? error.detail : {}),
360
+ profile: profile.name,
361
+ path: profile.path,
362
+ completed: [...completed],
363
+ ...(rollbackError === undefined ? {} : { rollbackError }),
364
+ }, error instanceof Error ? error.message : String(error));
365
+ }
366
+ }
367
+ results.push({
368
+ name: profile.name,
369
+ path: profile.packagePath,
370
+ action: locked.changed ? 'updated' : 'skipped',
371
+ ...(backupRel === undefined ? {} : { backupRel }),
372
+ install: locked.install ? 'installed' : 'skipped',
373
+ });
374
+ completed.push(profile.name);
375
+ }
376
+ catch (error) {
377
+ if (error instanceof DshProfileError) {
378
+ if (error.detail.completed === undefined) {
379
+ error.detail.completed = [...completed];
380
+ }
381
+ throw error;
382
+ }
383
+ throw new DshProfileError('DSH_PNPM_INSTALL_FAILED', { profile: profile.name, path: profile.path, err: messageOf(error), completed: [...completed] }, messageOf(error));
384
+ }
385
+ }
386
+ return results;
387
+ }
388
+ /** 内部错误 → 命令层稳定错误码 + detail.reason(纯函数) */
389
+ export function dshErrorToCli(err) {
390
+ const internal = err.code === 'DSH_BACKUP_FAILED' || err.code === 'DSH_PNPM_INSTALL_FAILED';
391
+ return {
392
+ code: internal ? 'INTERNAL_ERROR' : 'INVALID_ARGUMENT',
393
+ detail: { reason: ERROR_REASON[err.code], ...err.detail },
394
+ };
395
+ }
396
+ /** 备份错误类型再导出(命令层测试/诊断用) */
397
+ export { BackupError };
398
+ //# sourceMappingURL=dsh-profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dsh-profile.js","sourceRoot":"","sources":["../../src/core/dsh-profile.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * CLI 稳定错误码表(v1.2.2-stage-95 op-002)
3
3
  *
4
4
  * 职责:提供 `code → kind → exitCode` 的**单一权威**映射,供命令层与测试共用。
5
- * 契约:`docs/json-contract.md` §3(12 行,逐行同源);本文件为唯一实现来源,命令层不得硬编码 kind / exitCode。
5
+ * 契约:`docs/json-contract.md` §3(13 行,逐行同源);本文件为唯一实现来源,命令层不得硬编码 kind / exitCode。
6
6
  * 边界:仅定义分类,不承担输出控制(envelope / stderr 归 `src/commands/shared/errors.ts`)。
7
7
  */
8
8
  /** 错误分类:预期拒绝 / 内部故障(分类权威;退出码为冗余信号) */
@@ -16,7 +16,7 @@ export interface CliErrorSpec {
16
16
  exitCode: CliExitCode;
17
17
  }
18
18
  /**
19
- * 12 个稳定错误码(kind 与 exitCode 内嵌,禁止命令层自行推导)。
19
+ * 13 个稳定错误码(kind 与 exitCode 内嵌,禁止命令层自行推导)。
20
20
  * 顺序与 `docs/json-contract.md` §3 逐行一致。
21
21
  */
22
22
  export declare const CLI_ERROR_CODES: {
@@ -80,10 +80,15 @@ export declare const CLI_ERROR_CODES: {
80
80
  readonly kind: "refusal";
81
81
  readonly exitCode: 1;
82
82
  };
83
+ readonly ARCHIVE_EXISTS: {
84
+ readonly code: "ARCHIVE_EXISTS";
85
+ readonly kind: "refusal";
86
+ readonly exitCode: 1;
87
+ };
83
88
  };
84
89
  /** 稳定错误码联合类型(由码表键派生,防字符串漂移) */
85
90
  export type CliErrorCode = keyof typeof CLI_ERROR_CODES;
86
- /** 有序 12 行映射表(顺序与契约文档 §3 逐行一致,供测试逐行断言) */
91
+ /** 有序 13 行映射表(顺序与契约文档 §3 逐行一致,供测试逐行断言) */
87
92
  export declare const CLI_ERROR_TABLE: readonly CliErrorSpec[];
88
93
  /**
89
94
  * 按 code 取错误规格(kind / exitCode 的唯一读取入口)。
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,sCAAsC;AACtC,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,CAAC;AAElD,wDAAwD;AACxD,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAExC,4CAA4C;AAC5C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,WAAW,CAAC;CACvB;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAclB,CAAC;AAEX,+BAA+B;AAC/B,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,eAAe,CAAC;AAExD,0CAA0C;AAC1C,eAAO,MAAM,eAAe,EAAE,SAAS,YAAY,EAalD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAEhE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAE1D"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,sCAAsC;AACtC,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,CAAC;AAElD,wDAAwD;AACxD,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAExC,4CAA4C;AAC5C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,WAAW,CAAC;CACvB;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgBlB,CAAC;AAEX,+BAA+B;AAC/B,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,eAAe,CAAC;AAExD,0CAA0C;AAC1C,eAAO,MAAM,eAAe,EAAE,SAAS,YAAY,EAclD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAEhE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAE1D"}
@@ -2,11 +2,11 @@
2
2
  * CLI 稳定错误码表(v1.2.2-stage-95 op-002)
3
3
  *
4
4
  * 职责:提供 `code → kind → exitCode` 的**单一权威**映射,供命令层与测试共用。
5
- * 契约:`docs/json-contract.md` §3(12 行,逐行同源);本文件为唯一实现来源,命令层不得硬编码 kind / exitCode。
5
+ * 契约:`docs/json-contract.md` §3(13 行,逐行同源);本文件为唯一实现来源,命令层不得硬编码 kind / exitCode。
6
6
  * 边界:仅定义分类,不承担输出控制(envelope / stderr 归 `src/commands/shared/errors.ts`)。
7
7
  */
8
8
  /**
9
- * 12 个稳定错误码(kind 与 exitCode 内嵌,禁止命令层自行推导)。
9
+ * 13 个稳定错误码(kind 与 exitCode 内嵌,禁止命令层自行推导)。
10
10
  * 顺序与 `docs/json-contract.md` §3 逐行一致。
11
11
  */
12
12
  export const CLI_ERROR_CODES = {
@@ -23,8 +23,10 @@ export const CLI_ERROR_CODES = {
23
23
  INTERNAL_ERROR: { code: 'INTERNAL_ERROR', kind: 'internal', exitCode: 3 },
24
24
  // stage-97 预留:archive <stage> --json 失败(本阶段不实现,仅登记映射)
25
25
  ARCHIVE_FAILED: { code: 'ARCHIVE_FAILED', kind: 'refusal', exitCode: 1 },
26
+ // v1.2.4 A1:目标归档文件已存在且未显式 --force(零写盘拒绝)
27
+ ARCHIVE_EXISTS: { code: 'ARCHIVE_EXISTS', kind: 'refusal', exitCode: 1 },
26
28
  };
27
- /** 有序 12 行映射表(顺序与契约文档 §3 逐行一致,供测试逐行断言) */
29
+ /** 有序 13 行映射表(顺序与契约文档 §3 逐行一致,供测试逐行断言) */
28
30
  export const CLI_ERROR_TABLE = [
29
31
  CLI_ERROR_CODES.NO_INIT,
30
32
  CLI_ERROR_CODES.INVALID_ARGUMENT,
@@ -38,6 +40,7 @@ export const CLI_ERROR_TABLE = [
38
40
  CLI_ERROR_CODES.FLOW_CONCURRENT_CONFLICT,
39
41
  CLI_ERROR_CODES.INTERNAL_ERROR,
40
42
  CLI_ERROR_CODES.ARCHIVE_FAILED,
43
+ CLI_ERROR_CODES.ARCHIVE_EXISTS,
41
44
  ];
42
45
  /**
43
46
  * 按 code 取错误规格(kind / exitCode 的唯一读取入口)。
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAeH;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE;IAC1D,gBAAgB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE;IAC5E,eAAe,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE;IAC1E,wBAAwB,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE;IAC5F,oBAAoB,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE;IACpF,gBAAgB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE;IAC5E,qBAAqB,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE;IACtF,oBAAoB,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE;IACrF,iBAAiB,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE;IAC9E,wBAAwB,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE;IAC5F,cAAc,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE;IACzE,sDAAsD;IACtD,cAAc,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE;CAChE,CAAC;AAKX,0CAA0C;AAC1C,MAAM,CAAC,MAAM,eAAe,GAA4B;IACtD,eAAe,CAAC,OAAO;IACvB,eAAe,CAAC,gBAAgB;IAChC,eAAe,CAAC,eAAe;IAC/B,eAAe,CAAC,wBAAwB;IACxC,eAAe,CAAC,oBAAoB;IACpC,eAAe,CAAC,gBAAgB;IAChC,eAAe,CAAC,qBAAqB;IACrC,eAAe,CAAC,oBAAoB;IACpC,eAAe,CAAC,iBAAiB;IACjC,eAAe,CAAC,wBAAwB;IACxC,eAAe,CAAC,cAAc;IAC9B,eAAe,CAAC,cAAc;CAC/B,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAAkB;IAChD,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAkB;IAC/C,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAeH;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE;IAC1D,gBAAgB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE;IAC5E,eAAe,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE;IAC1E,wBAAwB,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE;IAC5F,oBAAoB,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE;IACpF,gBAAgB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE;IAC5E,qBAAqB,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE;IACtF,oBAAoB,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE;IACrF,iBAAiB,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE;IAC9E,wBAAwB,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE;IAC5F,cAAc,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE;IACzE,sDAAsD;IACtD,cAAc,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE;IACxE,yCAAyC;IACzC,cAAc,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE;CAChE,CAAC;AAKX,0CAA0C;AAC1C,MAAM,CAAC,MAAM,eAAe,GAA4B;IACtD,eAAe,CAAC,OAAO;IACvB,eAAe,CAAC,gBAAgB;IAChC,eAAe,CAAC,eAAe;IAC/B,eAAe,CAAC,wBAAwB;IACxC,eAAe,CAAC,oBAAoB;IACpC,eAAe,CAAC,gBAAgB;IAChC,eAAe,CAAC,qBAAqB;IACrC,eAAe,CAAC,oBAAoB;IACpC,eAAe,CAAC,iBAAiB;IACjC,eAAe,CAAC,wBAAwB;IACxC,eAAe,CAAC,cAAc;IAC9B,eAAe,CAAC,cAAc;IAC9B,eAAe,CAAC,cAAc;CAC/B,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAAkB;IAChD,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAkB;IAC/C,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;AACnD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../../src/core/i18n-data/en.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAa,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxD,eAAO,MAAM,MAAM,EAAE,UA6BpB,CAAC;AAGF,eAAO,MAAM,IAAI,EAAE,UAmUlB,CAAC;AAGF,eAAO,MAAM,IAAI,EAAE,UAyBlB,CAAC;AAGF,eAAO,MAAM,MAAM,EAAE,UAiCpB,CAAC;AAGF,eAAO,MAAM,OAAO,EAAE,UA8CrB,CAAC;AAGF,eAAO,MAAM,KAAK,EAAE,UAgCnB,CAAC;AAGF,eAAO,MAAM,IAAI,EAAE,UAoClB,CAAC;AAGF,eAAO,MAAM,SAAS,EAAE,UAiCvB,CAAC;AAGF,eAAO,MAAM,OAAO,EAAE,UAOrB,CAAC;AAGF,eAAO,MAAM,OAAO,EAAE,UAAe,CAAC;AAGtC,eAAO,MAAM,IAAI,EAAE,UAMlB,CAAC;AAGF,eAAO,MAAM,YAAY,EAAE,UAAe,CAAC;AAG3C,eAAO,MAAM,IAAI,EAAE,UAalB,CAAC;AAGF,eAAO,MAAM,IAAI,EAAE,UA2TlB,CAAC;AAGF,eAAO,MAAM,MAAM,EAAE,UA+BpB,CAAC;AAGF,eAAO,MAAM,OAAO,EAAE,UA4BrB,CAAC;AAGF,eAAO,MAAM,KAAK,EAAE,UAqBnB,CAAC;AAGF,eAAO,MAAM,KAAK,EAAE,UAenB,CAAC;AAGF,eAAO,MAAM,OAAO,EAAE,UAUrB,CAAC;AAGF,eAAO,MAAM,IAAI,EAAE,UAMlB,CAAC;AAGF,eAAO,MAAM,GAAG,EAAE,UA6EjB,CAAC;AAGF,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAsBlE,CAAC"}
1
+ {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../../src/core/i18n-data/en.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAa,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxD,eAAO,MAAM,MAAM,EAAE,UA6BpB,CAAC;AAGF,eAAO,MAAM,IAAI,EAAE,UAmUlB,CAAC;AAGF,eAAO,MAAM,IAAI,EAAE,UAyBlB,CAAC;AAGF,eAAO,MAAM,MAAM,EAAE,UAkCpB,CAAC;AAGF,eAAO,MAAM,OAAO,EAAE,UA8CrB,CAAC;AAGF,eAAO,MAAM,KAAK,EAAE,UAgCnB,CAAC;AAGF,eAAO,MAAM,IAAI,EAAE,UAoClB,CAAC;AAGF,eAAO,MAAM,SAAS,EAAE,UAiCvB,CAAC;AAGF,eAAO,MAAM,OAAO,EAAE,UAQrB,CAAC;AAGF,eAAO,MAAM,OAAO,EAAE,UAAe,CAAC;AAGtC,eAAO,MAAM,IAAI,EAAE,UAMlB,CAAC;AAGF,eAAO,MAAM,YAAY,EAAE,UAAe,CAAC;AAG3C,eAAO,MAAM,IAAI,EAAE,UAclB,CAAC;AAGF,eAAO,MAAM,IAAI,EAAE,UAqUlB,CAAC;AAGF,eAAO,MAAM,MAAM,EAAE,UA+BpB,CAAC;AAGF,eAAO,MAAM,OAAO,EAAE,UA4BrB,CAAC;AAGF,eAAO,MAAM,KAAK,EAAE,UAqBnB,CAAC;AAGF,eAAO,MAAM,KAAK,EAAE,UAgCnB,CAAC;AAGF,eAAO,MAAM,OAAO,EAAE,UAUrB,CAAC;AAGF,eAAO,MAAM,IAAI,EAAE,UAMlB,CAAC;AAGF,eAAO,MAAM,GAAG,EAAE,UA6EjB,CAAC;AAGF,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAsBlE,CAAC"}