xiaozhi-client 1.6.3-beta.4 → 1.6.4-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/MCPService-B1FvMc8R.d.ts +243 -0
  2. package/dist/WebServer.d.ts +33 -22
  3. package/dist/WebServer.js +65 -30
  4. package/dist/WebServer.js.map +1 -1
  5. package/dist/WebServerStandalone.js +65 -30
  6. package/dist/WebServerStandalone.js.map +1 -1
  7. package/dist/adapters/ConfigAdapter.d.ts +30 -0
  8. package/dist/adapters/ConfigAdapter.js +3 -0
  9. package/dist/adapters/ConfigAdapter.js.map +1 -0
  10. package/dist/cli.js +67 -32
  11. package/dist/cli.js.map +1 -1
  12. package/dist/configManager.d.ts +5 -0
  13. package/dist/configManager.js +2 -2
  14. package/dist/configManager.js.map +1 -1
  15. package/dist/mcpCommands.js +2 -2
  16. package/dist/mcpCommands.js.map +1 -1
  17. package/dist/mcpServerProxy.js +2 -2
  18. package/dist/mcpServerProxy.js.map +1 -1
  19. package/dist/package.json +1 -1
  20. package/dist/services/MCPServer.d.ts +2 -235
  21. package/dist/services/MCPServer.js +4 -4
  22. package/dist/services/MCPServer.js.map +1 -1
  23. package/package.json +1 -1
  24. package/web/dist/assets/form-utils-BAESeaiO.js +22 -0
  25. package/web/dist/assets/form-utils-BAESeaiO.js.map +1 -0
  26. package/web/dist/assets/index-CCieCKu1.js +31 -0
  27. package/web/dist/assets/index-CCieCKu1.js.map +1 -0
  28. package/web/dist/assets/index-eZDZS6qd.css +1 -0
  29. package/web/dist/assets/radix-ui-DW48STyt.js +2 -0
  30. package/web/dist/assets/radix-ui-DW48STyt.js.map +1 -0
  31. package/web/dist/assets/react-vendor-Bm2cC0fo.js +184 -0
  32. package/web/dist/assets/react-vendor-Bm2cC0fo.js.map +1 -0
  33. package/web/dist/assets/utils-DE0xezXx.js +2 -0
  34. package/web/dist/assets/utils-DE0xezXx.js.map +1 -0
  35. package/web/dist/assets/vendor-C4NtkA-O.js +10 -0
  36. package/web/dist/assets/vendor-C4NtkA-O.js.map +1 -0
  37. package/web/dist/index.html +7 -2
  38. package/web/dist/assets/index-Jy5aLSeZ.js +0 -241
  39. package/web/dist/assets/index-Jy5aLSeZ.js.map +0 -1
  40. package/web/dist/assets/index-o2NfdFal.css +0 -1
