/** * SDD 控制器 * * @deprecated 仅 SDD Engine 模式(默认模式)使用。 * Host-Driven 模式下,编排逻辑已迁移到 `execution-sdd-orchestrator/SKILL.md` 技能文件中, * 由宿主 Agent 使用原生 subagent 工具执行 implement→review→fix 循环。 * * 核心协调器,编排整个子代理驱动开发流程: * * 1. 设置:工作区、账本、读取计划 * 2. 对每个任务: * a. 提取任务简报 * b. 分发实现者子代理 * c. 处理报告 * d. 生成审查包 → 分发审查子代理 * e. 修复循环(≤5轮) * f. 记录到账本 * 3. 全分支最终审查 * 4. 清理工作区 * * 关键原则: * - 控制器不自己修复代码(保持上下文干净) * - 所有产物通过文件传递(不占用上下文窗口) * - 信任账本而非自己的记忆 */ import type { SDDConfig } from './types.js'; export interface PlanTask { number: number; title: string; description: string; files: string[]; } export interface SDDResult { success: boolean; completedTasks: number; totalTasks: number; blockedTasks: number; parkedFindings: number; } export declare class SDDController { private config; private ledger; private reviewLoop; private modelSelector; private aiCaller; private inGitRepo; constructor(config: SDDConfig); /** * 初始化 - 设置工作区和账本 * 注意:当前实现为纯同步操作,保留 async 签名以便未来扩展(如远程账本加载) */ initialize(): void; /** * 将任务完成状态回写到 tasks.md * * 读取 tasks.md(config.planFile),将指定任务标记为 status: done。 * 失败时静默记录,不阻塞主流程。 */ private writebackTaskStatus; /** * 执行计划 * * 主循环:逐个任务执行,每个任务经过 实现→审查→修复 循环 */ executePlan(tasks: PlanTask[], projectContext: string): Promise; /** * 执行单个任务 */ private executeTask; /** * 创建任务简报 */ private createBrief; /** * 分发实现者子代理 * * 遵循 Superpowers 原则: * - 全新上下文,不继承主会话历史 * - 通过文件传递任务简报和实现报告 * - 模型选择基于任务复杂度 */ private dispatchImplementer; /** * 分发审查者子代理 * * 两阶段审查门(来自 Superpowers): * 1. 规格合规裁决 * 2. 代码质量裁决 */ private dispatchReviewer; /** * 分发重新审查者子代理(范围限定) * * 仅审查修复 diff,不重新审查整个任务 */ private dispatchReReviewer; /** * 获取 HEAD commit SHA */ private getHeadCommit; /** * 生成审查包文件 * * 使用 git diff 生成 Markdown 格式的审查包, * 审查者子代理读取文件而非接收上下文注入的 diff。 */ private generateReviewPackage; /** * 运行项目测试 — TDD 门控 * * 智能检测并运行项目测试: * 1. 优先使用 package.json 中的 test script(支持 npm/yarn/pnpm) * 2. 自动检测常见测试框架(vitest, jest, mocha, ava, tape, pytest 等) * 3. 如果项目没有测试框架或测试目录,返回 true(不阻塞流程) */ private runTests; /** * 异步执行测试命令(替代同步 execFileSync,避免阻塞事件循环) */ private runTestCommand; } //# sourceMappingURL=controller.d.ts.map