@juspay/neurolink 6.1.0 → 6.2.1

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 (303) hide show
  1. package/CHANGELOG.md +16 -6
  2. package/dist/agent/direct-tools.js +6 -5
  3. package/dist/cli/commands/config.d.ts +13 -13
  4. package/dist/cli/index.js +3 -9
  5. package/dist/config/configManager.js +11 -10
  6. package/dist/core/analytics.d.ts +11 -1
  7. package/dist/core/analytics.js +2 -2
  8. package/dist/core/base-provider.js +4 -18
  9. package/dist/core/dynamic-models.d.ts +8 -8
  10. package/dist/core/factory.js +3 -11
  11. package/dist/index.d.ts +2 -4
  12. package/dist/index.js +2 -11
  13. package/dist/lib/agent/direct-tools.js +6 -5
  14. package/dist/lib/config/configManager.js +11 -10
  15. package/dist/lib/core/analytics.d.ts +11 -1
  16. package/dist/lib/core/analytics.js +2 -2
  17. package/dist/lib/core/base-provider.js +4 -18
  18. package/dist/lib/core/dynamic-models.d.ts +8 -8
  19. package/dist/lib/core/factory.js +3 -11
  20. package/dist/lib/index.d.ts +2 -4
  21. package/dist/lib/index.js +2 -11
  22. package/dist/lib/mcp/factory.d.ts +1 -1
  23. package/dist/lib/mcp/index.d.ts +9 -21
  24. package/dist/lib/mcp/index.js +16 -57
  25. package/dist/lib/mcp/registry.js +1 -1
  26. package/dist/lib/mcp/servers/ai-providers/ai-analysis-tools.js +2 -1
  27. package/dist/lib/mcp/tool-registry.js +1 -1
  28. package/dist/lib/neurolink.d.ts +1 -9
  29. package/dist/lib/neurolink.js +22 -71
  30. package/dist/lib/providers/amazon-bedrock.js +5 -16
  31. package/dist/lib/providers/anthropic-baseprovider.js +3 -21
  32. package/dist/lib/providers/anthropic.js +4 -7
  33. package/dist/lib/providers/azure-openai.js +6 -3
  34. package/dist/lib/providers/google-vertex.js +5 -9
  35. package/dist/lib/providers/huggingFace.js +5 -10
  36. package/dist/lib/providers/mistral.js +5 -8
  37. package/dist/lib/providers/openAI.js +4 -7
  38. package/dist/lib/telemetry/index.js +2 -1
  39. package/dist/lib/utils/logger.d.ts +62 -2
  40. package/dist/lib/utils/logger.js +174 -9
  41. package/dist/lib/utils/providerConfig.d.ts +117 -0
  42. package/dist/lib/utils/providerConfig.js +353 -0
  43. package/dist/lib/utils/providerUtils.d.ts +2 -1
  44. package/dist/lib/utils/providerUtils.js +53 -36
  45. package/dist/lib/utils/timeout.d.ts +72 -1
  46. package/dist/lib/utils/timeout.js +203 -2
  47. package/dist/mcp/factory.d.ts +1 -1
  48. package/dist/mcp/index.d.ts +9 -21
  49. package/dist/mcp/index.js +16 -57
  50. package/dist/mcp/registry.js +1 -1
  51. package/dist/mcp/servers/ai-providers/ai-analysis-tools.js +2 -1
  52. package/dist/mcp/tool-registry.js +1 -1
  53. package/dist/neurolink.d.ts +1 -9
  54. package/dist/neurolink.js +22 -71
  55. package/dist/providers/amazon-bedrock.js +5 -16
  56. package/dist/providers/anthropic-baseprovider.js +3 -21
  57. package/dist/providers/anthropic.js +4 -7
  58. package/dist/providers/azure-openai.js +6 -3
  59. package/dist/providers/google-vertex.js +5 -9
  60. package/dist/providers/huggingFace.js +5 -10
  61. package/dist/providers/mistral.js +5 -8
  62. package/dist/providers/openAI.js +4 -7
  63. package/dist/telemetry/index.js +2 -1
  64. package/dist/utils/logger.d.ts +62 -2
  65. package/dist/utils/logger.js +174 -9
  66. package/dist/utils/providerConfig.d.ts +117 -0
  67. package/dist/utils/providerConfig.js +353 -0
  68. package/dist/utils/providerUtils.d.ts +2 -1
  69. package/dist/utils/providerUtils.js +53 -36
  70. package/dist/utils/timeout.d.ts +72 -1
  71. package/dist/utils/timeout.js +203 -2
  72. package/package.json +1 -1
  73. package/dist/chat/client-utils.d.ts +0 -95
  74. package/dist/chat/client-utils.js +0 -315
  75. package/dist/chat/index.d.ts +0 -24
  76. package/dist/chat/index.js +0 -33
  77. package/dist/chat/session-storage.d.ts +0 -77
  78. package/dist/chat/session-storage.js +0 -233
  79. package/dist/chat/session.d.ts +0 -96
  80. package/dist/chat/session.js +0 -257
  81. package/dist/chat/sse-handler.d.ts +0 -49
  82. package/dist/chat/sse-handler.js +0 -259
  83. package/dist/chat/types.d.ts +0 -74
  84. package/dist/chat/types.js +0 -5
  85. package/dist/chat/websocket-chat-handler.d.ts +0 -37
  86. package/dist/chat/websocket-chat-handler.js +0 -262
  87. package/dist/cli/commands/mcp.d.ts +0 -20
  88. package/dist/cli/commands/mcp.js +0 -1272
  89. package/dist/core/defaults.d.ts +0 -19
  90. package/dist/core/defaults.js +0 -29
  91. package/dist/core/evaluation-config.d.ts +0 -29
  92. package/dist/core/evaluation-config.js +0 -144
  93. package/dist/factories/compatibility-factory.d.ts +0 -35
  94. package/dist/factories/compatibility-factory.js +0 -71
  95. package/dist/factories/provider-generate-factory.d.ts +0 -20
  96. package/dist/factories/provider-generate-factory.js +0 -93
  97. package/dist/lib/chat/client-utils.d.ts +0 -95
  98. package/dist/lib/chat/client-utils.js +0 -315
  99. package/dist/lib/chat/index.d.ts +0 -24
  100. package/dist/lib/chat/index.js +0 -33
  101. package/dist/lib/chat/session-storage.d.ts +0 -77
  102. package/dist/lib/chat/session-storage.js +0 -233
  103. package/dist/lib/chat/session.d.ts +0 -96
  104. package/dist/lib/chat/session.js +0 -257
  105. package/dist/lib/chat/sse-handler.d.ts +0 -49
  106. package/dist/lib/chat/sse-handler.js +0 -259
  107. package/dist/lib/chat/types.d.ts +0 -74
  108. package/dist/lib/chat/types.js +0 -5
  109. package/dist/lib/chat/websocket-chat-handler.d.ts +0 -37
  110. package/dist/lib/chat/websocket-chat-handler.js +0 -262
  111. package/dist/lib/core/defaults.d.ts +0 -19
  112. package/dist/lib/core/defaults.js +0 -29
  113. package/dist/lib/core/evaluation-config.d.ts +0 -29
  114. package/dist/lib/core/evaluation-config.js +0 -144
  115. package/dist/lib/factories/compatibility-factory.d.ts +0 -35
  116. package/dist/lib/factories/compatibility-factory.js +0 -71
  117. package/dist/lib/factories/provider-generate-factory.d.ts +0 -20
  118. package/dist/lib/factories/provider-generate-factory.js +0 -93
  119. package/dist/lib/mcp/adapters/plugin-bridge.d.ts +0 -40
  120. package/dist/lib/mcp/adapters/plugin-bridge.js +0 -89
  121. package/dist/lib/mcp/auto-discovery.d.ts +0 -62
  122. package/dist/lib/mcp/auto-discovery.js +0 -149
  123. package/dist/lib/mcp/client.d.ts +0 -68
  124. package/dist/lib/mcp/client.js +0 -248
  125. package/dist/lib/mcp/config.d.ts +0 -31
  126. package/dist/lib/mcp/config.js +0 -99
  127. package/dist/lib/mcp/context-manager.d.ts +0 -171
  128. package/dist/lib/mcp/context-manager.js +0 -362
  129. package/dist/lib/mcp/contracts/mcp-contract.d.ts +0 -169
  130. package/dist/lib/mcp/contracts/mcp-contract.js +0 -58
  131. package/dist/lib/mcp/core/plugin-manager.d.ts +0 -46
  132. package/dist/lib/mcp/core/plugin-manager.js +0 -110
  133. package/dist/lib/mcp/demo/plugin-demo.d.ts +0 -20
  134. package/dist/lib/mcp/demo/plugin-demo.js +0 -118
  135. package/dist/lib/mcp/dynamic-chain-executor.d.ts +0 -225
  136. package/dist/lib/mcp/dynamic-chain-executor.js +0 -489
  137. package/dist/lib/mcp/dynamic-orchestrator.d.ts +0 -115
  138. package/dist/lib/mcp/dynamic-orchestrator.js +0 -351
  139. package/dist/lib/mcp/ecosystem.d.ts +0 -75
  140. package/dist/lib/mcp/ecosystem.js +0 -161
  141. package/dist/lib/mcp/error-manager.d.ts +0 -254
  142. package/dist/lib/mcp/error-manager.js +0 -501
  143. package/dist/lib/mcp/error-recovery.d.ts +0 -159
  144. package/dist/lib/mcp/error-recovery.js +0 -405
  145. package/dist/lib/mcp/external-client.d.ts +0 -88
  146. package/dist/lib/mcp/external-client.js +0 -331
  147. package/dist/lib/mcp/external-manager.d.ts +0 -112
  148. package/dist/lib/mcp/external-manager.js +0 -308
  149. package/dist/lib/mcp/function-calling.d.ts +0 -65
  150. package/dist/lib/mcp/function-calling.js +0 -642
  151. package/dist/lib/mcp/health-monitor.d.ts +0 -257
  152. package/dist/lib/mcp/health-monitor.js +0 -630
  153. package/dist/lib/mcp/initialize-tools.d.ts +0 -29
  154. package/dist/lib/mcp/initialize-tools.js +0 -261
  155. package/dist/lib/mcp/initialize.d.ts +0 -18
  156. package/dist/lib/mcp/initialize.js +0 -62
  157. package/dist/lib/mcp/logging.d.ts +0 -38
  158. package/dist/lib/mcp/logging.js +0 -100
  159. package/dist/lib/mcp/manager.d.ts +0 -68
  160. package/dist/lib/mcp/manager.js +0 -176
  161. package/dist/lib/mcp/neurolink-mcp-client.d.ts +0 -97
  162. package/dist/lib/mcp/neurolink-mcp-client.js +0 -462
  163. package/dist/lib/mcp/orchestrator.d.ts +0 -302
  164. package/dist/lib/mcp/orchestrator.js +0 -703
  165. package/dist/lib/mcp/plugin-manager.d.ts +0 -98
  166. package/dist/lib/mcp/plugin-manager.js +0 -296
  167. package/dist/lib/mcp/plugins/core/filesystem-mcp.d.ts +0 -36
  168. package/dist/lib/mcp/plugins/core/filesystem-mcp.js +0 -142
  169. package/dist/lib/mcp/plugins/filesystem-mcp.d.ts +0 -37
  170. package/dist/lib/mcp/plugins/filesystem-mcp.js +0 -54
  171. package/dist/lib/mcp/security-manager.d.ts +0 -87
  172. package/dist/lib/mcp/security-manager.js +0 -344
  173. package/dist/lib/mcp/semaphore-manager.d.ts +0 -137
  174. package/dist/lib/mcp/semaphore-manager.js +0 -329
  175. package/dist/lib/mcp/session-manager.d.ts +0 -187
  176. package/dist/lib/mcp/session-manager.js +0 -400
  177. package/dist/lib/mcp/session-persistence.d.ts +0 -93
  178. package/dist/lib/mcp/session-persistence.js +0 -301
  179. package/dist/lib/mcp/tool-integration.d.ts +0 -58
  180. package/dist/lib/mcp/tool-integration.js +0 -203
  181. package/dist/lib/mcp/transport-manager.d.ts +0 -154
  182. package/dist/lib/mcp/transport-manager.js +0 -334
  183. package/dist/lib/mcp/unified-mcp.d.ts +0 -133
  184. package/dist/lib/mcp/unified-mcp.js +0 -251
  185. package/dist/lib/mcp/unified-registry.d.ts +0 -165
  186. package/dist/lib/mcp/unified-registry.js +0 -538
  187. package/dist/lib/providers/analytics-helper.d.ts +0 -38
  188. package/dist/lib/providers/analytics-helper.js +0 -216
  189. package/dist/lib/providers/function-calling-provider.d.ts +0 -142
  190. package/dist/lib/providers/function-calling-provider.js +0 -630
  191. package/dist/lib/providers/mcp-provider.d.ts +0 -75
  192. package/dist/lib/providers/mcp-provider.js +0 -283
  193. package/dist/lib/providers/timeout-wrapper.d.ts +0 -40
  194. package/dist/lib/providers/timeout-wrapper.js +0 -100
  195. package/dist/lib/sdk/tool-extension.d.ts +0 -181
  196. package/dist/lib/sdk/tool-extension.js +0 -284
  197. package/dist/lib/services/streaming/streaming-manager.d.ts +0 -29
  198. package/dist/lib/services/streaming/streaming-manager.js +0 -245
  199. package/dist/lib/services/types.d.ts +0 -156
  200. package/dist/lib/services/types.js +0 -2
  201. package/dist/lib/services/websocket/websocket-server.d.ts +0 -34
  202. package/dist/lib/services/websocket/websocket-server.js +0 -305
  203. package/dist/lib/utils/provider-validation.d.ts +0 -36
  204. package/dist/lib/utils/provider-validation.js +0 -625
  205. package/dist/lib/utils/providerUtils-fixed.d.ts +0 -8
  206. package/dist/lib/utils/providerUtils-fixed.js +0 -94
  207. package/dist/lib/utils/streaming-utils.d.ts +0 -79
  208. package/dist/lib/utils/streaming-utils.js +0 -198
  209. package/dist/lib/utils/timeout-manager.d.ts +0 -75
  210. package/dist/lib/utils/timeout-manager.js +0 -244
  211. package/dist/mcp/adapters/plugin-bridge.d.ts +0 -40
  212. package/dist/mcp/adapters/plugin-bridge.js +0 -89
  213. package/dist/mcp/auto-discovery.d.ts +0 -62
  214. package/dist/mcp/auto-discovery.js +0 -149
  215. package/dist/mcp/client.d.ts +0 -68
  216. package/dist/mcp/client.js +0 -248
  217. package/dist/mcp/config.d.ts +0 -31
  218. package/dist/mcp/config.js +0 -99
  219. package/dist/mcp/context-manager.d.ts +0 -171
  220. package/dist/mcp/context-manager.js +0 -362
  221. package/dist/mcp/contracts/mcp-contract.d.ts +0 -169
  222. package/dist/mcp/contracts/mcp-contract.js +0 -58
  223. package/dist/mcp/core/plugin-manager.d.ts +0 -46
  224. package/dist/mcp/core/plugin-manager.js +0 -110
  225. package/dist/mcp/demo/plugin-demo.d.ts +0 -20
  226. package/dist/mcp/demo/plugin-demo.js +0 -118
  227. package/dist/mcp/dynamic-chain-executor.d.ts +0 -225
  228. package/dist/mcp/dynamic-chain-executor.js +0 -489
  229. package/dist/mcp/dynamic-orchestrator.d.ts +0 -115
  230. package/dist/mcp/dynamic-orchestrator.js +0 -351
  231. package/dist/mcp/ecosystem.d.ts +0 -75
  232. package/dist/mcp/ecosystem.js +0 -162
  233. package/dist/mcp/error-manager.d.ts +0 -254
  234. package/dist/mcp/error-manager.js +0 -501
  235. package/dist/mcp/error-recovery.d.ts +0 -159
  236. package/dist/mcp/error-recovery.js +0 -405
  237. package/dist/mcp/external-client.d.ts +0 -88
  238. package/dist/mcp/external-client.js +0 -331
  239. package/dist/mcp/external-manager.d.ts +0 -112
  240. package/dist/mcp/external-manager.js +0 -308
  241. package/dist/mcp/function-calling.d.ts +0 -65
  242. package/dist/mcp/function-calling.js +0 -642
  243. package/dist/mcp/health-monitor.d.ts +0 -257
  244. package/dist/mcp/health-monitor.js +0 -630
  245. package/dist/mcp/initialize-tools.d.ts +0 -29
  246. package/dist/mcp/initialize-tools.js +0 -262
  247. package/dist/mcp/initialize.d.ts +0 -18
  248. package/dist/mcp/initialize.js +0 -62
  249. package/dist/mcp/logging.d.ts +0 -38
  250. package/dist/mcp/logging.js +0 -100
  251. package/dist/mcp/manager.d.ts +0 -68
  252. package/dist/mcp/manager.js +0 -176
  253. package/dist/mcp/neurolink-mcp-client.d.ts +0 -97
  254. package/dist/mcp/neurolink-mcp-client.js +0 -462
  255. package/dist/mcp/orchestrator.d.ts +0 -302
  256. package/dist/mcp/orchestrator.js +0 -703
  257. package/dist/mcp/plugin-manager.d.ts +0 -98
  258. package/dist/mcp/plugin-manager.js +0 -297
  259. package/dist/mcp/plugins/core/filesystem-mcp.d.ts +0 -36
  260. package/dist/mcp/plugins/core/filesystem-mcp.js +0 -142
  261. package/dist/mcp/plugins/core/neurolink-mcp.json +0 -17
  262. package/dist/mcp/plugins/filesystem-mcp.d.ts +0 -37
  263. package/dist/mcp/plugins/filesystem-mcp.js +0 -54
  264. package/dist/mcp/security-manager.d.ts +0 -87
  265. package/dist/mcp/security-manager.js +0 -344
  266. package/dist/mcp/semaphore-manager.d.ts +0 -137
  267. package/dist/mcp/semaphore-manager.js +0 -329
  268. package/dist/mcp/session-manager.d.ts +0 -187
  269. package/dist/mcp/session-manager.js +0 -400
  270. package/dist/mcp/session-persistence.d.ts +0 -93
  271. package/dist/mcp/session-persistence.js +0 -302
  272. package/dist/mcp/tool-integration.d.ts +0 -58
  273. package/dist/mcp/tool-integration.js +0 -203
  274. package/dist/mcp/transport-manager.d.ts +0 -154
  275. package/dist/mcp/transport-manager.js +0 -335
  276. package/dist/mcp/unified-mcp.d.ts +0 -133
  277. package/dist/mcp/unified-mcp.js +0 -251
  278. package/dist/mcp/unified-registry.d.ts +0 -165
  279. package/dist/mcp/unified-registry.js +0 -539
  280. package/dist/providers/analytics-helper.d.ts +0 -38
  281. package/dist/providers/analytics-helper.js +0 -216
  282. package/dist/providers/function-calling-provider.d.ts +0 -142
  283. package/dist/providers/function-calling-provider.js +0 -630
  284. package/dist/providers/mcp-provider.d.ts +0 -75
  285. package/dist/providers/mcp-provider.js +0 -283
  286. package/dist/providers/timeout-wrapper.d.ts +0 -40
  287. package/dist/providers/timeout-wrapper.js +0 -100
  288. package/dist/sdk/tool-extension.d.ts +0 -181
  289. package/dist/sdk/tool-extension.js +0 -284
  290. package/dist/services/streaming/streaming-manager.d.ts +0 -29
  291. package/dist/services/streaming/streaming-manager.js +0 -245
  292. package/dist/services/types.d.ts +0 -156
  293. package/dist/services/types.js +0 -2
  294. package/dist/services/websocket/websocket-server.d.ts +0 -34
  295. package/dist/services/websocket/websocket-server.js +0 -306
  296. package/dist/utils/provider-validation.d.ts +0 -36
  297. package/dist/utils/provider-validation.js +0 -625
  298. package/dist/utils/providerUtils-fixed.d.ts +0 -8
  299. package/dist/utils/providerUtils-fixed.js +0 -94
  300. package/dist/utils/streaming-utils.d.ts +0 -79
  301. package/dist/utils/streaming-utils.js +0 -198
  302. package/dist/utils/timeout-manager.d.ts +0 -75
  303. package/dist/utils/timeout-manager.js +0 -244