@@ -0,0 +1,243 @@
1
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+
3
+ declare enum MCPTransportType {
4
+ STDIO = "stdio",
5
+ SSE = "sse",
6
+ STREAMABLE_HTTP = "streamable-http",
7
+ MODELSCOPE_SSE = "modelscope-sse"
8
+ }
9
+ declare enum ConnectionState {
10
+ DISCONNECTED = "disconnected",
11
+ CONNECTING = "connecting",
12
+ CONNECTED = "connected",
13
+ RECONNECTING = "reconnecting",
14
+ FAILED = "failed"
15
+ }
16
+ interface ReconnectOptions {
17
+ enabled: boolean;
18
+ maxAttempts: number;
19
+ initialInterval: number;
20
+ maxInterval: number;
21
+ backoffStrategy: "linear" | "exponential" | "fixed";
22
+ backoffMultiplier: number;
23
+ timeout: number;
24
+ jitter: boolean;
25
+ }
26
+ interface PingOptions {
27
+ enabled: boolean;
28
+ interval: number;
29
+ timeout: number;
30
+ maxFailures: number;
31
+ startDelay: number;
32
+ }
33
+ interface ModelScopeSSEOptions {
34
+ eventSourceInit?: {
35
+ fetch?: (url: string | URL | Request, init?: RequestInit) => Promise<Response>;
36
+ };
37
+ requestInit?: RequestInit;
38
+ }
39
+ interface MCPServiceConfig {
40
+ name: string;
41
+ type: MCPTransportType;
42
+ command?: string;
43
+ args?: string[];
44
+ url?: string;
45
+ apiKey?: string;
46
+ headers?: Record<string, string>;
47
+ modelScopeAuth?: boolean;
48
+ customSSEOptions?: ModelScopeSSEOptions;
49
+ reconnect?: Partial<ReconnectOptions>;
50
+ ping?: Partial<PingOptions>;
51
+ timeout?: number;
52
+ retryAttempts?: number;
53
+ }
54
+ interface MCPServiceStatus {
55
+ name: string;
56
+ connected: boolean;
57
+ initialized: boolean;
58
+ transportType: MCPTransportType;
59
+ toolCount: number;
60
+ lastError?: string;
61
+ reconnectAttempts: number;
62
+ connectionState: ConnectionState;
63
+ pingEnabled: boolean;
64
+ lastPingTime?: Date;
65
+ pingFailureCount: number;
66
+ isPinging: boolean;
67
+ }
68
+ interface MCPServiceOptions {
69
+ reconnect?: Partial<ReconnectOptions>;
70
+ }
71
+ interface ToolCallResult {
72
+ content: Array<{
73
+ type: string;
74
+ text: string;
75
+ }>;
76
+ isError?: boolean;
77
+ }
78
+ /**
79
+ * MCP 服务类
80
+ * 负责管理单个 MCP 服务的连接、工具管理和调用
81
+ */
82
+ declare class MCPService {
83
+ private config;
84
+ private client;
85
+ private transport;
86
+ private tools;
87
+ private connectionState;
88
+ private reconnectOptions;
89
+ private reconnectState;
90
+ private logger;
91
+ private connectionTimeout;
92
+ private initialized;
93
+ private pingOptions;
94
+ private pingTimer;
95
+ private pingFailureCount;
96
+ private lastPingTime;
97
+ private isPinging;
98
+ constructor(config: MCPServiceConfig, options?: MCPServiceOptions);
99
+ /**
100
+ * 带标签的日志方法
101
+ */
102
+ private logWithTag;
103
+ /**
104
+ * 验证配置
105
+ */
106
+ private validateConfig;
107
+ /**
108
+ * 连接到 MCP 服务
109
+ */
110
+ connect(): Promise<void>;
111
+ /**
112
+ * 尝试建立连接
113
+ */
114
+ private attemptConnection;
115
+ /**
116
+ * 处理连接成功
117
+ */
118
+ private handleConnectionSuccess;
119
+ /**
120
+ * 处理连接错误
121
+ */
122
+ private handleConnectionError;
123
+ /**
124
+ * 检查是否应该重连
125
+ */
126
+ private shouldReconnect;
127
+ /**
128
+ * 安排重连
129
+ */
130
+ private scheduleReconnect;
131
+ /**
132
+ * 计算下次重连间隔
133
+ */
134
+ private calculateNextInterval;
135
+ /**
136
+ * 清理连接资源
137
+ */
138
+ private cleanupConnection;
139
+ /**
140
+ * 停止重连
141
+ */
142
+ private stopReconnect;
143
+ /**
144
+ * 刷新工具列表
145
+ */
146
+ private refreshTools;
147
+ /**
148
+ * 断开连接
149
+ */
150
+ disconnect(): Promise<void>;
151
+ /**
152
+ * 手动重连
153
+ */
154
+ reconnect(): Promise<void>;
155
+ /**
156
+ * 获取工具列表
157
+ */
158
+ getTools(): Tool[];
159
+ /**
160
+ * 调用工具
161
+ */
162
+ callTool(name: string, arguments_: any): Promise<ToolCallResult>;
163
+ /**
164
+ * 检测是否为会话过期错误
165
+ * @param errorMessage 错误消息
166
+ * @returns 是否为会话过期错误
167
+ */
168
+ private isSessionExpiredError;
169
+ /**
170
+ * 获取服务配置
171
+ */
172
+ getConfig(): MCPServiceConfig;
173
+ /**
174
+ * 获取服务状态
175
+ */
176
+ getStatus(): MCPServiceStatus;
177
+ /**
178
+ * 检查是否已连接
179
+ */
180
+ isConnected(): boolean;
181
+ /**
182
+ * 启用自动重连
183
+ */
184
+ enableReconnect(): void;
185
+ /**
186
+ * 禁用自动重连
187
+ */
188
+ disableReconnect(): void;
189
+ /**
190
+ * 更新重连配置
191
+ */
192
+ updateReconnectOptions(options: Partial<ReconnectOptions>): void;
193
+ /**
194
+ * 获取重连配置
195
+ */
196
+ getReconnectOptions(): ReconnectOptions;
197
+ /**
198
+ * 重置重连状态
199
+ */
200
+ resetReconnectState(): void;
201
+ /**
202
+ * 启动ping监控
203
+ */
204
+ private startPingMonitoring;
205
+ /**
206
+ * 停止ping监控
207
+ */
208
+ private stopPingMonitoring;
209
+ /**
210
+ * 执行ping检查
211
+ */
212
+ private performPing;
213
+ /**
214
+ * 处理ping成功
215
+ */
216
+ private handlePingSuccess;
217
+ /**
218
+ * 处理ping失败
219
+ */
220
+ private handlePingFailure;
221
+ /**
222
+ * 重置ping状态
223
+ */
224
+ private resetPingState;
225
+ /**
226
+ * 启用ping监控
227
+ */
228
+ enablePing(): void;
229
+ /**
230
+ * 禁用ping监控
231
+ */
232
+ disablePing(): void;
233
+ /**
234
+ * 更新ping配置
235
+ */
236
+ updatePingOptions(options: Partial<PingOptions>): void;
237
+ /**
238
+ * 获取ping配置
239
+ */
240
+ getPingOptions(): PingOptions;
241
+ }
242
+
243
+ export { type MCPServiceConfig as M, MCPService as a };
@@ -1,23 +1,41 @@
1
- import { AppConfig } from './configManager.js';
2
-
3
- interface ClientInfo {
4
- status: "connected" | "disconnected";
5
- mcpEndpoint: string;
6
- activeMCPServers: string[];
7
- lastHeartbeat?: number;
8
- }
1
+ /**
2
+ * WebServer - 主控制器,协调各个服务和处理器
3
+ */
9
4
  declare class WebServer {
10
5
  private app;
11
6
  private httpServer;
12
7
  private wss;
13
8
  private logger;
14
9
  private port;
15
- private clientInfo;
16
- private heartbeatTimeout?;
17
- private readonly HEARTBEAT_TIMEOUT;
10
+ private eventBus;
11
+ private configService;
12
+ private statusService;
13
+ private notificationService;
14
+ private configApiHandler;
15
+ private statusApiHandler;
16
+ private serviceApiHandler;
17
+ private staticFileHandler;
18
+ private realtimeNotificationHandler;
19
+ private heartbeatHandler;
20
+ private heartbeatMonitorInterval?;
18
21
  private proxyMCPServer;
19
22
  private xiaozhiConnectionManager;
20
23
  private mcpServiceManager;
24
+ /**
25
+ * 创建统一的错误响应
26
+ * @deprecated 使用处理器中的方法替代
27
+ */
28
+ private createErrorResponse;
29
+ /**
30
+ * 创建统一的成功响应
31
+ * @deprecated 使用处理器中的方法替代
32
+ */
33
+ private createSuccessResponse;
34
+ /**
35
+ * 记录废弃功能使用警告
36
+ * @deprecated 使用处理器中的方法替代
37
+ */
38
+ private logDeprecationWarning;
21
39
  constructor(port?: number);
22
40
  /**
23
41
  * 初始化所有连接(配置驱动)
@@ -53,20 +71,13 @@ declare class WebServer {
53
71
  private sleep;
54
72
  private setupMiddleware;
55
73
  private setupRoutes;
56
- private serveStaticFile;
57
74
  private setupWebSocket;
58
- private handleWebSocketMessage;
59
- private sendInitialData;
60
- broadcastConfigUpdate(config: AppConfig): void;
61
- private broadcastRestartStatus;
62
- private broadcastStatusUpdate;
63
- private updateClientInfo;
64
- private resetHeartbeatTimeout;
65
- private updateConfig;
66
- private restartService;
67
- updateStatus(info: Partial<ClientInfo>): void;
68
75
  start(): Promise<void>;
69
76
  stop(): Promise<void>;
77
+ /**
78
+ * 销毁 WebServer 实例,清理所有资源
79
+ */
80
+ destroy(): void;
70
81
  }
71
82
 
72
83
  export { WebServer };