@juspay/neurolink 6.1.0 → 6.2.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 (283) hide show
  1. package/CHANGELOG.md +10 -6
  2. package/dist/cli/commands/config.d.ts +13 -13
  3. package/dist/cli/index.js +3 -9
  4. package/dist/core/analytics.d.ts +11 -1
  5. package/dist/core/analytics.js +2 -2
  6. package/dist/core/base-provider.js +4 -18
  7. package/dist/core/dynamic-models.d.ts +8 -8
  8. package/dist/core/factory.js +3 -11
  9. package/dist/index.d.ts +2 -4
  10. package/dist/index.js +2 -11
  11. package/dist/lib/core/analytics.d.ts +11 -1
  12. package/dist/lib/core/analytics.js +2 -2
  13. package/dist/lib/core/base-provider.js +4 -18
  14. package/dist/lib/core/dynamic-models.d.ts +8 -8
  15. package/dist/lib/core/factory.js +3 -11
  16. package/dist/lib/index.d.ts +2 -4
  17. package/dist/lib/index.js +2 -11
  18. package/dist/lib/mcp/factory.d.ts +1 -1
  19. package/dist/lib/mcp/index.d.ts +7 -19
  20. package/dist/lib/mcp/index.js +15 -56
  21. package/dist/lib/neurolink.d.ts +1 -9
  22. package/dist/lib/neurolink.js +21 -70
  23. package/dist/lib/providers/amazon-bedrock.js +5 -16
  24. package/dist/lib/providers/anthropic-baseprovider.js +3 -21
  25. package/dist/lib/providers/anthropic.js +4 -7
  26. package/dist/lib/providers/azure-openai.js +4 -2
  27. package/dist/lib/providers/google-vertex.js +5 -9
  28. package/dist/lib/providers/huggingFace.js +5 -10
  29. package/dist/lib/providers/mistral.js +5 -8
  30. package/dist/lib/providers/openAI.js +4 -7
  31. package/dist/lib/utils/providerConfig.d.ts +117 -0
  32. package/dist/lib/utils/providerConfig.js +353 -0
  33. package/dist/lib/utils/providerUtils.d.ts +2 -1
  34. package/dist/lib/utils/providerUtils.js +53 -36
  35. package/dist/lib/utils/timeout.d.ts +72 -1
  36. package/dist/lib/utils/timeout.js +203 -2
  37. package/dist/mcp/factory.d.ts +1 -1
  38. package/dist/mcp/index.d.ts +7 -19
  39. package/dist/mcp/index.js +15 -56
  40. package/dist/neurolink.d.ts +1 -9
  41. package/dist/neurolink.js +21 -70
  42. package/dist/providers/amazon-bedrock.js +5 -16
  43. package/dist/providers/anthropic-baseprovider.js +3 -21
  44. package/dist/providers/anthropic.js +4 -7
  45. package/dist/providers/azure-openai.js +4 -2
  46. package/dist/providers/google-vertex.js +5 -9
  47. package/dist/providers/huggingFace.js +5 -10
  48. package/dist/providers/mistral.js +5 -8
  49. package/dist/providers/openAI.js +4 -7
  50. package/dist/utils/providerConfig.d.ts +117 -0
  51. package/dist/utils/providerConfig.js +353 -0
  52. package/dist/utils/providerUtils.d.ts +2 -1
  53. package/dist/utils/providerUtils.js +53 -36
  54. package/dist/utils/timeout.d.ts +72 -1
  55. package/dist/utils/timeout.js +203 -2
  56. package/package.json +1 -1
  57. package/dist/chat/client-utils.d.ts +0 -95
  58. package/dist/chat/client-utils.js +0 -315
  59. package/dist/chat/index.d.ts +0 -24
  60. package/dist/chat/index.js +0 -33
  61. package/dist/chat/session-storage.d.ts +0 -77
  62. package/dist/chat/session-storage.js +0 -233
  63. package/dist/chat/session.d.ts +0 -96
  64. package/dist/chat/session.js +0 -257
  65. package/dist/chat/sse-handler.d.ts +0 -49
  66. package/dist/chat/sse-handler.js +0 -259
  67. package/dist/chat/types.d.ts +0 -74
  68. package/dist/chat/types.js +0 -5
  69. package/dist/chat/websocket-chat-handler.d.ts +0 -37
  70. package/dist/chat/websocket-chat-handler.js +0 -262
  71. package/dist/cli/commands/mcp.d.ts +0 -20
  72. package/dist/cli/commands/mcp.js +0 -1272
  73. package/dist/core/defaults.d.ts +0 -19
  74. package/dist/core/defaults.js +0 -29
  75. package/dist/core/evaluation-config.d.ts +0 -29
  76. package/dist/core/evaluation-config.js +0 -144
  77. package/dist/factories/compatibility-factory.d.ts +0 -35
  78. package/dist/factories/compatibility-factory.js +0 -71
  79. package/dist/factories/provider-generate-factory.d.ts +0 -20
  80. package/dist/factories/provider-generate-factory.js +0 -93
  81. package/dist/lib/chat/client-utils.d.ts +0 -95
  82. package/dist/lib/chat/client-utils.js +0 -315
  83. package/dist/lib/chat/index.d.ts +0 -24
  84. package/dist/lib/chat/index.js +0 -33
  85. package/dist/lib/chat/session-storage.d.ts +0 -77
  86. package/dist/lib/chat/session-storage.js +0 -233
  87. package/dist/lib/chat/session.d.ts +0 -96
  88. package/dist/lib/chat/session.js +0 -257
  89. package/dist/lib/chat/sse-handler.d.ts +0 -49
  90. package/dist/lib/chat/sse-handler.js +0 -259
  91. package/dist/lib/chat/types.d.ts +0 -74
  92. package/dist/lib/chat/types.js +0 -5
  93. package/dist/lib/chat/websocket-chat-handler.d.ts +0 -37
  94. package/dist/lib/chat/websocket-chat-handler.js +0 -262
  95. package/dist/lib/core/defaults.d.ts +0 -19
  96. package/dist/lib/core/defaults.js +0 -29
  97. package/dist/lib/core/evaluation-config.d.ts +0 -29
  98. package/dist/lib/core/evaluation-config.js +0 -144
  99. package/dist/lib/factories/compatibility-factory.d.ts +0 -35
  100. package/dist/lib/factories/compatibility-factory.js +0 -71
  101. package/dist/lib/factories/provider-generate-factory.d.ts +0 -20
  102. package/dist/lib/factories/provider-generate-factory.js +0 -93
  103. package/dist/lib/mcp/adapters/plugin-bridge.d.ts +0 -40
  104. package/dist/lib/mcp/adapters/plugin-bridge.js +0 -89
  105. package/dist/lib/mcp/auto-discovery.d.ts +0 -62
  106. package/dist/lib/mcp/auto-discovery.js +0 -149
  107. package/dist/lib/mcp/client.d.ts +0 -68
  108. package/dist/lib/mcp/client.js +0 -248
  109. package/dist/lib/mcp/config.d.ts +0 -31
  110. package/dist/lib/mcp/config.js +0 -99
  111. package/dist/lib/mcp/context-manager.d.ts +0 -171
  112. package/dist/lib/mcp/context-manager.js +0 -362
  113. package/dist/lib/mcp/contracts/mcp-contract.d.ts +0 -169
  114. package/dist/lib/mcp/contracts/mcp-contract.js +0 -58
  115. package/dist/lib/mcp/core/plugin-manager.d.ts +0 -46
  116. package/dist/lib/mcp/core/plugin-manager.js +0 -110
  117. package/dist/lib/mcp/demo/plugin-demo.d.ts +0 -20
  118. package/dist/lib/mcp/demo/plugin-demo.js +0 -118
  119. package/dist/lib/mcp/dynamic-chain-executor.d.ts +0 -225
  120. package/dist/lib/mcp/dynamic-chain-executor.js +0 -489
  121. package/dist/lib/mcp/dynamic-orchestrator.d.ts +0 -115
  122. package/dist/lib/mcp/dynamic-orchestrator.js +0 -351
  123. package/dist/lib/mcp/ecosystem.d.ts +0 -75
  124. package/dist/lib/mcp/ecosystem.js +0 -161
  125. package/dist/lib/mcp/error-manager.d.ts +0 -254
  126. package/dist/lib/mcp/error-manager.js +0 -501
  127. package/dist/lib/mcp/error-recovery.d.ts +0 -159
  128. package/dist/lib/mcp/error-recovery.js +0 -405
  129. package/dist/lib/mcp/external-client.d.ts +0 -88
  130. package/dist/lib/mcp/external-client.js +0 -331
  131. package/dist/lib/mcp/external-manager.d.ts +0 -112
  132. package/dist/lib/mcp/external-manager.js +0 -308
  133. package/dist/lib/mcp/function-calling.d.ts +0 -65
  134. package/dist/lib/mcp/function-calling.js +0 -642
  135. package/dist/lib/mcp/health-monitor.d.ts +0 -257
  136. package/dist/lib/mcp/health-monitor.js +0 -630
  137. package/dist/lib/mcp/initialize-tools.d.ts +0 -29
  138. package/dist/lib/mcp/initialize-tools.js +0 -261
  139. package/dist/lib/mcp/initialize.d.ts +0 -18
  140. package/dist/lib/mcp/initialize.js +0 -62
  141. package/dist/lib/mcp/manager.d.ts +0 -68
  142. package/dist/lib/mcp/manager.js +0 -176
  143. package/dist/lib/mcp/neurolink-mcp-client.d.ts +0 -97
  144. package/dist/lib/mcp/neurolink-mcp-client.js +0 -462
  145. package/dist/lib/mcp/orchestrator.d.ts +0 -302
  146. package/dist/lib/mcp/orchestrator.js +0 -703
  147. package/dist/lib/mcp/plugin-manager.d.ts +0 -98
  148. package/dist/lib/mcp/plugin-manager.js +0 -296
  149. package/dist/lib/mcp/plugins/core/filesystem-mcp.d.ts +0 -36
  150. package/dist/lib/mcp/plugins/core/filesystem-mcp.js +0 -142
  151. package/dist/lib/mcp/plugins/filesystem-mcp.d.ts +0 -37
  152. package/dist/lib/mcp/plugins/filesystem-mcp.js +0 -54
  153. package/dist/lib/mcp/security-manager.d.ts +0 -87
  154. package/dist/lib/mcp/security-manager.js +0 -344
  155. package/dist/lib/mcp/semaphore-manager.d.ts +0 -137
  156. package/dist/lib/mcp/semaphore-manager.js +0 -329
  157. package/dist/lib/mcp/session-manager.d.ts +0 -187
  158. package/dist/lib/mcp/session-manager.js +0 -400
  159. package/dist/lib/mcp/session-persistence.d.ts +0 -93
  160. package/dist/lib/mcp/session-persistence.js +0 -301
  161. package/dist/lib/mcp/tool-integration.d.ts +0 -58
  162. package/dist/lib/mcp/tool-integration.js +0 -203
  163. package/dist/lib/mcp/transport-manager.d.ts +0 -154
  164. package/dist/lib/mcp/transport-manager.js +0 -334
  165. package/dist/lib/mcp/unified-mcp.d.ts +0 -133
  166. package/dist/lib/mcp/unified-mcp.js +0 -251
  167. package/dist/lib/mcp/unified-registry.d.ts +0 -165
  168. package/dist/lib/mcp/unified-registry.js +0 -538
  169. package/dist/lib/providers/analytics-helper.d.ts +0 -38
  170. package/dist/lib/providers/analytics-helper.js +0 -216
  171. package/dist/lib/providers/function-calling-provider.d.ts +0 -142
  172. package/dist/lib/providers/function-calling-provider.js +0 -630
  173. package/dist/lib/providers/mcp-provider.d.ts +0 -75
  174. package/dist/lib/providers/mcp-provider.js +0 -283
  175. package/dist/lib/providers/timeout-wrapper.d.ts +0 -40
  176. package/dist/lib/providers/timeout-wrapper.js +0 -100
  177. package/dist/lib/sdk/tool-extension.d.ts +0 -181
  178. package/dist/lib/sdk/tool-extension.js +0 -284
  179. package/dist/lib/services/streaming/streaming-manager.d.ts +0 -29
  180. package/dist/lib/services/streaming/streaming-manager.js +0 -245
  181. package/dist/lib/services/types.d.ts +0 -156
  182. package/dist/lib/services/types.js +0 -2
  183. package/dist/lib/services/websocket/websocket-server.d.ts +0 -34
  184. package/dist/lib/services/websocket/websocket-server.js +0 -305
  185. package/dist/lib/utils/provider-validation.d.ts +0 -36
  186. package/dist/lib/utils/provider-validation.js +0 -625
  187. package/dist/lib/utils/providerUtils-fixed.d.ts +0 -8
  188. package/dist/lib/utils/providerUtils-fixed.js +0 -94
  189. package/dist/lib/utils/streaming-utils.d.ts +0 -79
  190. package/dist/lib/utils/streaming-utils.js +0 -198
  191. package/dist/lib/utils/timeout-manager.d.ts +0 -75
  192. package/dist/lib/utils/timeout-manager.js +0 -244
  193. package/dist/mcp/adapters/plugin-bridge.d.ts +0 -40
  194. package/dist/mcp/adapters/plugin-bridge.js +0 -89
  195. package/dist/mcp/auto-discovery.d.ts +0 -62
  196. package/dist/mcp/auto-discovery.js +0 -149
  197. package/dist/mcp/client.d.ts +0 -68
  198. package/dist/mcp/client.js +0 -248
  199. package/dist/mcp/config.d.ts +0 -31
  200. package/dist/mcp/config.js +0 -99
  201. package/dist/mcp/context-manager.d.ts +0 -171
  202. package/dist/mcp/context-manager.js +0 -362
  203. package/dist/mcp/contracts/mcp-contract.d.ts +0 -169
  204. package/dist/mcp/contracts/mcp-contract.js +0 -58
  205. package/dist/mcp/core/plugin-manager.d.ts +0 -46
  206. package/dist/mcp/core/plugin-manager.js +0 -110
  207. package/dist/mcp/demo/plugin-demo.d.ts +0 -20
  208. package/dist/mcp/demo/plugin-demo.js +0 -118
  209. package/dist/mcp/dynamic-chain-executor.d.ts +0 -225
  210. package/dist/mcp/dynamic-chain-executor.js +0 -489
  211. package/dist/mcp/dynamic-orchestrator.d.ts +0 -115
  212. package/dist/mcp/dynamic-orchestrator.js +0 -351
  213. package/dist/mcp/ecosystem.d.ts +0 -75
  214. package/dist/mcp/ecosystem.js +0 -162
  215. package/dist/mcp/error-manager.d.ts +0 -254
  216. package/dist/mcp/error-manager.js +0 -501
  217. package/dist/mcp/error-recovery.d.ts +0 -159
  218. package/dist/mcp/error-recovery.js +0 -405
  219. package/dist/mcp/external-client.d.ts +0 -88
  220. package/dist/mcp/external-client.js +0 -331
  221. package/dist/mcp/external-manager.d.ts +0 -112
  222. package/dist/mcp/external-manager.js +0 -308
  223. package/dist/mcp/function-calling.d.ts +0 -65
  224. package/dist/mcp/function-calling.js +0 -642
  225. package/dist/mcp/health-monitor.d.ts +0 -257
  226. package/dist/mcp/health-monitor.js +0 -630
  227. package/dist/mcp/initialize-tools.d.ts +0 -29
  228. package/dist/mcp/initialize-tools.js +0 -262
  229. package/dist/mcp/initialize.d.ts +0 -18
  230. package/dist/mcp/initialize.js +0 -62
  231. package/dist/mcp/manager.d.ts +0 -68
  232. package/dist/mcp/manager.js +0 -176
  233. package/dist/mcp/neurolink-mcp-client.d.ts +0 -97
  234. package/dist/mcp/neurolink-mcp-client.js +0 -462
  235. package/dist/mcp/orchestrator.d.ts +0 -302
  236. package/dist/mcp/orchestrator.js +0 -703
  237. package/dist/mcp/plugin-manager.d.ts +0 -98
  238. package/dist/mcp/plugin-manager.js +0 -297
  239. package/dist/mcp/plugins/core/filesystem-mcp.d.ts +0 -36
  240. package/dist/mcp/plugins/core/filesystem-mcp.js +0 -142
  241. package/dist/mcp/plugins/core/neurolink-mcp.json +0 -17
  242. package/dist/mcp/plugins/filesystem-mcp.d.ts +0 -37
  243. package/dist/mcp/plugins/filesystem-mcp.js +0 -54
  244. package/dist/mcp/security-manager.d.ts +0 -87
  245. package/dist/mcp/security-manager.js +0 -344
  246. package/dist/mcp/semaphore-manager.d.ts +0 -137
  247. package/dist/mcp/semaphore-manager.js +0 -329
  248. package/dist/mcp/session-manager.d.ts +0 -187
  249. package/dist/mcp/session-manager.js +0 -400
  250. package/dist/mcp/session-persistence.d.ts +0 -93
  251. package/dist/mcp/session-persistence.js +0 -302
  252. package/dist/mcp/tool-integration.d.ts +0 -58
  253. package/dist/mcp/tool-integration.js +0 -203
  254. package/dist/mcp/transport-manager.d.ts +0 -154
  255. package/dist/mcp/transport-manager.js +0 -335
  256. package/dist/mcp/unified-mcp.d.ts +0 -133
  257. package/dist/mcp/unified-mcp.js +0 -251
  258. package/dist/mcp/unified-registry.d.ts +0 -165
  259. package/dist/mcp/unified-registry.js +0 -539
  260. package/dist/providers/analytics-helper.d.ts +0 -38
  261. package/dist/providers/analytics-helper.js +0 -216
  262. package/dist/providers/function-calling-provider.d.ts +0 -142
  263. package/dist/providers/function-calling-provider.js +0 -630
  264. package/dist/providers/mcp-provider.d.ts +0 -75
  265. package/dist/providers/mcp-provider.js +0 -283
  266. package/dist/providers/timeout-wrapper.d.ts +0 -40
  267. package/dist/providers/timeout-wrapper.js +0 -100
  268. package/dist/sdk/tool-extension.d.ts +0 -181
  269. package/dist/sdk/tool-extension.js +0 -284
  270. package/dist/services/streaming/streaming-manager.d.ts +0 -29
  271. package/dist/services/streaming/streaming-manager.js +0 -245
  272. package/dist/services/types.d.ts +0 -156
  273. package/dist/services/types.js +0 -2
  274. package/dist/services/websocket/websocket-server.d.ts +0 -34
  275. package/dist/services/websocket/websocket-server.js +0 -306
  276. package/dist/utils/provider-validation.d.ts +0 -36
  277. package/dist/utils/provider-validation.js +0 -625
  278. package/dist/utils/providerUtils-fixed.d.ts +0 -8
  279. package/dist/utils/providerUtils-fixed.js +0 -94
  280. package/dist/utils/streaming-utils.d.ts +0 -79
  281. package/dist/utils/streaming-utils.js +0 -198
  282. package/dist/utils/timeout-manager.d.ts +0 -75
  283. package/dist/utils/timeout-manager.js +0 -244
