feat(provider): 添加独立的 Provider 模块管理模型提供商
实现可扩展的 Provider 系统,支持动态注册自定义提供商: Core 模块 (packages/core/src/provider/): - types.ts: Provider 相关类型定义 - builtin/: 内置提供商 (Anthropic, OpenAI, DeepSeek) - registry.ts: ProviderRegistry 单例类 - config.ts: 配置持久化 (~/.ai-terminal-assistant/providers.json) - utils.ts: 连接测试等工具函数 Server API (packages/server/src/routes/providers.ts): - GET/POST/PUT/DELETE /providers 提供商管理 - POST /providers/:id/test 连接测试 - 自定义模型管理接口 Frontend (packages/ui/): - ProvidersPanel 组件用于管理提供商 - API client 函数和类型定义 主要功能: - 支持动态注册 OpenAI 兼容服务 (Ollama, vLLM 等) - 每个提供商独立的 API Key 配置 - 预设模型列表 + 自定义模型输入 - 连接测试验证
This commit is contained in:
@@ -35,10 +35,12 @@ vi.mock('../../../src/agent/permission-merger.js', () => ({
|
||||
checkBashPermission: (...args: unknown[]) => mockCheckBashPermission(...args),
|
||||
}));
|
||||
|
||||
// Mock providers
|
||||
// Mock provider registry
|
||||
const mockGetModelFactory = vi.fn();
|
||||
vi.mock('../../../src/core/providers.js', () => ({
|
||||
getModelFactory: (...args: unknown[]) => mockGetModelFactory(...args),
|
||||
vi.mock('../../../src/provider/index.js', () => ({
|
||||
getProviderRegistry: () => ({
|
||||
getModelFactory: (...args: unknown[]) => mockGetModelFactory(...args),
|
||||
}),
|
||||
}));
|
||||
|
||||
import { AgentExecutor } from '../../../src/agent/executor.js';
|
||||
|
||||
@@ -116,7 +116,7 @@ describe('AgentExecutor - Agent 执行器', () => {
|
||||
|
||||
it('不支持的 provider 抛出错误', () => {
|
||||
const config = { ...mockBaseConfig, provider: 'unknown' as any };
|
||||
expect(() => new AgentExecutor(mockAgentInfo, config, mockToolRegistry)).toThrow('不支持的 provider');
|
||||
expect(() => new AgentExecutor(mockAgentInfo, config, mockToolRegistry)).toThrow('Provider not found: unknown');
|
||||
});
|
||||
|
||||
it('使用 Agent 指定的 provider', () => {
|
||||
|
||||
Reference in New Issue
Block a user