/**
 * SummarizeTool.ts — 对话历史摘要工具（TypeScript 完整实现）
 *
 * 提供两个类：
 * - SummarizeTool：CopilotTools 工具执行类（summarize_conversation / get_history_messages）
 * - SummarizeAgent：专用摘要 agent 管理类，含静默计时器和自动触发阈值检查
 */
/** OpenAI Function Calling 工具定义 */
export interface ToolDefinition {
    type: 'function';
    function: {
        name: string;
        description: string;
        parameters: Record<string, unknown>;
    };
}
/** 聊天消息（支持 ChatSession messages 和 RTCChatSession _history 两种来源） */
export interface SummarizeChatMessage {
    role: string;
    content?: unknown;
    text?: string;
    tool_calls?: Array<{
        id?: string;
        function?: {
            name?: string;
            arguments?: string;
        };
    }>;
    tool_call_id?: string;
    _contextOnly?: boolean;
    _ts?: number;
}
/** filterSessionMessages 的过滤条件 */
export interface MessageFilters {
    role?: string;
    keyword?: string;
    excludeSystem?: boolean;
    excludeToolCalls?: boolean;
}
/** summarize() 返回值 */
export interface SummarizeResult {
    summary: string;
    removedCount: number;
    remainingCount: number;
    status?: 'pending' | 'merged';
    mode?: string;
    summarizeBeginTime?: number;
}
/** summarize() 调用选项 */
export interface SummarizeOptions {
    keepRecentRounds?: number;
    prompt?: string;
    model?: string;
    enableTools?: string[];
    mode?: 'replace' | 'append';
    async?: boolean;
}
/** ChatSession / RTCChatSession 最小接口（避免循环引用） */
export interface SummarizeSessionRef {
    messages?: SummarizeChatMessage[];
    _history?: Array<{
        role: string;
        text?: string;
        content?: string;
        roundId?: unknown;
    }>;
    sdk?: {
        aiChat?: unknown;
        copilotTools?: {
            resolveEnabledCategories?: (t: Record<string, unknown>) => string[];
        };
    };
    aiChat?: {
        sdk?: unknown;
    };
    model?: string;
    workspace?: string;
    mountFolder?: unknown;
    sandbox?: {
        processTemplate?: (s: string) => Promise<string>;
        registerAPI?: (name: string, fn: (...args: unknown[]) => Promise<unknown>) => void;
    };
    _isSummarizing?: boolean;
    _pendingChildResults?: Array<unknown>;
    skipHistory?: boolean;
    chatId?: string;
    modId?: string;
    historyId?: string;
    [key: string]: unknown;
}
/** SummarizeAgent 构造参数 */
export interface SummarizeAgentParams {
    session: SummarizeSessionRef;
    sdk: unknown;
    getOptions: (opts?: Record<string, unknown>) => SummarizeAgentOptions;
    getRtcSession?: () => SummarizeSessionRef | null;
    onEvent?: (eventName: string, data: unknown) => void;
}
/** SummarizeAgent.getOptions 返回值 */
export interface SummarizeAgentOptions {
    enabled?: boolean;
    keepRecentRounds?: number;
    maxRounds?: number;
    maxTextLength?: number;
    silentTickInterval?: number;
    mode?: 'replace' | 'append';
    model?: string;
    enableTools?: string[];
    prompt?: string;
    async?: boolean;
}
/**
 * SummarizeTool — 对话摘要工具（供 CopilotTools 注册为 'summarize' 分类）。
 *
 * 向 LLM 暴露三个工具：
 * - `summarize_conversation`：压缩会话历史（replace / append 两种模式）
 * - `get_history_messages`：获取最近 N 条消息（支持角色/关键词过滤）
 * - `get_history_messages_count`：获取消息数量
 */
