@1mcp/agent 0.13.0 → 0.14.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 (125) hide show
  1. package/README.md +28 -20
  2. package/build/auth/sdkOAuthClientProvider.d.ts +1 -1
  3. package/build/auth/sdkOAuthClientProvider.d.ts.map +1 -1
  4. package/build/auth/sdkOAuthClientProvider.js +11 -6
  5. package/build/auth/sdkOAuthClientProvider.js.map +1 -1
  6. package/build/auth/sdkOAuthServerProvider.d.ts +4 -3
  7. package/build/auth/sdkOAuthServerProvider.d.ts.map +1 -1
  8. package/build/auth/sdkOAuthServerProvider.js +41 -110
  9. package/build/auth/sdkOAuthServerProvider.js.map +1 -1
  10. package/build/auth/sessionTypes.d.ts +24 -10
  11. package/build/auth/sessionTypes.d.ts.map +1 -1
  12. package/build/auth/storage/authCodeRepository.d.ts +25 -0
  13. package/build/auth/storage/authCodeRepository.d.ts.map +1 -0
  14. package/build/auth/storage/authCodeRepository.js +50 -0
  15. package/build/auth/storage/authCodeRepository.js.map +1 -0
  16. package/build/auth/storage/authRequestRepository.d.ts +25 -0
  17. package/build/auth/storage/authRequestRepository.d.ts.map +1 -0
  18. package/build/auth/storage/authRequestRepository.js +51 -0
  19. package/build/auth/storage/authRequestRepository.js.map +1 -0
  20. package/build/auth/storage/clientDataRepository.d.ts +25 -0
  21. package/build/auth/storage/clientDataRepository.d.ts.map +1 -0
  22. package/build/auth/storage/clientDataRepository.js +45 -0
  23. package/build/auth/storage/clientDataRepository.js.map +1 -0
  24. package/build/auth/storage/clientSessionRepository.d.ts +77 -0
  25. package/build/auth/storage/clientSessionRepository.d.ts.map +1 -0
  26. package/build/auth/storage/clientSessionRepository.js +120 -0
  27. package/build/auth/storage/clientSessionRepository.js.map +1 -0
  28. package/build/auth/storage/fileStorageService.d.ts +68 -0
  29. package/build/auth/storage/fileStorageService.d.ts.map +1 -0
  30. package/build/auth/storage/fileStorageService.js +262 -0
  31. package/build/auth/storage/fileStorageService.js.map +1 -0
  32. package/build/auth/storage/oauthStorageService.d.ts +57 -0
  33. package/build/auth/storage/oauthStorageService.d.ts.map +1 -0
  34. package/build/auth/storage/oauthStorageService.js +131 -0
  35. package/build/auth/storage/oauthStorageService.js.map +1 -0
  36. package/build/auth/storage/sessionRepository.d.ts +29 -0
  37. package/build/auth/storage/sessionRepository.d.ts.map +1 -0
  38. package/build/auth/storage/sessionRepository.js +64 -0
  39. package/build/auth/storage/sessionRepository.js.map +1 -0
  40. package/build/constants.d.ts +26 -11
  41. package/build/constants.d.ts.map +1 -1
  42. package/build/constants.js +32 -11
  43. package/build/constants.js.map +1 -1
  44. package/build/core/client/clientManager.d.ts +55 -39
  45. package/build/core/client/clientManager.d.ts.map +1 -1
  46. package/build/core/client/clientManager.js +180 -171
  47. package/build/core/client/clientManager.js.map +1 -1
  48. package/build/core/server/agentConfig.d.ts +13 -0
  49. package/build/core/server/agentConfig.d.ts.map +1 -1
  50. package/build/core/server/agentConfig.js +18 -2
  51. package/build/core/server/agentConfig.js.map +1 -1
  52. package/build/core/server/serverManager.d.ts +11 -4
  53. package/build/core/server/serverManager.d.ts.map +1 -1
  54. package/build/core/server/serverManager.js +47 -23
  55. package/build/core/server/serverManager.js.map +1 -1
  56. package/build/core/types/server.d.ts +17 -0
  57. package/build/core/types/server.d.ts.map +1 -1
  58. package/build/core/types/server.js +14 -1
  59. package/build/core/types/server.js.map +1 -1
  60. package/build/handlers/notificationHandlers.d.ts +2 -2
  61. package/build/handlers/notificationHandlers.d.ts.map +1 -1
  62. package/build/handlers/notificationHandlers.js +15 -10
  63. package/build/handlers/notificationHandlers.js.map +1 -1
  64. package/build/handlers/requestHandlers.d.ts +1 -1
  65. package/build/handlers/requestHandlers.d.ts.map +1 -1
  66. package/build/handlers/requestHandlers.js +68 -67
  67. package/build/handlers/requestHandlers.js.map +1 -1
  68. package/build/index.js +7 -0
  69. package/build/index.js.map +1 -1
  70. package/build/logger/mcpLoggingEnhancer.d.ts.map +1 -1
  71. package/build/logger/mcpLoggingEnhancer.js +18 -1
  72. package/build/logger/mcpLoggingEnhancer.js.map +1 -1
  73. package/build/server.d.ts.map +1 -1
  74. package/build/server.js +3 -2
  75. package/build/server.js.map +1 -1
  76. package/build/services/configReloadService.d.ts.map +1 -1
  77. package/build/services/configReloadService.js +3 -2
  78. package/build/services/configReloadService.js.map +1 -1
  79. package/build/transport/http/middlewares/httpRequestLogger.d.ts +16 -0
  80. package/build/transport/http/middlewares/httpRequestLogger.d.ts.map +1 -0
  81. package/build/transport/http/middlewares/httpRequestLogger.js +41 -0
  82. package/build/transport/http/middlewares/httpRequestLogger.js.map +1 -0
  83. package/build/transport/http/middlewares/scopeAuthMiddleware.d.ts +4 -7
  84. package/build/transport/http/middlewares/scopeAuthMiddleware.d.ts.map +1 -1
  85. package/build/transport/http/middlewares/scopeAuthMiddleware.js +6 -12
  86. package/build/transport/http/middlewares/scopeAuthMiddleware.js.map +1 -1
  87. package/build/transport/http/routes/oauthRoutes.d.ts +6 -2
  88. package/build/transport/http/routes/oauthRoutes.d.ts.map +1 -1
  89. package/build/transport/http/routes/oauthRoutes.js +333 -337
  90. package/build/transport/http/routes/oauthRoutes.js.map +1 -1
  91. package/build/transport/http/routes/sseRoutes.d.ts.map +1 -1
  92. package/build/transport/http/routes/sseRoutes.js +11 -5
  93. package/build/transport/http/routes/sseRoutes.js.map +1 -1
  94. package/build/transport/http/routes/streamableHttpRoutes.d.ts.map +1 -1
  95. package/build/transport/http/routes/streamableHttpRoutes.js +11 -10
  96. package/build/transport/http/routes/streamableHttpRoutes.js.map +1 -1
  97. package/build/transport/http/server.d.ts +1 -0
  98. package/build/transport/http/server.d.ts.map +1 -1
  99. package/build/transport/http/server.js +11 -5
  100. package/build/transport/http/server.js.map +1 -1
  101. package/build/transport/transportFactory.js +2 -2
  102. package/build/transport/transportFactory.js.map +1 -1
  103. package/build/utils/clientFiltering.d.ts.map +1 -1
  104. package/build/utils/clientFiltering.js +40 -5
  105. package/build/utils/clientFiltering.js.map +1 -1
  106. package/build/utils/operationExecution.d.ts +10 -0
  107. package/build/utils/operationExecution.d.ts.map +1 -0
  108. package/build/utils/operationExecution.js +36 -0
  109. package/build/utils/operationExecution.js.map +1 -0
  110. package/build/utils/pagination.d.ts.map +1 -1
  111. package/build/utils/pagination.js +22 -13
  112. package/build/utils/pagination.js.map +1 -1
  113. package/package.json +1 -1
  114. package/build/auth/clientSessionManager.d.ts +0 -94
  115. package/build/auth/clientSessionManager.d.ts.map +0 -1
  116. package/build/auth/clientSessionManager.js +0 -220
  117. package/build/auth/clientSessionManager.js.map +0 -1
  118. package/build/auth/serverSessionManager.d.ts +0 -185
  119. package/build/auth/serverSessionManager.d.ts.map +0 -1
  120. package/build/auth/serverSessionManager.js +0 -461
  121. package/build/auth/serverSessionManager.js.map +0 -1
  122. package/build/core/client/clientFactory.d.ts +0 -25
  123. package/build/core/client/clientFactory.d.ts.map +0 -1
  124. package/build/core/client/clientFactory.js +0 -12
  125. package/build/core/client/clientFactory.js.map +0 -1
