/** 骨架标记 — 用于检测文件是否仍为占位状态 */ export declare const SKELETON_MARKER = ""; /** * v8.3.374: 公共骨架骟判定谓词——多消费点共享,避免各处内联重复判定。 * 判定条件:含 SPEC-SKELETON 标记 或 有效内容不足 minChars 字符(纯标题/空表格)。 * @param minChars 最小有效字数阈值,默认 100 * 适用:REQUIREMENT.md / CLARIFY.md / ANALYSIS.md / TECH.md 等所有 AI 填充文档。 */ export declare function isSkeletonContent(content: string | undefined | null, minChars?: number): boolean; export interface SpecFileEntry { /** 相对 020-specs/ 的路径,如 "overview/ANALYSIS.md" */ relPath: string; /** 分类:overview(全局)或 platform(端专属) */ category: 'overview' | 'platform'; /** 端名(仅 platform 类) */ platform?: string; /** 文件名 */ docName: string; /** 占位内容(含写作指引) */ placeholder: string; } export interface SkeletonResult { /** 新创建的骨架文件 */ created: string[]; /** 已存在(保留原内容) */ skipped: string[]; } export interface ProgressResult { /** 已填充(非骨架) */ filled: string[]; /** 仍为骨架 */ unfilled: string[]; /** 下一个需要生成的 entry */ nextUnfilled: SpecFileEntry | null; /** 已填充数 */ filledCount: number; /** 总数 */ totalCount: number; } /** v8.3.238+: Phase 1 全局 overview/ 全部文档名单(无功能模块老项目的步骤完成检查用) */ export declare const PHASE1_DOC_NAMES: string[]; /** v8.3.238+: 全局 overview/ 索引类骨架名单(骨架预建与步骤完成检查共用) */ export declare const PHASE1_INDEX_DOC_NAMES: string[]; /** v8.3.238+: 功能模块 overview/ 骨架名单(feature 步骤完成检查与 prompt 文档集对齐用) */ export declare const FEATURE_OVERVIEW_DOC_NAMES: string[]; export declare const QUALITY_RUBRICS: Record; /** * 根据文档名获取质量标准文本 * 自动区分 overview 和 platform 文档(TECH.md 后端/前端差异化) */ export declare function buildQualityRubRIC(docName: string, platform?: string): string; /** * 校验已填充文档的内容质量 * 检查:最低字数、必含章节、表格是否有真实数据 */ export declare function validateContentQuality(docName: string, content: string, platform?: string): Promise<{ pass: boolean; score: number; issues: string[]; }>; /** * 计算 analyze 命令的文件清单 * @param platforms 端列表 * @param phase '1' = Phase 1 (overview), '2' = Phase 2 (各端), undefined = 全部 * @param iteration 迭代名(用于占位内容) */ export declare function computeAnalyzeManifest(platforms: string[], phase?: '1' | '2', iteration?: string): SpecFileEntry[]; /** * v8.3.17+: 计算功能模块级 analyze 的文件清单 * 按需求文档名组织一级目录,每个目录下有 overview/ + 各端子目录 * @param features 功能模块(需求文档名)列表 * @param platforms 端列表 * @param phase '1' = Phase 1 (overview), '2' = Phase 2 (各端), undefined = 全部 * @param iteration 迭代名(用于占位内容) * @param featurePlatforms v8.3.278+: 「单元 → 声明端」映射(_matrix.md platforms 字段)。 * 声明非空的单元只生成声明端的骨架;未声明的单元全端兜底。 */ export declare function computeFeatureBasedAnalyzeManifest(features: string[], platforms: string[], phase?: '1' | '2', iteration?: string, featurePlatforms?: Map): SpecFileEntry[]; /** * 计算 split 命令的任务文件清单 * @param taskName 任务名(如 Task-001-xxx) * @param platforms 涉及的端列表 */ export declare function computeTaskManifest(taskName: string, platforms: string[]): SpecFileEntry[]; /** * v8.3.278: 构建「单元 → 声明端」映射。 * 读取 010-requirements/features/{单元}/_matrix.md 的 platforms 字段,与合法端列表交叉验证。 * 声明为空/缺失的单元不写入映射 → 调用方按「全端兜底」处理。 * @param featuresDir 010-requirements/features/ 绝对路径 * @param features 单元目录名列表(parseFeatureList 产物) * @param allPlatforms CONSTITUTION.md 全量端列表(未经 --platform 过滤) */ export declare function resolveFeaturePlatformMap(featuresDir: string, features: string[], allPlatforms: string[]): Promise>; /** * v8.3.278: 清理「未涉及端」的空骨架端目录。 * * 背景:v8.3.277 及以前 analyze 按「单元 × 全部端」笛卡尔积预建骨架, * 不读 _matrix.md 声明。单元只涉及部分端时,未涉及端的空骨架目录残留, * 被 countPlatformSkeletons / detectSkeletonProgress / 质量门禁反复扫到误报。 * * 安全边界:只删除「目录内所有文件均为空骨架(SPEC-SKELETON 或空白)」的端目录; * 存在已填充真实内容的端目录不删除,计入 kept 供调用方警告(防 _matrix.md 声明不完整时误删)。 */ export declare function pruneUninvolvedPlatformSkeletons(specDir: string, features: string[], featurePlatforms: Map): Promise<{ removed: string[]; kept: string[]; }>; /** * 预创建文件骨架 * - 文件不存在 → 创建目录 + 写入占位内容 * - 文件已存在且非骨架 → 跳过(保留已有内容,不覆盖) * - 文件已存在且仍为骨架 → 跳过(等 AI 覆盖) */ export declare function generateSkeleton(specDir: string, entries: SpecFileEntry[]): Promise; /** * 检测哪些骨架文件已被 AI 填充 * - 存在且不含 SKELETON_MARKER → filled * - 不存在或仍含 SKELETON_MARKER → unfilled */ export declare function validateFilled(specDir: string, entries: SpecFileEntry[]): Promise<{ filled: string[]; unfilled: string[]; }>; /** * 检测骨架填充进度,返回下一个需要生成的文件 * 用于逐文档链式推进模式 */ export declare function detectSkeletonProgress(specDir: string, entries: SpecFileEntry[]): Promise; /** * 生成注入 prompt 的骨架文件列表 * 用于告诉 AI 哪些文件需要覆盖 * * v8.3.34+: 支持功能模块分组展示(按需求文档名分目录的新结构) */ export declare function buildSkeletonFileList(entries: SpecFileEntry[], specDir: string): string; //# sourceMappingURL=spec-skeleton.d.ts.map