/** * 模板模块 — 工件模板管理 * * 职责: * 1. 加载 Schema 关联的模板文件 * 2. 变量替换({{变量名}}) * 3. 模板组合(多模板合并) * 4. 生成 AI 指令(模板 + 上下文 → prompt) */ export interface TemplateContext { changeId: string; changeTitle: string; projectRoot: string; schemaId: string; timestamp: string; [key: string]: string | string[]; } export interface TemplateResult { content: string; variables: string[]; missingVariables: string[]; } /** * 模板引擎 */ export declare class TemplateEngine { private templateDirs; constructor(templateDirs: string[]); /** * 加载模板 */ loadTemplate(templateName: string): string | null; /** * 渲染模板(变量替换) */ render(templateContent: string, context: TemplateContext): TemplateResult; /** * 加载并渲染模板 */ loadAndRender(templateName: string, context: TemplateContext): TemplateResult | null; /** * 生成结构化指令数据 * 返回可直接用于 JSON 输出的结构化数据,避免正则解析 Markdown */ generateInstructionData(templateName: string, context: TemplateContext, additionalContext?: string, options?: { projectContext?: string; configRules?: string[]; schemaName?: string; artifactInstruction?: string; dependencies?: Record; existingSpecs?: Record; }): { template: string; context: string; rules: string[]; missingVariables: string[]; dependencies: Array<{ id: string; path: string; content: string; }>; existingSpecs: Array<{ name: string; path: string; content: string; requirementNames: string[]; }>; metadata: { changeId: string; changeTitle: string; schemaId: string; projectRoot: string; }; additionalContext?: string; } | null; /** * 生成 AI 指令(Markdown 格式) * 调用 generateInstructionData() 获取结构化数据,然后格式化成 Markdown */ generateInstruction(templateName: string, context: TemplateContext, additionalContext?: string, options?: { projectContext?: string; configRules?: string[]; schemaName?: string; artifactInstruction?: string; dependencies?: Record; existingSpecs?: Record; }): string | null; /** * 从 4 个来源聚合规则: * 1. Schema 级规则文件 (rules.md / constraints.md) * 2. 全局约束文件 (.specpow/constraints.md, CLAUDE.md, AGENTS.md) * 3. config.json 的 rules[artifactId] * 4. artifact instruction 中的内联规则 */ private aggregateRules; /** * 从 Schema 目录下的 rules.md / constraints.md 提取规则 * * 扫描 3 个层级: * 1. {projectRoot}/.specpow/ — 全局规则(config.paths 根目录) * 2. {projectRoot}/.specpow/schemas/{schemaName}/ — Schema 专属规则 * 3. {packageRoot}/.specpow/schemas/{schemaName}/ — 包内置规则(兜底) */ private extractRulesFromSchemaFiles; /** * 从全局约束文件提取规则 * 扫描 {projectRoot}/.specpow/constraints.md、CLAUDE.md、AGENTS.md * 提取包含 "禁止"、"必须"、"应当" 等关键词的行 */ private extractGlobalConstraints; /** * 从 Artifact 的 instruction 文本中提取内联规则 * * 识别模式: * - "规则:" / "Rule:" / "约束:" / "Constraint:" 开头的行 * - 包含约束关键词的列表行(- / * 开头) */ private extractRulesFromInstruction; } /** * 创建默认模板引擎 */ export declare function createTemplateEngine(projectRoot: string, schemaId: string): TemplateEngine; //# sourceMappingURL=index.d.ts.map