/**
 * AgentTool.ts — Agent 任务派发与管理工具（TypeScript 版）
 *
 * 向 LLM 暴露三个工具函数：
 * - `runAsyncAgentTask`：将任务委托给命名子 agent 异步执行
 * - `getParentAgentContext`：获取父 agent 会话的上下文
 * - `restartAgent`：重启当前 agent 会话（可指定新配置文件）
 * - `getAgentConfig`：读取 agent 的配置字段
 *
 * 依赖：AgentRouter（跨 iframe 路由）、ChildSessionMixin（本地子 agent）
 * 实现细节见 AgentTool.js，此文件提供类型声明和 TS 入口。
 */
/** 工具函数定义（OpenAI Function Calling 格式） */
export interface ToolDefinition {
    type: 'function';
    function: {
        name: string;
        description: string;
        parameters: Record<string, unknown>;
    };
}
/** AgentTool 运行时配置 */
export interface AgentToolConfig {
    /** 关联的 ChatSession */
    _session?: AgentSession;
    [key: string]: unknown;
}
/** ChatSession 最小接口（避免循环引用） */
export interface AgentSession {
    name?: string;
    workspace?: string;
    model?: string;
    sandbox?: {
        processTemplate?: (v: string) => Promise<string>;
        _activePromptFile?: string | null;
        _templateSourceFile?: string | null;
    };
    messages?: Array<{
        role: string;
        content: string;
    }>;
    customTools?: unknown[];
    options?: Record<string, unknown>;
    _digitalHuman?: Record<string, unknown>;
    _digitalHumanFrame?: Record<string, unknown>;
    _pendingChildResults?: Array<unknown>;
    _restartSignal?: {
        promptFile?: string;
        tools?: string[];
        options?: Record<string, unknown>;
        isRestartAgentSignal?: boolean;
        timestamp?: number;
    } | null;
    _characterConfig?: Record<string, unknown>;
    _isSummarizing?: boolean;
    enqueueChildTask?: (name: string, task: string, tools: unknown, maxIter: number, sysPrompt: unknown, opts: unknown) => void;
    getParentContext?: (count: number) => unknown;
    restartAgent?: (promptFile: unknown, tools: string[], options: unknown) => Promise<{
        configSource?: string;
    }>;
    _handleChildCallback?: (mode: string, seconds: number) => void;
    _emitChildStream?: (event: unknown) => void;
    send?: (task: string, opts: Record<string, unknown>) => Promise<unknown>;
    clear?: () => void;
}
/** SDK 最小接口 */
interface SDKRef {
    agentRouter?: {
        hasRemoteAgent: (name: string) => boolean;
        submitTask: (name: string, payload: unknown, callbacks: unknown) => Promise<unknown>;
    };
    aiChat?: {
        createSession: (opts: unknown) => AgentSession;
    };
}
declare class AgentTool {
    static readonly definitions: ToolDefinition[];
    private sdk;
    private config;
    constructor(sdk: SDKRef);
    /** 更新工具运行时配置（由 CopilotTools.setToolConfig 调用）。 */
    setConfig(config: AgentToolConfig): void;
    /**
     * 执行 agent 工具操作。
     * 核心逻辑（模板展开、路由选择、子 session 创建等）完整实现在此文件中。
     *
     * @param name   - 工具名
     * @param args   - 工具参数
     * @param config - 运行时配置（含 _session）
     */
    execute(name: string, args?: Record<string, unknown>, config?: AgentToolConfig): Promise<string>;
    private currentAgentName;
    private summarizeDebugValue;
    /**
     * 通过 session.sandbox.processTemplate 展开 ${...} 表达式。
     * 若无 sandbox 或无 ${...} 则原样返回。
     */
    private expandTemplate;
    /**
     * 在 DigitalHuman / DigitalHumanFrame 路径下创建子 ChatSession 并执行任务。
     * 结果通过 dh.sendMessage / dhf.sendMessage 发回给主会话。
     * 立即返回确认字符串（fire-and-forget）。
     * @private
     */
    private _runChildForDigitalHuman;
    private _resolveCharacterConfig;
    private _getNestedValue;
}
export default AgentTool;
//# sourceMappingURL=AgentTool.d.ts.map