Files
map-client-vue/web/src/types.ts
2025-10-14 14:18:20 +08:00

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
}