import { type ProviderSupport, type ProviderSupportEntry, type ProviderSupportModel, type ModelSupportType } from "./provider-support-default.js"; export type { ProviderSupport, ProviderSupportEntry, ProviderSupportModel, ModelSupportType }; /** 知识库 RAG 配置(config.json.rag) */ export interface RagConfig { /** 向量模型来源:local=本地 GGUF,online=在线 OpenAPI */ embeddingSource?: "local" | "online"; /** 在线时:从已配置模型中选的 embedding 项,对应 modelItemCode */ embeddingModelItemCode?: string; /** 本地时:GGUF 模型路径;优先用 node-llama-cpp */ localModelPath?: string; /** 兼容旧配置:在线时的 provider+model */ embeddingProvider?: string; embeddingModel?: string; /** 向量库类型:local=本地 Vectra,qdrant=远程 Qdrant */ vectorStore?: "local" | "qdrant"; /** 远程 Qdrant 配置 */ qdrant?: { url: string; apiKey?: string; collection?: string; }; } /** RAG 长记忆:使用远端 embedding 模型;未配置时基于 RAG 的长记忆空转 */ export interface RagEmbeddingConfig { provider: string; modelId: string; apiKey?: string; baseUrl?: string; } /** 通道配置:各 IM 通道的 token、key 等,与设置页「通道配置」一致 */ export interface ChannelsConfig { feishu?: { enabled?: boolean; appId?: string; appSecret?: string; defaultAgentId?: string; }; dingtalk?: { enabled?: boolean; clientId?: string; clientSecret?: string; defaultAgentId?: string; }; telegram?: { enabled?: boolean; botToken?: string; defaultAgentId?: string; }; wechat?: { enabled?: boolean; puppet?: string; defaultAgentId?: string; }; } /** MCP 服务器配置(与 core/mcp 类型一致,避免 core/config 依赖 core/mcp 实现) */ export type DesktopMcpServerConfig = import("../mcp/index.js").McpServerConfig; /** MCP 标准 JSON 格式(key 为服务器名称),存储与 UI 可读写 */ export type DesktopMcpServersStandardFormat = import("../mcp/index.js").McpServersStandardFormat; /** Agent 执行器类型:local=本机 pi-coding-agent,coze/openclawx/opencode=远程代理,claude_code=本机 Claude Code CLI */ export type AgentRunnerType = "local" | "coze" | "openclawx" | "opencode" | "claude_code"; /** Coze 站点:国内站 api.coze.cn / 国际站 api.coze.com,凭证不通用 */ export type CozeRegion = "cn" | "com"; /** 某站点的 Bot 凭证(国内/国际各自独立) */ export interface CozeRegionCredentials { botId: string; apiKey: string; } /** Coze 代理配置(agents.json):按站点分别存凭证,请求时用当前 region 对应的一套 */ export interface AgentCozeConfig { /** 当前使用的站点,未填默认 com */ region?: CozeRegion; /** 国内站 (api.coze.cn) 凭证 */ cn?: CozeRegionCredentials; /** 国际站 (api.coze.com) 凭证 */ com?: CozeRegionCredentials; /** 可选:自定义 API 地址,覆盖当前站点的默认地址 */ endpoint?: string; } /** 解析后的 Coze 配置(供适配器使用):当前站点的 botId/apiKey + region/endpoint */ export interface CozeResolvedConfig { botId: string; apiKey: string; region?: CozeRegion; endpoint?: string; } /** OpenBot 代理配置(代理到另一台 OpenBot 实例) */ export interface AgentOpenClawXConfig { baseUrl: string; apiKey?: string; } /** OpenCode 启动模式:local=由本应用按需启动本机服务;remote=连接已运行的远端服务 */ export type OpenCodeServerMode = "local" | "remote"; /** Claude Code CLI 代理配置(当 runnerType 为 claude_code 时使用) */ export interface AgentClaudeCodeConfig { /** 工作目录:Claude Code CLI 执行时的 cwd;留空则使用该智能体工作区路径 */ workingDirectory?: string; } /** OpenCode 代理配置:仅对接 [OpenCode 官方 Server API](https://opencode.ai/docs/server)(Session/Message + HTTP Basic) */ export interface AgentOpenCodeConfig { /** 启动模式:local=本应用控制启动并可选设置默认模型;remote=连接已有服务 */ mode?: OpenCodeServerMode; /** 地址(仅 remote 必填;local 时固定为 127.0.0.1) */ address?: string; /** 端口(opencode serve 默认 4096) */ port: number; /** HTTP Basic 认证密码(见 OPENCODE_SERVER_PASSWORD) */ password?: string; /** HTTP Basic 认证用户名(默认 opencode) */ username?: string; /** @deprecated 仅保留向后兼容,产品仅支持官方 Server API */ apiStyle?: "server" | "openai"; /** @deprecated 仅保留向后兼容 */ path?: string; /** @deprecated 仅保留向后兼容 */ streamPath?: string; /** * 默认模型:local 时由本应用启动服务时写入 OpenCode 配置;remote 时作为请求 model 发送。 * 不填则 local 使用本机已有 OpenCode 配置、remote 使用服务端默认。 */ model?: string; /** 工作目录(仅 local 模式生效):启动 opencode serve 时使用的 cwd,留空则使用进程当前目录 */ workingDirectory?: string; } /** * 同步读取桌面全局配置中的 maxAgentSessions 等。 * Gateway 进程内使用,用于会话上限等。 */ export declare function getDesktopConfig(): { maxAgentSessions: number; }; /** 同步读取通道配置(Gateway 启动时用) */ export declare function getChannelsConfigSync(): ChannelsConfig; /** 同步读取 RAG embedding 配置;embeddingSource 为 local 或未配置在线模型时返回 null,长记忆将空转 */ export declare function getRagEmbeddingConfigSync(): RagEmbeddingConfig | null; /** 同步读取 RAG 本地 GGUF 模型路径;embeddingSource 非 local 或未填时返回 null,调用方使用默认模型(如 embeddinggemma)。 */ export declare function getRagLocalModelPathSync(): string | null; /** 同步读取 RAG 向量库配置;vectorStore 为 qdrant 且 url 有效时返回,否则为 null(使用本地向量库)。 */ export declare function getRagQdrantConfigSync(): { url: string; apiKey?: string; collection?: string; } | null; export interface DesktopAgentConfig { provider: string; model: string; apiKey?: string; /** 工作区名,来自 agents.json 的 agent.workspace 或 agent.id */ workspace?: string; /** MCP 服务器配置(数组或标准对象格式),创建 Session 时传入并归一化 */ mcpServers?: DesktopMcpServerConfig[] | DesktopMcpServersStandardFormat; /** MCP 单次返回最大 token;超过则从尾部裁剪;不配置则不限制 */ mcpMaxResultTokens?: number; /** 自定义系统提示词,会与技能等一起组成最终 systemPrompt */ systemPrompt?: string; /** 执行器类型,缺省 local */ runnerType?: AgentRunnerType; /** Coze 代理配置(解析后:当前站点的凭证) */ coze?: CozeResolvedConfig; /** OpenBot 代理配置 */ openclawx?: AgentOpenClawXConfig; /** OpenCode 代理配置 */ opencode?: AgentOpenCodeConfig; /** Claude Code CLI 代理配置 */ claudeCode?: AgentClaudeCodeConfig; /** 是否使用经验(长记忆);默认 true */ useLongMemory?: boolean; /** 在线搜索:解析后的运行时配置,仅当 runnerType 为 local 时用于注册 web_search 工具 */ webSearch?: { enabled: boolean; provider: "brave" | "duck-duck-scrape"; apiKey?: string; timeoutSeconds: number; cacheTtlMinutes: number; maxResults: number; /** 单次搜索返回最大 token;超过则从尾部裁剪;不配置则不限制 */ maxResultTokens?: number; }; /** 本地模型上下文长度(token 数),仅 runnerType 为 local 时用于启动本地 LLM;默认 32768 */ contextSize?: number; } /** * 从 config.json 读取缺省智能体 id(defaultAgentId)。 * 若未配置、或该 id 在 agents.json 中不存在,则返回 default。 */ export declare function getBoundAgentIdForCli(): Promise; /** * 根据 agentId 从桌面配置中读取该 agent 的 provider、model 及 API Key。 * 若文件不存在或解析失败返回 null,调用方使用环境变量或默认值。 */ export declare function loadDesktopAgentConfig(agentId: string): Promise; /** 供 CLI config list 使用:从桌面 config 读出的配置列表项 */ export interface DesktopConfigListEntry { provider: string; defaultModel: string; hasKey: boolean; } /** 供 CLI config list 使用:桌面配置列表(中心化配置源) */ export interface DesktopConfigList { defaultProvider: string; defaultModel: string; defaultModelItemCode?: string; providers: DesktopConfigListEntry[]; } /** * 将某 provider 的 API Key 写入桌面 config(中心化配置源)。 * openbot login 使用:缺省 alias 与 provider 同名;若有 baseUrl 则一并写入。 * 若传入 modelId 或未传则取该 provider 第一个模型,会补齐 defaultProvider/defaultModel、configuredModels、agents 默认智能体,后续可直接运行。 */ export declare function setProviderApiKey(provider: string, apiKey: string, modelId?: string): Promise; /** * 将全局默认 provider/model 写入桌面 config,并在 configuredModels 中增加/更新对应项,agents.json 中缺省智能体写入 modelItemCode。 * openbot config set-model 使用此方法。 */ export declare function setDefaultModel(provider: string, modelId: string): Promise; /** * 供 CLI config list 使用,从桌面 config 读出配置列表。 */ export declare function getDesktopConfigList(): Promise; /** * 确保桌面目录下存在 provider-support.json(不存在则写入默认内容)。 * 供配置供应商时作备选下拉列表项。 */ /** * 确保桌面目录下存在 provider-support.json,并与预装的最新供应商列表合并。 */ export declare function ensureProviderSupportFile(): Promise; /** * CLI / Gateway 运行时调用,确保 config.json、provider-support.json、agents.json 均完成初始化, * 并同步到 agent 目录 models.json,供 pi ModelRegistry 解析 local 等模型与凭证。 */ export declare function ensureDesktopConfigInitialized(): Promise; /** * 取某 provider 在 provider-support 中的第一个 llm 模型 id;若无则返回第一个模型 id。 */ export declare function getFirstModelForProvider(provider: string): Promise; /** * 读取桌面 provider-support.json(流行 provider 及模型目录)。 * 若文件不存在则先写入默认内容再返回;若存在则与默认合并,补全默认中已有而文件中缺失的 provider(如新增的 openai-custom)。 */ export declare function getProviderSupport(): Promise; /** * 根据桌面 config(已配置的 providers + configuredModels)与 provider-support,生成并写入 agent 目录的 models.json。 * 包含:config.providers 中已配置的 provider;以及 configuredModels / defaultProvider 中引用但未在 providers 中的 provider(用 support 默认 baseUrl 补全,避免 Ollama 等仅选模型未填 baseUrl 时连不上)。 */ export declare function syncDesktopConfigToModelsJson(): Promise;