diff --git a/packages/core/src/provider/builtin/anthropic.ts b/packages/core/src/provider/builtin/anthropic.ts index 745e575..2c79911 100644 --- a/packages/core/src/provider/builtin/anthropic.ts +++ b/packages/core/src/provider/builtin/anthropic.ts @@ -10,7 +10,6 @@ export const anthropicProvider: ProviderInfo = { name: 'Anthropic', description: 'Claude AI models by Anthropic', builtin: true, - apiKeyEnvVar: 'ANTHROPIC_API_KEY', models: [ { id: 'claude-sonnet-4-20250514', diff --git a/packages/core/src/provider/builtin/deepseek.ts b/packages/core/src/provider/builtin/deepseek.ts index 5d52b77..015f1e7 100644 --- a/packages/core/src/provider/builtin/deepseek.ts +++ b/packages/core/src/provider/builtin/deepseek.ts @@ -10,7 +10,6 @@ export const deepseekProvider: ProviderInfo = { name: 'DeepSeek', description: 'DeepSeek AI models', builtin: true, - apiKeyEnvVar: 'DEEPSEEK_API_KEY', models: [ { id: 'deepseek-chat', diff --git a/packages/core/src/provider/builtin/openai.ts b/packages/core/src/provider/builtin/openai.ts index 8c7a7a8..eaafc23 100644 --- a/packages/core/src/provider/builtin/openai.ts +++ b/packages/core/src/provider/builtin/openai.ts @@ -11,7 +11,6 @@ export const openaiProvider: ProviderInfo = { name: 'OpenAI', description: 'GPT models by OpenAI (also supports OpenAI-compatible APIs)', builtin: true, - apiKeyEnvVar: 'OPENAI_API_KEY', models: [ { id: 'gpt-4o', diff --git a/packages/core/src/provider/registry.ts b/packages/core/src/provider/registry.ts index e21d923..c389f9f 100644 --- a/packages/core/src/provider/registry.ts +++ b/packages/core/src/provider/registry.ts @@ -168,7 +168,6 @@ export class ProviderRegistry { description: provider.info.description, builtin: provider.info.builtin, baseUrl: config?.baseUrl ?? provider.info.baseUrl, - apiKeyEnvVar: provider.info.apiKeyEnvVar, models: provider.info.models, allowCustomModels: provider.info.allowCustomModels ?? false, config: { @@ -200,7 +199,6 @@ export class ProviderRegistry { description: definition.description, builtin: false, baseUrl: definition.baseUrl, - apiKeyEnvVar: definition.apiKeyEnvVar, models: definition.models ?? [], allowCustomModels: definition.allowCustomModels ?? true, }; diff --git a/packages/core/src/provider/types.ts b/packages/core/src/provider/types.ts index 5658fc9..c246b0a 100644 --- a/packages/core/src/provider/types.ts +++ b/packages/core/src/provider/types.ts @@ -48,8 +48,6 @@ export interface ProviderInfo { builtin: boolean; /** API 基础 URL */ baseUrl?: string; - /** API Key 环境变量名 */ - apiKeyEnvVar?: string; /** 可用模型列表 */ models: ModelInfo[]; /** 是否允许自定义模型 */ @@ -60,10 +58,8 @@ export interface ProviderInfo { export interface ProviderConfig { /** 提供商 ID */ id: string; - /** API Key(直接存储,不推荐) */ + /** API Key */ apiKey?: string; - /** API Key 环境变量名 */ - apiKeyEnvVar?: string; /** 自定义 Base URL */ baseUrl?: string; /** 是否启用 */ @@ -82,8 +78,6 @@ export interface CustomProviderDefinition { description?: string; /** API 基础 URL(必填) */ baseUrl: string; - /** API Key 环境变量名 */ - apiKeyEnvVar?: string; /** 可用模型列表 */ models?: ModelInfo[]; /** 是否允许自定义模型 */ @@ -157,7 +151,6 @@ export interface ProviderDetail { description?: string; builtin: boolean; baseUrl?: string; - apiKeyEnvVar?: string; models: ModelInfo[]; allowCustomModels: boolean; config?: { diff --git a/packages/server/src/routes/agents.ts b/packages/server/src/routes/agents.ts index 9984294..b951975 100644 --- a/packages/server/src/routes/agents.ts +++ b/packages/server/src/routes/agents.ts @@ -9,7 +9,6 @@ import { getConfig } from './config.js'; import type { AgentMode, AgentInfo, - AgentConfigFile, AgentModelConfig, AgentPermission, } from '@ai-assistant/core'; diff --git a/packages/server/src/routes/checkpoints.ts b/packages/server/src/routes/checkpoints.ts index a4bc752..65a26dd 100644 --- a/packages/server/src/routes/checkpoints.ts +++ b/packages/server/src/routes/checkpoints.ts @@ -6,20 +6,7 @@ import { Hono } from 'hono'; import { getConfig } from './config.js'; -import type { - CheckpointMetadata, - CheckpointConfig, - CheckpointTrigger, - FileChange, - FileChangeType, - DiffInfo, - FileDiff, - RollbackOptions, - RollbackResult, - RollbackRecord, - SafetyCheckResult, - UnrevertResult, -} from '@ai-assistant/core'; +import type { CheckpointMetadata } from '@ai-assistant/core'; import { CheckpointManager, getCheckpointManager, diff --git a/packages/server/src/routes/commands.ts b/packages/server/src/routes/commands.ts index 38e10c9..5acf8c5 100644 --- a/packages/server/src/routes/commands.ts +++ b/packages/server/src/routes/commands.ts @@ -7,11 +7,7 @@ import { Hono } from 'hono'; import { z } from 'zod'; import { getConfig } from './config.js'; -import type { - Command, - CommandInput, - CommandExecutionResult, -} from '@ai-assistant/core'; +// Command, CommandInput, CommandExecutionResult 类型由函数自动推断 import { getCommandRegistry, createCommandExecutor, diff --git a/packages/server/src/routes/lsp.ts b/packages/server/src/routes/lsp.ts index 0b0179c..5c4a58d 100644 --- a/packages/server/src/routes/lsp.ts +++ b/packages/server/src/routes/lsp.ts @@ -6,10 +6,7 @@ import { Hono } from 'hono'; import { getConfig } from './config.js'; -import type { - FileDiagnostic, - ServerStatus, -} from '@ai-assistant/core'; +import type { FileDiagnostic } from '@ai-assistant/core'; import { initLSP, listServers, diff --git a/packages/server/src/routes/mcp.ts b/packages/server/src/routes/mcp.ts index 0c83620..b45be54 100644 --- a/packages/server/src/routes/mcp.ts +++ b/packages/server/src/routes/mcp.ts @@ -6,12 +6,7 @@ import { Hono } from 'hono'; import { getConfig } from './config.js'; -import type { - MCPConfig, - MCPServerConfig, - MCPServerStatus, - MCPTool, -} from '@ai-assistant/core'; +import type { MCPConfig } from '@ai-assistant/core'; import { getMCPManager, loadMCPConfig, diff --git a/packages/server/src/routes/services.ts b/packages/server/src/routes/services.ts index 10cae94..6e407e2 100644 --- a/packages/server/src/routes/services.ts +++ b/packages/server/src/routes/services.ts @@ -5,7 +5,7 @@ */ import { Hono } from 'hono'; -import type { ServiceConfig, ServiceType } from '@ai-assistant/core'; +import type { ServiceType } from '@ai-assistant/core'; import { loadProvidersConfig, getServiceConfig, diff --git a/packages/server/src/routes/sessions.ts b/packages/server/src/routes/sessions.ts index e526221..044a134 100644 --- a/packages/server/src/routes/sessions.ts +++ b/packages/server/src/routes/sessions.ts @@ -11,7 +11,7 @@ import { type Message, type MessagePart, } from '../types.js'; -import type { MessageInfo, Part, ApiPart } from '@ai-assistant/core'; +// MessageInfo, Part, ApiPart 从 Core 导入但仅用于类型推导 import { MessageStorage, PartStorage, partsToApiFormat } from '@ai-assistant/core'; export const sessionsRouter = new Hono(); diff --git a/packages/server/src/types.ts b/packages/server/src/types.ts index c5d7052..84467b6 100644 --- a/packages/server/src/types.ts +++ b/packages/server/src/types.ts @@ -365,11 +365,6 @@ export interface Message { parts: MessagePart[]; /** 所有文本拼接(兼容字段) */ content?: string; - metadata?: { - model?: string; - stepCount?: number; - totalTokens?: number; - }; } /** @deprecated 使用 Message 代替 */ diff --git a/packages/ui/src/api/types.ts b/packages/ui/src/api/types.ts index e59730f..79ee99a 100644 --- a/packages/ui/src/api/types.ts +++ b/packages/ui/src/api/types.ts @@ -175,19 +175,14 @@ export interface Message { parts: MessagePart[]; /** 所有文本拼接(兼容字段) */ content?: string; - /** 是否包含推理过程 */ - hasReasoning?: boolean; - /** 推理内容 */ - reasoning?: string; /** 元数据 */ metadata?: { - model?: string; - stepCount?: number; - totalTokens?: number; /** 输入 Token 数 */ inputTokens?: number; /** 输出 Token 数 */ outputTokens?: number; + /** 总 Token 数 */ + totalTokens?: number; /** 生成此消息的 Agent 名称 */ agentName?: string; }; @@ -842,8 +837,6 @@ export interface ProviderDetail { builtin: boolean; /** API 基础 URL */ baseUrl?: string; - /** API Key 环境变量名 */ - apiKeyEnvVar?: string; /** 可用模型列表 */ models: ModelInfo[]; /** 是否允许自定义模型 */ @@ -867,8 +860,6 @@ export interface CustomProviderDefinition { description?: string; /** API 基础 URL(必填) */ baseUrl: string; - /** API Key 环境变量名 */ - apiKeyEnvVar?: string; /** 预设模型列表 */ models?: ModelInfo[]; /** 是否允许自定义模型 */ @@ -881,8 +872,6 @@ export interface ProviderConfig { id?: string; /** API Key */ apiKey?: string; - /** API Key 环境变量名 */ - apiKeyEnvVar?: string; /** 自定义 API 基础 URL */ baseUrl?: string; /** 是否启用 */ diff --git a/packages/ui/src/components/ProviderEditor.tsx b/packages/ui/src/components/ProviderEditor.tsx index b7fd293..72e258b 100644 --- a/packages/ui/src/components/ProviderEditor.tsx +++ b/packages/ui/src/components/ProviderEditor.tsx @@ -54,7 +54,6 @@ export function ProviderEditor({ // Form state const [apiKey, setApiKey] = useState(''); - const [apiKeyEnvVar, setApiKeyEnvVar] = useState(''); const [baseUrl, setBaseUrl] = useState(''); const [enabled, setEnabled] = useState(true); @@ -84,7 +83,6 @@ export function ProviderEditor({ const config = result.data.config; // API key is not returned for security, but we show if it's configured via hasApiKey setApiKey(''); - setApiKeyEnvVar(result.data.apiKeyEnvVar || ''); setBaseUrl(config.baseUrl || result.data.baseUrl || ''); setEnabled(config.enabled !== false); } else { @@ -114,9 +112,6 @@ export function ProviderEditor({ if (apiKey.trim()) { config.apiKey = apiKey; } - if (apiKeyEnvVar.trim() && apiKeyEnvVar !== provider?.apiKeyEnvVar) { - config.apiKeyEnvVar = apiKeyEnvVar; - } if (baseUrl.trim() && baseUrl !== provider?.baseUrl) { config.baseUrl = baseUrl; } @@ -336,20 +331,6 @@ export function ProviderEditor({ )} - {/* API Key Env Var */} -
- If no API key is set, this env var will be used -
-{detail.apiKeyEnvVar}
-