openfeel 1.1.2 → 1.1.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.
Files changed (53) hide show
  1. package/README.en.md +1 -1
  2. package/README.zh-CN.md +1 -1
  3. package/dist/cli/output-encoding.d.ts +1 -10
  4. package/dist/cli/output-encoding.d.ts.map +1 -1
  5. package/dist/cli/output-encoding.js +6 -51
  6. package/dist/cli/output-encoding.js.map +1 -1
  7. package/dist/commands/config.d.ts.map +1 -1
  8. package/dist/commands/config.js +47 -8
  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 +88 -3
  12. package/dist/commands/flow.js.map +1 -1
  13. package/dist/commands/plan.d.ts.map +1 -1
  14. package/dist/commands/plan.js +67 -2
  15. package/dist/commands/plan.js.map +1 -1
  16. package/dist/commands/stage.js +2 -2
  17. package/dist/commands/stage.js.map +1 -1
  18. package/dist/core/artifact-graph/instruction-loader.d.ts.map +1 -1
  19. package/dist/core/artifact-graph/instruction-loader.js +0 -4
  20. package/dist/core/artifact-graph/instruction-loader.js.map +1 -1
  21. package/dist/core/config.d.ts +25 -4
  22. package/dist/core/config.d.ts.map +1 -1
  23. package/dist/core/config.js +55 -13
  24. package/dist/core/config.js.map +1 -1
  25. package/dist/core/flow-manager.d.ts +126 -9
  26. package/dist/core/flow-manager.d.ts.map +1 -1
  27. package/dist/core/flow-manager.js +281 -33
  28. package/dist/core/flow-manager.js.map +1 -1
  29. package/dist/core/fs/sequence.d.ts +6 -0
  30. package/dist/core/fs/sequence.d.ts.map +1 -1
  31. package/dist/core/fs/sequence.js +13 -0
  32. package/dist/core/fs/sequence.js.map +1 -1
  33. package/dist/core/i18n-data/en.d.ts.map +1 -1
  34. package/dist/core/i18n-data/en.js +28 -4
  35. package/dist/core/i18n-data/en.js.map +1 -1
  36. package/dist/core/i18n-data/zh-CN.d.ts.map +1 -1
  37. package/dist/core/i18n-data/zh-CN.js +28 -4
  38. package/dist/core/i18n-data/zh-CN.js.map +1 -1
  39. package/dist/core/plan/scheme.d.ts +25 -0
  40. package/dist/core/plan/scheme.d.ts.map +1 -1
  41. package/dist/core/plan/scheme.js +168 -2
  42. package/dist/core/plan/scheme.js.map +1 -1
  43. package/dist/core/plan/stage.d.ts +11 -2
  44. package/dist/core/plan/stage.d.ts.map +1 -1
  45. package/dist/core/plan/stage.js +12 -5
  46. package/dist/core/plan/stage.js.map +1 -1
  47. package/dist/core/template-loader.d.ts.map +1 -1
  48. package/dist/core/template-loader.js +23 -17
  49. package/dist/core/template-loader.js.map +1 -1
  50. package/dist/core/update.d.ts.map +1 -1
  51. package/dist/core/update.js +21 -15
  52. package/dist/core/update.js.map +1 -1
  53. package/package.json +1 -1
package/README.en.md CHANGED
@@ -56,7 +56,7 @@ openfeel flow status
56
56
  - **Structured output**: `flow status/current/health/metrics/overview --json` (pure JSON + `schemaVersion`).
57
57
  - **Correction/cleanup CLI surface**: `plan scheme remove/rename/publish`, `flow ops list`, `flow health --fix`, `knowledge dedup`, `lint` non-zero exit on findings.
58
58
  - **Deployment & backup**: automatic backup before overwrite at `~/.openfeel/backup/{ts}/`; new skill `openfeel-cli-usage` (skills 16 → 17).
