openfeel 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/LICENSE +21 -0
  2. package/README.en.md +140 -0
  3. package/README.md +17 -0
  4. package/README.zh-CN.md +140 -0
  5. package/bin/openfeel.js +13 -0
  6. package/dist/cli/index.d.ts +11 -0
  7. package/dist/cli/index.d.ts.map +1 -0
  8. package/dist/cli/index.js +119 -0
  9. package/dist/cli/index.js.map +1 -0
  10. package/dist/cli/repl.d.ts +10 -0
  11. package/dist/cli/repl.d.ts.map +1 -0
  12. package/dist/cli/repl.js +74 -0
  13. package/dist/cli/repl.js.map +1 -0
  14. package/dist/commands/archive.d.ts +7 -0
  15. package/dist/commands/archive.d.ts.map +1 -0
  16. package/dist/commands/archive.js +38 -0
  17. package/dist/commands/archive.js.map +1 -0
  18. package/dist/commands/config.d.ts +15 -0
  19. package/dist/commands/config.d.ts.map +1 -0
  20. package/dist/commands/config.js +208 -0
  21. package/dist/commands/config.js.map +1 -0
  22. package/dist/commands/flow.d.ts +24 -0
  23. package/dist/commands/flow.d.ts.map +1 -0
  24. package/dist/commands/flow.js +1024 -0
  25. package/dist/commands/flow.js.map +1 -0
  26. package/dist/commands/init.d.ts +9 -0
  27. package/dist/commands/init.d.ts.map +1 -0
  28. package/dist/commands/init.js +62 -0
  29. package/dist/commands/init.js.map +1 -0
  30. package/dist/commands/instructions.d.ts +7 -0
  31. package/dist/commands/instructions.d.ts.map +1 -0
  32. package/dist/commands/instructions.js +36 -0
  33. package/dist/commands/instructions.js.map +1 -0
  34. package/dist/commands/knowledge.d.ts +7 -0
  35. package/dist/commands/knowledge.d.ts.map +1 -0
  36. package/dist/commands/knowledge.js +174 -0
  37. package/dist/commands/knowledge.js.map +1 -0
  38. package/dist/commands/lint.d.ts +12 -0
  39. package/dist/commands/lint.d.ts.map +1 -0
  40. package/dist/commands/lint.js +192 -0
  41. package/dist/commands/lint.js.map +1 -0
  42. package/dist/commands/plan.d.ts +7 -0
  43. package/dist/commands/plan.d.ts.map +1 -0
  44. package/dist/commands/plan.js +73 -0
  45. package/dist/commands/plan.js.map +1 -0
  46. package/dist/commands/project.d.ts +7 -0
  47. package/dist/commands/project.d.ts.map +1 -0
  48. package/dist/commands/project.js +189 -0
  49. package/dist/commands/project.js.map +1 -0
  50. package/dist/commands/roadmap.d.ts +7 -0
  51. package/dist/commands/roadmap.d.ts.map +1 -0
  52. package/dist/commands/roadmap.js +26 -0
  53. package/dist/commands/roadmap.js.map +1 -0
  54. package/dist/commands/stage.d.ts +17 -0
  55. package/dist/commands/stage.d.ts.map +1 -0
  56. package/dist/commands/stage.js +291 -0
  57. package/dist/commands/stage.js.map +1 -0
  58. package/dist/commands/update.d.ts +8 -0
  59. package/dist/commands/update.d.ts.map +1 -0
  60. package/dist/commands/update.js +87 -0
  61. package/dist/commands/update.js.map +1 -0
  62. package/dist/commands/view.d.ts +7 -0
  63. package/dist/commands/view.d.ts.map +1 -0
  64. package/dist/commands/view.js +77 -0
  65. package/dist/commands/view.js.map +1 -0
  66. package/dist/core/archive/merge.d.ts +20 -0
  67. package/dist/core/archive/merge.d.ts.map +1 -0
  68. package/dist/core/archive/merge.js +118 -0
  69. package/dist/core/archive/merge.js.map +1 -0
  70. package/dist/core/artifact-graph/graph.d.ts +62 -0
  71. package/dist/core/artifact-graph/graph.d.ts.map +1 -0
  72. package/dist/core/artifact-graph/graph.js +184 -0
  73. package/dist/core/artifact-graph/graph.js.map +1 -0
  74. package/dist/core/artifact-graph/index.d.ts +10 -0
  75. package/dist/core/artifact-graph/index.d.ts.map +1 -0
  76. package/dist/core/artifact-graph/index.js +8 -0
  77. package/dist/core/artifact-graph/index.js.map +1 -0
  78. package/dist/core/artifact-graph/instruction-loader.d.ts +35 -0
  79. package/dist/core/artifact-graph/instruction-loader.d.ts.map +1 -0
  80. package/dist/core/artifact-graph/instruction-loader.js +358 -0
  81. package/dist/core/artifact-graph/instruction-loader.js.map +1 -0
  82. package/dist/core/artifact-graph/resolver.d.ts +10 -0
  83. package/dist/core/artifact-graph/resolver.d.ts.map +1 -0
  84. package/dist/core/artifact-graph/resolver.js +32 -0
  85. package/dist/core/artifact-graph/resolver.js.map +1 -0
  86. package/dist/core/artifact-graph/state.d.ts +9 -0
  87. package/dist/core/artifact-graph/state.d.ts.map +1 -0
  88. package/dist/core/artifact-graph/state.js +24 -0
  89. package/dist/core/artifact-graph/state.js.map +1 -0
  90. package/dist/core/artifact-graph/types.d.ts +22 -0
  91. package/dist/core/artifact-graph/types.d.ts.map +1 -0
  92. package/dist/core/artifact-graph/types.js +2 -0
  93. package/dist/core/artifact-graph/types.js.map +1 -0
  94. package/dist/core/config.d.ts +256 -0
  95. package/dist/core/config.d.ts.map +1 -0
  96. package/dist/core/config.js +393 -0
  97. package/dist/core/config.js.map +1 -0
  98. package/dist/core/flow-manager.d.ts +492 -0
  99. package/dist/core/flow-manager.d.ts.map +1 -0
  100. package/dist/core/flow-manager.js +2379 -0
  101. package/dist/core/flow-manager.js.map +1 -0
  102. package/dist/core/i18n-data/en.d.ts +26 -0
  103. package/dist/core/i18n-data/en.d.ts.map +1 -0
  104. package/dist/core/i18n-data/en.js +492 -0
  105. package/dist/core/i18n-data/en.js.map +1 -0
  106. package/dist/core/i18n-data/types.d.ts +18 -0
  107. package/dist/core/i18n-data/types.d.ts.map +1 -0
  108. package/dist/core/i18n-data/types.js +8 -0
  109. package/dist/core/i18n-data/types.js.map +1 -0
  110. package/dist/core/i18n-data/zh-CN.d.ts +28 -0
  111. package/dist/core/i18n-data/zh-CN.d.ts.map +1 -0
  112. package/dist/core/i18n-data/zh-CN.js +524 -0
  113. package/dist/core/i18n-data/zh-CN.js.map +1 -0
  114. package/dist/core/i18n.d.ts +40 -0
  115. package/dist/core/i18n.d.ts.map +1 -0
  116. package/dist/core/i18n.js +135 -0
  117. package/dist/core/i18n.js.map +1 -0
  118. package/dist/core/init.d.ts +22 -0
  119. package/dist/core/init.d.ts.map +1 -0
  120. package/dist/core/init.js +292 -0
  121. package/dist/core/init.js.map +1 -0
  122. package/dist/core/metrics.d.ts +60 -0
  123. package/dist/core/metrics.d.ts.map +1 -0
  124. package/dist/core/metrics.js +137 -0
  125. package/dist/core/metrics.js.map +1 -0
  126. package/dist/core/pipeline-schema.d.ts +78 -0
  127. package/dist/core/pipeline-schema.d.ts.map +1 -0
  128. package/dist/core/pipeline-schema.js +57 -0
  129. package/dist/core/pipeline-schema.js.map +1 -0
  130. package/dist/core/plan/roadmap.d.ts +17 -0
  131. package/dist/core/plan/roadmap.d.ts.map +1 -0
  132. package/dist/core/plan/roadmap.js +71 -0
  133. package/dist/core/plan/roadmap.js.map +1 -0
  134. package/dist/core/plan/scheme.d.ts +34 -0
  135. package/dist/core/plan/scheme.d.ts.map +1 -0
  136. package/dist/core/plan/scheme.js +262 -0
  137. package/dist/core/plan/scheme.js.map +1 -0
  138. package/dist/core/plan/stage.d.ts +20 -0
  139. package/dist/core/plan/stage.d.ts.map +1 -0
  140. package/dist/core/plan/stage.js +120 -0
  141. package/dist/core/plan/stage.js.map +1 -0
  142. package/dist/core/public-logger.d.ts +84 -0
  143. package/dist/core/public-logger.d.ts.map +1 -0
  144. package/dist/core/public-logger.js +344 -0
  145. package/dist/core/public-logger.js.map +1 -0
  146. package/dist/core/schema.d.ts +70 -0
  147. package/dist/core/schema.d.ts.map +1 -0
  148. package/dist/core/schema.js +61 -0
  149. package/dist/core/schema.js.map +1 -0
  150. package/dist/core/template-loader.d.ts +22 -0
  151. package/dist/core/template-loader.d.ts.map +1 -0
  152. package/dist/core/template-loader.js +2848 -0
  153. package/dist/core/template-loader.js.map +1 -0
  154. package/dist/core/templates.d.ts +18 -0
  155. package/dist/core/templates.d.ts.map +1 -0
  156. package/dist/core/templates.js +50 -0
  157. package/dist/core/templates.js.map +1 -0
  158. package/dist/core/update.d.ts +40 -0
  159. package/dist/core/update.d.ts.map +1 -0
  160. package/dist/core/update.js +1569 -0
  161. package/dist/core/update.js.map +1 -0
  162. package/dist/core/view/entry.d.ts +37 -0
  163. package/dist/core/view/entry.d.ts.map +1 -0
  164. package/dist/core/view/entry.js +108 -0
  165. package/dist/core/view/entry.js.map +1 -0
  166. package/dist/core/workspace/identity.d.ts +60 -0
  167. package/dist/core/workspace/identity.d.ts.map +1 -0
  168. package/dist/core/workspace/identity.js +169 -0
  169. package/dist/core/workspace/identity.js.map +1 -0
  170. package/dist/core/workspace/knowledge.d.ts +55 -0
  171. package/dist/core/workspace/knowledge.d.ts.map +1 -0
  172. package/dist/core/workspace/knowledge.js +230 -0
  173. package/dist/core/workspace/knowledge.js.map +1 -0
  174. package/dist/core/workspace/structure.d.ts +9 -0
  175. package/dist/core/workspace/structure.d.ts.map +1 -0
  176. package/dist/core/workspace/structure.js +59 -0
  177. package/dist/core/workspace/structure.js.map +1 -0
  178. package/dist/index.d.ts +7 -0
  179. package/dist/index.d.ts.map +1 -0
  180. package/dist/index.js +7 -0
  181. package/dist/index.js.map +1 -0
  182. package/dist/utils/kb-dedup.d.ts +46 -0
  183. package/dist/utils/kb-dedup.d.ts.map +1 -0
  184. package/dist/utils/kb-dedup.js +169 -0
  185. package/dist/utils/kb-dedup.js.map +1 -0
  186. package/dist/utils/path.d.ts +22 -0
  187. package/dist/utils/path.d.ts.map +1 -0
  188. package/dist/utils/path.js +37 -0
  189. package/dist/utils/path.js.map +1 -0
  190. package/package.json +61 -0
  191. package/schemas/spec-driven/schema.yaml +50 -0
  192. package/schemas/spec-driven/templates/design.md +43 -0
  193. package/schemas/spec-driven/templates/plan.md +46 -0
  194. package/schemas/spec-driven/templates/proposal.md +35 -0
  195. package/schemas/spec-driven/templates/tasks.md +39 -0
  196. package/scripts/patch-inquirer.js +70 -0
