/**
 * FileTools.ts — 工作空间文件操作工具（供 CopilotTools 注册为 'read'/'edit'/'search'/'fileOps' 分类）
 *
 * 所有文件操作均在 `sdk.personalPageStore` 的工作空间作用域内执行，
 * 不允许访问主机文件系统。
 *
 * 支持的工具函数：
 * - `read_file`：按行范围读取文件内容（可选 `${...}` 模板展开）
 * - `list_dir`：列出目录内容
 * - `replace_string_in_file`：单次字符串替换
 * - `multi_replace_string_in_file`：批量字符串替换
 * - `create_file`：创建新文件
 * - `grep_search`：文本/正则搜索
 */
/** 工具函数定义（OpenAI Function Calling 格式） */
export interface ToolDefinition {
    type: 'function';
    function: {
        name: string;
        description: string;
        parameters: Record<string, unknown>;
    };
}
/** FileTools 运行时配置 */
export interface FileToolsConfig {
    /** 文件路径前缀（所有路径都会被拼接到此前缀下） */
    pathPrefix?: string;
    /** 工作空间名称（传递给 personalPageStore.withConfig） */
    workspace?: string;
    /** Mounted folder 配置 */
    mountFolder?: unknown;
    /** 关联的 ChatSession（用于 processTemplate 展开） */
    _session?: {
        sandbox?: {
            processTemplate?: (content: string) => Promise<string>;
            _templateSourceFile?: string | null;
        };
    };
    [key: string]: unknown;
}
/** PersonalPageStore 作用域实例的最小接口 */
interface ScopedStore {
    readFile(pageName: string, startLine?: number, endLine?: number): Promise<string | null>;
    replaceStringInFile(pageName: string, oldString: string, newString: string): Promise<string>;
    grepSearch(query: string, isRegexp?: boolean, includePattern?: string, maxResults?: number): Promise<string>;
    createFile(pageName: string, content?: string): Promise<string>;
    listDir(path: string, recursive?: boolean): Promise<string>;
    withConfig(config: Record<string, unknown>): ScopedStore;
}
/** SDK 最小接口 */
interface SDKRef {
    personalPageStore?: ScopedStore;
}
declare class FileTools {
    static readonly readDefinitions: ToolDefinition[];
    static readonly editDefinitions: ToolDefinition[];
    static readonly searchDefinitions: ToolDefinition[];
    /** 所有工具定义的合并（read + edit + search） */
    static get definitions(): ToolDefinition[];
    private sdk;
    private config;
    constructor(sdk: SDKRef);
    /** 更新工具运行时配置（由 CopilotTools.setToolConfig 调用）。 */
    setConfig(config: FileToolsConfig): void;
    /**
     * 执行文件操作工具。
     * 所有路径经 `pathPrefix` 拼接后传入 `personalPageStore`，
     * 不会直接操作主机文件系统。
     *
     * @param name   - 工具名
     * @param args   - 工具参数
     * @param config - 运行时配置（含 workspace / pathPrefix / _session 等）
     */
    execute(name: string, args?: Record<string, unknown>, config?: FileToolsConfig): Promise<string>;
}
export default FileTools;
//# sourceMappingURL=FileTools.d.ts.map