/** * Loader — 知识配置层模块。 * * 职责边界: * - 负责:ConfigValidationError 等 知识配置层职责 * - 不负责:不属于本模块的职责由对应模块承担 * * 被谁调用:上层模块按需调用 * 调用谁:promises、node:os、node:path、node:url、yaml、zod * * 数据流:输入 → ConfigValidationError 处理 → 输出 * 持久化:读写本地文件(详见代码内路径) */ import type { ProjectConfig, ResolvedConfig } from "../../types/index.js"; /** * 配置验证错误条目。 */ export interface ConfigValidationError { /** 错误字段路径(如 "tech_stack.backend.lang") */ path: string; /** 错误描述信息 */ message: string; } /** * 验证原始配置数据。 * @description 使用 Zod Schema 进行严格校验。支持旧格式(project.name 嵌套)的兼容处理。 * 校验失败时返回部分解析结果(用默认值填充缺失字段)以及错误列表。 * @param raw - 原始配置数据(通常为 YAML 解析后的对象) * @returns 包含验证后的配置对象和错误列表的结果 */ export declare function validateConfig(raw: unknown): { config: ProjectConfig; errors: ConfigValidationError[]; }; /** * 加载项目配置文件。 * @description 从 .soloforge/config.yaml 读取 YAML 配置,执行校验。 * 若未显式设置 product_profile,会根据 product_mapping 和项目路径自动检测。 * 配置文件不存在或解析失败时,使用默认空配置并输出警告。 * @param projectPath - 项目根目录路径 * @returns 加载并校验后的项目配置对象 */ export declare function loadProjectConfig(projectPath: string): Promise; /** * 解析项目配置 — 三层合并(探测 > intent > 约定 > 默认)。 * * 双轨读取逻辑: * 1. intent.yaml 存在 → 使用新 resolveConfig() → source "config_file" * 2. 无 intent.yaml 但有 config.yaml → 自动迁移 → resolveConfig() → source "config_file" * 3. 两者都不存在 → 纯探测推断 → source "inferred" * * 返回值保持 { config: ProjectConfig, source } shape,确保所有下游消费者兼容。 */ export declare function resolveProjectConfig(projectPath: string, options?: { quiet?: boolean; }): Promise; /** * 获取项目知识目录路径。 * @description 返回 {projectPath}/.soloforge/knowledge 目录的绝对路径。 * @param config - 项目配置对象 * @returns 项目知识目录的绝对路径 */ export declare function getProjectKnowledgeDir(config: ProjectConfig): string; /** * 获取全局模式目录路径。 * @description 返回 ~/.soloforge/patterns 目录路径,存放跨项目共享的知识模式。 * @returns 全局模式目录的绝对路径 */ export declare function getGlobalPatternsDir(): string; /** * 获取 SoloForge 内置知识模板根目录。 * @description 返回 SoloForge 安装目录下 templates/ 的绝对路径。 * 内置知识资产直接从此目录读取(domain/procedures/patterns 等子目录),不再复制到项目目录。 * @returns 内置知识模板根目录的绝对路径 */ export declare function getBuiltinKnowledgeDir(): string; /** * 获取 SoloForge 内置 skills 根目录。 * @description 返回 SoloForge 安装目录下 skills/ 的绝对路径(与 templates/ 同级,包根)。 * writeSkills 从此目录复制 skill 到用户全局 ~/.claude/skills/。 * @returns 内置 skills 根目录的绝对路径 */ export declare function getBuiltinSkillsDir(): string;