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
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
export const common = {
|
|
3
3
|
error: { key: 'common.error', zh: '错误', en: '' },
|
|
4
4
|
errorTmpl: { key: 'common.errorTmpl', zh: '错误:{msg}', en: '' },
|
|
5
|
+
invalidArgumentTmpl: { key: 'common.invalidArgumentTmpl', zh: '参数或用法错误:{detail}', en: '' },
|
|
6
|
+
projectNotFoundTmpl: { key: 'common.projectNotFoundTmpl', zh: '项目路径不存在或不是目录:{path}', en: '' },
|
|
7
|
+
projectMissingValueTmpl: { key: 'common.projectMissingValueTmpl', zh: '--project 缺少路径值', en: '' },
|
|
8
|
+
projectConflictTmpl: { key: 'common.projectConflictTmpl', zh: '--project 多次给出且解析路径不一致:{values}', en: '' },
|
|
5
9
|
concurrentConflict: { key: 'common.concurrentConflict', zh: '[并发冲突] flow.json 已被其它进程修改(期望 revision={expected},磁盘={actual});本次修改未写入,请重新执行该命令重试。', en: '' },
|
|
6
10
|
ok: { key: 'common.ok', zh: '✓', en: '' },
|
|
7
11
|
none: { key: 'common.none', zh: '(无)', en: '' },
|
|
@@ -23,6 +27,7 @@ export const common = {
|
|
|
23
27
|
stageIdInvalidTmpl: { key: 'common.stageIdInvalidTmpl', zh: '{input} → 非法阶段 ID(应为 stage-NN 或 vX.Y.Z-stage-NN)', en: '' },
|
|
24
28
|
stageIdSuggestTmpl: { key: 'common.stageIdSuggestTmpl', zh: '建议名称:{suggest}', en: '' },
|
|
25
29
|
stageDirConflictTmpl: { key: 'common.stageDirConflictTmpl', zh: '阶段目录冲突:{stage} 与 {other} 映射同一目录', en: '' },
|
|
30
|
+
generalOnlyRequirement: { key: 'common.generalOnlyRequirement', zh: 'general(通用模式)仅限需求级——阶段级 / 部署级不支持;阶段请使用 fast / full。', en: '' },
|
|
26
31
|
};
|
|
27
32
|
/* ==================== flow 域:流水线状态管理 ==================== */
|
|
28
33
|
export const flow = {
|
|
@@ -51,6 +56,24 @@ export const flow = {
|
|
|
51
56
|
'status.lastUpdated': { key: 'flow.status.lastUpdated', zh: '最后更新', en: '' },
|
|
52
57
|
'status.recoveryTitle': { key: 'flow.status.recoveryTitle', zh: '── 跨会话恢复信息 ──', en: '' },
|
|
53
58
|
'status.recoveryMoreTmpl': { key: 'flow.status.recoveryMoreTmpl', zh: '... 还有 {n} 项', en: '' },
|
|
59
|
+
// flow next(调度决策,只读)
|
|
60
|
+
'next.title': { key: 'flow.next.title', zh: '流水线下一步(只读)', en: '' },
|
|
61
|
+
'next.stageLabel': { key: 'flow.next.stageLabel', zh: '阶段', en: '' },
|
|
62
|
+
'next.phaseLabel': { key: 'flow.next.phaseLabel', zh: '相位', en: '' },
|
|
63
|
+
'next.responsibleAgentLabel': { key: 'flow.next.responsibleAgentLabel', zh: '负责 Agent', en: '' },
|
|
64
|
+
'next.workflowModeLabel': { key: 'flow.next.workflowModeLabel', zh: '工作流模式', en: '' },
|
|
65
|
+
'next.displayTierLabel': { key: 'flow.next.displayTierLabel', zh: '展示审查档位', en: '' },
|
|
66
|
+
'next.effectiveTierLabel': { key: 'flow.next.effectiveTierLabel', zh: '生效审查档位', en: '' },
|
|
67
|
+
'next.legalNextPhasesLabel': { key: 'flow.next.legalNextPhasesLabel', zh: '合法下一相位', en: '' },
|
|
68
|
+
'next.suggestedCommandLabel': { key: 'flow.next.suggestedCommandLabel', zh: '建议命令', en: '' },
|
|
69
|
+
'next.guardsLabel': { key: 'flow.next.guardsLabel', zh: '守卫', en: '' },
|
|
70
|
+
'next.blockingReviewsLabel': { key: 'flow.next.blockingReviewsLabel', zh: '阻塞 REV', en: '' },
|
|
71
|
+
'next.blockingReviewItemTmpl': { key: 'flow.next.blockingReviewItemTmpl', zh: '{id}: {title}(优先级 {priority},op {op})', en: '' },
|
|
72
|
+
'next.guardNoActiveStage': { key: 'flow.next.guardNoActiveStage', zh: '当前无活跃阶段(pipeline.current.stage 为空或阶段记录缺失):由 Feel 决定下一步', en: '' },
|
|
73
|
+
'next.guardAutoAdvanceDisabled': { key: 'flow.next.guardAutoAdvanceDisabled', zh: '自动推进已禁用(auto_advance=disabled):推进前须询问用户', en: '' },
|
|
74
|
+
'next.guardBlockingReviewsTmpl': { key: 'flow.next.guardBlockingReviewsTmpl', zh: '存在 {n} 个阻塞中的 open REV:推进到 done 前须先解决', en: '' },
|
|
75
|
+
'next.guardNoLegalTargets': { key: 'flow.next.guardNoLegalTargets', zh: '当前相位无合法下一相位(可能需要 --force、调整工作流模式或检查转移表)', en: '' },
|
|
76
|
+
'next.guardTierDiffTmpl': { key: 'flow.next.guardTierDiffTmpl', zh: '展示档位 {display} ≠ 生效档位 {effective}(flow advance 缺省使用 {effective})', en: '' },
|
|
54
77
|
// flow overview
|
|
55
78
|
'overview.title': { key: 'flow.overview.title', zh: 'OpenFeel 流水线全景视图', en: '' },
|
|
56
79
|
'overview.currentStatus': { key: 'flow.overview.currentStatus', zh: '📍 当前状态', en: '' },
|
|
@@ -93,6 +116,8 @@ export const flow = {
|
|
|
93
116
|
'phases.transitionsDiffExtra': { key: 'flow.phases.transitionsDiffExtra', zh: '新增键 {keys}', en: '' },
|
|
94
117
|
'phases.transitionsDiffChanged': { key: 'flow.phases.transitionsDiffChanged', zh: '目标集不同 {keys}', en: '' },
|
|
95
118
|
'phases.modeHint': { key: 'flow.phases.modeHint', zh: '提示:查看模式来源与切换:openfeel flow mode [--stage <id>]', en: '' },
|
|
119
|
+
'phases.tierLineTmpl': { key: 'flow.phases.tierLineTmpl', zh: '审查档位:{tier}(模式派生自 {mode})', en: '' },
|
|
120
|
+
'phases.tierHint': { key: 'flow.phases.tierHint', zh: '提示:审查档位仅裁剪审查关(全量 / 精简 / 免审);显式声明:openfeel flow advance --review-tier <tier>', en: '' },
|
|
96
121
|
// flow mode(stage-75 op-002:当前模式与来源,只读)
|
|
97
122
|
'mode.lineTmpl': { key: 'flow.mode.lineTmpl', zh: '当前模式:{mode} [来源: {source}]', en: '' },
|
|
98
123
|
'mode.targetsLabel': { key: 'flow.mode.targetsLabel', zh: '可达目标({stage} · {phase}):{targets}', en: '' },
|
|
@@ -156,13 +181,16 @@ export const flow = {
|
|
|
156
181
|
'advance.dryRunTitle': { key: 'flow.advance.dryRunTitle', zh: '═══ Dry-run 预览 ═══', en: '' },
|
|
157
182
|
'advance.dryRunFrom': { key: 'flow.advance.dryRunFrom', zh: '当前阶段', en: '' },
|
|
158
183
|
'advance.dryRunTo': { key: 'flow.advance.dryRunTo', zh: '目标阶段', en: '' },
|
|
184
|
+
'advance.dryRunTierTmpl': { key: 'flow.advance.dryRunTierTmpl', zh: '审查档位: {tier}(免除: {gates})', en: '' },
|
|
185
|
+
'advance.warnTierTmpl': { key: 'flow.advance.warnTierTmpl', zh: '[!] 审查档位『{tier}』:本次推进免除审查关 {gates}(代码审查关恒保留)', en: '' },
|
|
159
186
|
'advance.dryRunOk': { key: 'flow.advance.dryRunOk', zh: '✓ 合法性验证通过,未实际修改 flow.json。去掉 --dry-run 后正式执行。', en: '' },
|
|
160
187
|
'advance.pathTitle': { key: 'flow.advance.pathTitle', zh: '推进路径:', en: '' },
|
|
161
188
|
'advance.pathArrow': { key: 'flow.advance.pathArrow', zh: ' → ', en: '' },
|
|
162
189
|
'advance.stepOkTmpl': { key: 'flow.advance.stepOkTmpl', zh: '已推进:{stage} {from} → {to}', en: '' },
|
|
163
190
|
'advance.ambiguousTmpl': { key: 'flow.advance.ambiguousTmpl', zh: '存在多条等价路径,已拒绝;请逐步显式指定 --to', en: '' },
|
|
164
191
|
'advance.noPathTmpl': { key: 'flow.advance.noPathTmpl', zh: '无法从 {from} 到达 {to};当前可达目标:{targets}', en: '' },
|
|
165
|
-
'advance.
|
|
192
|
+
'advance.generalNoPipeline': { key: 'flow.advance.generalNoPipeline', zh: '错误: 阶段 "{stage}" 的工作流模式为 general(无流水线)——无合法跳转目标;如需推进请先显式升级为 fast / full。', en: '' },
|
|
193
|
+
'advance.depthExceededTmpl': { key: 'flow.advance.depthExceededTmpl', zh: '路径深度超过上限({max}),已拒绝(目标可能不可达:目标相位在当前档位下被裁剪或无可达入边)', en: '' },
|
|
166
194
|
'advance.partialFailTmpl': { key: 'flow.advance.partialFailTmpl', zh: '已完成到 {done};失败于 {failed};剩余路径:{remaining}', en: '' },
|
|
167
195
|
'advance.blockedByRevTmpl': { key: 'flow.advance.blockedByRevTmpl', zh: '存在阻塞中的审查条目,已停止推进:{revs};剩余路径:{remaining}', en: '' },
|
|
168
196
|
'advance.alreadyAtTargetTmpl': { key: 'flow.advance.alreadyAtTargetTmpl', zh: '已在目标阶段:{stage} → {to}(无操作)', en: '' },
|
|
@@ -587,6 +615,7 @@ export const help = {
|
|
|
587
615
|
'global.logFile': { key: 'help.global.logFile', zh: '运行日志文件路径(默认 ~/.openfeel/cli/logs/openfeel-YYYY-MM-DD.log)', en: '' },
|
|
588
616
|
'global.noLog': { key: 'help.global.noLog', zh: '关闭运行日志(亦可通过 OPENFEEL_LOG=0 / OPENFEEL_NO_LOG=1)', en: '' },
|
|
589
617
|
'global.debug': { key: 'help.global.debug', zh: '记录 debug 级日志(默认仅 info/warn/error)', en: '' },
|
|
618
|
+
'global.project': { key: 'help.global.project', zh: '项目根路径(等效于在该目录下运行;默认当前目录)', en: '' },
|
|
590
619
|
'openfeel.version': { key: 'help.openfeel.version', zh: '输出版本号', en: '' },
|
|
591
620
|
// init
|
|
592
621
|
'init': { key: 'help.init', zh: '初始化项目工作区,创建 .openfeel/ 目录结构和配置文件', en: '' },
|
|
@@ -611,6 +640,8 @@ export const help = {
|
|
|
611
640
|
'flow.status.verbose': { key: 'help.flow.status.verbose', zh: '增强输出:配置级联、最近状态变更、下游 Agent 就绪状态', en: '' },
|
|
612
641
|
'flow.status.lines': { key: 'help.flow.status.lines', zh: '最近状态变更条数(默认 5)', en: '' },
|
|
613
642
|
'flow.status.json': { key: 'help.flow.status.json', zh: '以 JSON 输出(机器可读,纯 JSON 单文档)', en: '' },
|
|
643
|
+
'flow.next': { key: 'help.flow.next', zh: '显示当前阶段的调度决策(负责 Agent / 合法下一相位 / 建议命令 / 守卫 / 阻塞项;只读)', en: '' },
|
|
644
|
+
'flow.next.json': { key: 'help.flow.next.json', zh: '以 JSON 输出 { schemaVersion, stage, phase, phaseLabel, responsibleAgent, workflowMode, reviewTier, effectiveReviewTier, legalNextPhases, suggestedCommand, guards, blockingReviews }', en: '' },
|
|
614
645
|
'flow.overview': { key: 'help.flow.overview', zh: '全状态可视化视图(openfeel flow overview 的后端实现)', en: '' },
|
|
615
646
|
'flow.overview.json': { key: 'help.flow.overview.json', zh: '以 JSON 输出', en: '' },
|
|
616
647
|
'flow.current': { key: 'help.flow.current', zh: '显示当前阶段和操作', en: '' },
|
|
@@ -618,8 +649,8 @@ export const help = {
|
|
|
618
649
|
'flow.metrics': { key: 'help.flow.metrics', zh: '展示 Agent 性能指标', en: '' },
|
|
619
650
|
'flow.metrics.json': { key: 'help.flow.metrics.json', zh: '以 JSON 输出', en: '' },
|
|
620
651
|
'flow.phases': { key: 'help.flow.phases', zh: '列出全部合法 phase 及其流转映射(自描述)', en: '' },
|
|
621
|
-
'flow.phases.json': { key: 'help.flow.phases.json', zh: '以 JSON 输出 { phases, transitions, advanceAccepted, transitionsDiff, schemaVersion, workflowMode }(advanceAccepted = 内置 15 phase,即 flow advance 的推进白名单;transitionsDiff = 运行时转移表与内置默认的差异报告;workflowMode =
|
|
622
|
-
'flow.phases.mode': { key: 'help.flow.phases.mode', zh: '显式指定工作流模式(full | fast;缺省经 --stage / 当前阶段派生)', en: '' },
|
|
652
|
+
'flow.phases.json': { key: 'help.flow.phases.json', zh: '以 JSON 输出 { phases, transitions, advanceAccepted, transitionsDiff, schemaVersion, workflowMode, reviewTier, displayReviewTier, effectiveReviewTier }(advanceAccepted = 内置 15 phase,即 flow advance 的推进白名单;transitionsDiff = 运行时转移表与内置默认的差异报告;workflowMode = 本次展示所依据的工作流模式;reviewTier = 由该模式派生的审查档位,为展示档位兼容别名;displayReviewTier = 展示档位(与 reviewTier 同值);effectiveReviewTier = flow advance 缺省生效档位,恒 full)', en: '' },
|
|
653
|
+
'flow.phases.mode': { key: 'help.flow.phases.mode', zh: '显式指定工作流模式(full | fast | general;缺省经 --stage / 当前阶段派生)', en: '' },
|
|
623
654
|
'flow.phases.stage': { key: 'help.flow.phases.stage', zh: '按指定阶段的模式展示转移表(缺省 = 当前阶段)', en: '' },
|
|
624
655
|
'flow.mode': { key: 'help.flow.mode', zh: '显示当前工作流模式与来源(只读)', en: '' },
|
|
625
656
|
'flow.mode.stage': { key: 'help.flow.mode.stage', zh: '目标阶段(缺省 = 当前阶段)', en: '' },
|
|
@@ -627,7 +658,7 @@ export const help = {
|
|
|
627
658
|
'flow.archive': { key: 'help.flow.archive', zh: 'flow.json 版本分片归档(按版本号归档已收官历史;与顶层 openfeel archive〔阶段摘要归档〕职责分离)', en: '' },
|
|
628
659
|
'flow.archive.argversion': { key: 'help.flow.archive.argversion', zh: '版本号(如 v1.1.7;前缀 v 可省略)', en: '' },
|
|
629
660
|
'flow.archive.dryRun': { key: 'help.flow.archive.dryRun', zh: '仅预览(判据门照常校验;零写盘)', en: '' },
|
|
630
|
-
'flow.archive.json': { key: 'help.flow.archive.json', zh: '以 JSON 输出 { schemaVersion, version, stages, reviews, log, dryRun }', en: '' },
|
|
661
|
+
'flow.archive.json': { key: 'help.flow.archive.json', zh: '以 JSON 输出 { schemaVersion, version, stages, reviews, log, dryRun, eligible, unfinishedStages, blockingReviews }', en: '' },
|
|
631
662
|
'flow.archive.list': { key: 'help.flow.archive.list', zh: '列出已归档版本及计数(只读;引擎字典序)', en: '' },
|
|
632
663
|
'flow.archive.list.json': { key: 'help.flow.archive.list.json', zh: '以 JSON 输出 { schemaVersion, versions: [{version, counts}] }', en: '' },
|
|
633
664
|
'flow.archive.show': { key: 'help.flow.archive.show', zh: '查看指定归档版本(只读;人类输出 = counts + 阶段概览)', en: '' },
|
|
@@ -653,6 +684,7 @@ export const help = {
|
|
|
653
684
|
'flow.advance.stage': { key: 'help.flow.advance.stage', zh: '阶段 ID(如 stage-03),必须指定', en: '' },
|
|
654
685
|
'flow.advance.force': { key: 'help.flow.advance.force', zh: '强制执行(跳过非法 phase 校验和阶段跳跃检查,但不可绕过 REV 阻塞检查)', en: '' },
|
|
655
686
|
'flow.advance.dryRun': { key: 'help.flow.advance.dryRun', zh: '仅验证不执行修改(预览输出)。与 --force 组合时跳过校验但仍不执行修改', en: '' },
|
|
687
|
+
'flow.advance.reviewTier': { key: 'help.flow.advance.reviewTier', zh: '审查档位(full / lean / skip;缺省=full(零裁剪);仅显式声明时裁剪审查关,不可绕过 REV 阻塞检查)', en: '' },
|
|
656
688
|
'flow.advance.quiet': { key: 'help.flow.advance.quiet', zh: '静默非错误输出(成功确认与 Git 警告均不打印)', en: '' },
|
|
657
689
|
'flow.attempt': { key: 'help.flow.attempt', zh: '记录操作执行结果', en: '' },
|
|
658
690
|
'flow.attempt.op': { key: 'help.flow.attempt.op', zh: '操作 ID(如 stage-01.op-001)', en: '' },
|
|
@@ -663,6 +695,7 @@ export const help = {
|
|
|
663
695
|
'flow.ops.list.json': { key: 'help.flow.ops.list.json', zh: '以 JSON 输出', en: '' },
|
|
664
696
|
'flow.log': { key: 'help.flow.log', zh: '显示最近操作日志', en: '' },
|
|
665
697
|
'flow.log.last': { key: 'help.flow.log.last', zh: '显示最近 n 条(默认 10)', en: '' },
|
|
698
|
+
'flow.log.json': { key: 'help.flow.log.json', zh: '以 JSON 输出(纯 JSON 单文档,含 schemaVersion)', en: '' },
|
|
666
699
|
'flow.review': { key: 'help.flow.review', zh: '管理审查条目', en: '' },
|
|
667
700
|
'flow.review.add': { key: 'help.flow.review.add', zh: '添加审查条目', en: '' },
|
|
668
701
|
'flow.review.add.op': { key: 'help.flow.review.add.op', zh: '操作 ID(如 stage-01.op-001)', en: '' },
|
|
@@ -695,12 +728,14 @@ export const help = {
|
|
|
695
728
|
'flow.checkpoint': { key: 'help.flow.checkpoint', zh: 'Checkpoint 快照管理(phase 推进时自动保存 flow.json 快照)', en: '' },
|
|
696
729
|
'flow.checkpoint.list': { key: 'help.flow.checkpoint.list', zh: '列出所有(或指定阶段的)Checkpoint 快照', en: '' },
|
|
697
730
|
'flow.checkpoint.list.argstage': { key: 'help.flow.checkpoint.list.argstage', zh: '阶段 ID(可选),如 v5.3-stage-01', en: '' },
|
|
731
|
+
'flow.checkpoint.list.json': { key: 'help.flow.checkpoint.list.json', zh: '以 JSON 输出(纯 JSON 单文档,含 schemaVersion)', en: '' },
|
|
698
732
|
'flow.checkpoint.restore': { key: 'help.flow.checkpoint.restore', zh: '从 Checkpoint 快照恢复 flow.json(覆盖当前文件,需 --force 确认)', en: '' },
|
|
699
733
|
'flow.checkpoint.restore.argcheckpoint-file': { key: 'help.flow.checkpoint.restore.argcheckpoint-file', zh: '快照文件名(如 v5.3-stage-01-20260807T162300-exec_running.json)', en: '' },
|
|
700
734
|
'flow.checkpoint.restore.force': { key: 'help.flow.checkpoint.restore.force', zh: '确认恢复操作(覆盖当前 flow.json)', en: '' },
|
|
701
735
|
'flow.checkpoint.restore.stage': { key: 'help.flow.checkpoint.restore.stage', zh: '仅回退指定阶段子树(选择性恢复;缺省为全量覆盖)', en: '' },
|
|
702
736
|
'flow.checkpoint.restore.dryRun': { key: 'help.flow.checkpoint.restore.dryRun', zh: '仅预览差异,不写盘', en: '' },
|
|
703
737
|
'flow.recover': { key: 'help.flow.recover', zh: '跨会话上下文恢复:输出流水线状态、阻塞原因和待处理任务', en: '' },
|
|
738
|
+
'flow.recover.json': { key: 'help.flow.recover.json', zh: '以 JSON 输出(纯 JSON 单文档,含 schemaVersion)', en: '' },
|
|
704
739
|
'flow.wizard': { key: 'help.flow.wizard', zh: '交互式流水线向导,逐步推进阶段', en: '' },
|
|
705
740
|
// config
|
|
706
741
|
'config.get-lang': { key: 'help.config.get-lang', zh: '显示全局默认语言', en: '' },
|
|
@@ -709,12 +744,15 @@ export const help = {
|
|
|
709
744
|
'config': { key: 'help.config', zh: '查看或修改项目配置', en: '' },
|
|
710
745
|
'config.get': { key: 'help.config.get', zh: '读取配置项的值(项目配置;--global 时读取全局 profile;键支持 defaults.X,与 X 等价)', en: '' },
|
|
711
746
|
'config.get.global': { key: 'help.config.get.global', zh: '操作全局 profile(~/.config/openfeel/profile.yaml)', en: '' },
|
|
747
|
+
'config.get.json': { key: 'help.config.get.json', zh: '以 JSON 输出(纯 JSON 单文档,含 schemaVersion)', en: '' },
|
|
712
748
|
'config.set': { key: 'help.config.set', zh: '设置配置项的值(项目配置;--global 时写入全局 profile;键支持 defaults.X,与 X 等价)', en: '' },
|
|
713
749
|
'config.set.global': { key: 'help.config.set.global', zh: '操作全局 profile(~/.config/openfeel/profile.yaml)', en: '' },
|
|
714
750
|
'config.effective': { key: 'help.config.effective', zh: '输出配置的有效值 + 生效来源(status.md > config.yaml > profile.yaml > builtin)', en: '' },
|
|
751
|
+
'config.effective.json': { key: 'help.config.effective.json', zh: '以 JSON 输出(纯 JSON 单文档,含 schemaVersion)', en: '' },
|
|
715
752
|
// project
|
|
716
753
|
'project': { key: 'help.project', zh: '项目管理与概览', en: '' },
|
|
717
754
|
'project.overview': { key: 'help.project.overview', zh: '实时扫描项目结构,输出结构化概览', en: '' },
|
|
755
|
+
'project.overview.json': { key: 'help.project.overview.json', zh: '以 JSON 输出(纯 JSON 单文档,含 schemaVersion)', en: '' },
|
|
718
756
|
// plan
|
|
719
757
|
'plan': { key: 'help.plan', zh: '计划管理', en: '' },
|
|
720
758
|
'plan.stage': { key: 'help.plan.stage', zh: '工作阶段管理', en: '' },
|
|
@@ -731,6 +769,7 @@ export const help = {
|
|
|
731
769
|
'plan.scheme.create.fromTasks': { key: 'help.plan.scheme.create.fromTasks', zh: '从阶段任务表机械生成 ops/op-NNN.md 骨架 + ops/deps.yaml 占位(不调用任何 Agent)', en: '' },
|
|
732
770
|
'plan.scheme.list': { key: 'help.plan.scheme.list', zh: '列出操作方案(可选按阶段过滤)', en: '' },
|
|
733
771
|
'plan.scheme.list.argstage': { key: 'help.plan.scheme.list.argstage', zh: '阶段名(可选)', en: '' },
|
|
772
|
+
'plan.scheme.list.json': { key: 'help.plan.scheme.list.json', zh: '以 JSON 输出(纯 JSON 单文档,含 schemaVersion)', en: '' },
|
|
734
773
|
'plan.scheme.remove': { key: 'help.plan.scheme.remove', zh: '注销操作方案(仅从 flow.json 删除注册键,不删除 op 模板文件)', en: '' },
|
|
735
774
|
'plan.scheme.remove.force': { key: 'help.plan.scheme.remove.force', zh: '越过保护校验(op 已 done / 存在 checkpoint 进展)', en: '' },
|
|
736
775
|
'plan.scheme.remove.dryRun': { key: 'help.plan.scheme.remove.dryRun', zh: '仅预览,不写盘', en: '' },
|
|
@@ -751,12 +790,13 @@ export const help = {
|
|
|
751
790
|
'stage': { key: 'help.stage', zh: '工作阶段状态管理(status.md 原子操作)', en: '' },
|
|
752
791
|
'stage.status': { key: 'help.stage.status', zh: '查看阶段状态(无参数时列出所有阶段)', en: '' },
|
|
753
792
|
'stage.status.argstageId': { key: 'help.stage.status.argstageId', zh: '阶段 ID(如 v4-stage-04)', en: '' },
|
|
793
|
+
'stage.status.json': { key: 'help.stage.status.json', zh: '以 JSON 输出(纯 JSON 单文档,含 schemaVersion)', en: '' },
|
|
754
794
|
'stage.set': { key: 'help.stage.set', zh: '设置阶段状态字段(原子更新,保留其余内容不变)', en: '' },
|
|
755
795
|
'stage.set.argstageId': { key: 'help.stage.set.argstageId', zh: '阶段 ID(如 v4-stage-04)', en: '' },
|
|
756
796
|
'stage.set.status': { key: 'help.stage.set.status', zh: '状态值(粗粒度:planned/review_failed/review_passed/testing/archiving/done)', en: '' },
|
|
757
797
|
'stage.set.execMode': { key: 'help.stage.set.execMode', zh: '执行模式(manual | auto)', en: '' },
|
|
758
798
|
'stage.set.autoAdvance': { key: 'help.stage.set.autoAdvance', zh: '自动推进(enabled | disabled)', en: '' },
|
|
759
|
-
'stage.set.workflowMode': { key: 'help.stage.set.workflowMode', zh: '工作流模式(full | fast)', en: '' },
|
|
799
|
+
'stage.set.workflowMode': { key: 'help.stage.set.workflowMode', zh: '工作流模式(full | fast | general)', en: '' },
|
|
760
800
|
'stage.set.reviewAgent': { key: 'help.stage.set.reviewAgent', zh: '当前责任 Agent(如 openfeel-executor)', en: '' },
|
|
761
801
|
'stage.task': { key: 'help.stage.task', zh: '勾选/取消任务 checkbox,或追加任务', en: '' },
|
|
762
802
|
'stage.task.argstageId': { key: 'help.stage.task.argstageId', zh: '阶段 ID(如 v4-stage-04)', en: '' },
|
|
@@ -770,6 +810,7 @@ export const help = {
|
|
|
770
810
|
'view': { key: 'help.view', zh: '审查条目管理', en: '' },
|
|
771
811
|
'view.list': { key: 'help.view.list', zh: '列出审查条目', en: '' },
|
|
772
812
|
'view.list.op': { key: 'help.view.list.op', zh: '按操作 ID 过滤', en: '' },
|
|
813
|
+
'view.list.json': { key: 'help.view.list.json', zh: '以 JSON 输出(纯 JSON 单文档,含 schemaVersion)', en: '' },
|
|
773
814
|
'view.note': { key: 'help.view.note', zh: '新增/修改/删除审查条目请使用 `openfeel flow review add|update|remove`', en: '' },
|
|
774
815
|
'view.accept': { key: 'help.view.accept', zh: '验收审查条目(标记为 closed)', en: '' },
|
|
775
816
|
'view.accept.argrev-id': { key: 'help.view.accept.argrev-id', zh: '审查条目 ID(如 REV-001)', en: '' },
|
|
@@ -777,6 +818,7 @@ export const help = {
|
|
|
777
818
|
'knowledge': { key: 'help.knowledge', zh: '知识库管理', en: '' },
|
|
778
819
|
'knowledge.list': { key: 'help.knowledge.list', zh: '列出知识条目', en: '' },
|
|
779
820
|
'knowledge.list.type': { key: 'help.knowledge.list.type', zh: '按分类过滤', en: '' },
|
|
821
|
+
'knowledge.list.json': { key: 'help.knowledge.list.json', zh: '以 JSON 输出(纯 JSON 单文档,含 schemaVersion)', en: '' },
|
|
780
822
|
'knowledge.add': { key: 'help.knowledge.add', zh: '添加知识条目', en: '' },
|
|
781
823
|
'knowledge.add.argcategory': { key: 'help.knowledge.add.argcategory', zh: '分类(architecture | patterns | troubleshooting | setup)', en: '' },
|
|
782
824
|
'knowledge.add.argtitle': { key: 'help.knowledge.add.argtitle', zh: '条目标题', en: '' },
|
|
@@ -785,15 +827,19 @@ export const help = {
|
|
|
785
827
|
'knowledge.search.argquery': { key: 'help.knowledge.search.argquery', zh: '搜索关键词', en: '' },
|
|
786
828
|
'knowledge.search.limit': { key: 'help.knowledge.search.limit', zh: '返回结果数量上限(默认 10)', en: '' },
|
|
787
829
|
'knowledge.search.offset': { key: 'help.knowledge.search.offset', zh: '结果偏移量(默认 0)', en: '' },
|
|
830
|
+
'knowledge.search.json': { key: 'help.knowledge.search.json', zh: '以 JSON 输出(纯 JSON 单文档,含 schemaVersion)', en: '' },
|
|
788
831
|
'knowledge.index': { key: 'help.knowledge.index', zh: '显示知识库索引概览', en: '' },
|
|
832
|
+
'knowledge.index.json': { key: 'help.knowledge.index.json', zh: '以 JSON 输出(纯 JSON 单文档,含 schemaVersion)', en: '' },
|
|
789
833
|
'knowledge.dedup': { key: 'help.knowledge.dedup', zh: '检索相似知识条目(只读建议,不修改 kb)', en: '' },
|
|
790
834
|
'knowledge.dedup.argcontent': { key: 'help.knowledge.dedup.argcontent', zh: '待归档内容(省略时从标准输入读取)', en: '' },
|
|
791
835
|
'knowledge.dedup.project': { key: 'help.knowledge.dedup.project', zh: '目标项目根路径(默认当前目录)', en: '' },
|
|
792
836
|
'knowledge.dedup.category': { key: 'help.knowledge.dedup.category', zh: '仅检查指定分类(architecture|patterns|troubleshooting|setup)', en: '' },
|
|
793
837
|
'knowledge.dedup.threshold': { key: 'help.knowledge.dedup.threshold', zh: '相似度阈值 0~1(默认 0.8)', en: '' },
|
|
838
|
+
'knowledge.dedup.json': { key: 'help.knowledge.dedup.json', zh: '以 JSON 输出(纯 JSON 单文档,含 schemaVersion)', en: '' },
|
|
794
839
|
// archive
|
|
795
840
|
'archive': { key: 'help.archive', zh: '归档指定阶段(汇总产出、生成摘要、提取知识)', en: '' },
|
|
796
841
|
'archive.argstage': { key: 'help.archive.argstage', zh: '阶段名称(如 stage-06)', en: '' },
|
|
842
|
+
'archive.json': { key: 'help.archive.json', zh: '以 JSON 输出 { schemaVersion, stage, archivePath, opsCount, reviewsCount, knowledgeExtracts }', en: '' },
|
|
797
843
|
// roadmap
|
|
798
844
|
'roadmap': { key: 'help.roadmap', zh: '分期大纲管理', en: '' },
|
|
799
845
|
'roadmap.create': { key: 'help.roadmap.create', zh: '创建分期大纲(版本号如 1.0、2.0)', en: '' },
|
|
@@ -833,6 +879,7 @@ export const help = {
|
|
|
833
879
|
'req.add.argtitle': { key: 'help.req.add.argtitle', zh: '需求标题', en: '' },
|
|
834
880
|
'req.add.targetVersion': { key: 'help.req.add.targetVersion', zh: '预估版本(如 v1.3.0)', en: '' },
|
|
835
881
|
'req.add.priority': { key: 'help.req.add.priority', zh: '优先级(P0/P1/P2)', en: '' },
|
|
882
|
+
'req.add.workflowMode': { key: 'help.req.add.workflowMode', zh: '工作流模式(full / fast / general;缺省不设置)', en: '' },
|
|
836
883
|
'req.list': { key: 'help.req.list', zh: '列出需求(可按状态/版本/认领人过滤)', en: '' },
|
|
837
884
|
'req.list.status': { key: 'help.req.list.status', zh: '按状态过滤(draft/scheduled/in_progress/done/blocked/cancelled/rejected)', en: '' },
|
|
838
885
|
'req.list.targetVersion': { key: 'help.req.list.targetVersion', zh: '按预估版本过滤', en: '' },
|
|
@@ -840,7 +887,7 @@ export const help = {
|
|
|
840
887
|
'req.list.json': { key: 'help.req.list.json', zh: '以 JSON 输出 { schemaVersion, requirements }', en: '' },
|
|
841
888
|
'req.show': { key: 'help.req.show', zh: '查看需求详情(关联阶段为原始只读枚举)', en: '' },
|
|
842
889
|
'req.show.argid': { key: 'help.req.show.argid', zh: '需求 ID(如 REQ-001)', en: '' },
|
|
843
|
-
'req.show.json': { key: 'help.req.show.json', zh: '以 JSON 输出 { schemaVersion, requirement, stages }', en: '' },
|
|
890
|
+
'req.show.json': { key: 'help.req.show.json', zh: '以 JSON 输出 { schemaVersion, requirement, stages, parent, children }', en: '' },
|
|
844
891
|
// req(写命令)
|
|
845
892
|
'req.claim': { key: 'help.req.claim', zh: '认领需求(占用校验;已被他人认领则拒绝)', en: '' },
|
|
846
893
|
'req.claim.argid': { key: 'help.req.claim.argid', zh: '需求 ID(如 REQ-001)', en: '' },
|
|
@@ -853,11 +900,12 @@ export const help = {
|
|
|
853
900
|
'req.set.title': { key: 'help.req.set.title', zh: '新标题', en: '' },
|
|
854
901
|
'req.set.targetVersion': { key: 'help.req.set.targetVersion', zh: '新预估版本', en: '' },
|
|
855
902
|
'req.set.priority': { key: 'help.req.set.priority', zh: '新优先级(P0/P1/P2)', en: '' },
|
|
903
|
+
'req.set.workflowMode': { key: 'help.req.set.workflowMode', zh: '新工作流模式(full / fast / general;general 仅限无关联阶段的需求)', en: '' },
|
|
856
904
|
'req.link': { key: 'help.req.link', zh: '关联需求到阶段 / 解绑(--requirement 与 --unlink 二选一)', en: '' },
|
|
857
905
|
'req.link.stage': { key: 'help.req.link.stage', zh: '阶段 ID(stage-NN 或 vX.Y.Z-stage-NN;短名按 v1.0.0 系列解析)', en: '' },
|
|
858
906
|
'req.link.requirement': { key: 'help.req.link.requirement', zh: '需求 ID(关联用;与 --unlink 互斥)', en: '' },
|
|
859
907
|
'req.link.unlink': { key: 'help.req.link.unlink', zh: '解除该阶段的需求关联', en: '' },
|
|
860
|
-
'req.advance': { key: 'help.req.advance', zh: '显式推进需求状态(合法目标由引擎流转表判定;done
|
|
908
|
+
'req.advance': { key: 'help.req.advance', zh: '显式推进需求状态(合法目标由引擎流转表判定;done:非 general 需求须全部关联阶段 done)', en: '' },
|
|
861
909
|
'req.advance.argid': { key: 'help.req.advance.argid', zh: '需求 ID(如 REQ-001)', en: '' },
|
|
862
910
|
'req.advance.to': { key: 'help.req.advance.to', zh: '目标状态(合法目标由引擎判定)', en: '' },
|
|
863
911
|
'req.board': { key: 'help.req.board', zh: '需求看板(按状态分组;7 组固定顺序)', en: '' },
|
|
@@ -866,6 +914,11 @@ export const help = {
|
|
|
866
914
|
'req.next': { key: 'help.req.next', zh: '推荐下一个可接取需求(scheduled 且未认领;按预估版本升序)', en: '' },
|
|
867
915
|
'req.next.owner': { key: 'help.req.next.owner', zh: '认领人视角(含该认领人已认领的 scheduled 需求)', en: '' },
|
|
868
916
|
'req.next.json': { key: 'help.req.next.json', zh: '以 JSON 输出 { schemaVersion, requirement }', en: '' },
|
|
917
|
+
'req.next.limit': { key: 'help.req.next.limit', zh: '返回候选条数上限(≥1 的整数;缺省 1)', en: '' },
|
|
918
|
+
'req.split': { key: 'help.req.split', zh: '拆分需求为若干子需求(拆分即发布:子需求入 scheduled)', en: '' },
|
|
919
|
+
'req.split.argid': { key: 'help.req.split.argid', zh: '需求 ID(如 REQ-001)', en: '' },
|
|
920
|
+
'req.split.into': { key: 'help.req.split.into', zh: '子需求标题(可重复;至少一项)', en: '' },
|
|
921
|
+
'req.split.json': { key: 'help.req.split.json', zh: '以 JSON 输出 { schemaVersion, parent, children }', en: '' },
|
|
869
922
|
};
|
|
870
923
|
/* ==================== config 域:配置管理命令 ==================== */
|
|
871
924
|
export const config = {
|
|
@@ -981,6 +1034,7 @@ export const metrics = {
|
|
|
981
1034
|
'summary.totalRetries': { key: 'metrics.summary.totalRetries', zh: ' 总重试次数: {n}', en: '' },
|
|
982
1035
|
'summary.totalDuration': { key: 'metrics.summary.totalDuration', zh: ' 总耗时: {n}ms', en: '' },
|
|
983
1036
|
'summary.avgDuration': { key: 'metrics.summary.avgDuration', zh: ' 平均耗时: {n}ms', en: '' },
|
|
1037
|
+
'summary.caliberNote': { key: 'metrics.summary.caliberNote', zh: '注:耗时口径 = phase 窗口(含跨会话闲置 / 等待),非 agent 纯执行时长。', en: '' },
|
|
984
1038
|
};
|
|
985
1039
|
/* ==================== repl 域:交互模式(T40) ==================== */
|
|
986
1040
|
export const repl = {
|
|
@@ -1024,13 +1078,15 @@ export const req = {
|
|
|
1024
1078
|
// req set
|
|
1025
1079
|
'set.doneTmpl': { key: 'req.set.doneTmpl', zh: '已更新 {id}', en: '' },
|
|
1026
1080
|
'set.noopTmpl': { key: 'req.set.noopTmpl', zh: '{id} 无变更(no-op)', en: '' },
|
|
1027
|
-
'set.noFieldsTmpl': { key: 'req.set.noFieldsTmpl', zh: '未提供任何字段;至少提供 --status / --title / --target-version / --priority 之一', en: '' },
|
|
1081
|
+
'set.noFieldsTmpl': { key: 'req.set.noFieldsTmpl', zh: '未提供任何字段;至少提供 --status / --title / --target-version / --priority / --workflow-mode 之一', en: '' },
|
|
1082
|
+
'set.modeSyncedTmpl': { key: 'req.set.modeSyncedTmpl', zh: '已将工作流模式 {mode} 下发到 {count} 个关联阶段', en: '' },
|
|
1028
1083
|
// req link
|
|
1029
1084
|
'link.doneTmpl': { key: 'req.link.doneTmpl', zh: '已将 {stage} 关联到 {id}', en: '' },
|
|
1030
1085
|
'link.unlinkDoneTmpl': { key: 'req.link.unlinkDoneTmpl', zh: '已解除 {stage} 的需求关联', en: '' },
|
|
1031
1086
|
'link.noopTmpl': { key: 'req.link.noopTmpl', zh: '{stage} 关联未变化(no-op)', en: '' },
|
|
1032
1087
|
'link.exclusiveTmpl': { key: 'req.link.exclusiveTmpl', zh: '--requirement 与 --unlink 必须且只能提供一个', en: '' },
|
|
1033
1088
|
'link.terminalTmpl': { key: 'req.link.terminalTmpl', zh: '{id} 已是终态({status}),不可关联', en: '' },
|
|
1089
|
+
'link.modeSyncedTmpl': { key: 'req.link.modeSyncedTmpl', zh: '已将需求工作流模式 {mode} 下发到阶段 {stage}(status.md 字段 + flow.json 冗余同批)', en: '' },
|
|
1034
1090
|
// req advance
|
|
1035
1091
|
'advance.doneTmpl': { key: 'req.advance.doneTmpl', zh: '已推进 {id}:{from} → {to}', en: '' },
|
|
1036
1092
|
'advance.noopTmpl': { key: 'req.advance.noopTmpl', zh: '{id} 已是 {to}(no-op)', en: '' },
|
|
@@ -1038,15 +1094,34 @@ export const req = {
|
|
|
1038
1094
|
'err.stageNotFoundTmpl': { key: 'req.err.stageNotFoundTmpl', zh: '阶段 {stage} 不存在(未注册于 flow.json 的 stages)', en: '' },
|
|
1039
1095
|
'err.alreadyClaimedTmpl': { key: 'req.err.alreadyClaimedTmpl', zh: '{id} 已被他人认领;须先释放:openfeel req release {id}', en: '' },
|
|
1040
1096
|
'err.alreadyLinkedTmpl': { key: 'req.err.alreadyLinkedTmpl', zh: '{stage} 已关联其它需求;须先解绑:openfeel req link --stage {stage} --unlink', en: '' },
|
|
1041
|
-
'err.invalidFieldTmpl': { key: 'req.err.invalidFieldTmpl', zh: '{id} 字段取值非法(检查 --status / --title / --target-version / --priority)', en: '' },
|
|
1097
|
+
'err.invalidFieldTmpl': { key: 'req.err.invalidFieldTmpl', zh: '{id} 字段取值非法(检查 --status / --title / --target-version / --priority / --workflow-mode)', en: '' },
|
|
1042
1098
|
'err.invalidStatusTmpl': { key: 'req.err.invalidStatusTmpl', zh: '{id} 目标状态 {to} 被拒(当前 {current};合法目标:{targets})', en: '' },
|
|
1099
|
+
'err.doneGateTmpl': { key: 'req.err.doneGateTmpl', zh: '{id} 目标状态 done 被拒(当前 {current})——done 须全部关联阶段 done;零关联阶段的需求可设 general 模式显式完成', en: '' },
|
|
1100
|
+
'err.generalModeConflictTmpl': { key: 'req.err.generalModeConflictTmpl', zh: '{id} 已关联阶段——general(无流水线)仅限无关联阶段的需求(可先解绑阶段,或改走 fast / full)', en: '' },
|
|
1101
|
+
'err.generalTargetTmpl': { key: 'req.err.generalTargetTmpl', zh: '{id} 工作流模式为 general(无流水线)——不接受阶段关联', en: '' },
|
|
1043
1102
|
// req board
|
|
1044
1103
|
'board.groupTmpl': { key: 'req.board.groupTmpl', zh: '{status}({n})', en: '' },
|
|
1045
1104
|
'board.itemTmpl': { key: 'req.board.itemTmpl', zh: ' - {id} {title}', en: '' },
|
|
1105
|
+
'board.ownedSuffixTmpl': { key: 'req.board.ownedSuffixTmpl', zh: '(已认领:{owner})', en: '' },
|
|
1046
1106
|
// req next
|
|
1047
1107
|
'next.foundTmpl': { key: 'req.next.foundTmpl', zh: '下一项:{id} [{status}] {title}', en: '' },
|
|
1048
1108
|
'next.ownedSuffixTmpl': { key: 'req.next.ownedSuffixTmpl', zh: '(已认领:{owner})', en: '' },
|
|
1049
1109
|
'next.empty': { key: 'req.next.empty', zh: '(无可接取需求)', en: '' },
|
|
1110
|
+
'next.limitInvalidTmpl': { key: 'req.next.limitInvalidTmpl', zh: '{value} → 非法 --limit 值(应为 ≥1 的整数)', en: '' },
|
|
1111
|
+
'next.multiLabel': { key: 'req.next.multiLabel', zh: '可接取需求({n}):', en: '' },
|
|
1112
|
+
'next.itemTmpl': { key: 'req.next.itemTmpl', zh: ' - {id} [{status}] {title}', en: '' },
|
|
1113
|
+
// req split
|
|
1114
|
+
'split.doneTmpl': { key: 'req.split.doneTmpl', zh: '已拆分 {id} → {children}(共 {n} 条子需求)', en: '' },
|
|
1115
|
+
'split.childTmpl': { key: 'req.split.childTmpl', zh: ' - {id}:{title}(正文:{path})', en: '' },
|
|
1116
|
+
'split.noIntoTmpl': { key: 'req.split.noIntoTmpl', zh: '未提供 --into;请至少给出一个子需求标题(--into 可重复)', en: '' },
|
|
1117
|
+
'split.terminalTmpl': { key: 'req.split.terminalTmpl', zh: '{id} 已是终态({status}),不可拆分', en: '' },
|
|
1118
|
+
'split.invalidFieldTmpl': { key: 'req.split.invalidFieldTmpl', zh: '子需求取值非法(标题不能为空)', en: '' },
|
|
1119
|
+
// req show(父需求 / 子需求)
|
|
1120
|
+
'show.parentTmpl': { key: 'req.show.parentTmpl', zh: '父需求: {parent}', en: '' },
|
|
1121
|
+
'show.parentNone': { key: 'req.show.parentNone', zh: '父需求: (无)', en: '' },
|
|
1122
|
+
'show.childrenLabel': { key: 'req.show.childrenLabel', zh: '子需求:', en: '' },
|
|
1123
|
+
'show.childItemTmpl': { key: 'req.show.childItemTmpl', zh: ' - {id} [{status}] {title}', en: '' },
|
|
1124
|
+
'show.childrenNone': { key: 'req.show.childrenNone', zh: '子需求: (无)', en: '' },
|
|
1050
1125
|
};
|
|
1051
1126
|
/* ==================== 聚合导出 ==================== */
|
|
1052
1127
|
/** 所有功能域的聚合数组(供 i18n.ts 构建 Map 使用) */
|