@@ -1,308 +0,0 @@
1
- /**
2
- * NeuroLink External MCP Manager
3
- * Manages external MCP servers and bridges them into the NeuroLink factory ecosystem
4
- * Reads .mcp-config.json and spawns external clients
5
- */
6
- import { readFile } from "fs/promises";
7
- import { resolve } from "path";
8
- import { createExternalMCPClient, } from "./external-client.js";
9
- import { createMCPServer } from "./factory.js";
10
- import { MCPToolRegistry } from "./tool-registry.js";
11
- import { mcpLogger as logger } from "./logging.js";
12
- /**
13
- * External MCP Manager
14
- * Bridges external MCP servers into NeuroLink's factory pattern ecosystem
15
- */
16
- export class ExternalMCPManager {
17
- servers = new Map();
18
- registry;
19
- configPath;
20
- config = null;
21
- isInitialized = false;
22
- constructor(configPath, registry) {
23
- this.configPath = configPath || ".mcp-config.json";
24
- this.registry = registry || new MCPToolRegistry();
25
- }
26
- /**
27
- * Initialize the external MCP manager
28
- * Reads config and connects to all external servers
29
- */
30
- async initialize() {
31
- if (this.isInitialized) {
32
- logger.debug("[External MCP Manager] Already initialized");
33
- return;
34
- }
35
- try {
36
- logger.info("[External MCP Manager] Initializing...");
37
- // Load configuration
38
- await this.loadConfig();
39
- if (!this.config?.mcpServers) {
40
- logger.warn("[External MCP Manager] No MCP servers configured");
41
- this.isInitialized = true;
42
- return;
43
- }
44
- // Connect to all configured servers
45
- const serverNames = Object.keys(this.config.mcpServers);
46
- logger.info(`[External MCP Manager] Connecting to ${serverNames.length} external servers: ${serverNames.join(", ")}`);
47
- const connectionPromises = serverNames.map((serverName) => this.connectToServer(serverName).catch((error) => {
48
- logger.error(`[External MCP Manager] Failed to connect to ${serverName}:`, error);
49
- return null;
50
- }));
51
- const results = await Promise.allSettled(connectionPromises);
52
- const connected = results.filter((r) => r.status === "fulfilled" && r.value !== null).length;
53
- logger.info(`[External MCP Manager] Connected to ${connected}/${serverNames.length} external servers`);
54
- this.isInitialized = true;
55
- }
56
- catch (error) {
57
- logger.error("[External MCP Manager] Initialization failed:", error);
58
- throw error;
59
- }
60
- }
61
- /**
62
- * Load MCP configuration from file
63
- */
64
- async loadConfig() {
65
- try {
66
- const configFile = resolve(this.configPath);
67
- const configData = await readFile(configFile, "utf-8");
68
- this.config = JSON.parse(configData);
69
- logger.debug("[External MCP Manager] Config loaded:", {
70
- serversCount: Object.keys(this.config?.mcpServers || {}).length,
71
- autoDiscovery: this.config?.autoDiscovery?.enabled,
72
- });
73
- }
74
- catch (error) {
75
- if (error?.code === "ENOENT") {
76
- logger.warn(`[External MCP Manager] Config file not found: ${this.configPath}`);
77
- this.config = { mcpServers: {} };
78
- }
79
- else {
80
- logger.error("[External MCP Manager] Failed to load config:", error);
81
- throw error;
82
- }
83
- }
84
- }
85
- /**
86
- * Connect to a specific external server
87
- */
88
- async connectToServer(serverName) {
89
- if (!this.config?.mcpServers[serverName]) {
90
- throw new Error(`Server configuration not found: ${serverName}`);
91
- }
92
- const serverConfig = this.config.mcpServers[serverName];
93
- try {
94
- logger.info(`[External MCP Manager] Connecting to server: ${serverName}`);
95
- // Create external client
96
- const client = createExternalMCPClient({
97
- name: serverName,
98
- command: serverConfig.command,
99
- args: serverConfig.args,
100
- transport: serverConfig.transport,
101
- env: serverConfig.env,
102
- });
103
- // Create server info
104
- const serverInfo = {
105
- name: serverName,
106
- client,
107
- server: createMCPServer({
108
- id: `external-${serverName}`,
109
- title: `External ${serverConfig.name || serverName}`,
110
- description: `External MCP server: ${serverName}`,
111
- category: "integrations",
112
- visibility: "private",
113
- metadata: {
114
- external: true,
115
- transport: "stdio",
116
- command: serverConfig.command,
117
- args: serverConfig.args,
118
- },
119
- }),
120
- status: "connecting",
121
- toolCount: 0,
122
- retryCount: 0,
123
- };
124
- // Setup event handlers
125
- client.on("connected", () => {
126
- logger.info(`[External MCP Manager] Connected to ${serverName}`);
127
- serverInfo.status = "connected";
128
- this.registerServerTools(serverInfo);
129
- });
130
- client.on("disconnected", () => {
131
- logger.warn(`[External MCP Manager] Disconnected from ${serverName}`);
132
- serverInfo.status = "disconnected";
133
- // TODO: Implement reconnection logic
134
- });
135
- client.on("error", (error) => {
136
- logger.error(`[External MCP Manager] Error from ${serverName}:`, error);
137
- serverInfo.status = "error";
138
- serverInfo.lastError = error.message;
139
- });
140
- // Store server info
141
- this.servers.set(serverName, serverInfo);
142
- // Connect to the server
143
- await client.connect();
144
- return serverInfo;
145
- }
146
- catch (error) {
147
- logger.error(`[External MCP Manager] Failed to connect to ${serverName}:`, error);
148
- const serverInfo = {
149
- name: serverName,
150
- client: null,
151
- server: null,
152
- status: "error",
153
- lastError: error instanceof Error ? error.message : String(error),
154
- toolCount: 0,
155
- retryCount: 0,
156
- };
157
- this.servers.set(serverName, serverInfo);
158
- return null;
159
- }
160
- }
161
- /**
162
- * Register tools from an external server with the NeuroLink registry
163
- */
164
- async registerServerTools(serverInfo) {
165
- try {
166
- if (!serverInfo.client) {
167
- throw new Error("Client is not available");
168
- }
169
- if (!serverInfo.server) {
170
- throw new Error("Server is not available");
171
- }
172
- const tools = serverInfo.client.getNeuroLinkTools();
173
- // Register each tool with the server
174
- for (const [toolName, tool] of Object.entries(tools)) {
175
- serverInfo.server.registerTool(tool);
176
- }
177
- serverInfo.toolCount = Object.keys(tools).length;
178
- // Register the server with the registry
179
- await this.registry.registerServer(serverInfo.name, serverInfo);
180
- logger.info(`[External MCP Manager] Registered ${serverInfo.toolCount} tools from ${serverInfo.name}`);
181
- }
182
- catch (error) {
183
- logger.error(`[External MCP Manager] Failed to register tools from ${serverInfo.name}:`, error);
184
- }
185
- }
186
- /**
187
- * Get all connected external servers
188
- */
189
- getConnectedServers() {
190
- return Array.from(this.servers.values()).filter((s) => s.status === "connected");
191
- }
192
- /**
193
- * Get server status
194
- */
195
- getServerStatus(serverName) {
196
- return this.servers.get(serverName);
197
- }
198
- /**
199
- * Get all server statuses
200
- */
201
- getAllServerStatuses() {
202
- const statuses = {};
203
- for (const [name, info] of this.servers) {
204
- statuses[name] = {
205
- ...info,
206
- // Don't include the actual client/server objects in status
207
- client: null,
208
- server: null,
209
- };
210
- }
211
- return statuses;
212
- }
213
- /**
214
- * Execute a tool on any connected server
215
- */
216
- async executeTool(toolName, params, context) {
217
- // Use the registry to execute the tool
218
- return this.registry.executeTool(toolName, params, context);
219
- }
220
- /**
221
- * List all available tools from external servers
222
- */
223
- listExternalTools() {
224
- return this.registry.listTools();
225
- }
226
- /**
227
- * Get registry instance
228
- */
229
- getRegistry() {
230
- return this.registry;
231
- }
232
- /**
233
- * Disconnect from a specific server
234
- */
235
- async disconnectServer(serverName) {
236
- const serverInfo = this.servers.get(serverName);
237
- if (!serverInfo || !serverInfo.client) {
238
- return false;
239
- }
240
- try {
241
- await serverInfo.client.disconnect();
242
- this.registry.unregisterServer(`external-${serverName}`);
243
- this.servers.delete(serverName);
244
- logger.info(`[External MCP Manager] Disconnected from ${serverName}`);
245
- return true;
246
- }
247
- catch (error) {
248
- logger.error(`[External MCP Manager] Failed to disconnect from ${serverName}:`, error);
249
- return false;
250
- }
251
- }
252
- /**
253
- * Disconnect from all servers
254
- */
255
- async disconnectAll() {
256
- logger.info("[External MCP Manager] Disconnecting from all external servers");
257
- const disconnectPromises = Array.from(this.servers.keys()).map((serverName) => this.disconnectServer(serverName));
258
- await Promise.allSettled(disconnectPromises);
259
- this.servers.clear();
260
- this.isInitialized = false;
261
- }
262
- /**
263
- * Refresh connections - reload config and reconnect
264
- */
265
- async refresh() {
266
- logger.info("[External MCP Manager] Refreshing connections");
267
- await this.disconnectAll();
268
- await this.initialize();
269
- }
270
- /**
271
- * Get comprehensive status
272
- */
273
- getStatus() {
274
- const servers = Array.from(this.servers.values());
275
- return {
276
- isInitialized: this.isInitialized,
277
- configPath: this.configPath,
278
- totalServers: servers.length,
279
- connected: servers.filter((s) => s.status === "connected").length,
280
- connecting: servers.filter((s) => s.status === "connecting").length,
281
- disconnected: servers.filter((s) => s.status === "disconnected").length,
282
- errors: servers.filter((s) => s.status === "error").length,
283
- totalTools: servers.reduce((sum, s) => sum + s.toolCount, 0),
284
- servers: this.getAllServerStatuses(),
285
- };
286
- }
287
- }
288
- /**
289
- * Default external MCP manager instance
290
- */
291
- export const defaultExternalMCPManager = new ExternalMCPManager();
292
- /**
293
- * Initialize external MCP servers with default manager
294
- */
295
- export async function initializeExternalMCP(configPath) {
296
- if (configPath) {
297
- const manager = new ExternalMCPManager(configPath);
298
- await manager.initialize();
299
- return;
300
- }
301
- await defaultExternalMCPManager.initialize();
302
- }
303
- /**
304
- * Get the default external MCP manager
305
- */
306
- export function getExternalMCPManager() {
307
- return defaultExternalMCPManager;
308
- }
@@ -1,65 +0,0 @@
1
- /**
2
- * MCP Function-Calling Integration
3
- * Converts MCP tools to AI SDK function definitions and handles function calls
4
- * Enables true AI function calling with discovered MCP tools
5
- */
6
- import type { Tool } from "ai";
7
- import type { NeuroLinkMCPTool, ToolResult, NeuroLinkExecutionContext } from "./factory.js";
8
- import type { UnknownRecord } from "../types/common.js";
9
- /**
10
- * Convert MCP tool to AI SDK function definition
11
- */
12
- export declare function mcpToolToAISDKTool(tool: NeuroLinkMCPTool, serverId: string): Tool;
13
- /**
14
- * Get all available MCP tools as AI SDK function definitions
15
- */
16
- export declare function getAvailableFunctionTools(): Promise<{
17
- tools: Tool[];
18
- toolsObject: Record<string, Tool>;
19
- toolMap: Map<string, {
20
- serverId: string;
21
- toolName: string;
22
- }>;
23
- }>;
24
- /**
25
- * Execute MCP tool from AI function call
26
- */
27
- export declare function executeFunctionCall(functionName: string, parameters: Record<string, unknown>, context?: NeuroLinkExecutionContext): Promise<ToolResult>;
28
- /**
29
- * Handle multiple function calls and format results for AI
30
- */
31
- export declare function handleFunctionCalls(functionCalls: Array<{
32
- name: string;
33
- parameters: Record<string, unknown>;
34
- id?: string;
35
- }>, context?: NeuroLinkExecutionContext): Promise<Array<{
36
- id?: string;
37
- result: ToolResult;
38
- formattedForAI: string;
39
- }>>;
40
- /**
41
- * Create a subset of tools for specific categories or capabilities
42
- */
43
- export declare function getFunctionToolsForCategory(category?: string, maxTools?: number): Promise<{
44
- tools: Tool[];
45
- toolMap: Map<string, {
46
- serverId: string;
47
- toolName: string;
48
- }>;
49
- }>;
50
- /**
51
- * Check if function calling is available
52
- */
53
- export declare function isFunctionCallingAvailable(): Promise<boolean>;
54
- /**
55
- * Utility function to create a named tool object for debugging
56
- */
57
- export declare function createNamedTool(name: string, toolDef: Tool): Tool & {
58
- name: string;
59
- };
60
- /**
61
- * Get tools with proper name properties for debugging
62
- */
63
- export declare function getToolsWithNames(): Promise<Record<string, UnknownRecord & {
64
- name: string;
65
- }>>;