/**
 * AgentConfig.ts — Agent 配置读取器（完整 TypeScript 实现）
 *
 * 统一入口：从 JSON / YAML / Markdown(frontmatter) / Markdown 表格 多种格式
 * 读取并解析 agent 配置。原先是 DigitalHuman 的静态方法，抽出后任何模块
 * （SummarizeTool / AIChatRTC / 独立脚本等）都可加载配置而不依赖 DigitalHuman。
 *
 * @example
 *   import AgentConfig from './AgentConfig';
 *   const cfg = await AgentConfig.fetch('https://example.com/agent.yaml'); // URL（.json/.yml/.yaml/.md）
 *   const cfg2 = AgentConfig.parse('{ "llm_model": "keepwork-flash" }');   // 内联 JSON 字符串
 *   const cfg3 = AgentConfig.normalize({ workspace: 'ws', content: 'You are a helper.' }); // 仅归一化
 */
/** 配置文件格式 */
export type AgentConfigFormat = 'json' | 'yml' | 'md';
/** fileOps 工具配置 */
export interface AgentFileOpsConfig {
    enabled?: boolean;
    workspace?: string;
    mountFolder?: string | Record<string, unknown>;
    [key: string]: unknown;
}
/** 归一化后的 agent 配置对象 */
export interface NormalizedAgentConfig {
    /** 系统提示词（由 .md frontmatter 的 content 转换而来） */
    system_prompt?: string;
    /** 顶层工作区，会传播到 tools.fileOps.workspace */
    workspace?: string;
    /** 挂载文件夹，会传播到 tools.fileOps.mountFolder */
    mountFolder?: string | Record<string, unknown>;
    /** 历史长度（history_length 的 camelCase 别名） */
    historyLength?: number;
    /** 工具配置块 */
    tools?: {
        fileOps?: AgentFileOpsConfig;
        [category: string]: unknown;
    };
    /** Markdown frontmatter 的正文（解析后会转为 system_prompt 并删除） */
    content?: string;
    /** snake_case 历史长度（解析后会转为 historyLength 并删除） */
    history_length?: number;
    [key: string]: unknown;
}
/**
 * 根据 URL 文件扩展名检测配置格式。匹配前会剥离 query / fragment。
 */
declare function detectFormat(url: string): AgentConfigFormat | null;
/**
 * 就地归一化已解析的配置对象：
 * - .md frontmatter 的 `content` → `system_prompt`
 * - 顶层 `workspace`   → `tools.fileOps.workspace`
 * - 顶层 `mountFolder` → `tools.fileOps.mountFolder`
 * - `history_length`   → `historyLength`
 */
declare function normalize(config: NormalizedAgentConfig): NormalizedAgentConfig;
/**
 * 把 Markdown 表格解析为对象或对象数组。
 *
 * 期望管道分隔的表格（含表头行 + 分隔行）：
 *   | key        | value          |
 *   |------------|----------------|
 *   | llm_model  | keepwork-flash |
 *
 * 两列 key/value 表会折叠为一个扁平对象；多列则返回按表头键名的行对象数组。
 */
declare function parseTable(tableText: string): Record<string, unknown> | Array<Record<string, unknown>>;
/**
 * 把配置字符串（JSON / YAML / Markdown frontmatter / Markdown 表格）解析为
 * 归一化配置对象。**不**发起任何网络请求。
 *
 * 检测顺序：
 *   1. JSON（以 `{` 或 `[` 开头）
 *   2. Markdown frontmatter（以 `---` 开头）
 *   3. Markdown 表格（首个非空行以 `|` 开头）
 *   4. 纯 YAML
 *
 * @param text       - 原始配置文本
 * @param formatHint - 来自 URL 扩展名的可选格式提示
 */
declare function parse(text: string, formatHint?: AgentConfigFormat | null): NormalizedAgentConfig;
/**
 * 从 URL / 内联 JSON 字符串 / 对象异步获取并解析 agent 配置。
 *
 * 支持的来源：
 *   - 普通对象 → 归一化后原样返回
 *   - JSON 字符串（以 `{`/`[` 开头）→ JSON.parse
 *   - `.json` URL → fetch + JSON.parse
 *   - `.yml`/`.yaml` URL → fetch + YMLParser
 *   - `.md` URL → fetch + YMLParser frontmatter
 *   - 未知扩展名 URL → 自动检测（JSON → frontmatter → YAML）
 */
declare function fetchConfig(source: string | Record<string, unknown>): Promise<NormalizedAgentConfig>;
/** AgentConfig 模块公开 API */
export interface IAgentConfig {
    detectFormat(url: string): AgentConfigFormat | null;
    normalize(config: NormalizedAgentConfig): NormalizedAgentConfig;
    parse(text: string, formatHint?: AgentConfigFormat | null): NormalizedAgentConfig;
    parseTable(tableText: string): Record<string, unknown> | Array<Record<string, unknown>>;
    fetch(source: string | Record<string, unknown>): Promise<NormalizedAgentConfig>;
}
declare const AgentConfig: IAgentConfig;
export default AgentConfig;
export { detectFormat, normalize, parse, parseTable, fetchConfig };
//# sourceMappingURL=AgentConfig.d.ts.map