@@ -1,154 +0,0 @@
1
- /**
2
- * Transport Manager for MCP connections
3
- * Supports stdio, SSE, and HTTP transports with reconnection logic
4
- */
5
- import { Client } from "@modelcontextprotocol/sdk/client/index.js";
6
- import type { Transport } from "@modelcontextprotocol/sdk/shared/transport.js";
7
- import { z } from "zod";
8
- import { ErrorManager } from "./error-manager.js";
9
- export declare const TransportConfigSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
10
- type: z.ZodLiteral<"stdio">;
11
- command: z.ZodString;
12
- args: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
13
- cwd: z.ZodOptional<z.ZodString>;
14
- env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
15
- }, "strip", z.ZodTypeAny, {
16
- type: "stdio";
17
- command: string;
18
- args?: string[] | undefined;
19
- cwd?: string | undefined;
20
- env?: Record<string, string> | undefined;
21
- }, {
22
- type: "stdio";
23
- command: string;
24
- args?: string[] | undefined;
25
- cwd?: string | undefined;
26
- env?: Record<string, string> | undefined;
27
- }>, z.ZodObject<{
28
- type: z.ZodLiteral<"sse">;
29
- url: z.ZodString;
30
- headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
31
- timeout: z.ZodDefault<z.ZodNumber>;
32
- maxRetryTime: z.ZodDefault<z.ZodNumber>;
33
- withCredentials: z.ZodDefault<z.ZodBoolean>;
34
- }, "strip", z.ZodTypeAny, {
35
- type: "sse";
36
- timeout: number;
37
- url: string;
38
- maxRetryTime: number;
39
- withCredentials: boolean;
40
- headers?: Record<string, string> | undefined;
41
- }, {
42
- type: "sse";
43
- url: string;
44
- timeout?: number | undefined;
45
- headers?: Record<string, string> | undefined;
46
- maxRetryTime?: number | undefined;
47
- withCredentials?: boolean | undefined;
48
- }>, z.ZodObject<{
49
- type: z.ZodLiteral<"http">;
50
- url: z.ZodString;
51
- headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
52
- timeout: z.ZodDefault<z.ZodNumber>;
53
- }, "strip", z.ZodTypeAny, {
54
- type: "http";
55
- timeout: number;
56
- url: string;
57
- headers?: Record<string, string> | undefined;
58
- }, {
59
- type: "http";
60
- url: string;
61
- timeout?: number | undefined;
62
- headers?: Record<string, string> | undefined;
63
- }>]>;
64
- export type TransportConfig = z.infer<typeof TransportConfigSchema>;
65
- export interface TransportStatus {
66
- connected: boolean;
67
- type: "stdio" | "sse" | "http";
68
- lastConnected?: Date;
69
- lastError?: Error;
70
- reconnectAttempts: number;
71
- }
72
- export interface TransportManagerOptions {
73
- autoReconnect?: boolean;
74
- maxReconnectAttempts?: number;
75
- reconnectDelay?: number;
76
- healthCheckInterval?: number;
77
- jitterEnabled?: boolean;
78
- maxJitter?: number;
79
- }
80
- /**
81
- * Manages MCP transport connections with automatic reconnection and health monitoring
82
- */
83
- export declare class TransportManager {
84
- private errorManager;
85
- private options;
86
- private client?;
87
- private config?;
88
- private status;
89
- private reconnectTimer?;
90
- private healthCheckTimer?;
91
- private reconnectPromise?;
92
- constructor(errorManager: ErrorManager, options?: TransportManagerOptions);
93
- /**
94
- * Connect to MCP server using specified transport
95
- */
96
- connect(config: TransportConfig): Promise<Client>;
97
- /**
98
- * Create transport based on configuration
99
- */
100
- createTransport(config: TransportConfig): Promise<Transport>;
101
- /**
102
- * Create stdio transport
103
- */
104
- private createStdioTransport;
105
- /**
106
- * Create SSE transport with reconnection support
107
- */
108
- private createSSETransport;
109
- /**
110
- * Create HTTP transport
111
- */
112
- private createHTTPTransport;
113
- /**
114
- * Set up health monitoring
115
- */
116
- private setupHealthMonitoring;
117
- /**
118
- * Handle connection errors
119
- */
120
- private handleConnectionError;
121
- /**
122
- * Schedule reconnection attempt
123
- */
124
- private scheduleReconnect;
125
- /**
126
- * Calculate reconnect delay with exponential backoff
127
- */
128
- private calculateReconnectDelay;
129
- /**
130
- * Reconnect to server
131
- */
132
- reconnect(): Promise<void>;
133
- private _reconnect;
134
- /**
135
- * Disconnect from server
136
- */
137
- disconnect(): Promise<void>;
138
- /**
139
- * Get current transport status
140
- */
141
- getStatus(): TransportStatus;
142
- /**
143
- * Get connected client
144
- */
145
- getClient(): Client | undefined;
146
- /**
147
- * Check if connected
148
- */
149
- isConnected(): boolean;
150
- /**
151
- * Reset reconnection attempts
152
- */
153
- resetReconnectAttempts(): void;
154
- }
@@ -1,334 +0,0 @@
1
- /**
2
- * Transport Manager for MCP connections
3
- * Supports stdio, SSE, and HTTP transports with reconnection logic
4
- */
5
- import { Client } from "@modelcontextprotocol/sdk/client/index.js";
6
- import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
7
- import { z } from "zod";
8
- import { ErrorCategory, ErrorSeverity } from "./error-manager.js";
9
- // Transport configuration schemas
10
- export const TransportConfigSchema = z.discriminatedUnion("type", [
11
- z.object({
12
- type: z.literal("stdio"),
13
- command: z.string(),
14
- args: z.array(z.string()).optional(),
15
- cwd: z.string().optional(),
16
- env: z.record(z.string()).optional(),
17
- }),
18
- z.object({
19
- type: z.literal("sse"),
20
- url: z.string().url(),
21
- headers: z.record(z.string()).optional(),
22
- timeout: z.number().min(5).default(30),
23
- maxRetryTime: z.number().default(5000),
24
- withCredentials: z.boolean().default(false),
25
- }),
26
- z.object({
27
- type: z.literal("http"),
28
- url: z.string().url(),
29
- headers: z.record(z.string()).optional(),
30
- timeout: z.number().min(5).default(30),
31
- }),
32
- ]);
33
- /**
34
- * Manages MCP transport connections with automatic reconnection and health monitoring
35
- */
36
- export class TransportManager {
37
- errorManager;
38
- options;
39
- client;
40
- config;
41
- status;
42
- reconnectTimer;
43
- healthCheckTimer;
44
- reconnectPromise;
45
- constructor(errorManager, options = {}) {
46
- this.errorManager = errorManager;
47
- this.options = options;
48
- // Initialize default options
49
- this.options = {
50
- jitterEnabled: true,
51
- maxJitter: 1000,
52
- ...this.options,
53
- };
54
- this.status = {
55
- connected: false,
56
- type: "stdio",
57
- reconnectAttempts: 0,
58
- };
59
- // Apply defaults
60
- this.options = {
61
- autoReconnect: true,
62
- maxReconnectAttempts: 5,
63
- reconnectDelay: 1000,
64
- healthCheckInterval: 30000,
65
- ...options,
66
- };
67
- }
68
- /**
69
- * Connect to MCP server using specified transport
70
- */
71
- async connect(config) {
72
- try {
73
- // Validate configuration
74
- const validatedConfig = TransportConfigSchema.parse(config);
75
- this.config = validatedConfig;
76
- this.status.type = validatedConfig.type;
77
- // Disconnect existing client if any
78
- if (this.client) {
79
- await this.disconnect();
80
- }
81
- // Create transport based on type
82
- const transport = await this.createTransport(validatedConfig);
83
- // Create MCP client
84
- this.client = new Client({
85
- name: "neurolink-mcp-client",
86
- version: "1.0.0",
87
- }, {
88
- capabilities: {},
89
- });
90
- // Connect client
91
- await this.client.connect(transport);
92
- // Update status
93
- this.status.connected = true;
94
- this.status.lastConnected = new Date();
95
- this.status.reconnectAttempts = 0;
96
- // Set up health monitoring if enabled
97
- if (this.options.healthCheckInterval &&
98
- this.options.healthCheckInterval > 0) {
99
- this.setupHealthMonitoring();
100
- }
101
- return this.client;
102
- }
103
- catch (error) {
104
- this.handleConnectionError(error);
105
- throw error;
106
- }
107
- }
108
- /**
109
- * Create transport based on configuration
110
- */
111
- async createTransport(config) {
112
- switch (config.type) {
113
- case "stdio":
114
- return this.createStdioTransport(config);
115
- case "sse":
116
- return this.createSSETransport(config);
117
- case "http":
118
- return this.createHTTPTransport(config);
119
- default:
120
- throw new Error(`Unsupported transport type: ${config.type}`);
121
- }
122
- }
123
- /**
124
- * Create stdio transport
125
- */
126
- createStdioTransport(config) {
127
- // Filter out undefined values from process.env
128
- const envWithoutUndefined = Object.fromEntries(Object.entries(process.env).filter(([_, value]) => value !== undefined));
129
- // StdioClientTransport handles process creation internally
130
- return new StdioClientTransport({
131
- command: config.command,
132
- args: config.args ?? [],
133
- env: { ...envWithoutUndefined, ...config.env },
134
- cwd: config.cwd,
135
- });
136
- }
137
- /**
138
- * Create SSE transport with reconnection support
139
- */
140
- async createSSETransport(config) {
141
- // Dynamically import SSE transport
142
- const { SSEClientTransport } = await import("@modelcontextprotocol/sdk/client/sse.js");
143
- // Use ReconnectingEventSource for reliability
144
- const ReconnectingEventSource = await import("reconnecting-eventsource").then((m) => m.default);
145
- return new SSEClientTransport(new URL(config.url), {
146
- requestInit: {
147
- headers: config.headers,
148
- ...(config.timeout && { timeout: config.timeout }),
149
- },
150
- eventSourceInit: {
151
- eventSource: ReconnectingEventSource,
152
- max_retry_time: config.maxRetryTime,
153
- withCredentials: config.withCredentials,
154
- },
155
- });
156
- }
157
- /**
158
- * Create HTTP transport
159
- */
160
- async createHTTPTransport(config) {
161
- // Dynamically import HTTP transport
162
- const httpModule = await import("@modelcontextprotocol/sdk/client/streamableHttp.js");
163
- const HTTPClientTransport = httpModule.default ||
164
- httpModule.HTTPClientTransport;
165
- if (!HTTPClientTransport || typeof HTTPClientTransport !== "function") {
166
- throw new Error("HTTPClientTransport constructor not found");
167
- }
168
- return new HTTPClientTransport(new URL(config.url), {
169
- requestInit: {
170
- headers: config.headers,
171
- timeout: config.timeout * 1000, // Convert seconds to milliseconds
172
- },
173
- });
174
- }
175
- /**
176
- * Set up health monitoring
177
- */
178
- setupHealthMonitoring() {
179
- if (!this.client) {
180
- return;
181
- }
182
- // Clear any existing health check timer
183
- if (this.healthCheckTimer) {
184
- clearInterval(this.healthCheckTimer);
185
- }
186
- // Set up periodic health checks
187
- this.healthCheckTimer = setInterval(async () => {
188
- if (!this.client) {
189
- return;
190
- }
191
- try {
192
- // Simple health check - list tools
193
- await this.client.request({ method: "tools/list" }, z.object({ tools: z.array(z.any()) }));
194
- }
195
- catch (error) {
196
- // Health check failed, trigger reconnection if enabled
197
- if (this.options.autoReconnect && this.config) {
198
- this.handleConnectionError(error);
199
- }
200
- }
201
- }, this.options.healthCheckInterval);
202
- }
203
- /**
204
- * Handle connection errors
205
- */
206
- handleConnectionError(error) {
207
- const err = error instanceof Error ? error : new Error(String(error));
208
- this.status.connected = false;
209
- this.status.lastError = err;
210
- // Record error
211
- this.errorManager.recordError(err, {
212
- category: ErrorCategory.CONNECTION_ERROR,
213
- severity: ErrorSeverity.HIGH,
214
- toolName: "transport-manager",
215
- parameters: {
216
- transport: this.status.type,
217
- reconnectAttempts: this.status.reconnectAttempts,
218
- },
219
- });
220
- // Attempt reconnection if enabled
221
- if (this.options.autoReconnect &&
222
- this.status.reconnectAttempts < this.options.maxReconnectAttempts) {
223
- // Schedule reconnection attempt
224
- this.scheduleReconnect();
225
- }
226
- }
227
- /**
228
- * Schedule reconnection attempt
229
- */
230
- scheduleReconnect() {
231
- if (this.reconnectTimer) {
232
- clearTimeout(this.reconnectTimer);
233
- }
234
- // Increment attempts BEFORE calculating delay (uses updated attempt count)
235
- this.status.reconnectAttempts++;
236
- const delay = this.calculateReconnectDelay();
237
- this.reconnectTimer = setTimeout(() => {
238
- this.reconnect().catch((error) => {
239
- console.error("Reconnection failed:", error);
240
- });
241
- }, delay);
242
- }
243
- /**
244
- * Calculate reconnect delay with exponential backoff
245
- */
246
- calculateReconnectDelay() {
247
- const baseDelay = this.options.reconnectDelay || 1000;
248
- const maxDelay = 30000; // 30 seconds max
249
- const delay = Math.min(baseDelay * Math.pow(2, this.status.reconnectAttempts), maxDelay);
250
- // Add configurable jitter to prevent thundering herd
251
- if (this.options.jitterEnabled === true) {
252
- const maxJitter = this.options.maxJitter || 1000;
253
- return delay + Math.random() * maxJitter;
254
- }
255
- return delay;
256
- }
257
- /**
258
- * Reconnect to server
259
- */
260
- async reconnect() {
261
- // Prevent concurrent reconnection attempts
262
- if (this.reconnectPromise) {
263
- return this.reconnectPromise;
264
- }
265
- this.reconnectPromise = this._reconnect();
266
- try {
267
- await this.reconnectPromise;
268
- }
269
- finally {
270
- this.reconnectPromise = undefined;
271
- }
272
- }
273
- async _reconnect() {
274
- if (!this.config) {
275
- throw new Error("No configuration available for reconnection");
276
- }
277
- try {
278
- await this.connect(this.config);
279
- console.log(`Reconnected successfully after ${this.status.reconnectAttempts} attempts`);
280
- }
281
- catch (error) {
282
- if (this.status.reconnectAttempts >= this.options.maxReconnectAttempts) {
283
- throw new Error(`Max reconnection attempts (${this.options.maxReconnectAttempts}) reached`);
284
- }
285
- throw error;
286
- }
287
- }
288
- /**
289
- * Disconnect from server
290
- */
291
- async disconnect() {
292
- // Clear reconnection timer
293
- if (this.reconnectTimer) {
294
- clearTimeout(this.reconnectTimer);
295
- this.reconnectTimer = undefined;
296
- }
297
- // Stop health monitoring
298
- if (this.healthCheckTimer) {
299
- clearInterval(this.healthCheckTimer);
300
- this.healthCheckTimer = undefined;
301
- }
302
- // Close client connection
303
- if (this.client) {
304
- await this.client.close();
305
- this.client = undefined;
306
- }
307
- // Update status
308
- this.status.connected = false;
309
- }
310
- /**
311
- * Get current transport status
312
- */
313
- getStatus() {
314
- return { ...this.status };
315
- }
316
- /**
317
- * Get connected client
318
- */
319
- getClient() {
320
- return this.client;
321
- }
322
- /**
323
- * Check if connected
324
- */
325
- isConnected() {
326
- return this.status.connected && this.client !== undefined;
327
- }
328
- /**
329
- * Reset reconnection attempts
330
- */
331
- resetReconnectAttempts() {
332
- this.status.reconnectAttempts = 0;
333
- }
334
- }
@@ -1,133 +0,0 @@
1
- /**
2
- * NeuroLink Unified MCP System
3
- * Combines internal MCP servers with external MCP server integration
4
- * Single initialization point for the complete MCP ecosystem
5
- */
6
- import { MCPToolRegistry } from "./tool-registry.js";
7
- import { ExternalMCPManager } from "./external-manager.js";
8
- import type { NeuroLinkExecutionContext, ToolResult } from "./factory.js";
9
- /**
10
- * Unified MCP System Options
11
- */
12
- export interface UnifiedMCPOptions {
13
- configPath?: string;
14
- enableExternalServers?: boolean;
15
- enableInternalServers?: boolean;
16
- autoInitialize?: boolean;
17
- registry?: MCPToolRegistry;
18
- }
19
- /**
20
- * Unified MCP System Status
21
- */
22
- export interface UnifiedMCPStatus {
23
- isInitialized: boolean;
24
- internalServers: {
25
- count: number;
26
- tools: number;
27
- };
28
- externalServers: {
29
- configured: number;
30
- connected: number;
31
- tools: number;
32
- };
33
- totalTools: number;
34
- registryStats: unknown;
35
- }
36
- /**
37
- * Unified MCP System
38
- * Central hub for managing both internal and external MCP servers
39
- */
40
- export declare class UnifiedMCPSystem {
41
- private registry;
42
- private externalManager;
43
- private internalServers;
44
- private isInitialized;
45
- private options;
46
- constructor(options?: UnifiedMCPOptions);
47
- /**
48
- * Initialize the unified MCP system
49
- */
50
- initialize(): Promise<void>;
51
- /**
52
- * Initialize internal MCP servers
53
- */
54
- private initializeInternalServers;
55
- /**
56
- * Initialize external MCP servers
57
- */
58
- private initializeExternalServers;
59
- /**
60
- * Execute a tool from any registered server
61
- */
62
- executeTool(toolName: string, params: unknown, context: NeuroLinkExecutionContext): Promise<ToolResult>;
63
- /**
64
- * List all available tools
65
- */
66
- listTools(criteria?: unknown): Promise<import("./tool-registry.js").ToolInfo[]>;
67
- /**
68
- * Get tool information
69
- */
70
- getToolInfo(toolName: string): {
71
- tool: import("./tool-registry.js").ToolInfo;
72
- server: {
73
- id: string;
74
- };
75
- } | undefined;
76
- /**
77
- * Get registry instance
78
- */
79
- getRegistry(): MCPToolRegistry;
80
- /**
81
- * Get external manager instance
82
- */
83
- getExternalManager(): ExternalMCPManager;
84
- /**
85
- * Get comprehensive status
86
- */
87
- getStatus(): Promise<UnifiedMCPStatus>;
88
- /**
89
- * Refresh external connections
90
- */
91
- refreshExternalServers(): Promise<void>;
92
- /**
93
- * Shutdown the unified MCP system
94
- */
95
- shutdown(): Promise<void>;
96
- /**
97
- * Check if system is initialized
98
- */
99
- isSystemInitialized(): boolean;
100
- }
101
- /**
102
- * Default unified MCP system instance
103
- */
104
- export declare const defaultUnifiedMCP: UnifiedMCPSystem;
105
- /**
106
- * Initialize the default unified MCP system
107
- */
108
- export declare function initializeMCP(options?: UnifiedMCPOptions): Promise<UnifiedMCPSystem>;
109
- /**
110
- * Get the default unified MCP system
111
- */
112
- export declare function getMCPSystem(): UnifiedMCPSystem;
113
- /**
114
- * Execute a tool using the default system
115
- */
116
- export declare function executeMCPTool(toolName: string, params: unknown, context: NeuroLinkExecutionContext): Promise<ToolResult>;
117
- /**
118
- * List all available MCP tools
119
- */
120
- export declare function listMCPTools(criteria?: unknown): Promise<import("./tool-registry.js").ToolInfo[]>;
121
- /**
122
- * Get MCP tool information
123
- */
124
- export declare function getMCPToolInfo(toolName: string): {
125
- tool: import("./tool-registry.js").ToolInfo;
126
- server: {
127
- id: string;
128
- };
129
- } | undefined;
130
- /**
131
- * Get unified MCP system status
132
- */
133
- export declare function getMCPStatus(): Promise<UnifiedMCPStatus>;