@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,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
- }>>;