@@ -11,7 +11,7 @@ export const STREAMABLE_HTTP_ENDPOINT = '/mcp';
11
11
  // MCP constants
12
12
  export const MCP_CONFIG_FILE = 'mcp.json';
13
13
  export const MCP_SERVER_NAME = '1mcp';
14
- export const MCP_SERVER_VERSION = '0.13.0';
14
+ export const MCP_SERVER_VERSION = '0.14.0';
15
15
  export const MCP_URI_SEPARATOR = '_1mcp_';
16
16
  // Global config paths
17
17
  export const CONFIG_DIR_NAME = '1mcp';
@@ -47,21 +47,37 @@ export const AUTH_CONFIG = {
47
47
  // Server-side authentication
48
48
  SERVER: {
49
49
  DEFAULT_ENABLED: false,
50
+ // File storage configuration
51
+ STORAGE: {
52
+ DIR: 'sessions',
53
+ FILE_EXTENSION: '.json',
54
+ },
55
+ // Session management
50
56
  SESSION: {
51
57
  TTL_MINUTES: 24 * 60, // 24 hours
52
- STORAGE_DIR: 'sessions',
58
+ ID_PREFIX: 'sess-',
53
59
  FILE_PREFIX: 'session_',
54
- FILE_EXTENSION: '.json',
55
60
  },
56
- OAUTH: {
57
- CODE_TTL_MS: 60 * 1000, // 1 minute
58
- TOKEN_TTL_MS: 24 * 60 * 60 * 1000, // 24 hours
61
+ // OAuth authorization codes (permanent, for token exchange)
62
+ AUTH_CODE: {
63
+ TTL_MS: 60 * 1000, // 1 minute
64
+ ID_PREFIX: 'code-',
65
+ FILE_PREFIX: 'auth_code_',
59
66
  },
60
- PREFIXES: {
61
- SESSION_ID: 'sess-',
62
- ACCESS_TOKEN: 'tk-',
63
- AUTH_CODE: 'code-',
64
- CLIENT_ID: 'client-',
67
+ // OAuth authorization requests (temporary, for consent flow)
68
+ AUTH_REQUEST: {
69
+ TTL_MS: 10 * 60 * 1000, // 10 minutes
70
+ ID_PREFIX: 'code-', // Same as auth codes for compatibility
71
+ FILE_PREFIX: 'auth_request_',
72
+ },
73
+ // OAuth tokens
74
+ TOKEN: {
75
+ TTL_MS: 24 * 60 * 60 * 1000, // 24 hours
76
+ ID_PREFIX: 'tk-',
77
+ },
78
+ // Client management
79
+ CLIENT: {
80
+ ID_PREFIX: 'client-',
65
81
  },
66
82
  },
67
83
  // Client-side authentication
@@ -74,6 +90,11 @@ export const AUTH_CONFIG = {
74
90
  DEFAULT_CALLBACK_PATH: '/oauth/callback',
75
91
  DEFAULT_SCOPES: [],
76
92
  },
93
+ SESSION: {
94
+ TTL_MS: 30 * 24 * 60 * 60 * 1000, // 30 days
95
+ ID_PREFIX: 'oauth_',
96
+ FILE_PREFIX: '',
97
+ },
77
98
  PREFIXES: {
78
99
  CLIENT: 'cli_',
79
100
  TOKENS: 'tok_',
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,uBAAuB;AACvB,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC;AACzB,MAAM,CAAC,MAAM,IAAI,GAAG,WAAW,CAAC;AAEhC,gBAAgB;AAChB,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC;AACnC,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAC;AAC7C,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAE/C,gBAAgB;AAChB,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;AAC1C,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC;AACtC,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAE3C,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAE1C,sBAAsB;AACtB,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC;AACtC,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,UAAU,EAAE,EAAE;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IAC5D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,SAAS,GACb,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAC3D,CAAC,CAAC,GAAG,OAAO,YAAY,eAAe,EAAE;QACzC,CAAC,CAAC,GAAG,OAAO,oBAAoB,eAAe,EAAE,CAAC;IAEtD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,GAAG,kBAAkB,EAAE,IAAI,eAAe,EAAE,CAAC;AACtD,CAAC;AAED,4BAA4B;AAC5B,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,YAAY,EAAE,CAAC;IACf,gBAAgB,EAAE,IAAI;CACvB,CAAC;AAEF,sCAAsC;AACtC,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,6BAA6B;IAC7B,MAAM,EAAE;QACN,eAAe,EAAE,KAAK;QACtB,OAAO,EAAE;YACP,WAAW,EAAE,EAAE,GAAG,EAAE,EAAE,WAAW;YACjC,WAAW,EAAE,UAAU;YACvB,WAAW,EAAE,UAAU;YACvB,cAAc,EAAE,OAAO;SACxB;QACD,KAAK,EAAE;YACL,WAAW,EAAE,EAAE,GAAG,IAAI,EAAE,WAAW;YACnC,YAAY,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,WAAW;SAC/C;QACD,QAAQ,EAAE;YACR,UAAU,EAAE,OAAO;YACnB,YAAY,EAAE,KAAK;YACnB,SAAS,EAAE,OAAO;YAClB,SAAS,EAAE,SAAS;SACrB;KACF;IAED,6BAA6B;IAC7B,MAAM,EAAE;QACN,KAAK,EAAE;YACL,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,UAAU;YAC5C,oBAAoB,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,aAAa;YACnD,YAAY,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,aAAa;YAC3C,4BAA4B,EAAE,IAAI,EAAE,SAAS;YAC7C,qBAAqB,EAAE,iBAAiB;YACxC,cAAc,EAAE,EAAE;SACnB;QACD,QAAQ,EAAE;YACR,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,MAAM;SACd;KACF;CACF,CAAC;AAEF,kDAAkD;AAClD,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,KAAK,EAAE;QACL,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,aAAa;QACxC,GAAG,EAAE,GAAG,EAAE,iCAAiC;QAC3C,OAAO,EAAE,EAAE,KAAK,EAAE,4CAA4C,EAAE;KACjE;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAuB;IACzD,WAAW,EAAE,EAAE;IACf,SAAS,EAAE;QACT,WAAW,EAAE,KAAK;KACnB;IACD,KAAK,EAAE;QACL,WAAW,EAAE,KAAK;KACnB;IACD,OAAO,EAAE;QACP,WAAW,EAAE,KAAK;KACnB;IACD,OAAO,EAAE,EAAE;CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAuB;IACzD,KAAK,EAAE;QACL,WAAW,EAAE,KAAK;KACnB;IACD,QAAQ,EAAE;QACR,WAAW,EAAE,KAAK;KACnB;IACD,WAAW,EAAE;QACX,WAAW,EAAE,KAAK;KACnB;CACF,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
@@ -1,43 +1,59 @@
1
1
  import { Client } from '@modelcontextprotocol/sdk/client/index.js';
2
- import { OutboundConnection, OutboundConnections, OperationOptions, InboundConnection, ServerCapability, AuthProviderTransport } from '../types/index.js';
3
- /**
4
- * Creates client instances for all transports with retry logic
5
- * @param transports Record of transport instances
6
- * @returns Record of client instances
7
- */
8
- export declare function createClients(transports: Record<string, AuthProviderTransport>): Promise<OutboundConnections>;
9
- /**
10
- * Gets a client by name with error handling
11
- * @param clients Record of client instances
12
- * @param clientName The name of the client to get
13
- * @returns The client instance
14
- * @throws ClientNotFoundError if the client is not found
15
- */
16
- export declare function getClient(clients: OutboundConnections, clientName: string): OutboundConnection;
17
- /**
18
- * Executes an operation with error handling and retry logic
19
- * @param operation The operation to execute
20
- * @param context The execution context (client info or server info)
21
- * @param options Operation options including timeout and retry settings
22
- * @returns The result of the operation
23
- */
24
- export declare function executeOperation<T>(operation: () => Promise<T>, contextName: string, options?: OperationOptions): Promise<T>;
25
- /**
26
- * Executes a client operation with error handling and retry logic
27
- * @param clients Record of client instances
28
- * @param clientName The name of the client to use
29
- * @param operation The operation to execute
30
- * @param options Operation options including timeout and retry settings
31
- * @param requiredCapability The capability required for this operation
32
- */
33
- export declare function executeClientOperation<T>(clients: OutboundConnections, clientName: string, operation: (clientInfo: OutboundConnection) => Promise<T>, options?: OperationOptions, requiredCapability?: ServerCapability): Promise<T>;
34
- /**
35
- * Executes a server operation with error handling and retry logic
36
- * @param server The server to execute the operation on
37
- * @param operation The operation to execute
38
- * @param options Operation options including timeout and retry settings
39
- */
40
- export declare function executeServerOperation<T>(server: InboundConnection, operation: (server: InboundConnection) => Promise<T>, options?: OperationOptions): Promise<T>;
2
+ import { OutboundConnection, OutboundConnections, OperationOptions, ServerCapability, AuthProviderTransport } from '../types/index.js';
3
+ export declare class ClientManager {
4
+ private static instance;
5
+ private outboundConns;
6
+ private transports;
7
+ private connectionSemaphore;
8
+ private constructor();
9
+ static getOrCreateInstance(): ClientManager;
10
+ static get current(): ClientManager;
11
+ static resetInstance(): void;
12
+ /**
13
+ * Creates a new MCP client instance
14
+ * @returns A new Client instance
15
+ */
16
+ private createClient;
17
+ /**
18
+ * Creates a new MCP client instance for external use (e.g., OAuth testing)
19
+ * @returns A new Client instance
20
+ */
21
+ createClientInstance(): Client;
22
+ /**
23
+ * Creates client instances for all transports with retry logic
24
+ * @param transports Record of transport instances
25
+ * @returns Record of client instances
26
+ */
27
+ createClients(transports: Record<string, AuthProviderTransport>): Promise<OutboundConnections>;
28
+ /**
29
+ * Connects a client to its transport with retry logic and OAuth support
30
+ * @param client The client to connect
31
+ * @param transport The transport to connect to
32
+ * @param name The name of the client for logging
33
+ * @returns The connected client (may be a new instance after retries)
34
+ */
35
+ private connectWithRetry;
36
+ /**
37
+ * Gets a client by name with error handling
38
+ * @param clientName The name of the client to get
39
+ * @returns The client instance
40
+ * @throws ClientNotFoundError if the client is not found
41
+ */
42
+ getClient(clientName: string): OutboundConnection;
43
+ /**
44
+ * Gets all outbound connections
45
+ * @returns Map of all outbound connections
46
+ */
47
+ getClients(): OutboundConnections;
48
+ /**
49
+ * Executes a client operation with error handling and retry logic
50
+ * @param clientName The name of the client to use
51
+ * @param operation The operation to execute
52
+ * @param options Operation options including timeout and retry settings
53
+ * @param requiredCapability The capability required for this operation
54
+ */
55
+ executeClientOperation<T>(clientName: string, operation: (clientInfo: OutboundConnection) => Promise<T>, options?: OperationOptions, requiredCapability?: ServerCapability): Promise<T>;
56
+ }
41
57
  /**
42
58
  * Custom error class for OAuth authorization required
43
59
  */
@@ -1 +1 @@
1
- {"version":3,"file":"clientManager.d.ts","sourceRoot":"","sources":["../../../src/core/client/clientManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAQnE,OAAO,EAEL,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACtB,MAAM,mBAAmB,CAAC;AAG3B;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAkEnH;AA4DD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,GAAG,kBAAkB,CAM9F;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,CAAC,CAAC,CA2BZ;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,OAAO,EAAE,mBAAmB,EAC5B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,CAAC,UAAU,EAAE,kBAAkB,KAAK,OAAO,CAAC,CAAC,CAAC,EACzD,OAAO,GAAE,gBAAqB,EAC9B,kBAAkB,CAAC,EAAE,gBAAgB,GACpC,OAAO,CAAC,CAAC,CAAC,CAQZ;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,CAAC,CAAC,EACpD,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAElC,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE,MAAM;gBADd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM;CAKxB"}
1
+ {"version":3,"file":"clientManager.d.ts","sourceRoot":"","sources":["../../../src/core/client/clientManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAMnE,OAAO,EAEL,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACtB,MAAM,mBAAmB,CAAC;AAI3B,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,UAAU,CAA6C;IAC/D,OAAO,CAAC,mBAAmB,CAAyC;IAEpE,OAAO;WAEO,mBAAmB,IAAI,aAAa;IAOlD,WAAkB,OAAO,IAAI,aAAa,CAEzC;WAGa,aAAa,IAAI,IAAI;IAInC;;;OAGG;IACH,OAAO,CAAC,YAAY;IAYpB;;;OAGG;IACI,oBAAoB,IAAI,MAAM;IAIrC;;;;OAIG;IACU,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAyE3G;;;;;;OAMG;YACW,gBAAgB;IA+C9B;;;;;OAKG;IACI,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB;IAQxD;;;OAGG;IACI,UAAU,IAAI,mBAAmB;IAIxC;;;;;;OAMG;IACU,sBAAsB,CAAC,CAAC,EACnC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,CAAC,UAAU,EAAE,kBAAkB,KAAK,OAAO,CAAC,CAAC,CAAC,EACzD,OAAO,GAAE,gBAAqB,EAC9B,kBAAkB,CAAC,EAAE,gBAAgB,GACpC,OAAO,CAAC,CAAC,CAAC;CAad;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAElC,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE,MAAM;gBADd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM;CAKxB"}
@@ -1,197 +1,206 @@
1
- import { ErrorCode } from '@modelcontextprotocol/sdk/types.js';
1
+ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
2
2
  import { UnauthorizedError } from '@modelcontextprotocol/sdk/client/auth.js';
3
- import createClient from './clientFactory.js';
4
3
  import logger from '../../logger/logger.js';
5
- import { CONNECTION_RETRY, MCP_SERVER_NAME } from '../../constants.js';
6
- import { ClientConnectionError, ClientNotFoundError, MCPError, CapabilityError } from '../../utils/errorTypes.js';
4
+ import { CONNECTION_RETRY, MCP_SERVER_NAME, MCP_SERVER_VERSION, MCP_CLIENT_CAPABILITIES } from '../../constants.js';
5
+ import { ClientConnectionError, ClientNotFoundError, CapabilityError } from '../../utils/errorTypes.js';
7
6
  import { ClientStatus, } from '../types/index.js';
8
7
  import { AgentConfigManager } from '../server/agentConfig.js';
9
- /**
10
- * Creates client instances for all transports with retry logic
11
- * @param transports Record of transport instances
12
- * @returns Record of client instances
13
- */
14
- export async function createClients(transports) {
15
- const clients = new Map();
16
- for (const [name, transport] of Object.entries(transports)) {
17
- logger.info(`Creating client for ${name}`);
18
- try {
19
- const client = await createClient();
20
- // Connect with retry logic
21
- const connectedClient = await connectWithRetry(client, transport, name);
22
- clients.set(name, {
23
- name,
24
- transport,
25
- client: connectedClient,
26
- status: ClientStatus.Connected,
27
- lastConnected: new Date(),
28
- });
29
- logger.info(`Client created for ${name}`);
30
- connectedClient.onclose = () => {
31
- const clientInfo = clients.get(name);
32
- if (clientInfo) {
33
- clientInfo.status = ClientStatus.Disconnected;
34
- }
35
- logger.info(`Client ${name} disconnected`);
36
- };
8
+ import { executeOperation } from '../../utils/operationExecution.js';
9
+ export class ClientManager {
10
+ static instance;
11
+ outboundConns = new Map();
12
+ transports = {};
13
+ connectionSemaphore = new Map();
14
+ constructor() { }
15
+ static getOrCreateInstance() {
16
+ if (!ClientManager.instance) {
17
+ ClientManager.instance = new ClientManager();
37
18
  }
38
- catch (error) {
39
- if (error instanceof OAuthRequiredError) {
40
- // Handle OAuth required - set client to AwaitingOAuth status
41
- logger.info(`OAuth authorization required for ${name}`);
42
- // Try to get authorization URL from OAuth provider
43
- let authorizationUrl;
44
- try {
45
- // Extract OAuth provider from transport if available
46
- const oauthProvider = transport.oauthProvider;
47
- if (oauthProvider && typeof oauthProvider.getAuthorizationUrl === 'function') {
48
- authorizationUrl = oauthProvider.getAuthorizationUrl();
49
- }
50
- }
51
- catch (urlError) {
52
- logger.warn(`Could not extract authorization URL for ${name}:`, urlError);
53
- }
54
- clients.set(name, {
19
+ return ClientManager.instance;
20
+ }
21
+ static get current() {
22
+ return ClientManager.instance;
23
+ }
24
+ // Test utility method to reset singleton state
25
+ static resetInstance() {
26
+ ClientManager.instance = undefined;
27
+ }
28
+ /**
29
+ * Creates a new MCP client instance
30
+ * @returns A new Client instance
31
+ */
32
+ createClient() {
33
+ return new Client({
34
+ name: MCP_SERVER_NAME,
35
+ version: MCP_SERVER_VERSION,
36
+ }, {
37
+ capabilities: MCP_CLIENT_CAPABILITIES,
38
+ });
39
+ }
40
+ /**
41
+ * Creates a new MCP client instance for external use (e.g., OAuth testing)
42
+ * @returns A new Client instance
43
+ */
44
+ createClientInstance() {
45
+ return this.createClient();
46
+ }
47
+ /**
48
+ * Creates client instances for all transports with retry logic
49
+ * @param transports Record of transport instances
50
+ * @returns Record of client instances
51
+ */
52
+ async createClients(transports) {
53
+ this.transports = transports;
54
+ this.outboundConns.clear();
55
+ for (const [name, transport] of Object.entries(transports)) {
56
+ logger.info(`Creating client for ${name}`);
57
+ try {
58
+ const client = this.createClient();
59
+ // Connect with retry logic
60
+ const connectedClient = await this.connectWithRetry(client, transport, name);
61
+ this.outboundConns.set(name, {
55
62
  name,
56
63
  transport,
57
- client: error.client,
58
- status: ClientStatus.AwaitingOAuth,
59
- authorizationUrl,
60
- oauthStartTime: new Date(),
64
+ client: connectedClient,
65
+ status: ClientStatus.Connected,
66
+ lastConnected: new Date(),
61
67
  });
68
+ logger.info(`Client created for ${name}`);
69
+ connectedClient.onclose = () => {
70
+ const clientInfo = this.outboundConns.get(name);
71
+ if (clientInfo) {
72
+ clientInfo.status = ClientStatus.Disconnected;
73
+ }
74
+ logger.info(`Client ${name} disconnected`);
75
+ };
76
+ connectedClient.onerror = (error) => {
77
+ logger.error(`Client ${name} error: ${error}`);
78
+ };
62
79
  }
63
- else {
64
- logger.error(`Failed to create client for ${name}: ${error}`);
65
- clients.set(name, {
66
- name,
67
- transport,
68
- client: await createClient(),
69
- status: ClientStatus.Error,
70
- lastError: error instanceof Error ? error : new Error(String(error)),
71
- });
80
+ catch (error) {
81
+ if (error instanceof OAuthRequiredError) {
82
+ // Handle OAuth required - set client to AwaitingOAuth status
83
+ logger.info(`OAuth authorization required for ${name}`);
84
+ // Try to get authorization URL from OAuth provider
85
+ let authorizationUrl;
86
+ try {
87
+ // Extract OAuth provider from transport if available
88
+ const oauthProvider = transport.oauthProvider;
89
+ if (oauthProvider && typeof oauthProvider.getAuthorizationUrl === 'function') {
90
+ authorizationUrl = oauthProvider.getAuthorizationUrl();
91
+ }
92
+ }
93
+ catch (urlError) {
94
+ logger.warn(`Could not extract authorization URL for ${name}:`, urlError);
95
+ }
96
+ this.outboundConns.set(name, {
97
+ name,
98
+ transport,
99
+ client: error.client,
100
+ status: ClientStatus.AwaitingOAuth,
101
+ authorizationUrl,
102
+ oauthStartTime: new Date(),
103
+ });
104
+ }
105
+ else {
106
+ logger.error(`Failed to create client for ${name}: ${error}`);
107
+ this.outboundConns.set(name, {
108
+ name,
109
+ transport,
110
+ client: this.createClient(),
111
+ status: ClientStatus.Error,
112
+ lastError: error instanceof Error ? error : new Error(String(error)),
113
+ });
114
+ }
72
115
  }
73
116
  }
117
+ return this.outboundConns;
74
118
  }
75
- return clients;
76
- }
77
- /**
78
- * Connects a client to its transport with retry logic and OAuth support
79
- * @param client The client to connect
80
- * @param transport The transport to connect to
81
- * @param name The name of the client for logging
82
- * @returns The connected client (may be a new instance after retries)
83
- */
84
- async function connectWithRetry(client, transport, name) {
85
- let retryDelay = CONNECTION_RETRY.INITIAL_DELAY_MS;
86
- let currentClient = client;
87
- for (let i = 0; i < CONNECTION_RETRY.MAX_ATTEMPTS; i++) {
88
- try {
89
- await currentClient.connect(transport);
90
- const sv = await currentClient.getServerVersion();
91
- if (sv?.name === MCP_SERVER_NAME) {
92
- throw new ClientConnectionError(name, new Error('Aborted to prevent circular dependency'));
93
- }
94
- logger.info(`Successfully connected to ${name} with server ${sv?.name} version ${sv?.version}`);
95
- return currentClient;
96
- }
97
- catch (error) {
98
- // Handle OAuth authorization flow (managed by SDK)
99
- if (error instanceof UnauthorizedError) {
100
- const serverConfig = AgentConfigManager.getInstance().getConfig();
101
- logger.info(`OAuth authorization required for ${name}. Visit http://localhost:${serverConfig.port}/oauth to authorize`);
102
- // Throw special error that includes OAuth info
103
- throw new OAuthRequiredError(name, currentClient);
119
+ /**
120
+ * Connects a client to its transport with retry logic and OAuth support
121
+ * @param client The client to connect
122
+ * @param transport The transport to connect to
123
+ * @param name The name of the client for logging
124
+ * @returns The connected client (may be a new instance after retries)
125
+ */
126
+ async connectWithRetry(client, transport, name) {
127
+ let retryDelay = CONNECTION_RETRY.INITIAL_DELAY_MS;
128
+ let currentClient = client;
129
+ for (let i = 0; i < CONNECTION_RETRY.MAX_ATTEMPTS; i++) {
130
+ try {
131
+ await currentClient.connect(transport);
132
+ const sv = await currentClient.getServerVersion();
133
+ if (sv?.name === MCP_SERVER_NAME) {
134
+ throw new ClientConnectionError(name, new Error('Aborted to prevent circular dependency'));
135
+ }
136
+ logger.info(`Successfully connected to ${name} with server ${sv?.name} version ${sv?.version}`);
137
+ return currentClient;
104
138
  }
105
- // Handle other connection errors
106
- else {
107
- const errorMessage = error instanceof Error ? error.message : String(error);
108
- logger.error(`Failed to connect to ${name}: ${errorMessage}`);
109
- if (i < CONNECTION_RETRY.MAX_ATTEMPTS - 1) {
110
- logger.info(`Retrying in ${retryDelay}ms...`);
111
- await new Promise((resolve) => setTimeout(resolve, retryDelay));
112
- retryDelay *= 2; // Exponential backoff
113
- // Create a new client for retry to avoid "already started" errors
114
- currentClient = await createClient();
139
+ catch (error) {
140
+ // Handle OAuth authorization flow (managed by SDK)
141
+ if (error instanceof UnauthorizedError) {
142
+ const configManager = AgentConfigManager.getInstance();
143
+ logger.info(`OAuth authorization required for ${name}. Visit ${configManager.getUrl()}/oauth to authorize`);
144
+ // Throw special error that includes OAuth info
145
+ throw new OAuthRequiredError(name, currentClient);
115
146
  }
147
+ // Handle other connection errors
116
148
  else {
117
- throw new ClientConnectionError(name, error instanceof Error ? error : new Error(String(error)));
149
+ const errorMessage = error instanceof Error ? error.message : String(error);
150
+ logger.error(`Failed to connect to ${name}: ${errorMessage}`);
151
+ if (i < CONNECTION_RETRY.MAX_ATTEMPTS - 1) {
152
+ logger.info(`Retrying in ${retryDelay}ms...`);
153
+ await new Promise((resolve) => setTimeout(resolve, retryDelay));
154
+ retryDelay *= 2; // Exponential backoff
155
+ // Create a new client for retry to avoid "already started" errors
156
+ currentClient = this.createClient();
157
+ }
158
+ else {
159
+ throw new ClientConnectionError(name, error instanceof Error ? error : new Error(String(error)));
160
+ }
118
161
  }
119
162
  }
120
163
  }
164
+ // This should never be reached due to the throw in the else block above
165
+ throw new ClientConnectionError(name, new Error('Max retries exceeded'));
121
166
  }
122
- // This should never be reached due to the throw in the else block above
123
- throw new ClientConnectionError(name, new Error('Max retries exceeded'));
124
- }
125
- // OAuth authorization flow is now handled by the SDK's built-in implementation
126
- /**
127
- * Gets a client by name with error handling
128
- * @param clients Record of client instances
129
- * @param clientName The name of the client to get
130
- * @returns The client instance
131
- * @throws ClientNotFoundError if the client is not found
132
- */
133
- export function getClient(clients, clientName) {
134
- const client = clients.get(clientName);
135
- if (!client) {
136
- throw new ClientNotFoundError(clientName);
137
- }
138
- return client;
139
- }
140
- /**
141
- * Executes an operation with error handling and retry logic
142
- * @param operation The operation to execute
143
- * @param context The execution context (client info or server info)
144
- * @param options Operation options including timeout and retry settings
145
- * @returns The result of the operation
146
- */
147
- export async function executeOperation(operation, contextName, options = {}) {
148
- const { retryCount = 0, retryDelay = 1000 } = options;
149
- let lastError;
150
- for (let i = 0; i <= retryCount; i++) {
151
- try {
152
- return await operation();
153
- }
154
- catch (error) {
155
- lastError = error instanceof Error ? error : new Error(String(error));
156
- if (i < retryCount) {
157
- logger.info(`Retrying operation ${operation.name} on ${contextName} after ${retryDelay}ms`);
158
- await new Promise((resolve) => setTimeout(resolve, retryDelay));
159
- }
167
+ /**
168
+ * Gets a client by name with error handling
169
+ * @param clientName The name of the client to get
170
+ * @returns The client instance
171
+ * @throws ClientNotFoundError if the client is not found
172
+ */
173
+ getClient(clientName) {
174
+ const client = this.outboundConns.get(clientName);
175
+ if (!client) {
176
+ throw new ClientNotFoundError(clientName);
160
177
  }
178
+ return client;
161
179
  }
162
- // If we get here, we've exhausted all retries
163
- logger.error(`Operation failed on ${contextName} after ${retryCount + 1} attempts: ${lastError}`);
164
- if (lastError instanceof MCPError) {
165
- throw lastError;
180
+ /**
181
+ * Gets all outbound connections
182
+ * @returns Map of all outbound connections
183
+ */
184
+ getClients() {
185
+ return this.outboundConns;
166
186
  }
167
- const mcpError = new MCPError(`Error executing operation on ${contextName}`, ErrorCode.InternalError, {
168
- originalError: lastError,
169
- });
170
- throw mcpError;
171
- }
172
- /**
173
- * Executes a client operation with error handling and retry logic
174
- * @param clients Record of client instances
175
- * @param clientName The name of the client to use
176
- * @param operation The operation to execute
177
- * @param options Operation options including timeout and retry settings
178
- * @param requiredCapability The capability required for this operation
179
- */
180
- export async function executeClientOperation(clients, clientName, operation, options = {}, requiredCapability) {
181
- const clientInfo = getClient(clients, clientName);
182
- if (requiredCapability && !clientInfo.capabilities?.[requiredCapability]) {
183
- throw new CapabilityError(clientName, String(requiredCapability));
187
+ /**
188
+ * Executes a client operation with error handling and retry logic
189
+ * @param clientName The name of the client to use
190
+ * @param operation The operation to execute
191
+ * @param options Operation options including timeout and retry settings
192
+ * @param requiredCapability The capability required for this operation
193
+ */
194
+ async executeClientOperation(clientName, operation, options = {}, requiredCapability) {
195
+ const outboundConn = this.getClient(clientName);
196
+ if (outboundConn.status !== ClientStatus.Connected || !outboundConn.client.transport) {
197
+ throw new ClientConnectionError(clientName, new Error('Client not connected'));
198
+ }
199
+ if (requiredCapability && !outboundConn.capabilities?.[requiredCapability]) {
200
+ throw new CapabilityError(clientName, String(requiredCapability));
201
+ }
202
+ return executeOperation(() => operation(outboundConn), `client ${clientName}`, options);
184
203
  }
185
- return executeOperation(() => operation(clientInfo), `client ${clientName}`, options);
186
- }
187
- /**
188
- * Executes a server operation with error handling and retry logic
189
- * @param server The server to execute the operation on
190
- * @param operation The operation to execute
191
- * @param options Operation options including timeout and retry settings
192
- */
193
- export async function executeServerOperation(server, operation, options = {}) {
194
- return executeOperation(() => operation(server), 'server', options);
195
204
  }
196
205
  /**
197
206
  * Custom error class for OAuth authorization required
@@ -1 +1 @@
1
- {"version":3,"file":"clientManager.js","sourceRoot":"","sources":["../../../src/core/client/clientManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clientManager.js","sourceRoot":"","sources":["../../../src/core/client/clientManager.ts"],"names":[],"mappings":"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"}