59
- - **Output encoding adaptation (stage-58)**: on Windows non-TTY (pipe/redirect), output is transcoded to the console `chcp` codepage; TTY / POSIX pass through UTF-8; `--json` is **always UTF-8**; override with `--encoding utf8|gbk` or `OPENFEEL_ENCODING`; unencodable chars degrade to `?` without warning.
59
+ - **Output encoding adaptation (stage-58 / stage-61 fix)**: `auto` passes through **UTF-8** on Windows non-TTY (pipe-friendly); TTY / POSIX pass through UTF-8; **GBK requires explicit** `--encoding gbk` / `OPENFEEL_ENCODING`; `--json` is **always UTF-8**; unencodable chars degrade to `?` without warning.
60
60
  - **Runtime log (stage-58)**: written by default to `~/.openfeel/cli/logs/openfeel-YYYY-MM-DD.log` (UTF-8, one file per day); `--log-file <path>` changes the path, `--no-log` / `OPENFEEL_LOG=0` disables it, `--debug` enables debug-level entries.
61
61
 
62
62
  ## Command Reference
package/README.zh-CN.md CHANGED
@@ -56,7 +56,7 @@ openfeel flow status
56
56
  - **结构化输出**:`flow status/current/health/metrics/overview --json`(纯 JSON + `schemaVersion`)。
57
57
  - **纠正/清理侧命令面**:`plan scheme remove/rename/publish`、`flow ops list`、`flow health --fix`、`knowledge dedup`、`lint` 发现问题非 0 退出。
58
58
  - **部署与备份**:部署覆盖前自动备份 `~/.openfeel/backup/{ts}/`;新增 skill `openfeel-cli-usage`(skill 16 → 17)。
59
- - **输出编码自适应(stage-58)**:Windows 非 TTY(管道/重定向)下按控制台 `chcp` 自动转码,TTY / POSIX 直通 UTF-8;`--json` **恒 UTF-8**;`--encoding utf8|gbk` 或 `OPENFEEL_ENCODING` 可覆盖;不可编码字符降 `?` 不告警。
59
+ - **输出编码自适应(stage-58 / stage-61 修正)**:`auto` 在 Windows 非 TTY(管道/重定向)下**直通 UTF-8**(管道/CI 友好);TTY / POSIX 直通 UTF-8;**GBK 需 `--encoding gbk` / `OPENFEEL_ENCODING` 显式**;`--json` **恒 UTF-8**;不可编码字符降 `?` 不告警。
60
60
  - **运行日志(stage-58)**:默认写入 `~/.openfeel/cli/logs/openfeel-YYYY-MM-DD.log`(UTF-8,按日一文件);`--log-file <path>` 改路径,`--no-log` / `OPENFEEL_LOG=0` 关闭,`--debug` 记录 debug 级。
61
61
 
62
62
  ## 命令参考
@@ -10,8 +10,6 @@ export interface ResolveTargetEncodingContext {
10
10
  platform: NodeJS.Platform;
11
11
  /** 该输出流是否为 TTY */
12
12
  isTTY: boolean;
13
- /** 已探测的控制台代码页(测试注入;undefined 表示需真实调用 detectConsoleCodepage) */
14
- codepage?: number | null;
15
13
  }
16
14
  /** 安装选项(仅注入输出流,便于单测;不含 force——无 env 守卫可绕) */
