refactor: 清理未使用的类型定义和接口字段

- 移除 Provider 相关的 apiKeyEnvVar 字段(未实现的功能)
- 清理 Server routes 中未使用的 Core 类型导入
- 清理 UI Message 接口中未使用的 metadata 字段
This commit is contained in:
2025-12-30 10:41:38 +08:00
parent 243f8dc860
commit 5f38753f6d
16 changed files with 9 additions and 98 deletions
@@ -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',
@@ -10,7 +10,6 @@ export const deepseekProvider: ProviderInfo = {
name: 'DeepSeek',
description: 'DeepSeek AI models',
builtin: true,
apiKeyEnvVar: 'DEEPSEEK_API_KEY',
models: [
{
id: 'deepseek-chat',
@@ -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',
-2
View File
@@ -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,
};
+1 -8
View File
@@ -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?: {
-1
View File
@@ -9,7 +9,6 @@ import { getConfig } from './config.js';
import type {
AgentMode,
AgentInfo,
AgentConfigFile,
AgentModelConfig,
AgentPermission,
} from '@ai-assistant/core';
+1 -14
View File
@@ -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,
+1 -5
View File
@@ -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,
+1 -4
View File
@@ -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,
+1 -6
View File
@@ -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,
+1 -1
View File
@@ -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,
+1 -1
View File
@@ -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();
-5
View File
@@ -365,11 +365,6 @@ export interface Message {
parts: MessagePart[];
/** 所有文本拼接(兼容字段) */
content?: string;
metadata?: {
model?: string;
stepCount?: number;
totalTokens?: number;
};
}
/** @deprecated 使用 Message 代替 */
+2 -13
View File
@@ -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;
/** 是否启用 */
@@ -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({
)}
</div>
{/* API Key Env Var */}
<div>
<label className="block text-xs text-fg-muted mb-1">
Environment Variable (alternative)
</label>
<Input
value={apiKeyEnvVar}
onChange={(e) => setApiKeyEnvVar(e.target.value)}
placeholder={provider?.apiKeyEnvVar || 'PROVIDER_API_KEY'}
/>
<p className="text-xs text-fg-subtle mt-1">
If no API key is set, this env var will be used
</p>
</div>
</div>
{/* Base URL Section */}
@@ -406,14 +406,6 @@ export function ProvidersPanel({ onClose, responsive = false }: ProvidersPanelPr
</div>
)}
{/* API Key Env Var */}
{detail.apiKeyEnvVar && (
<div className="text-xs">
<span className="text-fg-muted">API Key Env:</span>{' '}
<code className="text-fg-secondary bg-surface-subtle px-1 rounded">{detail.apiKeyEnvVar}</code>
</div>
)}
{/* Models */}
<div className="space-y-2">
<div className="flex items-center justify-between">
@@ -688,14 +680,6 @@ export function ProvidersPanel({ onClose, responsive = false }: ProvidersPanelPr
placeholder="http://localhost:11434/v1"
/>
</div>
<div>
<label className="text-xs text-fg-muted">API Key Env Var (optional)</label>
<Input
value={newProvider.apiKeyEnvVar || ''}
onChange={(e) => setNewProvider((p) => ({ ...p, apiKeyEnvVar: e.target.value }))}
placeholder="OLLAMA_API_KEY"
/>
</div>
</div>
<div className="flex justify-end gap-2 pt-2">
<Button variant="ghost" onClick={() => setShowAddProvider(false)}>