137 lines
2.9 KiB
TypeScript
137 lines
2.9 KiB
TypeScript
// MCP 客户端相关类型定义
|
|
|
|
export type RouteKey =
|
|
| 'chat'
|
|
| 'tools'
|
|
| 'data'
|
|
| 'model-providers'
|
|
| 'display-settings'
|
|
| 'mcp'
|
|
|
|
export interface MCPServerConfig {
|
|
id: string
|
|
name: string
|
|
url: string
|
|
type: 'http' | 'sse' | 'websocket'
|
|
description?: string
|
|
enabled: boolean
|
|
status: 'connected' | 'disconnected' | 'connecting' | 'error'
|
|
capabilities?: {
|
|
tools?: Array<{ name: string; description?: string; inputSchema?: any; enabled?: boolean; autoApprove?: boolean }>
|
|
prompts?: Array<{ name: string; description?: string; arguments?: Array<{ name: string }> }>
|
|
resources?: Array<{ name: string; description?: string; uri: string; mimeType?: string }>
|
|
}
|
|
headers?: Array<{ key: string; value: string }>
|
|
lastConnected?: string
|
|
error?: string
|
|
version?: string
|
|
}
|
|
|
|
export interface MCPTool {
|
|
serverId: string
|
|
serverName: string
|
|
name: string
|
|
description?: string
|
|
inputSchema?: any
|
|
}
|
|
|
|
export interface MCPResource {
|
|
serverId: string
|
|
serverName: string
|
|
uri: string
|
|
name: string
|
|
description?: string
|
|
mimeType?: string
|
|
}
|
|
|
|
export interface MCPPrompt {
|
|
serverId: string
|
|
serverName: string
|
|
name: string
|
|
description?: string
|
|
arguments?: Array<{
|
|
name: string
|
|
description?: string
|
|
required?: boolean
|
|
}>
|
|
}
|
|
|
|
export interface ModelProvider {
|
|
id: string
|
|
name: string
|
|
type: 'openai' | 'claude' | 'google' | 'ollama' | 'custom'
|
|
apiKey?: string
|
|
baseUrl?: string
|
|
models: string[]
|
|
defaultModel?: string
|
|
enabled: boolean
|
|
maxTokens?: number
|
|
temperature?: number
|
|
timeout?: number
|
|
description?: string
|
|
usage?: {
|
|
requestCount: number
|
|
tokenCount: number
|
|
errorCount: number
|
|
lastUsed?: string
|
|
}
|
|
}
|
|
|
|
export interface DisplaySettings {
|
|
theme: 'light' | 'dark' | 'auto'
|
|
primaryColor: string
|
|
backgroundMaterial: 'default' | 'glass' | 'acrylic' | 'solid'
|
|
language: 'zh-CN' | 'en-US' | 'ja-JP' | 'ko-KR' | 'fr-FR' | 'es-ES'
|
|
fontSize: number
|
|
fontFamily: string
|
|
lineHeight: number
|
|
borderRadius: number
|
|
compactMode: boolean
|
|
animations: {
|
|
enabled: boolean
|
|
duration: number
|
|
easing: string
|
|
}
|
|
sidebar: {
|
|
width: number
|
|
collapsed: boolean
|
|
position: 'left' | 'right'
|
|
}
|
|
layout: {
|
|
maxWidth: number
|
|
padding: number
|
|
gap: number
|
|
}
|
|
accessibility: {
|
|
highContrast: boolean
|
|
reduceMotion: boolean
|
|
focusVisible: boolean
|
|
}
|
|
advanced: {
|
|
enableGpu: boolean
|
|
maxHistoryItems: number
|
|
autoSave: boolean
|
|
debugMode: boolean
|
|
}
|
|
}
|
|
|
|
export interface ToolExecution {
|
|
id: string
|
|
toolName: string
|
|
serverId: string
|
|
parameters: Record<string, any>
|
|
status: 'pending' | 'running' | 'completed' | 'error'
|
|
startTime: string
|
|
endTime?: string
|
|
result?: any
|
|
error?: string
|
|
}
|
|
|
|
export interface NotificationMessage {
|
|
id: string
|
|
type: 'success' | 'error' | 'warning' | 'info'
|
|
title: string
|
|
content?: string
|
|
duration?: number
|
|
timestamp: string
|
|
} |