17
15
  export interface InstallOutputEncodingOptions {
@@ -20,17 +18,10 @@ export interface InstallOutputEncodingOptions {
20
18
  }
21
19
  /** 归一化编码值:命中别名返回目标编码;'auto'/空/未知返回 null */
22
20
  export declare function normalizeEncoding(value: string | undefined): OutputEncoding | null;
23
- /** 代码页 → iconv 编码名;未知代码页回退 utf8 */
24
- export declare function codepageToIconv(cp: number): OutputEncoding;
25
- /**
26
- * 探测当前控制台代码页(仅 win32 非 TTY 场景调用)。
27
- * 从 chcp 输出按 latin1 提取首个数字(**勿按 UTF-8 解码整串**);失败/无匹配返回 null。
28
- */
29
- export declare function detectConsoleCodepage(): number | null;
30
21
  /**
31
22
  * 解析目标输出编码(纯函数)。
32
23
  * 优先级:① --json→utf8(最高) ② 显式 --encoding ③ OPENFEEL_ENCODING ④ 非 win32/TTY→utf8
33
- * ⑤ win32 非 TTY→chcp 探测映射(未知→utf8)。
24
+ * ⑤ win32 非 TTY→utf8。
34
25
  */
35
26
  export declare function resolveTargetEncoding(ctx: ResolveTargetEncodingContext): OutputEncoding;
36
27
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"output-encoding.d.ts","sourceRoot":"","sources":["../../src/cli/output-encoding.ts"],"names":[],"mappings":"AAkBA,8BAA8B;AAC9B,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAErF,8CAA8C;AAC9C,MAAM,WAAW,4BAA4B;IAC3C,kDAAkD;IAClD,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,yBAAyB;IACzB,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,kBAAkB;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,6CAA6C;AAC7C,MAAM,WAAW,4BAA4B;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;CAC7B;AAuBD,2CAA2C;AAC3C,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,GAAG,IAAI,CAMlF;AAgBD,mCAAmC;AACnC,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,CAiB1D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,GAAG,IAAI,CAiBrD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,4BAA4B,GAAG,cAAc,CAuBvF;AA6BD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,GAAE,4BAAiC,GAAG,IAAI,CAOnF"}
1
+ {"version":3,"file":"output-encoding.d.ts","sourceRoot":"","sources":["../../src/cli/output-encoding.ts"],"names":[],"mappings":"AAkBA,8BAA8B;AAC9B,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAErF,8CAA8C;AAC9C,MAAM,WAAW,4BAA4B;IAC3C,kDAAkD;IAClD,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,yBAAyB;IACzB,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,kBAAkB;IAClB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,6CAA6C;AAC7C,MAAM,WAAW,4BAA4B;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;CAC7B;AAoBD,2CAA2C;AAC3C,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,GAAG,IAAI,CAMlF;AAgBD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,4BAA4B,GAAG,cAAc,CAsBvF;AA6BD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,GAAE,4BAAiC,GAAG,IAAI,CAOnF"}
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * CLI 输出编码自适应模块(stage-58 op-001)
3
3
  *
4
- * 职责:在 CLI 进程入口(bin/openfeel.js)安装 stdout/stderr 写包装,把人类可读文本按目标编码转码,
5
- * 解决 Windows 传统 CJK 代码页(非 TTY/管道)下的乱码。
4
+ * 职责:在 CLI 进程入口(bin/openfeel.js)安装 stdout/stderr 写包装,把人类可读文本按目标编码转码。
5
+ * win32 非 TTY 默认直通 UTF-8(对齐 Node 默认与管道/CI 消费者);GBK 仅经显式
6
+ * `--encoding gbk` / `OPENFEEL_ENCODING=gbk` 生效。
6
7
  *
7
8
  * 设计边界:
8
9
  * - **库侧默认 no-op**:未调用 installOutputEncoding 时不包装任何流(测试 import 零副作用)。
@@ -13,12 +14,9 @@
13
14
  * 直接 write(如 write(str, 'latin1', cb))不受支持。当前全仓 process.stdout/stderr.write 直调为 0。
14
15
  * - 不可编码字符由 iconv-lite 降级为 '?',**不额外告警**。
15
16
  */
16
- import { spawnSync } from 'node:child_process';
17
17
  import iconv from 'iconv-lite';
18
18
  /** 已安装标志(幂等) */
19
19
  let installed = false;
20
- /** chcp 探测结果进程内缓存(undefined=未探测,null=探测失败) */
21
- let cachedCodepage;
22
20
  /** 编码别名 → iconv 编码名('auto'/空/未知返回 null → 调用方继续回退) */
23
21
  const ENCODING_ALIASES = {
24
22
  utf8: 'utf8',
@@ -54,52 +52,10 @@ function readEncodingArg(argv) {
54
52
  }
55
53
  return undefined;
56
54
  }
