@opentiny/agent 0.3.1 → 0.3.3

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 (3) hide show
  1. package/index.d.ts +32 -5
  2. package/index.js +874 -737
  3. package/package.json +1 -1
package/index.d.ts CHANGED
@@ -2,6 +2,9 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import { Client } from '@modelcontextprotocol/sdk/client/index.js';
3
3
  import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
4
4
  import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
5
+ import { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
6
+ import { JSONRPCMessage } from '@modelcontextprotocol/sdk/types.js';
7
+ import WebSocket from 'ws';
5
8
  import { AuthInfo } from '@modelcontextprotocol/sdk/server/auth/types.js';
6
9
  import { Response, RequestHandler, Request, NextFunction } from 'express';
7
10
  import { JwtPayload } from 'jsonwebtoken';
@@ -10,6 +13,21 @@ import { AuthorizationParams, OAuthServerProvider } from '@modelcontextprotocol/
10
13
  import { OAuthRegisteredClientsStore } from '@modelcontextprotocol/sdk/server/auth/clients.js';
11
14
  import { AuthRouterOptions } from '@modelcontextprotocol/sdk/server/auth/router.js';
12
15
 
16
+ /**
17
+ * Server transport for WebSocket: this will listen to clients over the WebSocket protocol.
18
+ */
19
+ declare class WebSocketServerTransport implements Transport {
20
+ private _socket?;
21
+ sessionId?: string;
22
+ onclose?: () => void;
23
+ onerror?: (error: Error) => void;
24
+ onmessage?: (message: JSONRPCMessage) => void;
25
+ constructor(socket: WebSocket);
26
+ start(): Promise<void>;
27
+ close(): Promise<void>;
28
+ send(message: JSONRPCMessage): Promise<void>;
29
+ }
30
+
13
31
  declare const ACCESS_TOKEN_EXPIRES_IN: number;
14
32
  declare const REFRESH_TOKEN_EXPIRES_IN: number;
15
33
  /**
@@ -374,7 +392,7 @@ interface ClientInfo {
374
392
  /**
375
393
  * 客户端连接的 Transport 实例
376
394
  */
377
- transport: SSEServerTransport | StreamableHTTPServerTransport;
395
+ transport: SSEServerTransport | StreamableHTTPServerTransport | WebSocketServerTransport;
378
396
  /**
379
397
  * 连接的用户信息
380
398
  */
@@ -403,7 +421,7 @@ interface ClientInfo {
403
421
  /**
404
422
  * 客户端连接的 Transport 类型
405
423
  */
406
- type: 'SSE' | 'StreamableHTTP';
424
+ type: 'SSE' | 'StreamableHTTP' | 'WebSocket';
407
425
  }
408
426
  /**
409
427
  * 遥控端连接的信息,包括服务端实例、用户信息和 Transport 类型。
@@ -462,7 +480,7 @@ interface ClientError {
462
480
  /**
463
481
  * 客户端连接的 Transport 实例
464
482
  */
465
- transport: SSEServerTransport | StreamableHTTPServerTransport;
483
+ transport: SSEServerTransport | StreamableHTTPServerTransport | WebSocketServerTransport;
466
484
  /**
467
485
  * 错误信息
468
486
  */
@@ -470,7 +488,7 @@ interface ClientError {
470
488
  /**
471
489
  * 服务端连接的 Transport 类型
472
490
  */
473
- type: 'SSE' | 'StreamableHTTP';
491
+ type: 'SSE' | 'StreamableHTTP' | 'WebSocket';
474
492
  }
475
493
  /**
476
494
  * RemoterError 接口,在遥控端连接或处理过程中发生的错误。
@@ -516,6 +534,14 @@ declare module 'express' {
516
534
  declare const auth: ({ secret }: {
517
535
  secret: string;
518
536
  }) => (req: Request, res: Response, next: NextFunction) => void;
537
+ /**
538
+ * 请求认证,用于校验 JWT Token。
539
+ *
540
+ * 检查 request.query 中的 token 字段。
541
+ * 校验通过后,将解码后的用户信息挂载到 req.user
542
+ * 校验失败或缺失 token 时,抛出异常。
543
+ */
544
+ declare const jwtAuth: (req: Request, secret: string) => void;
519
545
  /**
520
546
  * SSE 与 Streamable HTTP 连接的处理函数,同时返回所有客户端代理实例。
521
547
  */
@@ -525,6 +551,7 @@ declare const useProxyHandles: () => {
525
551
  handleSseMessage: (req: Request, res: Response) => Promise<void>;
526
552
  handleStreamRequest: (req: Request, res: Response) => Promise<void>;
527
553
  handleStreamInspector: (req: Request, res: Response) => Promise<void>;
554
+ handleWebSocket: (socket: WebSocket, req: Request) => Promise<void>;
528
555
  clients: Record<string, ClientInfo>;
529
556
  remoters: Record<string, RemoterInfo>;
530
557
  transports: Record<string, any>;
@@ -538,5 +565,5 @@ declare const useProxyHandles: () => {
538
565
  onRemoterError: (onError: (error: RemoterError) => void) => void;
539
566
  };
540
567
 
541
- export { ACCESS_TOKEN_EXPIRES_IN, AuthServerProvider, MemoryAccessTokensStore, MemoryAuthorizationCodeStore, MemoryClientsStore, MemoryRefreshTokensStore, REFRESH_TOKEN_EXPIRES_IN, auth, createAuthCallbackRouter, createAuthMetadataRouter, createAuthMiddleware, createAuthRouter, useProxyHandles };
568
+ export { ACCESS_TOKEN_EXPIRES_IN, AuthServerProvider, MemoryAccessTokensStore, MemoryAuthorizationCodeStore, MemoryClientsStore, MemoryRefreshTokensStore, REFRESH_TOKEN_EXPIRES_IN, WebSocketServerTransport, auth, createAuthCallbackRouter, createAuthMetadataRouter, createAuthMiddleware, createAuthRouter, jwtAuth, useProxyHandles };
542
569
  export type { AuthServerProviderOptions, ClientError, ClientInfo, OAuthAccessTokensStore, OAuthAuthorizationCodeStore, OAuthRefreshTokensStore, RemoterError, RemoterInfo };