/** * Pipeline Engine - 通用流水线执行引擎(状态机设计) * * 核心思路: * CLI 是单次运行进程,无法在一次调用中"等待" AI 的 --apply。 * 所以用状态文件追踪当前步骤,每次 CLI 调用执行一步, * --apply 完成后 CLI 自动推进到下一步并输出新 prompt。 * * 状态流转 (analyze 两阶段分析): * init → phase1-prompt → (AI --apply) → phase1-done * → 检测多端 → phase2-prompt → (AI --apply) → done * * AI 侧流程 (v8.3.160+ 步骤隔离模式): * 1. 收到 Phase 1 prompt → 生成全局文档 → --apply * 2. CLI 写入文件 → 自动推进 → 输出 [SPECCORE_STEP_DONE] + [SPECCORE_NEXT_STEP] + Phase 2 prompt * 3. AI 在新会话中执行提示的命令 → 生成各端文档 → --apply * 4. CLI 写入文件 → 标记完成 → Pipeline 结束 * * @since v6.68.0 */ export interface ContextSnapshot { /** 核心约束摘要(从 CONSTITUTION.md 提取) */ keyConstraints: string[]; /** 已完成步骤的产出文件路径 */ completedOutputs: string[]; /** 技术栈摘要 */ techStackSummary?: string; /** 当前任务/迭代 */ currentTask?: string; /** 当前迭代 */ iteration: string; /** 已完成的步骤 ID 列表 */ completedSteps: string[]; /** v8.3.194+: 每个已完成步骤的一句话摘要(步骤ID → 摘要),供新会话恢复「这一步做了什么」 */ stepSummaries?: Record; /** 下一步骤 ID */ nextStep?: string; /** 生成时间 */ generatedAt: string; } export interface PipelineState { /** 当前步骤 */ currentStep: string; /** 所有步骤列表 */ steps: string[]; /** 已完成步骤 */ completedSteps: string[]; /** 迭代名称 */ iteration: string; /** 流水线名称 */ name: string; /** 端列表(analyze 专用) */ platforms?: string[]; /** v8.3.160+: 上下文快照(步骤隔离模式) */ contextSnapshot?: ContextSnapshot; /** 创建时间 */ createdAt: string; /** 最后更新时间 */ updatedAt: string; } export interface StepResult { nextStepId: string | null; nextStepName: string | null; isComplete: boolean; /** v8.3.160+: 是否需要新会话(步骤隔离模式) */ requiresNewSession: boolean; /** v8.3.160+: 上下文快照(供新会话恢复) */ contextSnapshot?: ContextSnapshot; /** v8.3.160+: 推荐的 Subagent */ subagent?: string; /** v8.3.160+: 上下文 Token 预算 */ contextBudget?: number; /** v8.3.160+: 上下文加载类型 */ contextType?: 'full' | 'incremental' | 'platform-only' | 'contract-only'; } export interface PipelineStepDef { /** 步骤 ID */ id: string; /** 步骤显示名 */ name: string; /** 下一步 ID(null = 结束) */ next: string | null; /** 条件判断:返回 true 才执行此步骤,否则跳到 next */ condition?: () => Promise | boolean; /** v8.3.160+: 该步骤使用的 Subagent 名称 */ subagent?: string; /** v8.3.160+: 该步骤的上下文 Token 预算(默认 12000) */ contextBudget?: number; /** v8.3.160+: 该步骤需要加载的上下文类型 */ contextType?: 'full' | 'incremental' | 'platform-only' | 'contract-only'; } export interface PipelineEngineOptions { /** 迭代名称 */ iteration: string; /** 流水线名称 */ name: string; /** 工作区根目录(默认 process.cwd()) */ cwd?: string; } export declare class PipelineEngine { private state; private steps; private iteration; private name; private cwd; private stateFilePath; constructor(options: PipelineEngineOptions); defineSteps(stepDefs: PipelineStepDef[]): void; init(firstStepId: string, extra?: Record): Promise; advance(): Promise; private buildSnapshot; private saveSnapshot; static loadSnapshot(cwd: string, iteration: string): Promise; updateSnapshotConstraints(constraints: string[]): Promise; getCurrentStep(): string | null; getCurrentStepDef(): PipelineStepDef | null; isActive(): Promise; getState(): Promise; static hasActivePipeline(cwd: string, iteration: string): Promise; static loadExistingState(cwd: string, iteration: string): Promise; reset(): Promise; private saveState; private loadState; } export declare function createAnalyzePipeline(iteration: string, cwd?: string, options?: { /** 变更感知:仅分析受影响的端 */ affectedPlatforms?: string[]; /** 关键路径优先:端排序优先级(靠前的优先分析) */ platformOrder?: string[]; /** 是否跳过需求澄清 */ skipClarify?: boolean; /** v8.3.167+: 功能模块列表(用于大项目分批) */ features?: string[]; }): Promise<{ engine: PipelineEngine; steps: PipelineStepDef[]; }>; export declare function createSplitPipeline(iteration: string, cwd?: string): Promise<{ engine: PipelineEngine; steps: PipelineStepDef[]; }>; export declare function createExecutePipeline(iteration: string, task?: string, cwd?: string): Promise<{ engine: PipelineEngine; steps: PipelineStepDef[]; }>; export declare function createGlobalAnalyzePipeline(cwd?: string): Promise<{ engine: PipelineEngine; steps: PipelineStepDef[]; }>; //# sourceMappingURL=pipeline-engine.d.ts.map