@@ -0,0 +1,492 @@
1
+ import { type PipelinePhase, type MetaPhase, type StageStats } from './pipeline-schema.js';
2
+ export { type PipelinePhase, type MetaPhase, type StageStats } from './pipeline-schema.js';
3
+ /** 操作执行状态 */
4
+ export type OpState = 'pending' | 'executing' | 'done' | 'failed';
5
+ /** 检查点结构 */
6
+ export interface Checkpoints {
7
+ plan: string;
8
+ scheme: string;
9
+ exec: {
10
+ attempts: number;
11
+ self: string;
12
+ };
13
+ review: string;
14
+ test: string;
15
+ }
16
+ /** 操作 (Op) 结构 */
17
+ export interface Op {
18
+ id: string;
19
+ title: string;
20
+ state: OpState;
21
+ assignee: string;
22
+ attempts: number;
23
+ max_attempts: number;
24
+ checkpoints: Checkpoints;
25
+ }
26
+ /** 审查条目 */
27
+ export interface ReviewItem {
28
+ id: string;
29
+ op: string;
30
+ status: 'open' | 'resolved' | 'closed';
31
+ priority: 'high' | 'medium' | 'low';
32
+ title: string;
33
+ filed_by: string;
34
+ filed_at: string;
35
+ /** Reviewer 认为可直接修复时设为 true,跳过 Schemer 重新规划 */
36
+ canAutoFix?: boolean;
37
+ /** 自动修复说明 */
38
+ autoFixDetail?: string;
39
+ /** 是否阻塞流水线。
40
+ * - true:REV 未关闭时阻止流水线进入下一阶段(阻塞性 REV)
41
+ * - false(默认):REV 不中断流水线,仅作为记录跟踪(非阻塞 REV)
42
+ *
43
+ * 方案级审查 REV 默认非阻塞(blocking=false),代码级审查 REV 默认阻塞(blocking=true)。
44
+ * 审查者可根据严重程度覆盖默认值。
45
+ */
46
+ blocking?: boolean;
47
+ }
48
+ /** 日志条目 */
49
+ export interface LogEntry {
50
+ time: string;
51
+ agent: string;
52
+ action: string;
53
+ detail: Record<string, unknown>;
54
+ }
55
+ /** 阶段数据结构 */
56
+ export interface StageData {
57
+ name: string;
58
+ /** 阶段当前流水线阶段 */
59
+ phase: PipelinePhase;
60
+ status: string;
61
+ deps: string[];
62
+ ops: Record<string, Op>;
63
+ /** 阶段耗时统计(可选,运行时填充) */
64
+ stats?: StageStats;
65
+ }
66
+ /** Flow 完整数据结构 */
67
+ export interface FlowData {
68
+ meta: {
69
+ version: string;
70
+ project: string;
71
+ updated: string;
72
+ };
73
+ pipeline: {
74
+ phase: MetaPhase;
75
+ current: {
76
+ stage: string;
77
+ op: string;
78
+ };
79
+ retry: number;
80
+ };
81
+ stages: Record<string, StageData>;
82
+ reviews: ReviewItem[];
83
+ log: LogEntry[];
84
+ }
85
+ /** 流水线摘要 */
86
+ export interface PipelineSummary {
87
+ phase: string;
88
+ currentOp: string | null;
89
+ retryCount: number;
90
+ stagesCount: number;
91
+ opsCount: number;
92
+ reviewItemsOpen: number;
93
+ recentLogs: number;
94
+ }
95
+ /** verbose 模式下的配置级联信息 */
96
+ export interface CascadeConfig {
97
+ configDefaults: Record<string, string>;
98
+ statusOverrides: Record<string, string>;
99
+ effective: Record<string, string>;
100
+ }
101
+ /** verbose 模式下的状态变更记录 */
102
+ export interface RecentChange {
103
+ time: string;
104
+ agent: string;
105
+ change: string;
106
+ description: string;
107
+ }
108
+ /** verbose 模式下的下游阶段信息 */
109
+ export interface DownstreamPhase {
110
+ phase: string;
111
+ label: string;
112
+ responsibleAgent: string;
113
+ }
114
+ /** verbose 模式摘要(供 --verbose 输出) */
115
+ export interface VerboseSummary {
116
+ basic: PipelineSummary;
117
+ cascade: CascadeConfig;
118
+ recentChanges: RecentChange[];
119
+ downstreamPhases: DownstreamPhase[];
120
+ }
121
+ /** 跨会话上下文恢复结果 */
122
+ export interface RecoveryContext {
123
+ /** 当前流水线阶段 */
124
+ phase: PipelinePhase | null;
125
+ /** 当前操作 ID */
126
+ currentOp: string | null;
127
+ /** 当前阶段状态(来自 status.md) */
128
+ stageStatus: string;
129
+ /** 阻塞原因(若有) */
130
+ blockedBy: string;
131
+ /** 待处理任务列表 */
132
+ pendingTasks: string[];
133
+ }
134
+ /** 校验结果 */
135
+ export interface ValidationResult {
136
+ valid: boolean;
137
+ errors: string[];
138
+ warnings: string[];
139
+ }
140
+ /** 修复结果 */
141
+ export interface RepairResult {
142
+ fixed: boolean;
143
+ changes: string[];
144
+ recovered: boolean;
145
+ }
146
+ /** 健康检查单项 */
147
+ export interface HealthCheckItem {
148
+ section: string;
149
+ status: 'pass' | 'warn' | 'fail';
150
+ message: string;
151
+ }
152
+ /** 健康检查结果 */
153
+ export interface HealthCheckResult {
154
+ items: HealthCheckItem[];
155
+ ok: boolean;
156
+ }
157
+ export declare class FlowManager {
158
+ private projectPath;
159
+ private data;
160
+ private filePath;
161
+ /** 从 pipeline.yaml 加载的流水线配置(含后备默认值) */
162
+ private pipelineConfig;
163
+ /** 公共日志写入器(审计链) */
164
+ private publicLogger;
165
+ constructor(projectPath: string);
166
+ /** 加载 flow.json */
167
+ load(): void;
168
+ /** 保存 flow.json(自动更新 meta.updated,序列化时去除 op 中的 id 字段以与键名保持一致) */
169
+ save(): void;
170
+ /** 数据是否已加载 */
171
+ isLoaded(): boolean;
172
+ /** 快照保留上限:超过该数量自动清理最旧的 */
173
+ private static readonly CHECKPOINT_MAX_KEEP;
174
+ /**
175
+ * 保存 flow.json 快照到 .openfeel/checkpoints/
176
+ * 命名格式: {stageId}-{yyyyMMddTHHmmss}-{phase}.json
177
+ * 保留最近 CHECKPOINT_MAX_KEEP 个快照,超出自动清理最旧的。
178
+ * try-catch 包裹:快照失败不阻塞 phase 推进(调用方保证)。
179
+ * @param stageId 阶段 ID(如 v5.3-stage-01)
180
+ * @param phase 推进后的目标 phase(如 exec_running)
181
+ */
182
+ saveCheckpoint(stageId: string, phase: PipelinePhase): void;
183
+ /**
184
+ * 列出 Checkpoint 快照文件名(按时间升序)
185
+ * @param stageId 可选阶段 ID,提供时仅列出该阶段的快照
186
+ * @returns 快照文件名列表,目录不存在或读取失败时返回空数组
187
+ */
188
+ listCheckpoints(stageId?: string): string[];
189
+ /**
190
+ * 从 Checkpoint 快照恢复 flow.json
191
+ * 恢复前将当前 flow.json 备份为 .bak;恢复成功后重新加载数据。
192
+ * @param filename 快照文件名(仅允许纯文件名,防路径穿越)
193
+ * @returns 是否恢复成功
194
+ */
195
+ restoreCheckpoint(filename: string): boolean;
196
+ /** 格式化快照时间戳: yyyyMMddTHHmmssSSS(毫秒级,避免同秒多次推进覆盖快照) */
197
+ private formatCheckpointTimestamp;
198
+ /**
199
+ * 清理超限快照:按文件名(含时间戳)升序,删除最旧的直至不超过 CHECKPOINT_MAX_KEEP
200
+ * @param stageId 阶段 ID,仅清理该阶段的快照
201
+ */
202
+ private cleanupCheckpoints;
203
+ /** 获取原始数据(供测试用) */
204
+ getData(): FlowData | null;
205
+ /** 获取全局宏观状态(MetaPhase:active/paused/done) */
206
+ getPhase(): MetaPhase | null;
207
+ /** 获取当前操作 */
208
+ getCurrent(): {
209
+ stage: string;
210
+ op: string;
211
+ } | null;
212
+ /** 解析 opId(格式 "stage-xx.op-xxx") */
213
+ private parseOpId;
214
+ /** 根据 opId 查找 Op 对象 */
215
+ private getOp;
216
+ /** 获取 op 的执行状态 */
217
+ getOpState(opId: string): OpState | null;
218
+ /** 获取 op 的检查点 */
219
+ getOpCheckpoints(opId: string): Checkpoints | null;
220
+ /**
221
+ * 获取 ready 状态(pending 或 executing)的操作
222
+ * 可选按 stageId 过滤
223
+ */
224
+ getReadyOps(stageId?: string): Op[];
225
+ /** 获取审查条目,可按 opId 过滤 */
226
+ getReviewItems(opId?: string): ReviewItem[];
227
+ /** 获取指定 op 的重试次数 */
228
+ getRetryCount(opId: string): number;
229
+ /** 返回人类可读的流水线摘要(支持 i18n) */
230
+ summary(lang?: string): string;
231
+ /** 获取 PipelineSummary 结构化摘要 */
232
+ getSummary(): PipelineSummary;
233
+ /**
234
+ * 将阶段注册到 flow.json 的 stages 中(若不存在)
235
+ * @param stageName 阶段名(如 stage-01)
236
+ * @param deps 依赖阶段列表(可选)
237
+ */
238
+ registerStage(stageName: string, deps?: string[]): void;
239
+ /**
240
+ * 记录阶段开始时间
241
+ * @param stageId 阶段 ID(如 stage-01)
242
+ */
243
+ startStage(stageId: string): void;
244
+ /**
245
+ * 记录阶段结束时间并计算耗时
246
+ * @param stageId 阶段 ID(如 stage-01)
247
+ */
248
+ endStage(stageId: string): void;
249
+ /**
250
+ * 获取阶段耗时统计
251
+ * @param stageId 阶段 ID(如 stage-01)
252
+ * @returns 阶段耗时数据,不存在时返回 null
253
+ */
254
+ getStageStats(stageId: string): StageStats | null;
255
+ /**
256
+ * 获取所有阶段的耗时统计映射
257
+ */
258
+ getAllStageStats(): Record<string, StageStats>;
259
+ /**
260
+ * 在私域日志目录创建带日期前缀的骨架文件
261
+ * Agent 只需填充内容,无需手动创建文件
262
+ * @param stageId 阶段 ID(如 v4.4-stage-02)
263
+ * @param label 骨架标签(如 exec_running / review_pending / test_pending)
264
+ */
265
+ private createLogSkeleton;
266
+ /** 获取当前用户名(委托给 PublicLogger) */
267
+ private getUsername;
268
+ /** 格式化日期为 yyyy-mm-dd */
269
+ private formatDateStr;
270
+ /** 计算当日已有文件数,返回下一个序号 */
271
+ private computeSkeletonNnn;
272
+ /**
273
+ * 从 flow.json + status.md 恢复上下文
274
+ * 供 Feel 重启后准确恢复状态机位置,无需重新推断
275
+ * @param lang 语言标识(默认 'zh-CN')
276
+ * @returns 恢复上下文对象
277
+ */
278
+ recoverContext(lang?: string): RecoveryContext;
279
+ /**
280
+ * 推进指定阶段到目标流水线阶段(新 API)
281
+ * @param stageName 阶段名(如 stage-01)
282
+ * @param phase 目标流水线阶段(PipelinePhase)
283
+ * @param triggeredBy 触发者标识(如 'cli' / 'Feel'),默认 'flow-manager'
284
+ * @returns 是否触发 done 归档(true = 本次推进将阶段变为 done 且之前非 done,需在 save 后执行归档 commit)
285
+ */
286
+ advanceStagePhase(stageName: string, phase: PipelinePhase, triggeredBy?: string): boolean;
287
+ /**
288
+ * 阶段归档自动 git 提交
289
+ * 目标 phase 为 done 时自动将工作区变更提交,保证归档点有版本记录。
290
+ * 非 git 仓库、git 不可用或无变更时静默跳过,不阻塞 done 推进。
291
+ * 必须在 flow.json save() 之后调用,确保 commit 包含本次 phase 变更。
292
+ * @param stageName 阶段名(用于 commit message)
293
+ */
294
+ autoCommitOnDone(stageName: string): void;
295
+ /**
296
+ * 新增流水线阶段
297
+ * @param stageId 阶段标识符(如 v4.3)
298
+ * @param initialPhase 初始流水线阶段,默认 plan_pending
299
+ */
300
+ addStage(stageId: string, initialPhase?: PipelinePhase): void;
301
+ /**
302
+ * 推进流水线阶段(旧 API)
303
+ * @param opId 操作 ID(格式 "stage-xx.op-xxx")
304
+ * @param to 目标流水线阶段
305
+ * @param stageId 可选阶段 ID,传入时同步更新 flow.json.stages[stageId].status
306
+ * @param force 是否强制执行(非法 phase 时走模糊修正路径)
307
+ * @deprecated 请使用 advanceStagePhase(stageName, phase) 替代。内部保留 op 级逻辑后委托给 advanceStagePhase。
308
+ */
309
+ advancePhase(opId: string | null, to: string, stageId?: string, force?: boolean): void;
310
+ /**
311
+ * 获取从指定 phase 可达的所有目标 phase(支持组合条件 key)
312
+ * 遍历 transitions 表,key 与 fromPhase 匹配(组合 key 如 'test_passed|review_passed' 任一条件匹配即可)即收集其目标。
313
+ * 无 '|' 的简单 key 保持单条件原行为(精确相等)。
314
+ * @param fromPhase 当前源 phase
315
+ * @returns 去重后的可达目标 phase 列表
316
+ */
317
+ private getValidTargets;
318
+ /**
319
+ * 检查当前 phase 到目标 phase 是否存在直接跳转路径
320
+ * 供 CLI --force 判断使用
321
+ * @param stageName 可选阶段名,提供时使用该阶段 phase 进行查找;否则使用 current.stage 的 phase
322
+ */
323
+ hasTransition(to: string, stageName?: string): boolean;
324
+ /**
325
+ * 获取当前阶段的所有可达下一阶段(基于 transitions 表,支持组合条件)
326
+ * 供 flow wizard 交互模式使用
327
+ * @param stageName 可选阶段名,提供时使用该阶段 phase 进行查找;否则使用 current.stage 的 phase
328
+ */
329
+ getAvailablePhases(stageName?: string): PipelinePhase[];
330
+ /**
331
+ * 解析当前阶段 phase:优先使用传入的 stageName,其次 current.stage,最后 fallback
332
+ */
333
+ private resolveCurrentPhase;
334
+ /**
335
+ * 获取流水线阶段的标签映射
336
+ * 从 pipelineConfig.phases 动态生成:已知阶段使用预定义标签,未知阶段自动生成回退标签
337
+ * 供 flow wizard 交互模式使用
338
+ * @param lang 语言标识('zh-CN' | 'en'),默认 'zh-CN'
339
+ */
340
+ getPhaseLabels(lang?: string): Record<string, string>;
341
+ /**
342
+ * verbose 模式摘要(返回结构化数据供命令层排版)
343
+ * 包含:配置级联、最近状态变更、下游 Agent 就绪状态
344
+ * @param maxChanges 最近状态变更条数(默认 5)
345
+ */
346
+ verboseSummary(maxChanges?: number): VerboseSummary;
347
+ /** 构建配置级联信息 */
348
+ private buildCascadeConfig;
349
+ /** 查找 status.md 的路径(先查 stages 目录,再回退 plan 目录) */
350
+ private findStatusPath;
351
+ /** 从 status.md 的状态记录表提取最近 N 条变更 */
352
+ private extractRecentChanges;
353
+ /** 构建下游阶段列表(当前 phase 的可达下一阶段 + Agent 映射) */
354
+ private buildDownstreamPhases;
355
+ /** 将 PipelinePhase 映射为负责 Agent 标识 */
356
+ private mapPhaseToAgent;
357
+ /** 从 PipelinePhase 提取对应的 checkpoint 字段名(从 pipeline.yaml 映射查找) */
358
+ private getCheckpointFromPhase;
359
+ /**
360
+ * 记录一次操作执行结果
361
+ * @returns 包含是否应重试、是否应重新规划的信息
362
+ */
363
+ recordAttempt(opId: string, result: 'pass' | 'fail'): {
364
+ shouldRetry: boolean;
365
+ shouldReplan: boolean;
366
+ };
367
+ /** 添加或更新审查条目 */
368
+ addReview(item: ReviewItem): void;
369
+ /** 将指定审查条目标记为 resolved */
370
+ resolveReview(reviewId: string): boolean;
371
+ /**
372
+ * 添加自动修复审查条目
373
+ * 当 Reviewer 认为问题可直接修复时调用,REV 条目状态直接设为 resolved,
374
+ * pipeline.phase 跳过 review_failed→scheme_pending,直接推进到 exec_running。
375
+ * @param item 审查条目(canAutoFix 自动设为 true)
376
+ * @param opId 关联的操作 ID
377
+ */
378
+ addAutoFixReview(item: ReviewItem, opId: string): void;
379
+ /** 追加操作日志(若 time 为空则自动生成) */
380
+ appendLog(entry: LogEntry): void;
381
+ /**
382
+ * 校验 phase 流转是否合法(从 pipeline.yaml 配置驱动)
383
+ * 使用 opId 对应的 stage.phase 作为当前阶段进行流转校验
384
+ */
385
+ canAdvance(opId: string, to: PipelinePhase): boolean;
386
+ /**
387
+ * 校验 flow.json 格式合法性
388
+ * 检查必填字段是否存在,对非法 phase 值进行模糊匹配自动修正。
389
+ * 可自动修正的问题记录在 warnings 中而不影响 valid 判定。
390
+ */
391
+ validate(): ValidationResult;
392
+ /**
393
+ * 模糊匹配非法 phase 值到最近合法值
394
+ * 优先级: 精确匹配 → phase_corrections 映射 → 前缀匹配 → 包含匹配
395
+ */
396
+ private fuzzyCorrectPhase;
397
+ /**
398
+ * 模糊修正非法 MetaPhase 值
399
+ * 将所有非 MetaPhase 的 pipeline.phase 默认为 'active'
400
+ */
401
+ private fuzzyCorrectMetaPhase;
402
+ /**
403
+ * 自动检测并修复 flow.json 中的常见问题
404
+ * @param dryRun true 时仅检测不修复
405
+ * @returns 修复结果(修改列表 + 是否从 .bak 恢复)
406
+ */
407
+ repair(dryRun?: boolean): RepairResult;
408
+ /**
409
+ * 自动修复指定阶段的 phase/status 不一致
410
+ * - status=done 但 phase≠done → 同步 phase 为 done
411
+ * - phase=done 但 status≠done → 同步 status 为 done
412
+ * @param stageName 阶段名(如 stage-01)
413
+ * @returns 修复结果(是否修复 + 详情)
414
+ */
415
+ autoRepairInconsistency(stageName: string): {
416
+ fixed: boolean;
417
+ detail: string;
418
+ };
419
+ /**
420
+ * 检测是否为旧版格式(全局 PipelinePhase 而非 MetaPhase)
421
+ * 旧版:pipeline.phase 为 PipelinePhase 值(如 "exec_running")
422
+ * 新版:pipeline.phase 为 MetaPhase 值("active"/"paused"/"done")
423
+ */
424
+ needsMigration(): boolean;
425
+ /**
426
+ * 将旧版 flow.json(v4.0:全局 phase)迁移到新版格式(v4.1:阶段级 phase)
427
+ *
428
+ * 迁移逻辑:
429
+ * 1. 旧 pipeline.phase 下沉到 current.stage 对应 stage → stages[stageId].phase = oldPhase
430
+ * 2. 若 pipeline.current.stage 为 "-" 或空,下沉到第一个 stage
431
+ * 3. stages 中已有 phase 的 stage 保持不变(不覆盖)
432
+ * 4. stages 中无 phase 的 stage 默认设为 "done",但 current.stage 对应 stage 除外
433
+ * 5. 全局 pipeline.phase 改为 "active"(若旧 phase 为 "done" 则改为 "done")
434
+ *
435
+ * @param dryRun 仅检测预览,不实际写入
436
+ * @param noBackup 跳过 .bak 备份
437
+ * @returns 迁移结果
438
+ */
439
+ migrate(dryRun?: boolean, noBackup?: boolean): {
440
+ migrated: boolean;
441
+ changes: string[];
442
+ failed: boolean;
443
+ };
444
+ /**
445
+ * 全面健康检查
446
+ * 检查 flow.json、跨文件一致性、僵尸状态、config.yaml、pipeline.yaml、deps.yaml
447
+ * @param quick true 时仅检查关键项(phase/current 合法性)
448
+ */
449
+ healthCheck(quick?: boolean): HealthCheckResult;
450
+ /** 1. 检查 flow.json 合法性 */
451
+ private checkFlowJson;
452
+ /** 2. 检查 flow.json 与 plan/{stage}/status.md 跨文件一致性 */
453
+ private checkCrossFileConsistency;
454
+ /** 3. 僵尸状态检测 */
455
+ private checkZombieStates;
456
+ /** 4. 检查 config.yaml 有效性 */
457
+ private checkConfigYaml;
458
+ /** 5. 检查 pipeline.yaml 合法性 */
459
+ private checkPipelineYaml;
460
+ /** 6. deps.yaml 循环依赖检测(拓扑排序法) */
461
+ private checkDepsYaml;
462
+ /** 从 YAML 解析后的对象中提取依赖图({ node: deps[] }) */
463
+ private buildDepsGraph;
464
+ /** DFS 检测有向图中的环 */
465
+ private detectCycles;
466
+ /** 初始化 flow.json(创建默认模板) */
467
+ static initFlow(projectPath: string): void;
468
+ /**
469
+ * 内嵌数据(仅供测试使用)
470
+ * 直接设置 flow 数据而不从文件加载
471
+ */
472
+ setData(data: FlowData): void;
473
+ /**
474
+ * 从 .openfeel/pipeline.yaml 加载流水线配置
475
+ * 若文件不存在或解析失败,回退到内置默认值
476
+ */
477
+ private loadPipelineConfig;
478
+ /**
479
+ * 获取内置默认流水线配置(等价于硬编码常量 + 3 个 Bug 修复)
480
+ * 当 pipeline.yaml 不存在或解析失败时使用
481
+ */
482
+ private getDefaultPipelineConfig;
483
+ }
484
+ /**
485
+ * 将 PipelinePhase 映射为 stage 状态
486
+ * @param phase 流水线阶段
487
+ * @param currentStatus 当前 stage 状态(用于不做变更的 phase)
488
+ * @param testEnabled 是否启用测试(false 时 review_passed 直接映射为 done)
489
+ * @returns stage 状态字符串
490
+ */
491
+ export declare function mapPhaseToStageStatus(phase: PipelinePhase, currentStatus: string, testEnabled?: boolean): string;
492
+ //# sourceMappingURL=flow-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-manager.d.ts","sourceRoot":"","sources":["../../src/core/flow-manager.ts"],"names":[],"mappings":"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"}