openfeel 1.2.0 → 1.2.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.en.md +49 -8
- package/README.md +46 -5
- package/README.zh-CN.md +49 -8
- package/bin/openfeel.js +3 -2
- package/dist/cli/index.d.ts +17 -3
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +99 -10
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/project-option.d.ts +40 -0
- package/dist/cli/project-option.d.ts.map +1 -0
- package/dist/cli/project-option.js +140 -0
- package/dist/cli/project-option.js.map +1 -0
- package/dist/commands/archive.d.ts.map +1 -1
- package/dist/commands/archive.js +32 -2
- package/dist/commands/archive.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +71 -7
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/flow.d.ts.map +1 -1
- package/dist/commands/flow.js +490 -112
- package/dist/commands/flow.js.map +1 -1
- package/dist/commands/instructions.d.ts.map +1 -1
- package/dist/commands/instructions.js +13 -3
- package/dist/commands/instructions.js.map +1 -1
- package/dist/commands/knowledge.d.ts.map +1 -1
- package/dist/commands/knowledge.js +113 -17
- package/dist/commands/knowledge.js.map +1 -1
- package/dist/commands/plan.d.ts.map +1 -1
- package/dist/commands/plan.js +31 -7
- package/dist/commands/plan.js.map +1 -1
- package/dist/commands/project.d.ts +66 -0
- package/dist/commands/project.d.ts.map +1 -1
- package/dist/commands/project.js +122 -64
- package/dist/commands/project.js.map +1 -1
- package/dist/commands/req.d.ts +2 -1
- package/dist/commands/req.d.ts.map +1 -1
- package/dist/commands/req.js +219 -34
- package/dist/commands/req.js.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +11 -3
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/shared/errors.d.ts +55 -4
- package/dist/commands/shared/errors.d.ts.map +1 -1
- package/dist/commands/shared/errors.js +108 -10
- package/dist/commands/shared/errors.js.map +1 -1
- package/dist/commands/shared/json-output.d.ts +60 -0
- package/dist/commands/shared/json-output.d.ts.map +1 -0
- package/dist/commands/shared/json-output.js +152 -0
- package/dist/commands/shared/json-output.js.map +1 -0
- package/dist/commands/stage.d.ts.map +1 -1
- package/dist/commands/stage.js +69 -7
- package/dist/commands/stage.js.map +1 -1
- package/dist/commands/view.d.ts.map +1 -1
- package/dist/commands/view.js +27 -0
- package/dist/commands/view.js.map +1 -1
- package/dist/core/config.d.ts +6 -4
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +6 -5
- package/dist/core/config.js.map +1 -1
- package/dist/core/errors.d.ts +100 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +58 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/flow-manager.d.ts +73 -9
- package/dist/core/flow-manager.d.ts.map +1 -1
- package/dist/core/flow-manager.js +211 -38
- package/dist/core/flow-manager.js.map +1 -1
- package/dist/core/fs/file-lock.d.ts +9 -0
- package/dist/core/fs/file-lock.d.ts.map +1 -1
- package/dist/core/fs/file-lock.js +27 -1
- package/dist/core/fs/file-lock.js.map +1 -1
- package/dist/core/i18n-data/en.d.ts.map +1 -1
- package/dist/core/i18n-data/en.js +84 -9
- package/dist/core/i18n-data/en.js.map +1 -1
- package/dist/core/i18n-data/zh-CN.d.ts.map +1 -1
- package/dist/core/i18n-data/zh-CN.js +84 -9
- package/dist/core/i18n-data/zh-CN.js.map +1 -1
- package/dist/core/managed-region.d.ts +16 -2
- package/dist/core/managed-region.d.ts.map +1 -1
- package/dist/core/managed-region.js +24 -3
- package/dist/core/managed-region.js.map +1 -1
- package/dist/core/metrics.d.ts +2 -0
- package/dist/core/metrics.d.ts.map +1 -1
- package/dist/core/metrics.js +15 -0
- package/dist/core/metrics.js.map +1 -1
- package/dist/core/model-config.d.ts +1 -1
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +2 -2
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/opencode-config.js +1 -1
- package/dist/core/opencode-config.js.map +1 -1
- package/dist/core/pipeline-schema.d.ts +22 -0
- package/dist/core/pipeline-schema.d.ts.map +1 -1
- package/dist/core/pipeline-schema.js +24 -0
- package/dist/core/pipeline-schema.js.map +1 -1
- package/dist/core/plan/stage.d.ts +2 -1
- package/dist/core/plan/stage.d.ts.map +1 -1
- package/dist/core/plan/stage.js +7 -2
- package/dist/core/plan/stage.js.map +1 -1
- package/dist/core/req/aggregate.d.ts +21 -2
- package/dist/core/req/aggregate.d.ts.map +1 -1
- package/dist/core/req/aggregate.js +18 -5
- package/dist/core/req/aggregate.js.map +1 -1
- package/dist/core/req/body-file.d.ts.map +1 -1
- package/dist/core/req/body-file.js +7 -3
- package/dist/core/req/body-file.js.map +1 -1
- package/dist/core/req/requirement-ops.d.ts +44 -2
- package/dist/core/req/requirement-ops.d.ts.map +1 -1
- package/dist/core/req/requirement-ops.js +108 -3
- package/dist/core/req/requirement-ops.js.map +1 -1
- package/dist/core/req/types.d.ts +7 -1
- package/dist/core/req/types.d.ts.map +1 -1
- package/dist/core/req/types.js +0 -6
- package/dist/core/req/types.js.map +1 -1
- package/dist/core/runtime-log.d.ts +18 -0
- package/dist/core/runtime-log.d.ts.map +1 -1
- package/dist/core/runtime-log.js +72 -0
- package/dist/core/runtime-log.js.map +1 -1
- package/dist/core/session.d.ts +24 -0
- package/dist/core/session.d.ts.map +1 -0
- package/dist/core/session.js +107 -0
- package/dist/core/session.js.map +1 -0
- package/dist/core/template-loader.d.ts.map +1 -1
- package/dist/core/template-loader.js +3004 -6684
- package/dist/core/template-loader.js.map +1 -1
- package/dist/core/update.d.ts.map +1 -1
- package/dist/core/update.js +720 -35
- package/dist/core/update.js.map +1 -1
- package/package.json +1 -1
|
@@ -38,6 +38,25 @@ export function globalLockPath(name) {
|
|
|
38
38
|
function sleepSync(ms) {
|
|
39
39
|
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
|
|
40
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* 测试专用默认值解析(REV-98-006①;非公开 CLI 契约)。
|
|
43
|
+
* 仅当 `OPENFEEL_TEST_MODE=1` 时读取 env(gate off 时零副作用);
|
|
44
|
+
* `Number(raw)` 且为正整数才生效,非法/缺失一律回落既有默认。
|
|
45
|
+
* 必须在函数体内读取 env(不得提为模块级常量),保证子进程 E2E 可注入。
|
|
46
|
+
* @param envKey 测试 env 键名
|
|
47
|
+
* @param fallback 生产默认值
|
|
48
|
+
*/
|
|
49
|
+
export function resolveTestLockDefault(envKey, fallback) {
|
|
50
|
+
if (process.env.OPENFEEL_TEST_MODE !== '1') {
|
|
51
|
+
return fallback;
|
|
52
|
+
}
|
|
53
|
+
const raw = process.env[envKey];
|
|
54
|
+
if (raw === undefined || raw === '') {
|
|
55
|
+
return fallback;
|
|
56
|
+
}
|
|
57
|
+
const n = Number(raw);
|
|
58
|
+
return Number.isInteger(n) && n > 0 ? n : fallback;
|
|
59
|
+
}
|
|
41
60
|
/** 读取锁文件内容;读取/解析失败返回 null */
|
|
42
61
|
function readLockInfo(lockPath) {
|
|
43
62
|
try {
|
|
@@ -88,7 +107,14 @@ function tryReclaimStale(lockPath, staleMs) {
|
|
|
88
107
|
* @throws 超过 timeoutMs 仍无法获取锁时抛出;fn 自身抛错原样透传
|
|
89
108
|
*/
|
|
90
109
|
export function withFileLock(lockPath, fn, options = {}) {
|
|
91
|
-
|
|
110
|
+
// 显式 options > 测试 env seam(仅 OPENFEEL_TEST_MODE=1 生效)> 生产默认常量
|
|
111
|
+
const timeoutMs = options.timeoutMs === undefined
|
|
112
|
+
? resolveTestLockDefault('OPENFEEL_TEST_LOCK_TIMEOUT_MS', LOCK_TIMEOUT_MS_DEFAULT)
|
|
113
|
+
: options.timeoutMs;
|
|
114
|
+
const staleMs = options.staleMs === undefined
|
|
115
|
+
? resolveTestLockDefault('OPENFEEL_TEST_LOCK_STALE_MS', LOCK_STALE_MS_DEFAULT)
|
|
116
|
+
: options.staleMs;
|
|
117
|
+
const { initialBackoffMs = LOCK_INITIAL_BACKOFF_MS_DEFAULT, maxBackoffMs = LOCK_MAX_BACKOFF_MS_DEFAULT, } = options;
|
|
92
118
|
mkdirSync(dirname(lockPath), { recursive: true });
|
|
93
119
|
const token = randomBytes(8).toString('hex');
|
|
94
120
|
const deadline = Date.now() + timeoutMs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-lock.js","sourceRoot":"","sources":["../../../src/core/fs/file-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EACL,SAAS,EACT,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,UAAU,EACV,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,iBAAiB;AACjB,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAC5C,wCAAwC;AACxC,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAC1C,iBAAiB;AACjB,MAAM,CAAC,MAAM,+BAA+B,GAAG,EAAE,CAAC;AAClD,eAAe;AACf,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAqB/C,iEAAiE;AACjE,MAAM,UAAU,eAAe,CAAC,WAAmB,EAAE,IAAY;IAC/D,OAAO,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;AACxE,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,iDAAiD;IACjD,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,+BAA+B;AAC/B,SAAS,SAAS,CAAC,EAAU;IAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACnE,CAAC;AAED,6BAA6B;AAC7B,SAAS,YAAY,CAAC,QAAgB;IACpC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAa,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,QAAgB,EAAE,OAAe;IACxD,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC,CAAC,WAAW;IAC3B,CAAC;IACD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,IAAI,OAAO,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC,CAAC,MAAM;IACtB,CAAC;IAED,MAAM,SAAS,GAAG,GAAG,QAAQ,UAAU,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;IACvF,IAAI,CAAC;QACH,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,iBAAiB;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,sDAAsD;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC;QACH,UAAU,CAAC,SAAS,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,yBAAyB;IAC3B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAC1B,QAAgB,EAChB,EAAW,EACX,UAA2B,EAAE;IAE7B,MAAM,
|
|
1
|
+
{"version":3,"file":"file-lock.js","sourceRoot":"","sources":["../../../src/core/fs/file-lock.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,
|
|
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"}
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
export const common = {
|
|
3
3
|
error: { key: 'common.error', zh: '', en: 'Error' },
|
|
4
4
|
errorTmpl: { key: 'common.errorTmpl', zh: '', en: 'Error: {msg}' },
|
|
5
|
+
invalidArgumentTmpl: { key: 'common.invalidArgumentTmpl', zh: '', en: 'Invalid argument or usage: {detail}' },
|
|
6
|
+
projectNotFoundTmpl: { key: 'common.projectNotFoundTmpl', zh: '', en: 'Project path does not exist or is not a directory: {path}' },
|
|
7
|
+
projectMissingValueTmpl: { key: 'common.projectMissingValueTmpl', zh: '', en: '--project requires a path value' },
|
|
8
|
+
projectConflictTmpl: { key: 'common.projectConflictTmpl', zh: '', en: '--project was given multiple times with different resolved paths: {values}' },
|
|
5
9
|
concurrentConflict: { key: 'common.concurrentConflict', zh: '', en: '[concurrent conflict] flow.json was modified by another process (expected revision={expected}, on-disk={actual}); this change was not written, please retry.' },
|
|
6
10
|
ok: { key: 'common.ok', zh: '', en: '✓' },
|
|
7
11
|
none: { key: 'common.none', zh: '', en: '(none)' },
|
|
@@ -23,6 +27,7 @@ export const common = {
|
|
|
23
27
|
stageIdInvalidTmpl: { key: 'common.stageIdInvalidTmpl', zh: '', en: '{input} → invalid stage ID (expected stage-NN or vX.Y.Z-stage-NN)' },
|
|
24
28
|
stageIdSuggestTmpl: { key: 'common.stageIdSuggestTmpl', zh: '', en: 'Suggested name: {suggest}' },
|
|
25
29
|
stageDirConflictTmpl: { key: 'common.stageDirConflictTmpl', zh: '', en: 'Stage dir conflict: {stage} and {other} map to the same directory' },
|
|
30
|
+
generalOnlyRequirement: { key: 'common.generalOnlyRequirement', zh: '', en: 'general (General Mode) is valid at the requirement level only — not supported at stage / deployment level; use fast / full for stages.' },
|
|
26
31
|
};
|
|
27
32
|
/* ==================== flow ==================== */
|
|
28
33
|
export const flow = {
|
|
@@ -50,6 +55,24 @@ export const flow = {
|
|
|
50
55
|
'status.lastUpdated': { key: 'flow.status.lastUpdated', zh: '', en: 'Last Updated' },
|
|
51
56
|
'status.recoveryTitle': { key: 'flow.status.recoveryTitle', zh: '', en: '── Cross-Session Recovery Info ──' },
|
|
52
57
|
'status.recoveryMoreTmpl': { key: 'flow.status.recoveryMoreTmpl', zh: '', en: '... {n} more items' },
|
|
58
|
+
// flow next (dispatch decision, read-only)
|
|
59
|
+
'next.title': { key: 'flow.next.title', zh: '', en: 'Pipeline next step (read-only)' },
|
|
60
|
+
'next.stageLabel': { key: 'flow.next.stageLabel', zh: '', en: 'Stage' },
|
|
61
|
+
'next.phaseLabel': { key: 'flow.next.phaseLabel', zh: '', en: 'Phase' },
|
|
62
|
+
'next.responsibleAgentLabel': { key: 'flow.next.responsibleAgentLabel', zh: '', en: 'Responsible agent' },
|
|
63
|
+
'next.workflowModeLabel': { key: 'flow.next.workflowModeLabel', zh: '', en: 'Workflow mode' },
|
|
64
|
+
'next.displayTierLabel': { key: 'flow.next.displayTierLabel', zh: '', en: 'Display review tier' },
|
|
65
|
+
'next.effectiveTierLabel': { key: 'flow.next.effectiveTierLabel', zh: '', en: 'Effective review tier' },
|
|
66
|
+
'next.legalNextPhasesLabel': { key: 'flow.next.legalNextPhasesLabel', zh: '', en: 'Legal next phases' },
|
|
67
|
+
'next.suggestedCommandLabel': { key: 'flow.next.suggestedCommandLabel', zh: '', en: 'Suggested command' },
|
|
68
|
+
'next.guardsLabel': { key: 'flow.next.guardsLabel', zh: '', en: 'Guards' },
|
|
69
|
+
'next.blockingReviewsLabel': { key: 'flow.next.blockingReviewsLabel', zh: '', en: 'Blocking reviews' },
|
|
70
|
+
'next.blockingReviewItemTmpl': { key: 'flow.next.blockingReviewItemTmpl', zh: '', en: '{id}: {title} (priority {priority}, op {op})' },
|
|
71
|
+
'next.guardNoActiveStage': { key: 'flow.next.guardNoActiveStage', zh: '', en: 'No active stage (pipeline.current.stage is empty or the stage record is missing): Feel decides the next step' },
|
|
72
|
+
'next.guardAutoAdvanceDisabled': { key: 'flow.next.guardAutoAdvanceDisabled', zh: '', en: 'Auto-advance is disabled (auto_advance=disabled): ask the user before advancing' },
|
|
73
|
+
'next.guardBlockingReviewsTmpl': { key: 'flow.next.guardBlockingReviewsTmpl', zh: '', en: '{n} blocking open REV(s) present: resolve before advancing to done' },
|
|
74
|
+
'next.guardNoLegalTargets': { key: 'flow.next.guardNoLegalTargets', zh: '', en: 'No legal next phase from the current phase (consider --force, adjusting workflow mode, or checking the transition table)' },
|
|
75
|
+
'next.guardTierDiffTmpl': { key: 'flow.next.guardTierDiffTmpl', zh: '', en: 'Display tier {display} ≠ effective tier {effective} (flow advance defaults to {effective})' },
|
|
53
76
|
'overview.title': { key: 'flow.overview.title', zh: '', en: 'OpenFeel Pipeline Overview' },
|
|
54
77
|
'overview.currentStatus': { key: 'flow.overview.currentStatus', zh: '', en: '📍 Current Status' },
|
|
55
78
|
'overview.stagesOverview': { key: 'flow.overview.stagesOverview', zh: '', en: '📋 Stages Overview' },
|
|
@@ -87,6 +110,8 @@ export const flow = {
|
|
|
87
110
|
'phases.transitionsDiffExtra': { key: 'flow.phases.transitionsDiffExtra', zh: '', en: 'extra keys {keys}' },
|
|
88
111
|
'phases.transitionsDiffChanged': { key: 'flow.phases.transitionsDiffChanged', zh: '', en: 'differing targets {keys}' },
|
|
89
112
|
'phases.modeHint': { key: 'flow.phases.modeHint', zh: '', en: 'Hint: inspect mode source / switch mode: openfeel flow mode [--stage <id>]' },
|
|
113
|
+
'phases.tierLineTmpl': { key: 'flow.phases.tierLineTmpl', zh: '', en: 'Review tier: {tier} (derived from mode {mode})' },
|
|
114
|
+
'phases.tierHint': { key: 'flow.phases.tierHint', zh: '', en: 'Hint: the review tier only trims review gates (full / lean / skip); to declare explicitly: openfeel flow advance --review-tier <tier>' },
|
|
90
115
|
'mode.lineTmpl': { key: 'flow.mode.lineTmpl', zh: '', en: 'Workflow mode: {mode} [source: {source}]' },
|
|
91
116
|
'mode.targetsLabel': { key: 'flow.mode.targetsLabel', zh: '', en: 'Reachable targets ({stage} · {phase}): {targets}' },
|
|
92
117
|
'archive.doneTmpl': { key: 'flow.archive.doneTmpl', zh: '', en: 'Archived {version}: stages {stages} / reviews {reviews} / log {log}' },
|
|
@@ -146,13 +171,16 @@ export const flow = {
|
|
|
146
171
|
'advance.dryRunTitle': { key: 'flow.advance.dryRunTitle', zh: '', en: '═══ Dry-run Preview ═══' },
|
|
147
172
|
'advance.dryRunFrom': { key: 'flow.advance.dryRunFrom', zh: '', en: 'Current phase' },
|
|
148
173
|
'advance.dryRunTo': { key: 'flow.advance.dryRunTo', zh: '', en: 'Target phase' },
|
|
174
|
+
'advance.dryRunTierTmpl': { key: 'flow.advance.dryRunTierTmpl', zh: '', en: 'Review tier: {tier} (waived gates: {gates})' },
|
|
175
|
+
'advance.warnTierTmpl': { key: 'flow.advance.warnTierTmpl', zh: '', en: "[!] Review tier '{tier}': this advance waives review gate(s) {gates} (the code review gate is always kept)" },
|
|
149
176
|
'advance.dryRunOk': { key: 'flow.advance.dryRunOk', zh: '', en: '✓ Validation passed. No changes were made to flow.json. Remove --dry-run to execute.' },
|
|
150
177
|
'advance.pathTitle': { key: 'flow.advance.pathTitle', zh: '', en: 'Advance path:' },
|
|
151
178
|
'advance.pathArrow': { key: 'flow.advance.pathArrow', zh: '', en: ' → ' },
|
|
152
179
|
'advance.stepOkTmpl': { key: 'flow.advance.stepOkTmpl', zh: '', en: 'Advanced: {stage} {from} → {to}' },
|
|
153
180
|
'advance.ambiguousTmpl': { key: 'flow.advance.ambiguousTmpl', zh: '', en: 'Multiple equivalent paths; refused. Specify --to step by step' },
|
|
154
181
|
'advance.noPathTmpl': { key: 'flow.advance.noPathTmpl', zh: '', en: 'Cannot reach {to} from {from}; reachable targets: {targets}' },
|
|
155
|
-
'advance.
|
|
182
|
+
'advance.generalNoPipeline': { key: 'flow.advance.generalNoPipeline', zh: '', en: 'Error: stage "{stage}" uses workflow mode general (no pipeline) — no legal transition targets; to advance, explicitly upgrade to fast / full first.' },
|
|
183
|
+
'advance.depthExceededTmpl': { key: 'flow.advance.depthExceededTmpl', zh: '', en: 'Path depth exceeds limit ({max}); refused (the target may be unreachable under the current review tier)' },
|
|
156
184
|
'advance.partialFailTmpl': { key: 'flow.advance.partialFailTmpl', zh: '', en: 'Completed up to {done}; failed at {failed}; remaining path: {remaining}' },
|
|
157
185
|
'advance.blockedByRevTmpl': { key: 'flow.advance.blockedByRevTmpl', zh: '', en: 'Blocking review entries found; stopped: {revs}; remaining path: {remaining}' },
|
|
158
186
|
'advance.alreadyAtTargetTmpl': { key: 'flow.advance.alreadyAtTargetTmpl', zh: '', en: 'Already at target: {stage} → {to} (no-op)' },
|
|
@@ -562,6 +590,7 @@ export const help = {
|
|
|
562
590
|
'global.logFile': { key: 'help.global.logFile', zh: '', en: 'Runtime log file path (default ~/.openfeel/cli/logs/openfeel-YYYY-MM-DD.log)' },
|
|
563
591
|
'global.noLog': { key: 'help.global.noLog', zh: '', en: 'Disable runtime log (also via OPENFEEL_LOG=0 / OPENFEEL_NO_LOG=1)' },
|
|
564
592
|
'global.debug': { key: 'help.global.debug', zh: '', en: 'Record debug-level logs (default: info/warn/error only)' },
|
|
593
|
+
'global.project': { key: 'help.global.project', zh: '', en: 'Project root path (equivalent to running in that directory; defaults to the current directory)' },
|
|
565
594
|
'openfeel.version': { key: 'help.openfeel.version', zh: '', en: 'Output version number' },
|
|
566
595
|
'init': { key: 'help.init', zh: '', en: 'Initialize project workspace, create .openfeel/ directory structure and config files' },
|
|
567
596
|
'init.demo': { key: 'help.init.demo', zh: '', en: 'Create demo project skeleton (NumKit style)' },
|
|
@@ -582,6 +611,8 @@ export const help = {
|
|
|
582
611
|
'flow.status.verbose': { key: 'help.flow.status.verbose', zh: '', en: 'Enhanced output: config cascade, recent changes, downstream agent readiness' },
|
|
583
612
|
'flow.status.lines': { key: 'help.flow.status.lines', zh: '', en: 'Number of recent status changes (default 5)' },
|
|
584
613
|
'flow.status.json': { key: 'help.flow.status.json', zh: '', en: 'Output as JSON (machine-readable, single JSON document)' },
|
|
614
|
+
'flow.next': { key: 'help.flow.next', zh: '', en: 'Show dispatch decision for the current stage (responsible agent / legal next phases / suggested command / guards / blocking reviews; read-only)' },
|
|
615
|
+
'flow.next.json': { key: 'help.flow.next.json', zh: '', en: 'Output { schemaVersion, stage, phase, phaseLabel, responsibleAgent, workflowMode, reviewTier, effectiveReviewTier, legalNextPhases, suggestedCommand, guards, blockingReviews } as JSON' },
|
|
585
616
|
'flow.overview': { key: 'help.flow.overview', zh: '', en: 'Full status visualization (openfeel flow overview backend)' },
|
|
586
617
|
'flow.overview.json': { key: 'help.flow.overview.json', zh: '', en: 'Output as JSON' },
|
|
587
618
|
'flow.current': { key: 'help.flow.current', zh: '', en: 'Show current stage and operation' },
|
|
@@ -589,8 +620,8 @@ export const help = {
|
|
|
589
620
|
'flow.metrics': { key: 'help.flow.metrics', zh: '', en: 'Show Agent performance metrics' },
|
|
590
621
|
'flow.metrics.json': { key: 'help.flow.metrics.json', zh: '', en: 'Output as JSON' },
|
|
591
622
|
'flow.phases': { key: 'help.flow.phases', zh: '', en: 'List all valid phases and transitions (self-describing)' },
|
|
592
|
-
'flow.phases.json': { key: 'help.flow.phases.json', zh: '', en: 'Output { phases, transitions, advanceAccepted, transitionsDiff, schemaVersion, workflowMode } as JSON (advanceAccepted = the built-in 15 phases accepted by flow advance; transitionsDiff = diff report between runtime and built-in default transitions; workflowMode = the workflow mode used for this view)' },
|
|
593
|
-
'flow.phases.mode': { key: 'help.flow.phases.mode', zh: '', en: 'Explicit workflow mode (full | fast; default derived from --stage / current stage)' },
|
|
623
|
+
'flow.phases.json': { key: 'help.flow.phases.json', zh: '', en: 'Output { phases, transitions, advanceAccepted, transitionsDiff, schemaVersion, workflowMode, reviewTier, displayReviewTier, effectiveReviewTier } as JSON (advanceAccepted = the built-in 15 phases accepted by flow advance; transitionsDiff = diff report between runtime and built-in default transitions; workflowMode = the workflow mode used for this view; reviewTier = the review tier derived from that mode, kept as a display-tier compatibility alias; displayReviewTier = the display tier (same value as reviewTier); effectiveReviewTier = the default effective tier for flow advance, always full)' },
|
|
624
|
+
'flow.phases.mode': { key: 'help.flow.phases.mode', zh: '', en: 'Explicit workflow mode (full | fast | general; default derived from --stage / current stage)' },
|
|
594
625
|
'flow.phases.stage': { key: 'help.flow.phases.stage', zh: '', en: "Show the transition table for the given stage's mode (default: current stage)" },
|
|
595
626
|
'flow.mode': { key: 'help.flow.mode', zh: '', en: 'Show current workflow mode and its source (read-only)' },
|
|
596
627
|
'flow.mode.stage': { key: 'help.flow.mode.stage', zh: '', en: 'Target stage (default: current stage)' },
|
|
@@ -598,7 +629,7 @@ export const help = {
|
|
|
598
629
|
'flow.archive': { key: 'help.flow.archive', zh: '', en: 'Archive flow.json slices by version (archives completed history by version prefix; separate from top-level openfeel archive [stage summaries])' },
|
|
599
630
|
'flow.archive.argversion': { key: 'help.flow.archive.argversion', zh: '', en: 'Version (e.g. v1.1.7; the leading v may be omitted)' },
|
|
600
631
|
'flow.archive.dryRun': { key: 'help.flow.archive.dryRun', zh: '', en: 'Preview only (the gate is still checked; zero writes)' },
|
|
601
|
-
'flow.archive.json': { key: 'help.flow.archive.json', zh: '', en: 'Output { schemaVersion, version, stages, reviews, log, dryRun } as JSON' },
|
|
632
|
+
'flow.archive.json': { key: 'help.flow.archive.json', zh: '', en: 'Output { schemaVersion, version, stages, reviews, log, dryRun, eligible, unfinishedStages, blockingReviews } as JSON' },
|
|
602
633
|
'flow.archive.list': { key: 'help.flow.archive.list', zh: '', en: 'List archived versions and their counts (read-only; engine lexicographic order)' },
|
|
603
634
|
'flow.archive.list.json': { key: 'help.flow.archive.list.json', zh: '', en: 'Output { schemaVersion, versions: [{version, counts}] } as JSON' },
|
|
604
635
|
'flow.archive.show': { key: 'help.flow.archive.show', zh: '', en: 'Show a given archived version (read-only; human output = counts + stage overview)' },
|
|
@@ -624,6 +655,7 @@ export const help = {
|
|
|
624
655
|
'flow.advance.stage': { key: 'help.flow.advance.stage', zh: '', en: 'Stage ID (e.g. stage-03), required' },
|
|
625
656
|
'flow.advance.force': { key: 'help.flow.advance.force', zh: '', en: 'Force execution (skip invalid phase check and phase jump check, but not REV block check)' },
|
|
626
657
|
'flow.advance.dryRun': { key: 'help.flow.advance.dryRun', zh: '', en: 'Validate only without modifying (preview output). When combined with --force, skips validation but still does not modify' },
|
|
658
|
+
'flow.advance.reviewTier': { key: 'help.flow.advance.reviewTier', zh: '', en: 'Review tier (full / lean / skip; default = full (zero pruning); the tier trims review gates only when declared explicitly, and cannot bypass the REV block check)' },
|
|
627
659
|
'flow.advance.quiet': { key: 'help.flow.advance.quiet', zh: '', en: 'Silence non-error output (no success confirmation or Git warning)' },
|
|
628
660
|
'flow.attempt': { key: 'help.flow.attempt', zh: '', en: 'Record operation execution result' },
|
|
629
661
|
'flow.attempt.op': { key: 'help.flow.attempt.op', zh: '', en: 'Operation ID (e.g. stage-01.op-001)' },
|
|
@@ -634,6 +666,7 @@ export const help = {
|
|
|
634
666
|
'flow.ops.list.json': { key: 'help.flow.ops.list.json', zh: '', en: 'Output as JSON' },
|
|
635
667
|
'flow.log': { key: 'help.flow.log', zh: '', en: 'Show recent operation logs' },
|
|
636
668
|
'flow.log.last': { key: 'help.flow.log.last', zh: '', en: 'Show last n entries (default 10)' },
|
|
669
|
+
'flow.log.json': { key: 'help.flow.log.json', zh: '', en: 'Output as JSON (single JSON document with schemaVersion)' },
|
|
637
670
|
'flow.review': { key: 'help.flow.review', zh: '', en: 'Manage review entries' },
|
|
638
671
|
'flow.review.add': { key: 'help.flow.review.add', zh: '', en: 'Add review entry' },
|
|
639
672
|
'flow.review.add.op': { key: 'help.flow.review.add.op', zh: '', en: 'Operation ID (e.g. stage-01.op-001)' },
|
|
@@ -666,12 +699,14 @@ export const help = {
|
|
|
666
699
|
'flow.checkpoint': { key: 'help.flow.checkpoint', zh: '', en: 'Checkpoint snapshot management (auto-saves flow.json snapshots on phase advance)' },
|
|
667
700
|
'flow.checkpoint.list': { key: 'help.flow.checkpoint.list', zh: '', en: 'List all (or stage-filtered) checkpoint snapshots' },
|
|
668
701
|
'flow.checkpoint.list.argstage': { key: 'help.flow.checkpoint.list.argstage', zh: '', en: 'Stage ID (optional), e.g. v5.3-stage-01' },
|
|
702
|
+
'flow.checkpoint.list.json': { key: 'help.flow.checkpoint.list.json', zh: '', en: 'Output as JSON (single JSON document with schemaVersion)' },
|
|
669
703
|
'flow.checkpoint.restore': { key: 'help.flow.checkpoint.restore', zh: '', en: 'Restore flow.json from a checkpoint snapshot (overwrites current file, requires --force)' },
|
|
670
704
|
'flow.checkpoint.restore.argcheckpoint-file': { key: 'help.flow.checkpoint.restore.argcheckpoint-file', zh: '', en: 'Checkpoint file name (e.g. v5.3-stage-01-20260807T162300-exec_running.json)' },
|
|
671
705
|
'flow.checkpoint.restore.force': { key: 'help.flow.checkpoint.restore.force', zh: '', en: 'Confirm restore operation (overwrites current flow.json)' },
|
|
672
706
|
'flow.checkpoint.restore.stage': { key: 'help.flow.checkpoint.restore.stage', zh: '', en: 'Restore only the given stage subtree (selective; default full overwrite)' },
|
|
673
707
|
'flow.checkpoint.restore.dryRun': { key: 'help.flow.checkpoint.restore.dryRun', zh: '', en: 'Preview differences only; nothing is written' },
|
|
674
708
|
'flow.recover': { key: 'help.flow.recover', zh: '', en: 'Cross-session context recovery: pipeline status, blockers, and pending tasks' },
|
|
709
|
+
'flow.recover.json': { key: 'help.flow.recover.json', zh: '', en: 'Output as JSON (single JSON document with schemaVersion)' },
|
|
675
710
|
'flow.wizard': { key: 'help.flow.wizard', zh: '', en: 'Interactive pipeline wizard, advance stage by stage' },
|
|
676
711
|
'config.get-lang': { key: 'help.config.get-lang', zh: '', en: 'Show global default language' },
|
|
677
712
|
'config.set-lang': { key: 'help.config.set-lang', zh: '', en: 'Change global default language (zh-CN or en)' },
|
|
@@ -679,11 +714,14 @@ export const help = {
|
|
|
679
714
|
'config': { key: 'help.config', zh: '', en: 'View or modify project config' },
|
|
680
715
|
'config.get': { key: 'help.config.get', zh: '', en: 'Read a config value (project config; --global reads global profile; keys accept defaults.X, equivalent to X)' },
|
|
681
716
|
'config.get.global': { key: 'help.config.get.global', zh: '', en: 'Operate on global profile (~/.config/openfeel/profile.yaml)' },
|
|
717
|
+
'config.get.json': { key: 'help.config.get.json', zh: '', en: 'Output as JSON (single JSON document with schemaVersion)' },
|
|
682
718
|
'config.set': { key: 'help.config.set', zh: '', en: 'Set a config value (project config; --global writes global profile; keys accept defaults.X, equivalent to X)' },
|
|
683
719
|
'config.set.global': { key: 'help.config.set.global', zh: '', en: 'Operate on global profile (~/.config/openfeel/profile.yaml)' },
|
|
684
720
|
'config.effective': { key: 'help.config.effective', zh: '', en: 'Show effective config values and their source (status.md > config.yaml > profile.yaml > builtin)' },
|
|
721
|
+
'config.effective.json': { key: 'help.config.effective.json', zh: '', en: 'Output as JSON (single JSON document with schemaVersion)' },
|
|
685
722
|
'project': { key: 'help.project', zh: '', en: 'Project management and overview' },
|
|
686
723
|
'project.overview': { key: 'help.project.overview', zh: '', en: 'Scan project structure in real-time, output structured overview' },
|
|
724
|
+
'project.overview.json': { key: 'help.project.overview.json', zh: '', en: 'Output as JSON (single JSON document with schemaVersion)' },
|
|
687
725
|
'plan': { key: 'help.plan', zh: '', en: 'Plan management' },
|
|
688
726
|
'plan.stage': { key: 'help.plan.stage', zh: '', en: 'Work stage management' },
|
|
689
727
|
'plan.stage.add': { key: 'help.plan.stage.add', zh: '', en: 'Add a work stage (full entry: creates dir + overview/status + registers flow.json)' },
|
|
@@ -699,6 +737,7 @@ export const help = {
|
|
|
699
737
|
'plan.scheme.create.fromTasks': { key: 'help.plan.scheme.create.fromTasks', zh: '', en: 'Mechanically generate ops/op-NNN.md skeletons + ops/deps.yaml placeholder from the stage task table (no Agent involved)' },
|
|
700
738
|
'plan.scheme.list': { key: 'help.plan.scheme.list', zh: '', en: 'List operation schemes (optionally filter by stage)' },
|
|
701
739
|
'plan.scheme.list.argstage': { key: 'help.plan.scheme.list.argstage', zh: '', en: 'Stage name (optional)' },
|
|
740
|
+
'plan.scheme.list.json': { key: 'help.plan.scheme.list.json', zh: '', en: 'Output as JSON (single JSON document with schemaVersion)' },
|
|
702
741
|
'plan.scheme.remove': { key: 'help.plan.scheme.remove', zh: '', en: 'Remove an operation scheme (deregisters the flow.json key only; does not delete the op template file)' },
|
|
703
742
|
'plan.scheme.remove.force': { key: 'help.plan.scheme.remove.force', zh: '', en: 'Bypass protection (op done / has checkpoint progress)' },
|
|
704
743
|
'plan.scheme.remove.dryRun': { key: 'help.plan.scheme.remove.dryRun', zh: '', en: 'Preview only, do not write' },
|
|
@@ -718,12 +757,13 @@ export const help = {
|
|
|
718
757
|
'stage': { key: 'help.stage', zh: '', en: 'Work stage status management (status.md atomic operations)' },
|
|
719
758
|
'stage.status': { key: 'help.stage.status', zh: '', en: 'View stage status (list all stages when no arg)' },
|
|
720
759
|
'stage.status.argstageId': { key: 'help.stage.status.argstageId', zh: '', en: 'Stage ID (e.g. v4-stage-04)' },
|
|
760
|
+
'stage.status.json': { key: 'help.stage.status.json', zh: '', en: 'Output as JSON (single JSON document with schemaVersion)' },
|
|
721
761
|
'stage.set': { key: 'help.stage.set', zh: '', en: 'Set stage status field (atomic update, preserve rest)' },
|
|
722
762
|
'stage.set.argstageId': { key: 'help.stage.set.argstageId', zh: '', en: 'Stage ID (e.g. v4-stage-04)' },
|
|
723
763
|
'stage.set.status': { key: 'help.stage.set.status', zh: '', en: 'Status value (coarse-grained: planned/review_failed/review_passed/testing/archiving/done)' },
|
|
724
764
|
'stage.set.execMode': { key: 'help.stage.set.execMode', zh: '', en: 'Execution mode (manual | auto)' },
|
|
725
765
|
'stage.set.autoAdvance': { key: 'help.stage.set.autoAdvance', zh: '', en: 'Auto advance (enabled | disabled)' },
|
|
726
|
-
'stage.set.workflowMode': { key: 'help.stage.set.workflowMode', zh: '', en: 'Workflow mode (full | fast)' },
|
|
766
|
+
'stage.set.workflowMode': { key: 'help.stage.set.workflowMode', zh: '', en: 'Workflow mode (full | fast | general)' },
|
|
727
767
|
'stage.set.reviewAgent': { key: 'help.stage.set.reviewAgent', zh: '', en: 'Current responsible agent (e.g. openfeel-executor)' },
|
|
728
768
|
'stage.task': { key: 'help.stage.task', zh: '', en: 'Check/uncheck a task checkbox, or append a task' },
|
|
729
769
|
'stage.task.argstageId': { key: 'help.stage.task.argstageId', zh: '', en: 'Stage ID (e.g. v4-stage-04)' },
|
|
@@ -736,12 +776,14 @@ export const help = {
|
|
|
736
776
|
'view': { key: 'help.view', zh: '', en: 'Review entry management' },
|
|
737
777
|
'view.list': { key: 'help.view.list', zh: '', en: 'List review entries' },
|
|
738
778
|
'view.list.op': { key: 'help.view.list.op', zh: '', en: 'Filter by operation ID' },
|
|
779
|
+
'view.list.json': { key: 'help.view.list.json', zh: '', en: 'Output as JSON (single JSON document with schemaVersion)' },
|
|
739
780
|
'view.note': { key: 'help.view.note', zh: '', en: 'Use `openfeel flow review add|update|remove` to add/modify/remove review entries' },
|
|
740
781
|
'view.accept': { key: 'help.view.accept', zh: '', en: 'Accept review entry (mark as closed)' },
|
|
741
782
|
'view.accept.argrev-id': { key: 'help.view.accept.argrev-id', zh: '', en: 'Review entry ID (e.g. REV-001)' },
|
|
742
783
|
'knowledge': { key: 'help.knowledge', zh: '', en: 'Knowledge base management' },
|
|
743
784
|
'knowledge.list': { key: 'help.knowledge.list', zh: '', en: 'List knowledge entries' },
|
|
744
785
|
'knowledge.list.type': { key: 'help.knowledge.list.type', zh: '', en: 'Filter by category' },
|
|
786
|
+
'knowledge.list.json': { key: 'help.knowledge.list.json', zh: '', en: 'Output as JSON (single JSON document with schemaVersion)' },
|
|
745
787
|
'knowledge.add': { key: 'help.knowledge.add', zh: '', en: 'Add knowledge entry' },
|
|
746
788
|
'knowledge.add.argcategory': { key: 'help.knowledge.add.argcategory', zh: '', en: 'Category (architecture | patterns | troubleshooting | setup)' },
|
|
747
789
|
'knowledge.add.argtitle': { key: 'help.knowledge.add.argtitle', zh: '', en: 'Entry title' },
|
|
@@ -750,14 +792,18 @@ export const help = {
|
|
|
750
792
|
'knowledge.search.argquery': { key: 'help.knowledge.search.argquery', zh: '', en: 'Search query' },
|
|
751
793
|
'knowledge.search.limit': { key: 'help.knowledge.search.limit', zh: '', en: 'Max results (default 10)' },
|
|
752
794
|
'knowledge.search.offset': { key: 'help.knowledge.search.offset', zh: '', en: 'Result offset (default 0)' },
|
|
795
|
+
'knowledge.search.json': { key: 'help.knowledge.search.json', zh: '', en: 'Output as JSON (single JSON document with schemaVersion)' },
|
|
753
796
|
'knowledge.index': { key: 'help.knowledge.index', zh: '', en: 'Show knowledge base index overview' },
|
|
797
|
+
'knowledge.index.json': { key: 'help.knowledge.index.json', zh: '', en: 'Output as JSON (single JSON document with schemaVersion)' },
|
|
754
798
|
'knowledge.dedup': { key: 'help.knowledge.dedup', zh: '', en: 'Find similar knowledge entries (read-only suggestions; does not modify kb)' },
|
|
755
799
|
'knowledge.dedup.argcontent': { key: 'help.knowledge.dedup.argcontent', zh: '', en: 'Content to archive (read from stdin if omitted)' },
|
|
756
800
|
'knowledge.dedup.project': { key: 'help.knowledge.dedup.project', zh: '', en: 'Target project root (defaults to current directory)' },
|
|
757
801
|
'knowledge.dedup.category': { key: 'help.knowledge.dedup.category', zh: '', en: 'Check only the given category (architecture|patterns|troubleshooting|setup)' },
|
|
758
802
|
'knowledge.dedup.threshold': { key: 'help.knowledge.dedup.threshold', zh: '', en: 'Similarity threshold 0–1 (default 0.8)' },
|
|
803
|
+
'knowledge.dedup.json': { key: 'help.knowledge.dedup.json', zh: '', en: 'Output as JSON (single JSON document with schemaVersion)' },
|
|
759
804
|
'archive': { key: 'help.archive', zh: '', en: 'Archive stage (summarize output, generate summary, extract knowledge)' },
|
|
760
805
|
'archive.argstage': { key: 'help.archive.argstage', zh: '', en: 'Stage name (e.g. stage-06)' },
|
|
806
|
+
'archive.json': { key: 'help.archive.json', zh: '', en: 'Output { schemaVersion, stage, archivePath, opsCount, reviewsCount, knowledgeExtracts } as JSON' },
|
|
761
807
|
'roadmap': { key: 'help.roadmap', zh: '', en: 'Roadmap management' },
|
|
762
808
|
'roadmap.create': { key: 'help.roadmap.create', zh: '', en: 'Create roadmap (version number like 1.0, 2.0)' },
|
|
763
809
|
'roadmap.create.argversion': { key: 'help.roadmap.create.argversion', zh: '', en: 'Version number' },
|
|
@@ -794,6 +840,7 @@ export const help = {
|
|
|
794
840
|
'req.add.argtitle': { key: 'help.req.add.argtitle', zh: '', en: 'Requirement title' },
|
|
795
841
|
'req.add.targetVersion': { key: 'help.req.add.targetVersion', zh: '', en: 'Target version (e.g. v1.3.0)' },
|
|
796
842
|
'req.add.priority': { key: 'help.req.add.priority', zh: '', en: 'Priority (P0/P1/P2)' },
|
|
843
|
+
'req.add.workflowMode': { key: 'help.req.add.workflowMode', zh: '', en: 'Workflow mode (full / fast / general; unset by default)' },
|
|
797
844
|
'req.list': { key: 'help.req.list', zh: '', en: 'List requirements (filter by status/version/owner)' },
|
|
798
845
|
'req.list.status': { key: 'help.req.list.status', zh: '', en: 'Filter by status (draft/scheduled/in_progress/done/blocked/cancelled/rejected)' },
|
|
799
846
|
'req.list.targetVersion': { key: 'help.req.list.targetVersion', zh: '', en: 'Filter by target version' },
|
|
@@ -801,7 +848,7 @@ export const help = {
|
|
|
801
848
|
'req.list.json': { key: 'help.req.list.json', zh: '', en: 'Output JSON { schemaVersion, requirements }' },
|
|
802
849
|
'req.show': { key: 'help.req.show', zh: '', en: 'Show requirement detail (linked stages as raw read-only list)' },
|
|
803
850
|
'req.show.argid': { key: 'help.req.show.argid', zh: '', en: 'Requirement ID (e.g. REQ-001)' },
|
|
804
|
-
'req.show.json': { key: 'help.req.show.json', zh: '', en: 'Output JSON { schemaVersion, requirement, stages }' },
|
|
851
|
+
'req.show.json': { key: 'help.req.show.json', zh: '', en: 'Output JSON { schemaVersion, requirement, stages, parent, children }' },
|
|
805
852
|
// req (write commands)
|
|
806
853
|
'req.claim': { key: 'help.req.claim', zh: '', en: 'Claim a requirement (occupancy checked; rejected if claimed by another)' },
|
|
807
854
|
'req.claim.argid': { key: 'help.req.claim.argid', zh: '', en: 'Requirement ID (e.g. REQ-001)' },
|
|
@@ -814,11 +861,12 @@ export const help = {
|
|
|
814
861
|
'req.set.title': { key: 'help.req.set.title', zh: '', en: 'New title' },
|
|
815
862
|
'req.set.targetVersion': { key: 'help.req.set.targetVersion', zh: '', en: 'New target version' },
|
|
816
863
|
'req.set.priority': { key: 'help.req.set.priority', zh: '', en: 'New priority (P0/P1/P2)' },
|
|
864
|
+
'req.set.workflowMode': { key: 'help.req.set.workflowMode', zh: '', en: 'New workflow mode (full / fast / general; general requires no linked stages)' },
|
|
817
865
|
'req.link': { key: 'help.req.link', zh: '', en: 'Link a requirement to a stage / unlink (exactly one of --requirement or --unlink)' },
|
|
818
866
|
'req.link.stage': { key: 'help.req.link.stage', zh: '', en: 'Stage ID (stage-NN or vX.Y.Z-stage-NN; short name resolves in the v1.0.0 series)' },
|
|
819
867
|
'req.link.requirement': { key: 'help.req.link.requirement', zh: '', en: 'Requirement ID (to link; exclusive with --unlink)' },
|
|
820
868
|
'req.link.unlink': { key: 'help.req.link.unlink', zh: '', en: 'Unlink the requirement from the stage' },
|
|
821
|
-
'req.advance': { key: 'help.req.advance', zh: '', en: 'Advance requirement status (legality by engine transition table; done
|
|
869
|
+
'req.advance': { key: 'help.req.advance', zh: '', en: 'Advance requirement status (legality by engine transition table; done: non-general requirements require all linked stages done)' },
|
|
822
870
|
'req.advance.argid': { key: 'help.req.advance.argid', zh: '', en: 'Requirement ID (e.g. REQ-001)' },
|
|
823
871
|
'req.advance.to': { key: 'help.req.advance.to', zh: '', en: 'Target status (legality checked by engine)' },
|
|
824
872
|
'req.board': { key: 'help.req.board', zh: '', en: 'Requirement board (grouped by status; 7 fixed groups)' },
|
|
@@ -827,6 +875,11 @@ export const help = {
|
|
|
827
875
|
'req.next': { key: 'help.req.next', zh: '', en: 'Recommend the next claimable requirement (scheduled & unclaimed; by target version ascending)' },
|
|
828
876
|
'req.next.owner': { key: 'help.req.next.owner', zh: '', en: 'Owner perspective (include their claimed scheduled requirements)' },
|
|
829
877
|
'req.next.json': { key: 'help.req.next.json', zh: '', en: 'Output JSON { schemaVersion, requirement }' },
|
|
878
|
+
'req.next.limit': { key: 'help.req.next.limit', zh: '', en: 'Max number of candidates (integer >= 1; default 1)' },
|
|
879
|
+
'req.split': { key: 'help.req.split', zh: '', en: 'Split a requirement into child requirements (split = publish; children start as scheduled)' },
|
|
880
|
+
'req.split.argid': { key: 'help.req.split.argid', zh: '', en: 'Requirement ID (e.g. REQ-001)' },
|
|
881
|
+
'req.split.into': { key: 'help.req.split.into', zh: '', en: 'Child requirement title (repeatable; at least one)' },
|
|
882
|
+
'req.split.json': { key: 'help.req.split.json', zh: '', en: 'Output JSON { schemaVersion, parent, children }' },
|
|
830
883
|
};
|
|
831
884
|
/* ==================== config ==================== */
|
|
832
885
|
export const config = {
|
|
@@ -941,6 +994,7 @@ export const metrics = {
|
|
|
941
994
|
'summary.totalRetries': { key: 'metrics.summary.totalRetries', zh: '', en: ' Total retries: {n}' },
|
|
942
995
|
'summary.totalDuration': { key: 'metrics.summary.totalDuration', zh: '', en: ' Total duration: {n}ms' },
|
|
943
996
|
'summary.avgDuration': { key: 'metrics.summary.avgDuration', zh: '', en: ' Avg duration: {n}ms' },
|
|
997
|
+
'summary.caliberNote': { key: 'metrics.summary.caliberNote', zh: '', en: 'Note: durations are phase windows (including cross-session idle/wait), not pure agent execution time.' },
|
|
944
998
|
};
|
|
945
999
|
/* ==================== repl domain: interactive mode (T40) ==================== */
|
|
946
1000
|
export const repl = {
|
|
@@ -984,13 +1038,15 @@ export const req = {
|
|
|
984
1038
|
// req set
|
|
985
1039
|
'set.doneTmpl': { key: 'req.set.doneTmpl', zh: '', en: 'Updated {id}' },
|
|
986
1040
|
'set.noopTmpl': { key: 'req.set.noopTmpl', zh: '', en: '{id} unchanged (no-op)' },
|
|
987
|
-
'set.noFieldsTmpl': { key: 'req.set.noFieldsTmpl', zh: '', en: 'No fields provided; pass at least one of --status / --title / --target-version / --priority' },
|
|
1041
|
+
'set.noFieldsTmpl': { key: 'req.set.noFieldsTmpl', zh: '', en: 'No fields provided; pass at least one of --status / --title / --target-version / --priority / --workflow-mode' },
|
|
1042
|
+
'set.modeSyncedTmpl': { key: 'req.set.modeSyncedTmpl', zh: '', en: 'Workflow mode {mode} dispatched to {count} linked stage(s)' },
|
|
988
1043
|
// req link
|
|
989
1044
|
'link.doneTmpl': { key: 'req.link.doneTmpl', zh: '', en: 'Linked {stage} to {id}' },
|
|
990
1045
|
'link.unlinkDoneTmpl': { key: 'req.link.unlinkDoneTmpl', zh: '', en: 'Unlinked requirement from {stage}' },
|
|
991
1046
|
'link.noopTmpl': { key: 'req.link.noopTmpl', zh: '', en: '{stage} link unchanged (no-op)' },
|
|
992
1047
|
'link.exclusiveTmpl': { key: 'req.link.exclusiveTmpl', zh: '', en: 'Provide exactly one of --requirement or --unlink' },
|
|
993
1048
|
'link.terminalTmpl': { key: 'req.link.terminalTmpl', zh: '', en: '{id} is in a terminal status ({status}); cannot link' },
|
|
1049
|
+
'link.modeSyncedTmpl': { key: 'req.link.modeSyncedTmpl', zh: '', en: 'Requirement workflow mode {mode} dispatched to stage {stage} (status.md field + flow.json redundancy batched)' },
|
|
994
1050
|
// req advance
|
|
995
1051
|
'advance.doneTmpl': { key: 'req.advance.doneTmpl', zh: '', en: 'Advanced {id}: {from} -> {to}' },
|
|
996
1052
|
'advance.noopTmpl': { key: 'req.advance.noopTmpl', zh: '', en: '{id} is already {to} (no-op)' },
|
|
@@ -998,15 +1054,34 @@ export const req = {
|
|
|
998
1054
|
'err.stageNotFoundTmpl': { key: 'req.err.stageNotFoundTmpl', zh: '', en: 'Stage {stage} not found (not registered in flow.json stages)' },
|
|
999
1055
|
'err.alreadyClaimedTmpl': { key: 'req.err.alreadyClaimedTmpl', zh: '', en: '{id} is claimed by someone else; release first: openfeel req release {id}' },
|
|
1000
1056
|
'err.alreadyLinkedTmpl': { key: 'req.err.alreadyLinkedTmpl', zh: '', en: '{stage} is already linked to another requirement; unlink first: openfeel req link --stage {stage} --unlink' },
|
|
1001
|
-
'err.invalidFieldTmpl': { key: 'req.err.invalidFieldTmpl', zh: '', en: '{id} invalid field value (check --status / --title / --target-version / --priority)' },
|
|
1057
|
+
'err.invalidFieldTmpl': { key: 'req.err.invalidFieldTmpl', zh: '', en: '{id} invalid field value (check --status / --title / --target-version / --priority / --workflow-mode)' },
|
|
1002
1058
|
'err.invalidStatusTmpl': { key: 'req.err.invalidStatusTmpl', zh: '', en: '{id} target status {to} rejected (current {current}; allowed: {targets})' },
|
|
1059
|
+
'err.doneGateTmpl': { key: 'req.err.doneGateTmpl', zh: '', en: '{id} target status done rejected (current {current}) — done requires all linked stages done; a requirement with no linked stages can use general mode for explicit completion' },
|
|
1060
|
+
'err.generalModeConflictTmpl': { key: 'req.err.generalModeConflictTmpl', zh: '', en: '{id} has linked stages — general (no pipeline) requires a requirement without linked stages (unlink first, or use fast / full)' },
|
|
1061
|
+
'err.generalTargetTmpl': { key: 'req.err.generalTargetTmpl', zh: '', en: '{id} uses workflow mode general (no pipeline) — stage linking is not allowed' },
|
|
1003
1062
|
// req board
|
|
1004
1063
|
'board.groupTmpl': { key: 'req.board.groupTmpl', zh: '', en: '{status} ({n})' },
|
|
1005
1064
|
'board.itemTmpl': { key: 'req.board.itemTmpl', zh: '', en: ' - {id} {title}' },
|
|
1065
|
+
'board.ownedSuffixTmpl': { key: 'req.board.ownedSuffixTmpl', zh: '', en: ' (claimed by {owner})' },
|
|
1006
1066
|
// req next
|
|
1007
1067
|
'next.foundTmpl': { key: 'req.next.foundTmpl', zh: '', en: 'Next: {id} [{status}] {title}' },
|
|
1008
1068
|
'next.ownedSuffixTmpl': { key: 'req.next.ownedSuffixTmpl', zh: '', en: ' (claimed by {owner})' },
|
|
1009
1069
|
'next.empty': { key: 'req.next.empty', zh: '', en: '(no claimable requirement)' },
|
|
1070
|
+
'next.limitInvalidTmpl': { key: 'req.next.limitInvalidTmpl', zh: '', en: '{value} -> invalid --limit value (expected an integer >= 1)' },
|
|
1071
|
+
'next.multiLabel': { key: 'req.next.multiLabel', zh: '', en: 'Claimable requirements ({n}):' },
|
|
1072
|
+
'next.itemTmpl': { key: 'req.next.itemTmpl', zh: '', en: ' - {id} [{status}] {title}' },
|
|
1073
|
+
// req split
|
|
1074
|
+
'split.doneTmpl': { key: 'req.split.doneTmpl', zh: '', en: 'Split {id} -> {children} ({n} child requirements)' },
|
|
1075
|
+
'split.childTmpl': { key: 'req.split.childTmpl', zh: '', en: ' - {id}: {title} (body: {path})' },
|
|
1076
|
+
'split.noIntoTmpl': { key: 'req.split.noIntoTmpl', zh: '', en: 'No --into provided; give at least one child title (--into, repeatable)' },
|
|
1077
|
+
'split.terminalTmpl': { key: 'req.split.terminalTmpl', zh: '', en: '{id} is in a terminal status ({status}); cannot split' },
|
|
1078
|
+
'split.invalidFieldTmpl': { key: 'req.split.invalidFieldTmpl', zh: '', en: 'Invalid child value (title must not be empty)' },
|
|
1079
|
+
// req show (parent / children)
|
|
1080
|
+
'show.parentTmpl': { key: 'req.show.parentTmpl', zh: '', en: 'Parent: {parent}' },
|
|
1081
|
+
'show.parentNone': { key: 'req.show.parentNone', zh: '', en: 'Parent: (none)' },
|
|
1082
|
+
'show.childrenLabel': { key: 'req.show.childrenLabel', zh: '', en: 'Children:' },
|
|
1083
|
+
'show.childItemTmpl': { key: 'req.show.childItemTmpl', zh: '', en: ' - {id} [{status}] {title}' },
|
|
1084
|
+
'show.childrenNone': { key: 'req.show.childrenNone', zh: '', en: 'Children: (none)' },
|
|
1010
1085
|
};
|
|
1011
1086
|
/* ==================== 聚合导出 ==================== */
|
|
1012
1087
|
export const allDomains = [
|