57
- /** 代码页 → iconv 编码名;未知代码页回退 utf8 */
58
- export function codepageToIconv(cp) {
59
- switch (cp) {
60
- case 936:
61
- return 'gbk';
62
- case 54936:
63
- return 'gb18030';
64
- case 950:
65
- return 'big5';
66
- case 932:
67
- return 'cp932';
68
- case 949:
69
- return 'cp949';
70
- case 65001:
71
- return 'utf8';
72
- default:
73
- return 'utf8';
74
- }
75
- }
76
- /**
77
- * 探测当前控制台代码页(仅 win32 非 TTY 场景调用)。
78
- * 从 chcp 输出按 latin1 提取首个数字(**勿按 UTF-8 解码整串**);失败/无匹配返回 null。
79
- */
80
- export function detectConsoleCodepage() {
81
- if (cachedCodepage !== undefined) {
82
- return cachedCodepage;
83
- }
84
- try {
85
- const r = spawnSync('chcp', [], { stdio: ['ignore', 'pipe', 'ignore'], windowsHide: true });
86
- if (r.status !== 0 || !r.stdout) {
87
- cachedCodepage = null;
88
- return cachedCodepage;
89
- }
90
- const m = /\d+/.exec(r.stdout.toString('latin1'));
91
- cachedCodepage = m ? Number(m[0]) : null;
92
- }
93
- catch {
94
- // chcp 不可用(非 Windows / 命令缺失)→ 安全降级
95
- cachedCodepage = null;
96
- }
97
- return cachedCodepage;
98
- }
99
55
  /**
100
56
  * 解析目标输出编码(纯函数)。
101
57
  * 优先级:① --json→utf8(最高) ② 显式 --encoding ③ OPENFEEL_ENCODING ④ 非 win32/TTY→utf8
102
- * ⑤ win32 非 TTY→chcp 探测映射(未知→utf8)。
58
+ * ⑤ win32 非 TTY→utf8。
103
59
  */
