@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,262 +0,0 @@
1
- /**
2
- * NeuroLink MCP Tool Initialization
3
- * Following Lighthouse's pattern for registering MCP server tools with the client
4
- */
5
- import { mcpConfig } from "./config.js";
6
- import { zodToJsonSchema } from "zod-to-json-schema";
7
- import { z } from "zod";
8
- import { logger } from "../utils/logger.js";
9
- /**
10
- * Sanitize tool name for compatibility
11
- * Following Lighthouse's pattern of ensuring valid tool names
12
- */
13
- const sanitizeToolName = (name) => {
14
- return name.replace(/[^a-zA-Z0-9_-]/g, "_");
15
- };
16
- /**
17
- * Check if a schema is a Zod schema
18
- */
19
- const isZodSchema = (schema) => {
20
- if (typeof schema !== "object" || schema === null) {
21
- return false;
22
- }
23
- return "_def" in schema || "parse" in schema;
24
- };
25
- /**
26
- * Initialize and register tools from MCP Servers with the MCP client
27
- * Following Lighthouse's pattern for tool registration
28
- */
29
- export const initializeMCPTools = async (sessionId, client, context) => {
30
- try {
31
- logger.info(`[MCP Tools] Initializing tools for session: ${sessionId}`);
32
- // Get all registered servers
33
- const servers = await mcpConfig.getServers();
34
- if (!servers || servers.length === 0) {
35
- logger.warn("[MCP Tools] No MCP servers found to register tools from");
36
- return;
37
- }
38
- let totalToolsRegistered = 0;
39
- // Process each server
40
- servers.forEach((server) => {
41
- if (!server || !server.id || !server.tools) {
42
- logger.warn(`[MCP Tools] Skipping invalid server configuration: ${JSON.stringify(server)}`);
43
- return;
44
- }
45
- const serverId = server.id;
46
- logger.info(`[MCP Tools] Registering tools from server: ${serverId}`);
47
- // Process each tool in the server
48
- Object.entries(server.tools).forEach(([originalToolName, tool]) => {
49
- if (!tool || typeof tool.execute !== "function") {
50
- logger.warn(`[MCP Tools] Skipping invalid tool definition for ${originalToolName} in server ${serverId}`);
51
- return;
52
- }
53
- // Create namespaced tool name (serverId_toolName)
54
- let finalToolName = originalToolName;
55
- const prefix = `${serverId}_`;
56
- const maxToolNameLength = 64 - prefix.length;
57
- // Truncate if necessary
58
- if (finalToolName.length > maxToolNameLength) {
59
- finalToolName = finalToolName.substring(0, maxToolNameLength);
60
- logger.info(`[MCP Tools] Truncated tool name: ${originalToolName} -> ${finalToolName}`);
61
- }
62
- // Sanitize and combine
63
- const namespacedToolName = sanitizeToolName(`${prefix}${finalToolName}`);
64
- // Validate final length
65
- if (namespacedToolName.length > 64) {
66
- logger.warn(`[MCP Tools] Tool name too long after sanitization: ${namespacedToolName}. Skipping.`);
67
- return;
68
- }
69
- // Prepare description
70
- const description = tool.description ||
71
- `Tool ${originalToolName} from server ${serverId}`;
72
- // Convert schema if needed
73
- let schemaForClient = undefined;
74
- if (tool.inputSchema) {
75
- if (isZodSchema(tool.inputSchema)) {
76
- try {
77
- const jsonSchemaOutput = zodToJsonSchema(tool.inputSchema);
78
- if (typeof jsonSchemaOutput === "object" &&
79
- jsonSchemaOutput !== null &&
80
- "type" in jsonSchemaOutput &&
81
- jsonSchemaOutput.type === "object") {
82
- schemaForClient = jsonSchemaOutput;
83
- }
84
- else {
85
- logger.warn(`[MCP Tools] Converted schema for ${originalToolName} is not a root object type`);
86
- }
87
- }
88
- catch (schemaError) {
89
- logger.error(`[MCP Tools] Error converting Zod schema for tool ${originalToolName}: ${schemaError}`);
90
- }
91
- }
92
- else if (typeof tool.inputSchema === "object" &&
93
- tool.inputSchema !== null) {
94
- if (tool.inputSchema.type === "object") {
95
- schemaForClient = tool.inputSchema;
96
- }
97
- else {
98
- logger.warn(`[MCP Tools] Input schema for ${originalToolName} is not type 'object'`);
99
- }
100
- }
101
- }
102
- try {
103
- // Register tool with client
104
- client.registerTool(namespacedToolName, async (_name, input) => {
105
- // Execute the tool with full context
106
- const result = await tool.execute(input, context);
107
- // Convert to Lighthouse-style response
108
- if (result.success) {
109
- return {
110
- content: [{ text: JSON.stringify(result.data ?? {}) }],
111
- };
112
- }
113
- else {
114
- return {
115
- content: [
116
- { text: `Error: ${result.error || "Unknown error"}` },
117
- ],
118
- isError: true,
119
- };
120
- }
121
- }, description, schemaForClient);
122
- logger.debug(`[MCP Tools] Registered tool: ${namespacedToolName}`, {
123
- serverId,
124
- originalToolName,
125
- });
126
- totalToolsRegistered++;
127
- }
128
- catch (registrationError) {
129
- logger.error(`[MCP Tools] Failed to register tool ${originalToolName} from server ${serverId}: ${registrationError}`);
130
- }
131
- });
132
- });
133
- logger.info(`[MCP Tools] Successfully registered ${totalToolsRegistered} tools for session: ${sessionId}`);
134
- }
135
- catch (error) {
136
- logger.error(`[MCP Tools] Error during tool initialization for session ${sessionId}: ${error}`);
137
- }
138
- };
139
- /**
140
- * Get all available tools across all servers
141
- * Useful for documentation and discovery
142
- */
143
- export async function getAllAvailableTools(inMemoryServers) {
144
- const tools = [];
145
- // Add in-memory server tools first
146
- if (inMemoryServers) {
147
- for (const [serverId, serverConfig] of inMemoryServers) {
148
- const server = serverConfig.server;
149
- if (server &&
150
- typeof server === "object" &&
151
- "tools" in server &&
152
- server.tools) {
153
- // Handle both Map and object formats
154
- const toolEntries = server.tools instanceof Map
155
- ? Array.from(server.tools.entries())
156
- : Object.entries(server.tools || {});
157
- for (const [toolName, toolInfo] of toolEntries) {
158
- const prefix = `${serverId}_`;
159
- const finalToolName = toolName.length > 64 - prefix.length
160
- ? toolName.substring(0, 64 - prefix.length)
161
- : toolName;
162
- const namespacedName = sanitizeToolName(`${prefix}${finalToolName}`);
163
- // Handle different tool info structures
164
- let description = `Tool from ${serverId}`;
165
- let isImplemented = true;
166
- if (toolInfo) {
167
- // Check if it's a tool info object with description
168
- if (typeof toolInfo.description === "string") {
169
- description = toolInfo.description;
170
- }
171
- else if (typeof toolInfo === "function") {
172
- // It's a raw function, no description available
173
- description = `${toolName} from ${serverId}`;
174
- }
175
- // Check implementation status
176
- if (typeof toolInfo.isImplemented === "boolean") {
177
- isImplemented = toolInfo.isImplemented;
178
- }
179
- }
180
- tools.push({
181
- serverId,
182
- serverTitle: typeof server === "object" &&
183
- server &&
184
- "title" in server &&
185
- typeof server.title === "string"
186
- ? server.title
187
- : serverId,
188
- toolName,
189
- namespacedName,
190
- description,
191
- isImplemented,
192
- });
193
- }
194
- }
195
- }
196
- }
197
- const servers = await mcpConfig.getServers();
198
- servers.forEach((server) => {
199
- Object.entries(server.tools).forEach(([toolName, tool]) => {
200
- const prefix = `${server.id}_`;
201
- const finalToolName = toolName.length > 64 - prefix.length
202
- ? toolName.substring(0, 64 - prefix.length)
203
- : toolName;
204
- const namespacedName = sanitizeToolName(`${prefix}${finalToolName}`);
205
- tools.push({
206
- serverId: server.id,
207
- serverTitle: server.title,
208
- toolName,
209
- namespacedName,
210
- description: tool.description || "",
211
- isImplemented: tool.isImplemented !== false,
212
- });
213
- });
214
- });
215
- return tools;
216
- }
217
- /**
218
- * Initialize tools for a specific server only
219
- * Useful for selective tool registration
220
- */
221
- export async function initializeServerTools(serverId, client, context) {
222
- const servers = await mcpConfig.getServers();
223
- const server = servers.find((s) => s.id === serverId);
224
- if (!server) {
225
- logger.warn(`[MCP Tools] Server not found: ${serverId}`);
226
- return 0;
227
- }
228
- let toolsRegistered = 0;
229
- Object.entries(server.tools).forEach(([toolName, tool]) => {
230
- if (!tool || typeof tool.execute !== "function") {
231
- return;
232
- }
233
- const prefix = `${serverId}_`;
234
- const finalToolName = toolName.length > 64 - prefix.length
235
- ? toolName.substring(0, 64 - prefix.length)
236
- : toolName;
237
- const namespacedToolName = sanitizeToolName(`${prefix}${finalToolName}`);
238
- if (namespacedToolName.length > 64) {
239
- return;
240
- }
241
- try {
242
- client.registerTool(namespacedToolName, async (_name, input) => {
243
- const result = await tool.execute(input, context);
244
- if (result.success) {
245
- return { content: [{ text: JSON.stringify(result.data ?? {}) }] };
246
- }
247
- else {
248
- return {
249
- content: [{ text: `Error: ${result.error || "Unknown error"}` }],
250
- isError: true,
251
- };
252
- }
253
- }, tool.description || `Tool ${toolName} from server ${serverId}`, tool.inputSchema);
254
- toolsRegistered++;
255
- }
256
- catch (error) {
257
- logger.error(`[MCP Tools] Failed to register tool ${toolName}: ${error}`);
258
- }
259
- });
260
- logger.info(`[MCP Tools] Registered ${toolsRegistered} tools from server ${serverId}`);
261
- return toolsRegistered;
262
- }
@@ -1,18 +0,0 @@
1
- /**
2
- * NeuroLink MCP Initialization System
3
- * Automatically registers built-in NeuroLink servers with the default registry
4
- * Ensures built-in tools are always available without manual configuration
5
- */
6
- import { type MCPToolRegistry } from "./tool-registry.js";
7
- /**
8
- * Initialize NeuroLink MCP system by registering built-in servers
9
- */
10
- export declare function initializeNeuroLinkMCP(targetRegistry?: MCPToolRegistry): Promise<void>;
11
- /**
12
- * Get initialization status
13
- */
14
- export declare function isNeuroLinkMCPInitialized(): boolean;
15
- /**
16
- * Reset initialization status (for testing)
17
- */
18
- export declare function resetInitialization(): void;
@@ -1,62 +0,0 @@
1
- /**
2
- * NeuroLink MCP Initialization System
3
- * Automatically registers built-in NeuroLink servers with the default registry
4
- * Ensures built-in tools are always available without manual configuration
5
- */
6
- import { toolRegistry, defaultToolRegistry, } from "./tool-registry.js";
7
- import { mcpLogger } from "./logging.js";
8
- import { ServiceRegistry } from "../core/service-registry.js";
9
- let isInitialized = false;
10
- /**
11
- * Initialize NeuroLink MCP system by registering built-in servers
12
- */
13
- export async function initializeNeuroLinkMCP(targetRegistry) {
14
- if (isInitialized) {
15
- return;
16
- }
17
- mcpLogger.debug("Initializing built-in MCP servers...");
18
- try {
19
- // First, register AIProviderFactory in ServiceRegistry to break circular dependencies
20
- ServiceRegistry.register("AIProviderFactory", async () => {
21
- const { AIProviderFactory } = await import("../core/factory.js");
22
- return AIProviderFactory;
23
- });
24
- mcpLogger.debug("Registered AIProviderFactory in ServiceRegistry");
25
- // Import utility server dynamically to avoid circular dependencies
26
- const { utilityServer } = await import("./servers/utilities/utility-server.js");
27
- // Register built-in NeuroLink servers with specified registry (or default)
28
- const registry = targetRegistry || toolRegistry;
29
- await registry.registerServer(utilityServer.id, utilityServer);
30
- mcpLogger.debug(`Registered neurolink-utility server with built-in tools in ${targetRegistry ? "target" : "default"} registry`);
31
- // Now safe to import and register AI core server
32
- const { aiCoreServer } = await import("./servers/ai-providers/ai-core-server.js");
33
- await registry.registerServer(aiCoreServer.id, aiCoreServer);
34
- mcpLogger.debug("Registered neurolink-ai-core server with AI tools");
35
- // Register direct tools server
36
- const { directToolsServer } = await import("./servers/agent/direct-tools-server.js");
37
- await registry.registerServer(directToolsServer.id, directToolsServer);
38
- mcpLogger.debug("Registered neurolink-direct server with direct tools");
39
- const stats = await registry.getStats();
40
- mcpLogger.info(`Initialization complete: ${stats.totalServers} servers, ${stats.totalTools} tools available`);
41
- isInitialized = true;
42
- }
43
- catch (error) {
44
- mcpLogger.error("Failed to initialize built-in servers:", error instanceof Error ? error.message : String(error));
45
- throw error;
46
- }
47
- }
48
- /**
49
- * Get initialization status
50
- */
51
- export function isNeuroLinkMCPInitialized() {
52
- return isInitialized;
53
- }
54
- /**
55
- * Reset initialization status (for testing)
56
- */
57
- export function resetInitialization() {
58
- isInitialized = false;
59
- defaultToolRegistry.clear();
60
- }
61
- // Note: Auto-initialization removed to prevent circular dependencies
62
- // Call initializeNeuroLinkMCP() explicitly where needed
@@ -1,38 +0,0 @@
1
- /**
2
- * MCP Logging Utility
3
- * Centralized logging for the MCP ecosystem
4
- */
5
- export type LogLevel = "debug" | "info" | "warn" | "error";
6
- interface LogEntry {
7
- level: LogLevel;
8
- message: string;
9
- timestamp: Date;
10
- data?: unknown;
11
- }
12
- declare class MCPLogger {
13
- private logLevel;
14
- private logs;
15
- private maxLogs;
16
- constructor();
17
- setLogLevel(level: LogLevel): void;
18
- private shouldLog;
19
- private log;
20
- debug(message: string, data?: unknown): void;
21
- info(message: string, data?: unknown): void;
22
- warn(message: string, data?: unknown): void;
23
- error(message: string, data?: unknown): void;
24
- getLogs(level?: LogLevel): LogEntry[];
25
- clearLogs(): void;
26
- }
27
- export declare const mcpLogger: MCPLogger;
28
- export declare const autoDiscoveryLogger: MCPLogger;
29
- export declare const registryLogger: MCPLogger;
30
- export declare const unifiedRegistryLogger: MCPLogger;
31
- export declare function setGlobalMCPLogLevel(level: LogLevel): void;
32
- export declare const LogLevels: {
33
- readonly debug: "debug";
34
- readonly info: "info";
35
- readonly warn: "warn";
36
- readonly error: "error";
37
- };
38
- export {};
@@ -1,100 +0,0 @@
1
- /**
2
- * MCP Logging Utility
3
- * Centralized logging for the MCP ecosystem
4
- */
5
- class MCPLogger {
6
- logLevel = "info";
7
- logs = [];
8
- maxLogs = 1000;
9
- constructor() {
10
- // Set log level from environment
11
- const envLevel = process.env.MCP_LOG_LEVEL?.toLowerCase();
12
- if (envLevel && ["debug", "info", "warn", "error"].includes(envLevel)) {
13
- this.logLevel = envLevel;
14
- }
15
- }
16
- setLogLevel(level) {
17
- this.logLevel = level;
18
- }
19
- shouldLog(level) {
20
- // CRITICAL: Respect CLI debug flag - hide all logs except errors unless debugging
21
- const isDebugMode = process.argv.includes("--debug");
22
- if (!isDebugMode && level !== "error") {
23
- return false;
24
- }
25
- const levels = ["debug", "info", "warn", "error"];
26
- return levels.indexOf(level) >= levels.indexOf(this.logLevel);
27
- }
28
- log(level, message, data) {
29
- if (!this.shouldLog(level)) {
30
- return;
31
- }
32
- const entry = {
33
- level,
34
- message,
35
- timestamp: new Date(),
36
- data,
37
- };
38
- // Store log entry
39
- this.logs.push(entry);
40
- // Trim old logs
41
- if (this.logs.length > this.maxLogs) {
42
- this.logs = this.logs.slice(-this.maxLogs);
43
- }
44
- // Console output
45
- const timestamp = entry.timestamp.toISOString();
46
- const prefix = `[${timestamp}] [MCP:${level.toUpperCase()}]`;
47
- switch (level) {
48
- case "debug":
49
- console.debug(prefix, message, data ? data : "");
50
- break;
51
- case "info":
52
- console.info(prefix, message, data ? data : "");
53
- break;
54
- case "warn":
55
- console.warn(prefix, message, data ? data : "");
56
- break;
57
- case "error":
58
- console.error(prefix, message, data ? data : "");
59
- break;
60
- }
61
- }
62
- debug(message, data) {
63
- this.log("debug", message, data);
64
- }
65
- info(message, data) {
66
- this.log("info", message, data);
67
- }
68
- warn(message, data) {
69
- this.log("warn", message, data);
70
- }
71
- error(message, data) {
72
- this.log("error", message, data);
73
- }
74
- getLogs(level) {
75
- if (level) {
76
- return this.logs.filter((log) => log.level === level);
77
- }
78
- return [...this.logs];
79
- }
80
- clearLogs() {
81
- this.logs = [];
82
- }
83
- }
84
- // Export singleton instance
85
- export const mcpLogger = new MCPLogger();
86
- // Additional logger instances for different modules
87
- export const autoDiscoveryLogger = mcpLogger;
88
- export const registryLogger = mcpLogger;
89
- export const unifiedRegistryLogger = mcpLogger;
90
- // Global log level setter
91
- export function setGlobalMCPLogLevel(level) {
92
- mcpLogger.setLogLevel(level);
93
- }
94
- // Export LogLevel enum for runtime use
95
- export const LogLevels = {
96
- debug: "debug",
97
- info: "info",
98
- warn: "warn",
99
- error: "error",
100
- };
@@ -1,68 +0,0 @@
1
- /**
2
- * NeuroLink MCP Manager
3
- * Manages MCP client instances following Lighthouse's session-based pattern
4
- */
5
- import { NeuroLinkMCPClient } from "./client.js";
6
- import type { MCPClientConfig } from "./client.js";
7
- import type { UnknownRecord } from "../types/common.js";
8
- /**
9
- * MCP Manager - Factory pattern for managing multiple client instances
10
- * Following Lighthouse's session-based architecture
11
- */
12
- export declare class NeuroLinkMCPManager {
13
- private static instances;
14
- private static lastCleanup;
15
- private static cleanupInterval;
16
- /**
17
- * Get or create an MCP client instance for a session
18
- */
19
- static getInstance(sessionId: string, config?: Partial<MCPClientConfig>): NeuroLinkMCPClient;
20
- /**
21
- * Remove the oldest instance based on creation time
22
- */
23
- private static removeOldestInstance;
24
- /**
25
- * Clean up instances that haven't been used recently
26
- */
27
- private static cleanupOldInstances;
28
- /**
29
- * Get list of active session IDs
30
- */
31
- static getActiveSessionIds(): string[];
32
- /**
33
- * Remove a specific instance
34
- */
35
- static removeInstance(sessionId: string): Promise<boolean>;
36
- /**
37
- * Get instance count
38
- */
39
- static getInstanceCount(): number;
40
- /**
41
- * Get maximum allowed instances
42
- */
43
- static getMaxInstances(): number;
44
- /**
45
- * Get statistics for all instances
46
- */
47
- static getAllStats(): {
48
- instanceCount: number;
49
- maxInstances: number;
50
- instances: Record<string, UnknownRecord>;
51
- };
52
- /**
53
- * Clear all instances (for testing or shutdown)
54
- */
55
- static clearAll(): Promise<void>;
56
- }
57
- /**
58
- * Convenience function to get MCP manager instance
59
- */
60
- export declare function getMCPManager(sessionId: string, config?: Partial<MCPClientConfig>): NeuroLinkMCPClient;
61
- /**
62
- * Convenience function to remove MCP manager instance
63
- */
64
- export declare function removeMCPManager(sessionId: string): Promise<boolean>;
65
- /**
66
- * Export manager for direct access if needed
67
- */
68
- export { NeuroLinkMCPManager as MCPManager };