declare class SummarizeTool {
    static readonly definitions: ToolDefinition[];
    config: Record<string, unknown>;
    constructor();
    /** 更新运行时配置（由 CopilotTools.setToolConfig 调用）。 */
    setConfig(config: Record<string, unknown>): void;
    /**
     * 执行摘要分类工具（CopilotTools 分发入口）。
     * @param name   - 工具名
     * @param args   - 工具参数
     * @param config - 运行时配置（含 `_session`）
     */
    execute(name: string, args: Record<string, unknown>, config?: Record<string, unknown>): Promise<string>;
    /**
     * 过滤会话消息。
     * 同时支持 ChatSession（messages 数组）和 RTCChatSession（_history 数组）。
     *
     * @param session - 会话对象
     * @param filters - 可选过滤条件（role / keyword / excludeSystem / excludeToolCalls）
     */
    filterSessionMessages(session: SummarizeSessionRef, filters?: MessageFilters | null): SummarizeChatMessage[];
    /**
     * 执行 get_history_messages 工具。
     * 返回 JSON 序列化的消息数组（默认过滤 system 和纯工具调用消息）。
     */
    executeGetHistoryMessages(args: Record<string, unknown>, config?: Record<string, unknown>): string;
    /**
     * 执行 get_history_messages_count 工具。
     * 返回 `{ count: number, total: number }` 的 JSON 字符串。
     */
    executeGetHistoryMessagesCount(args: Record<string, unknown>, config?: Record<string, unknown>): string;
    /**
     * 执行 summarize_conversation 工具（CopilotTools 分发入口）。
     * 通过 SummarizeAgent 创建临时摘要会话，支持 replace / append / async 三种模式。
     */
    executeSummarize(args: Record<string, unknown>, config?: Record<string, unknown>): Promise<string>;
    /**
     * 对指定会话的对话历史进行摘要压缩。
     *
     * 创建一个临时 SummarizeAgent，其系统 prompt 通过
     * `${await copilot.get_history_messages()}` 注入完整对话历史。
     *
     * @param session - 要摘要的会话（ChatSession 或 RTCChatSession）
     * @param options - 摘要选项（保留轮数 / 自定义 prompt / 模型 / 模式 / 异步等）
     */
    summarize(session: SummarizeSessionRef, options?: SummarizeOptions): Promise<SummarizeResult>;
    /** @private 后台异步执行摘要，结果推入 _pendingChildResults。 */
    private _runAsyncSummarize;
    /** 从会话获取 AIChat 实例（兼容 ChatSession 和 RTCChatSession）。 */
    static getAIChat(session: SummarizeSessionRef): unknown;
    /**
     * 获取规范化的消息数组（统一 ChatSession 和 RTCChatSession 格式）。
     * RTCChatSession 的 _history `{ role, text }` 条目转换为 `{ role, content }`。
     */
    static getMessages(session: SummarizeSessionRef): SummarizeChatMessage[];
    /** 检查会话是否为基于 messages 数组的 ChatSession（可直接修改）。 */
    static isMessageBased(session: SummarizeSessionRef): boolean;
    /**
     * 将消息数组序列化为人类可读的文本块（供摘要 LLM 消费）。
     * 工具结果和纯工具调用消息做特殊格式化。
     */
    static serializeMessages(messages: SummarizeChatMessage[]): string;
}
/**
 * SummarizeAgent — 专用摘要 agent 管理类。
 *
 * 管理一个独立的 agent ChatSession，提供：
 * - 静默计时器（silentTickInterval）：闲置一段时间后自动触发摘要
 * - 自动触发阈值检查（maxRounds / maxTextLength）：超过阈值时触发
 * - CopilotTools executor 覆盖：使摘要工具使用 agent 而非内置 SummarizeTool
 * - RTC 历史同步（syncHistoryToRTC）
 *
 * 通常由 DigitalHuman 创建：
 * ```ts
 * const agent = new SummarizeAgent({ session, sdk, getOptions: () => opts });
 * await agent.loadConfig(config);
 * agent.startTimer();
 * ```
 */
declare class SummarizeAgent {
    readonly session: SummarizeSessionRef;
    readonly sdk: unknown;
    private _getOptions;
    private _getRtcSession;
    private _onEvent;
    private _tool;
    private _config;
    private _agentSession;
    private _running;
    private _timer;
    private _lastActivity;
    private _tickSummarizing;
    private _autoTriggerSignature;
    private _pendingAutoCheck;
    private _checkAndTriggerRunning;
    constructor({ session, sdk, getOptions, getRtcSession, onEvent }: SummarizeAgentParams);
    /** 当前已加载的 agent 配置（未加载时为 null）。 */
    get config(): Record<string, unknown> | null;
    /**
     * 加载 agent 配置，创建专用摘要 ChatSession。
     *
     * @param config - 解析后的 agent 配置（model / system_prompt / tools 等）
     * @param opts   - skipCopilotToolsOverride：true 时跳过 CopilotTools executor 覆盖
     */
    loadConfig(config: Record<string, unknown>, { skipCopilotToolsOverride }?: {
        skipCopilotToolsOverride?: boolean | undefined;
    }): Promise<Record<string, unknown>>;
    /**
     * 启动静默计时器（间隔由 getOptions().silentTickInterval 控制，单位秒）。
     * 若已存在计时器则先停止再重新启动。
     */
    startTimer(): void;
    /** 停止静默计时器。 */
    stopTimer(): void;
    /** 记录当前时刻为最近活动时间（重置闲置计时）。 */
    resetActivity(): void;
    /**
     * 检查是否超过自动摘要阈值并触发摘要。
     * 优先通过已加载的 agent 会话执行，否则回退到内置 SummarizeTool。
     *
     * @param options - 可选的运行时选项覆盖
     */
    checkAndTrigger(options?: Record<string, unknown>): Promise<void>;
    /**
     * 运行一次专用 agent 摘要。
     * 若 agent 会话不存在或尚未加载配置则立即返回空结果。
     *
     * @param options - 可选覆盖（mode / keepRecentRounds）
     */
    run(options?: {
        mode?: string;
        keepRecentRounds?: number;
    }): Promise<SummarizeResult>;
    /** 将 ChatSession messages 同步回 RTCChatSession 的 _history。 */
    syncHistoryToRTC(): void;
    /** 完全销毁 agent：停止计时器，清除所有状态。 */
    destroy(): void;
    /** @private 采集当前会话对话指标（用于自动触发阈值判断）。 */
    private _collectConversationMetrics;
    /** @private 生成触发签名（轮次桶 + 文本长度桶，用于去重判断）。 */
    private _getAutoTriggerSignature;
    /** @private 排队一次待处理的自动摘要检查（当前正在运行时使用）。 */
    private _queuePendingAutoCheck;
    /** @private 当前运行结束后处理排队的自动触发检查。 */
    private _drainPendingAutoCheck;
    /** @private 定时器 tick 处理器（闲置超时后触发摘要）。 */
    private _onTick;
    /** @private 创建专用摘要 agent ChatSession（共享父会话的 sandbox）。 */
    private _createAgentSession;
    /** @private 覆盖 CopilotTools 的 summarize 分类 executor，使其通过 agent 执行。 */
    private _overrideCopilotToolsExecutor;
    /**
     * @private 在 sandbox 上注册 get_history_messages / get_history_messages_count 自定义 API，
     * 使其可在 `${await copilot.get_history_messages()}` 模板表达式中调用。
     */
    private _registerHistoryAPIsOnSandbox;
}
export { SummarizeTool, SummarizeAgent };
export default SummarizeTool;
//# sourceMappingURL=SummarizeTool.d.ts.map