104
60
  export function resolveTargetEncoding(ctx) {
105
61
  const { argv, env, platform, isTTY } = ctx;
@@ -121,9 +77,8 @@ export function resolveTargetEncoding(ctx) {
121
77
  if (platform !== 'win32' || isTTY) {
122
78
  return 'utf8';
123
79
  }
124
- // ⑤ win32 非 TTY:按控制台代码页映射
125
- const cp = ctx.codepage !== undefined ? ctx.codepage : detectConsoleCodepage();
126
- return cp === null ? 'utf8' : codepageToIconv(cp);
80
+ // ⑤ win32 非 TTY:直接 UTF-8(对齐 Node 默认与管道/CI 消费者;GBK 仅显式 ②/③)
81
+ return 'utf8';
127
82
  }
128
83
  /** 包装单个输出流:仅字符串 chunk 转码,Buffer 直通,保留 callback/返回值 */
129
84
  function wrapStream(stream) {
@@ -1 +1 @@
1
- {"version":3,"file":"output-encoding.js","sourceRoot":"","sources":["../../src/cli/output-encoding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output-encoding.js","sourceRoot":"","sources":["../../src/cli/output-encoding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,MAAM,YAAY,CAAC;AAuB/B,gBAAgB;AAChB,IAAI,SAAS,GAAG,KAAK,CAAC;AAEtB,qDAAqD;AACrD,MAAM,gBAAgB,GAAmC;IACvD,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,MAAM;IACf,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,OAAO;IAClB,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,OAAO;IACjB,KAAK,EAAE,OAAO;CACf,CAAC;AAEF,2CAA2C;AAC3C,MAAM,UAAU,iBAAiB,CAAC,KAAyB;IACzD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,OAAO,gBAAgB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACrC,CAAC;AAED,qEAAqE;AACrE,SAAS,eAAe,CAAC,IAAc;IACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACrB,CAAC;QACD,IAAI,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAClC,OAAO,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAiC;IACrE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;IAC3C,yCAAyC;IACzC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,kBAAkB;IAClB,MAAM,OAAO,GAAG,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,SAAS;IACT,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACzD,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,6CAA6C;IAC7C,IAAI,QAAQ,KAAK,OAAO,IAAI,KAAK,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,2DAA2D;IAC3D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,sDAAsD;AACtD,SAAS,UAAU,CAAC,MAA0B;IAC5C,MAAM,MAAM,GAAG,qBAAqB,CAAC;QACnC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;KAC7B,CAAC,CAAC;IACH,yBAAyB;IACzB,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,CAAC,KAAc,EAAE,QAAkB,EAAE,EAAY,EAAW,EAAE;QAC5E,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,0DAA0D;YAC1D,MAAM,QAAQ,GAAG,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACxC,OAAQ,IAA4C,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACtE,CAAC;QACD,sBAAsB;QACtB,OAAQ,IAAqC,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC,CAAC;IACF,MAAM,CAAC,KAAK,GAAG,OAAyC,CAAC;AAC3D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAqC,EAAE;IAC3E,IAAI,SAAS,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IACD,UAAU,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,UAAU,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,SAAS,GAAG,IAAI,CAAC;AACnB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4DpC;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6M5D"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4DpC;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsP5D"}
@@ -1,5 +1,5 @@
1
1
  import { getGlobalConfig, setGlobalConfig } from '../core/workspace/identity.js';
2
- import { getConfigValue, setConfigValue, readProfile, writeProfile, ProfileSchema, ConfigDefaultsSchema, getConfigFieldLegalValues } from '../core/config.js';
2
+ import { getConfigValue, setConfigValue, readProfile, writeProfile, ProfileSchema, ConfigDefaultsSchema, getConfigFieldLegalValues, normalizeConfigKey, STAGE_FIELD_BY_CONFIG_KEY } from '../core/config.js';
3
3
  import { FlowManager } from '../core/flow-manager.js';
4
4
  import { t, getCliLang } from '../core/i18n.js';
5
5
  /** 全局配置 key 白名单:key → 合法值列表(null 表示任意 string) */
@@ -142,7 +142,9 @@ export function registerConfigCommand(program) {
142
142
  process.exit(1);
143
143
  }
144
144
  try {
145
- const value = getConfigValue(process.cwd(), key);
145
+ // 键名归一:`defaults.X` 与 `X` 等价(输出回显用户输入原键以保留可识别性)
146
+ const normalized = normalizeConfigKey(key);
147
+ const value = getConfigValue(process.cwd(), normalized);
146
148
  if (value === null) {
147
149
  console.log(t('config.get.result', lang, { key, value: t('common.noConfig', lang) }));
148
150
  }
@@ -161,9 +163,16 @@ export function registerConfigCommand(program) {
161
163
  .command('set <key> <value>')
162
164
  .description(t('help.config.set'))
163
165
  .option('-g, --global', '操作全局 profile(~/.config/openfeel/profile.yaml)')
166
+ .option('--sync-stages', '将配置值同步写入所有已注册阶段的 status.md 对应字段(仅项目模式)')
164
167
  .action(function (key, value) {
165
168
  const opts = this.opts();
166
169
  const lang = getCliLang(process.cwd());
170
+ // --sync-stages 仅项目模式可用(与 --global 组合 → exit 1)
171
+ if (opts.global && opts.syncStages) {
172
+ console.error(t('common.errorTmpl', lang, { msg: '--sync-stages 仅项目模式可用(不能与 --global 组合)' }));
173
+ process.exit(1);
174
+ return;
175
+ }
167
176
  // 全局模式:操作 ~/.config/openfeel/profile.yaml
168
177
  if (opts.global) {
169
178
  // key 白名单校验(Object.hasOwn 防原型链穿透,T30)
@@ -201,29 +210,59 @@ export function registerConfigCommand(program) {
201
210
  return;
202
211
  }
203
212
  // 项目模式(原行为)
213
+ // 键名归一:`defaults.X` 与 `X` 等价(单一来源 normalizeConfigKey)
214
+ const normalizedKey = normalizeConfigKey(key);
204
215
  // 白名单 = ConfigDefaultsSchema 全量键(schema 驱动,schema 新增键自动纳入,T36/R3)
205
216
  const allowedKeys = Object.keys(ConfigDefaultsSchema.shape);
206
- if (!allowedKeys.includes(key)) {
207
- console.error(t('config.set.invalidKey', lang, { val: key, keys: allowedKeys.join(', ') }));
217
+ if (!allowedKeys.includes(normalizedKey)) {
218
+ // 错误文案回显支持键清单与 `defaults.` 等价说明(不新增 i18n 键)
219
+ const keysHint = allowedKeys.map((k) => `${k}(或 defaults.${k})`).join(', ');
220
+ console.error(t('config.set.invalidKey', lang, { val: key, keys: keysHint }));
208
221
  process.exit(1);
209
222
  return;
210
223
  }
211
224
  // 取值校验 schema 驱动(枚举非法须报错且不写盘,T36/R3)
212
- const legalValues = getConfigFieldLegalValues(key);
225
+ const legalValues = getConfigFieldLegalValues(normalizedKey);
213
226
  if (legalValues && !legalValues.includes(value)) {
214
- console.error(t('config.set.invalidValue', lang, { val: value, key, values: legalValues.join(', ') }));
227
+ console.error(t('config.set.invalidValue', lang, { val: value, key: normalizedKey, values: legalValues.join(', ') }));
215
228
  process.exit(1);
216
229
  return;
217
230
  }
218
231
  try {
219
- setConfigValue(process.cwd(), key, value);
220
- console.log(t('config.set.valueOk', lang, { key, value }));
232
+ setConfigValue(process.cwd(), normalizedKey, value);
233
+ console.log(t('config.set.valueOk', lang, { key: normalizedKey, value }));
221
234
  }
222
235
  catch (err) {
223
236
  // 写入 config.yaml 失败(YAML 语法错误、权限问题等),输出实际错误原因
224
237
  console.error(t('config.set.error', lang, { err: err.message }));
225
238
  process.exit(1);
226
239
  }
240
+ // --sync-stages:将目标键批量同步到所有已注册阶段 status.md 对应字段(仅项目模式)
241
+ if (opts.syncStages) {
242
+ const field = STAGE_FIELD_BY_CONFIG_KEY[normalizedKey];
243
+ const mgr = new FlowManager(process.cwd());
244
+ const results = mgr.isLoaded() ? mgr.syncConfigFieldToStages(normalizedKey, value) : [];
245
+ let updated = 0;
246
+ for (const r of results) {
247
+ switch (r.result) {
248
+ case 'updated':
249
+ updated++;
250
+ console.log(t('stage.set.updatedTmpl', lang, { stageId: r.stage, field: field ?? normalizedKey, value }));
251
+ break;
252
+ case 'noop':
253
+ console.log(t('stage.set.noopTmpl', lang, { field: field ?? normalizedKey }));
254
+ break;
255
+ case 'skipped-no-status':
256
+ console.error(t('stage.errorStageNotFoundTmpl', lang, { stageId: r.stage }));
257
+ break;
258
+ default: // skipped-no-field
259
+ console.error(t('stage.set.errorFieldNotFoundTmpl', lang, { stageId: r.stage, field: field ?? normalizedKey }));
260
+ break;
261
+ }
262
+ }
263
+ // 汇总:同步 N / 跳过 M(跳过含 no-op 与无字段/无 status;退出码保持 0)
264
+ console.log(`同步 ${updated} / 跳过 ${results.length - updated}`);
265
+ }
227
266
  });
228
267
  // openfeel config effective [key] — 输出有效值 + 生效来源(P9)
229
268
  // 与 `config get`(原始值读取)语义不同:此处为级联解析结果(值 + 来源)。
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"flow.d.ts","sourceRoot":"","sources":["../../src/commands/flow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6sD1D"}
1
+ {"version":3,"file":"flow.d.ts","sourceRoot":"","sources":["../../src/commands/flow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkyD1D"}
@@ -558,6 +558,54 @@ export function registerFlowCommand(program) {
558
558
  deps: deps.length > 0 ? deps.join(', ') : t('common.none', lang),
559
559
  }));
560
560
  });
561
+ // flow stage reset <stageId> --to <phase> [--dry-run]
562
+ stageCmd
563
+ .command('reset <stageId>')
564
+ .description('复位阶段 phase(允许回退;受合法值域与 to=done 的 REV 阻塞约束)')
565
+ .requiredOption('--to <phase>', '目标 phase(如 review_pending / test_pending / done);合法值见 openfeel flow phases')
566
+ .option('--dry-run', '仅预览,不写盘')
567
+ .action((stageId, options) => {
568
+ const lang = getCliLang(process.cwd());
569
+ const mgr = createManager();
570
+ if (!mgr.isLoaded()) {
571
+ console.error(t('common.errorNoInit', lang));
572
+ process.exit(1);
573
+ }
574
+ const stageArg = normalizeStageId(stageId) ?? stageId;
575
+ try {
576
+ const result = mgr.resetStagePhase(stageArg, options.to, { dryRun: options.dryRun });
577
+ if (options.dryRun) {
578
+ console.log(t('flow.stage.reset.previewTitle', lang));
579
+ console.log(t('flow.stage.reset.previewTmpl', lang, {
580
+ stage: stageArg,
581
+ from: result.from,
582
+ to: result.to,
583
+ status: result.status,
584
+ }));
585
+ return;
586
+ }
587
+ if (!result.changed) {
588
+ console.log(t('flow.stage.reset.noopTmpl', lang, { stage: stageArg, phase: result.to }));
589
+ return;
590
+ }
591
+ // 核心层仅改内存;命令层 save()(与 advance 同范式)
592
+ mgr.save();
593
+ console.log(t('flow.stage.reset.okTmpl', lang, {
594
+ stage: stageArg,
595
+ from: result.from,
596
+ to: result.to,
597
+ }));
598
+ }
599
+ catch (err) {
600
+ // 并发写冲突:统一单点(i18n 文案 + 退出码 2);其余走通用错误
601
+ if (isFlowConcurrentError(err)) {
602
+ handleConcurrentConflict(err, lang);
603
+ }
604
+ const msg = err instanceof Error ? err.message : String(err);
605
+ console.error(t('common.errorTmpl', lang, { msg }));
606
+ process.exit(1);
607
+ }
608
+ });
561
609
  // flow advance --stage <id> --to <phase> [--op <id>] [--force]
562
610
  flow
563
611
  .command('advance')
@@ -1308,21 +1356,58 @@ export function registerFlowCommand(program) {
1308
1356
  }
1309
1357
  console.log(t('flow.checkpoint.listCountTmpl', lang, { n: String(snapshots.length) }));
1310
1358
  });
1311
- // flow checkpoint restore <checkpoint-file> [--force]
1359
+ // flow checkpoint restore <checkpoint-file> [--force] [--stage <id>] [--dry-run]
1312
1360
  checkpointCmd
1313
1361
  .command('restore')
1314
- .description('从 Checkpoint 快照恢复 flow.json(覆盖当前文件,需 --force 确认)')
1362
+ .description('从 Checkpoint 快照恢复 flow.json(默认全量覆盖,需 --force 确认;--stage 选择性、--dry-run 预览)')
1315
1363
  .argument('<checkpoint-file>', '快照文件名(如 v5.3-stage-01-20260807T162300-exec_running.json)')
1316
1364
  .option('--force', '确认恢复操作(覆盖当前 flow.json)')
1365
+ .option('--stage <id>', '仅回退指定阶段子树(选择性恢复;缺省为全量覆盖)')
1366
+ .option('--dry-run', '仅预览差异,不写盘')
1317
1367
  .action((file, options) => {
1318
1368
  const lang = getCliLang(process.cwd());
1319
1369
  const mgr = createManager();
1370
+ // --dry-run:只读预览(零写盘),不要求 --force
1371
+ if (options.dryRun) {
1372
+ const preview = mgr.previewRestore(file, { stage: options.stage });
1373
+ if (preview.ok && preview.conflicts) {
1374
+ console.error(t('flow.manager.snapshotRestoreRefused', lang));
1375
+ process.exit(1);
1376
+ return;
1377
+ }
1378
+ if (!preview.ok) {
1379
+ if (preview.reason === 'stage-not-in-snapshot') {
1380
+ console.error(t('flow.checkpoint.restoreStageMissingTmpl', lang, { stage: options.stage ?? '' }));
1381
+ }
1382
+ else {
1383
+ console.error(t('flow.checkpoint.restoreFailTmpl', lang, { file }));
1384
+ }
1385
+ process.exit(1);
1386
+ return;
1387
+ }
1388
+ console.log(t('flow.checkpoint.restoreDryRunTitle', lang) + (options.stage ? ` [${options.stage}]` : ''));
1389
+ if (preview.diffs.length === 0) {
1390
+ console.log(t('flow.checkpoint.restoreNoDiff', lang));
1391
+ }
1392
+ else {
1393
+ for (const d of preview.diffs) {
1394
+ console.log(t('flow.checkpoint.restoreDiffTmpl', lang, {
1395
+ stage: d.stage,
1396
+ fromPhase: d.fromPhase,
1397
+ toPhase: d.toPhase,
1398
+ fromStatus: d.fromStatus,
1399
+ toStatus: d.toStatus,
1400
+ }));
1401
+ }
1402
+ }
1403
+ return;
1404
+ }
1320
1405
  // 安全确认:恢复会覆盖当前 flow.json,必须显式 --force
1321
1406
  if (!options.force) {
1322
1407
  console.error(t('flow.checkpoint.restoreNeedForce', lang));
1323
1408
  process.exit(1);
1324
1409
  }
1325
- const ok = mgr.restoreCheckpoint(file);
1410
+ const ok = mgr.restoreCheckpoint(file, { stage: options.stage });
1326
1411
  if (ok) {
1327
1412
  console.log(t('flow.checkpoint.restoreOkTmpl', lang, { file }));
1328
1413
  }