@juspay/neurolink 1.10.0 → 1.11.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 (144) hide show
  1. package/CHANGELOG.md +43 -33
  2. package/README.md +16 -0
  3. package/dist/agent/direct-tools.d.ts +9 -9
  4. package/dist/cli/commands/agent-generate.d.ts +1 -2
  5. package/dist/cli/commands/agent-generate.js +5 -8
  6. package/dist/cli/commands/config.d.ts +2 -2
  7. package/dist/cli/commands/config.js +1 -1
  8. package/dist/cli/commands/mcp.js +91 -100
  9. package/dist/cli/commands/ollama.d.ts +2 -7
  10. package/dist/cli/commands/ollama.js +5 -8
  11. package/dist/cli/index.js +185 -276
  12. package/dist/core/factory.js +9 -10
  13. package/dist/index.d.ts +23 -0
  14. package/dist/index.js +35 -0
  15. package/dist/lib/agent/direct-tools.d.ts +9 -9
  16. package/dist/lib/core/factory.js +9 -10
  17. package/dist/lib/index.d.ts +23 -0
  18. package/dist/lib/index.js +35 -0
  19. package/dist/lib/mcp/adapters/plugin-bridge.d.ts +39 -0
  20. package/dist/lib/mcp/adapters/plugin-bridge.js +82 -0
  21. package/dist/lib/mcp/auto-discovery.d.ts +38 -96
  22. package/dist/lib/mcp/auto-discovery.js +100 -744
  23. package/dist/lib/mcp/client.js +4 -4
  24. package/dist/lib/mcp/context-manager.js +72 -1
  25. package/dist/lib/mcp/contracts/mcp-contract.d.ts +162 -0
  26. package/dist/lib/mcp/contracts/mcp-contract.js +58 -0
  27. package/dist/lib/mcp/core/plugin-manager.d.ts +45 -0
  28. package/dist/lib/mcp/core/plugin-manager.js +110 -0
  29. package/dist/lib/mcp/demo/plugin-demo.d.ts +20 -0
  30. package/dist/lib/mcp/demo/plugin-demo.js +116 -0
  31. package/dist/lib/mcp/ecosystem.d.ts +75 -0
  32. package/dist/lib/mcp/ecosystem.js +161 -0
  33. package/dist/lib/mcp/external-client.d.ts +88 -0
  34. package/dist/lib/mcp/external-client.js +323 -0
  35. package/dist/lib/mcp/external-manager.d.ts +112 -0
  36. package/dist/lib/mcp/external-manager.js +302 -0
  37. package/dist/lib/mcp/factory.d.ts +4 -4
  38. package/dist/lib/mcp/function-calling.js +59 -34
  39. package/dist/lib/mcp/index.d.ts +39 -184
  40. package/dist/lib/mcp/index.js +72 -150
  41. package/dist/lib/mcp/initialize.js +5 -5
  42. package/dist/lib/mcp/logging.d.ts +27 -60
  43. package/dist/lib/mcp/logging.js +77 -165
  44. package/dist/lib/mcp/neurolink-mcp-client.js +31 -3
  45. package/dist/lib/mcp/orchestrator.d.ts +1 -1
  46. package/dist/lib/mcp/orchestrator.js +13 -12
  47. package/dist/lib/mcp/plugin-manager.d.ts +98 -0
  48. package/dist/lib/mcp/plugin-manager.js +294 -0
  49. package/dist/lib/mcp/plugins/core/filesystem-mcp.d.ts +35 -0
  50. package/dist/lib/mcp/plugins/core/filesystem-mcp.js +139 -0
  51. package/dist/lib/mcp/plugins/filesystem-mcp.d.ts +36 -0
  52. package/dist/lib/mcp/plugins/filesystem-mcp.js +54 -0
  53. package/dist/lib/mcp/registry.d.ts +27 -176
  54. package/dist/lib/mcp/registry.js +31 -372
  55. package/dist/lib/mcp/security-manager.d.ts +85 -0
  56. package/dist/lib/mcp/security-manager.js +344 -0
  57. package/dist/lib/mcp/servers/ai-providers/ai-workflow-tools.d.ts +2 -2
  58. package/dist/lib/mcp/tool-integration.d.ts +4 -14
  59. package/dist/lib/mcp/tool-integration.js +43 -21
  60. package/dist/lib/mcp/tool-registry.d.ts +66 -0
  61. package/dist/lib/mcp/tool-registry.js +160 -0
  62. package/dist/lib/mcp/unified-mcp.d.ts +123 -0
  63. package/dist/lib/mcp/unified-mcp.js +246 -0
  64. package/dist/lib/mcp/unified-registry.d.ts +42 -229
  65. package/dist/lib/mcp/unified-registry.js +96 -1346
  66. package/dist/lib/neurolink.d.ts +3 -4
  67. package/dist/lib/neurolink.js +17 -18
  68. package/dist/lib/providers/agent-enhanced-provider.js +2 -2
  69. package/dist/lib/providers/amazonBedrock.js +2 -2
  70. package/dist/lib/providers/anthropic.js +3 -3
  71. package/dist/lib/providers/azureOpenAI.js +3 -3
  72. package/dist/lib/providers/function-calling-provider.js +34 -25
  73. package/dist/lib/providers/googleAIStudio.js +9 -3
  74. package/dist/lib/providers/googleVertexAI.js +2 -2
  75. package/dist/lib/providers/huggingFace.js +2 -2
  76. package/dist/lib/providers/mcp-provider.js +33 -5
  77. package/dist/lib/providers/mistralAI.js +2 -2
  78. package/dist/lib/providers/ollama.js +2 -2
  79. package/dist/lib/providers/openAI.js +2 -2
  80. package/dist/lib/utils/providerUtils-fixed.js +9 -9
  81. package/dist/mcp/adapters/plugin-bridge.d.ts +39 -0
  82. package/dist/mcp/adapters/plugin-bridge.js +82 -0
  83. package/dist/mcp/auto-discovery.d.ts +38 -96
  84. package/dist/mcp/auto-discovery.js +100 -745
  85. package/dist/mcp/client.js +4 -4
  86. package/dist/mcp/context-manager.js +72 -1
  87. package/dist/mcp/contracts/mcp-contract.d.ts +162 -0
  88. package/dist/mcp/contracts/mcp-contract.js +58 -0
  89. package/dist/mcp/core/plugin-manager.d.ts +45 -0
  90. package/dist/mcp/core/plugin-manager.js +110 -0
  91. package/dist/mcp/demo/plugin-demo.d.ts +20 -0
  92. package/dist/mcp/demo/plugin-demo.js +116 -0
  93. package/dist/mcp/ecosystem.d.ts +75 -0
  94. package/dist/mcp/ecosystem.js +162 -0
  95. package/dist/mcp/external-client.d.ts +88 -0
  96. package/dist/mcp/external-client.js +323 -0
  97. package/dist/mcp/external-manager.d.ts +112 -0
  98. package/dist/mcp/external-manager.js +302 -0
  99. package/dist/mcp/factory.d.ts +4 -4
  100. package/dist/mcp/function-calling.js +59 -34
  101. package/dist/mcp/index.d.ts +39 -184
  102. package/dist/mcp/index.js +72 -150
  103. package/dist/mcp/initialize.js +5 -5
  104. package/dist/mcp/logging.d.ts +27 -60
  105. package/dist/mcp/logging.js +77 -165
  106. package/dist/mcp/neurolink-mcp-client.js +31 -3
  107. package/dist/mcp/orchestrator.d.ts +1 -1
  108. package/dist/mcp/orchestrator.js +13 -12
  109. package/dist/mcp/plugin-manager.d.ts +98 -0
  110. package/dist/mcp/plugin-manager.js +295 -0
  111. package/dist/mcp/plugins/core/filesystem-mcp.d.ts +35 -0
  112. package/dist/mcp/plugins/core/filesystem-mcp.js +139 -0
  113. package/dist/mcp/plugins/core/neurolink-mcp.json +17 -0
  114. package/dist/mcp/plugins/filesystem-mcp.d.ts +36 -0
  115. package/dist/mcp/plugins/filesystem-mcp.js +54 -0
  116. package/dist/mcp/registry.d.ts +27 -176
  117. package/dist/mcp/registry.js +31 -372
  118. package/dist/mcp/security-manager.d.ts +85 -0
  119. package/dist/mcp/security-manager.js +344 -0
  120. package/dist/mcp/servers/ai-providers/ai-workflow-tools.d.ts +2 -2
  121. package/dist/mcp/tool-integration.d.ts +4 -14
  122. package/dist/mcp/tool-integration.js +43 -21
  123. package/dist/mcp/tool-registry.d.ts +66 -0
  124. package/dist/mcp/tool-registry.js +160 -0
  125. package/dist/mcp/unified-mcp.d.ts +123 -0
  126. package/dist/mcp/unified-mcp.js +246 -0
  127. package/dist/mcp/unified-registry.d.ts +42 -229
  128. package/dist/mcp/unified-registry.js +96 -1345
  129. package/dist/neurolink.d.ts +3 -4
  130. package/dist/neurolink.js +17 -18
  131. package/dist/providers/agent-enhanced-provider.js +2 -2
  132. package/dist/providers/amazonBedrock.js +2 -2
  133. package/dist/providers/anthropic.js +3 -3
  134. package/dist/providers/azureOpenAI.js +3 -3
  135. package/dist/providers/function-calling-provider.js +34 -25
  136. package/dist/providers/googleAIStudio.js +9 -3
  137. package/dist/providers/googleVertexAI.js +2 -2
  138. package/dist/providers/huggingFace.js +2 -2
  139. package/dist/providers/mcp-provider.js +33 -5
  140. package/dist/providers/mistralAI.js +2 -2
  141. package/dist/providers/ollama.js +2 -2
  142. package/dist/providers/openAI.js +2 -2
  143. package/dist/utils/providerUtils-fixed.js +9 -9
  144. package/package.json +1 -1
@@ -1,183 +1,95 @@
1
1
  /**
2
- * NeuroLink MCP Logging System
3
- * Provides configurable logging with different verbosity levels
2
+ * MCP Logging Utility
3
+ * Centralized logging for the MCP ecosystem
4
4
  */
5
- export var LogLevel;
6
- (function (LogLevel) {
7
- LogLevel[LogLevel["SILENT"] = 0] = "SILENT";
8
- LogLevel[LogLevel["ERROR"] = 1] = "ERROR";
9
- LogLevel[LogLevel["WARN"] = 2] = "WARN";
10
- LogLevel[LogLevel["INFO"] = 3] = "INFO";
11
- LogLevel[LogLevel["DEBUG"] = 4] = "DEBUG";
12
- })(LogLevel || (LogLevel = {}));
13
- /**
14
- * Configurable logger for MCP operations
15
- */
16
- export class MCPLogger {
17
- config;
18
- constructor(config = {}) {
19
- // Determine log level from environment or default to SILENT
20
- const envLogLevel = process.env.NEUROLINK_MCP_LOG_LEVEL?.toUpperCase();
21
- let defaultLevel = LogLevel.SILENT;
22
- switch (envLogLevel) {
23
- case "SILENT":
24
- defaultLevel = LogLevel.SILENT;
25
- break;
26
- case "ERROR":
27
- defaultLevel = LogLevel.ERROR;
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
+ const levels = ["debug", "info", "warn", "error"];
21
+ return levels.indexOf(level) >= levels.indexOf(this.logLevel);
22
+ }
23
+ log(level, message, data) {
24
+ if (!this.shouldLog(level)) {
25
+ return;
26
+ }
27
+ const entry = {
28
+ level,
29
+ message,
30
+ timestamp: new Date(),
31
+ data,
32
+ };
33
+ // Store log entry
34
+ this.logs.push(entry);
35
+ // Trim old logs
36
+ if (this.logs.length > this.maxLogs) {
37
+ this.logs = this.logs.slice(-this.maxLogs);
38
+ }
39
+ // Console output
40
+ const timestamp = entry.timestamp.toISOString();
41
+ const prefix = `[${timestamp}] [MCP:${level.toUpperCase()}]`;
42
+ switch (level) {
43
+ case "debug":
44
+ console.debug(prefix, message, data ? data : "");
28
45
  break;
29
- case "WARN":
30
- defaultLevel = LogLevel.WARN;
46
+ case "info":
47
+ console.info(prefix, message, data ? data : "");
31
48
  break;
32
- case "INFO":
33
- defaultLevel = LogLevel.INFO;
49
+ case "warn":
50
+ console.warn(prefix, message, data ? data : "");
34
51
  break;
35
- case "DEBUG":
36
- defaultLevel = LogLevel.DEBUG;
52
+ case "error":
53
+ console.error(prefix, message, data ? data : "");
37
54
  break;
38
55
  }
39
- this.config = {
40
- level: defaultLevel,
41
- prefix: "",
42
- colors: true,
43
- timestamp: false,
44
- ...config,
45
- };
46
56
  }
47
- /**
48
- * Set log level
49
- */
50
- setLevel(level) {
51
- this.config.level = level;
57
+ debug(message, data) {
58
+ this.log("debug", message, data);
52
59
  }
53
- /**
54
- * Get current log level
55
- */
56
- getLevel() {
57
- return this.config.level;
60
+ info(message, data) {
61
+ this.log("info", message, data);
58
62
  }
59
- /**
60
- * Log an error message
61
- */
62
- error(message, ...args) {
63
- if (this.config.level >= LogLevel.ERROR) {
64
- this.log("ERROR", message, ...args);
65
- }
63
+ warn(message, data) {
64
+ this.log("warn", message, data);
66
65
  }
67
- /**
68
- * Log a warning message
69
- */
70
- warn(message, ...args) {
71
- if (this.config.level >= LogLevel.WARN) {
72
- this.log("WARN", message, ...args);
73
- }
66
+ error(message, data) {
67
+ this.log("error", message, data);
74
68
  }
75
- /**
76
- * Log an info message
77
- */
78
- info(message, ...args) {
79
- if (this.config.level >= LogLevel.INFO) {
80
- this.log("INFO", message, ...args);
69
+ getLogs(level) {
70
+ if (level) {
71
+ return this.logs.filter((log) => log.level === level);
81
72
  }
73
+ return [...this.logs];
82
74
  }
83
- /**
84
- * Log a debug message
85
- */
86
- debug(message, ...args) {
87
- if (this.config.level >= LogLevel.DEBUG) {
88
- this.log("DEBUG", message, ...args);
89
- }
90
- }
91
- /**
92
- * Internal logging method
93
- */
94
- log(level, message, ...args) {
95
- let output = "";
96
- // Add timestamp if enabled
97
- if (this.config.timestamp) {
98
- output += `[${new Date().toISOString()}] `;
99
- }
100
- // Add prefix if configured
101
- if (this.config.prefix) {
102
- output += `[${this.config.prefix}] `;
103
- }
104
- // Add log level
105
- if (this.config.colors) {
106
- switch (level) {
107
- case "ERROR":
108
- output += `\x1b[31m[${level}]\x1b[0m `;
109
- break;
110
- case "WARN":
111
- output += `\x1b[33m[${level}]\x1b[0m `;
112
- break;
113
- case "INFO":
114
- output += `\x1b[36m[${level}]\x1b[0m `;
115
- break;
116
- case "DEBUG":
117
- output += `\x1b[90m[${level}]\x1b[0m `;
118
- break;
119
- default:
120
- output += `[${level}] `;
121
- }
122
- }
123
- else {
124
- output += `[${level}] `;
125
- }
126
- // Add message
127
- output += message;
128
- // Use appropriate console method
129
- switch (level) {
130
- case "ERROR":
131
- console.error(output, ...args);
132
- break;
133
- case "WARN":
134
- console.warn(output, ...args);
135
- break;
136
- default:
137
- console.log(output, ...args);
138
- }
75
+ clearLogs() {
76
+ this.logs = [];
139
77
  }
140
78
  }
141
- /**
142
- * Create logger instances for different MCP components
143
- */
144
- export const createLogger = (component) => {
145
- return new MCPLogger({
146
- prefix: component,
147
- });
148
- };
149
- /**
150
- * Default loggers for common MCP components
151
- */
152
- export const mcpLogger = createLogger("MCP");
153
- export const autoDiscoveryLogger = createLogger("MCPAutoDiscovery");
154
- export const registryLogger = createLogger("MCPRegistry");
155
- export const unifiedRegistryLogger = createLogger("UnifiedMCPRegistry");
156
- /**
157
- * Utility function to set global MCP log level
158
- */
79
+ // Export singleton instance
80
+ export const mcpLogger = new MCPLogger();
81
+ // Additional logger instances for different modules
82
+ export const autoDiscoveryLogger = mcpLogger;
83
+ export const registryLogger = mcpLogger;
84
+ export const unifiedRegistryLogger = mcpLogger;
85
+ // Global log level setter
159
86
  export function setGlobalMCPLogLevel(level) {
160
- mcpLogger.setLevel(level);
161
- autoDiscoveryLogger.setLevel(level);
162
- registryLogger.setLevel(level);
163
- unifiedRegistryLogger.setLevel(level);
164
- }
165
- /**
166
- * Utility function to parse log level from string
167
- */
168
- export function parseLogLevel(level) {
169
- switch (level.toUpperCase()) {
170
- case "SILENT":
171
- return LogLevel.SILENT;
172
- case "ERROR":
173
- return LogLevel.ERROR;
174
- case "WARN":
175
- return LogLevel.WARN;
176
- case "INFO":
177
- return LogLevel.INFO;
178
- case "DEBUG":
179
- return LogLevel.DEBUG;
180
- default:
181
- return LogLevel.WARN;
182
- }
87
+ mcpLogger.setLogLevel(level);
183
88
  }
89
+ // Export LogLevel enum for runtime use
90
+ export const LogLevels = {
91
+ debug: "debug",
92
+ info: "info",
93
+ warn: "warn",
94
+ error: "error",
95
+ };
@@ -218,11 +218,39 @@ Response (JSON array only):`;
218
218
  // Create execution context
219
219
  const context = {
220
220
  sessionId: this.sessionId,
221
- userId: this.config.userId,
222
- organizationId: this.config.organizationId,
223
- aiProvider: this.config.providerName,
221
+ userId: this.config.userId || "anonymous",
222
+ organizationId: this.config.organizationId || "default",
223
+ aiProvider: this.config.providerName || "unknown",
224
224
  modelId: this.config.modelName,
225
225
  timestamp: Date.now(),
226
+ // Required properties
227
+ secureFS: {
228
+ readFile: async () => {
229
+ throw new Error("secureFS not configured");
230
+ },
231
+ writeFile: async () => {
232
+ throw new Error("secureFS not configured");
233
+ },
234
+ readdir: async () => {
235
+ throw new Error("secureFS not configured");
236
+ },
237
+ stat: async () => {
238
+ throw new Error("secureFS not configured");
239
+ },
240
+ mkdir: async () => {
241
+ throw new Error("secureFS not configured");
242
+ },
243
+ exists: async () => false,
244
+ },
245
+ path: {
246
+ join: (...paths) => require("path").join(...paths),
247
+ resolve: (...paths) => require("path").resolve(...paths),
248
+ relative: (from, to) => require("path").relative(from, to),
249
+ dirname: (path) => require("path").dirname(path),
250
+ basename: (path, ext) => require("path").basename(path, ext),
251
+ },
252
+ grantedPermissions: [],
253
+ log: console.log,
226
254
  };
227
255
  // Emit tool start event
228
256
  this.executionCount++;
@@ -4,7 +4,7 @@
4
4
  * Coordinates factory, registry, context, and AI tools for seamless operation
5
5
  */
6
6
  import type { ToolResult } from "./factory.js";
7
- import { MCPToolRegistry, type ToolExecutionOptions } from "./registry.js";
7
+ import { MCPToolRegistry, type ToolExecutionOptions } from "./tool-registry.js";
8
8
  import { ContextManager, type ContextRequest } from "./context-manager.js";
9
9
  /**
10
10
  * Pipeline execution options
@@ -3,7 +3,7 @@
3
3
  * Central orchestrator for coordinated tool execution with pipeline management
4
4
  * Coordinates factory, registry, context, and AI tools for seamless operation
5
5
  */
6
- import { MCPToolRegistry, defaultToolRegistry, } from "./registry.js";
6
+ import { MCPToolRegistry, defaultToolRegistry, } from "./tool-registry.js";
7
7
  import { ContextManager, defaultContextManager, createExecutionContext, } from "./context-manager.js";
8
8
  import { aiCoreServer } from "./servers/ai-providers/ai-core-server.js";
9
9
  /**
@@ -25,7 +25,7 @@ export class MCPOrchestrator {
25
25
  */
26
26
  async initializeDefaultServers() {
27
27
  try {
28
- await this.registry.registerServer(aiCoreServer);
28
+ await this.registry.registerServer(aiCoreServer.id, aiCoreServer);
29
29
  console.log("[Orchestrator] Initialized with AI Core Server");
30
30
  }
31
31
  catch (error) {
@@ -46,7 +46,7 @@ export class MCPOrchestrator {
46
46
  const context = this.contextManager.createContext(contextRequest);
47
47
  console.log(`[Orchestrator] Executing tool '${toolName}' in session ${context.sessionId}`);
48
48
  // Execute tool through registry
49
- const result = await this.registry.executeTool(toolName, params, context, options);
49
+ const result = await this.registry.executeTool(toolName, params, context);
50
50
  console.log(`[Orchestrator] Tool '${toolName}' execution ${result.success ? "completed" : "failed"}`);
51
51
  return result;
52
52
  }
@@ -88,16 +88,14 @@ export class MCPOrchestrator {
88
88
  const stepId = step.stepId || `step-${stepsExecuted + 1}`;
89
89
  try {
90
90
  console.log(`[Orchestrator] Executing step: ${stepId} (${step.toolName})`);
91
- const stepResult = await this.registry.executeTool(step.toolName, step.params, context, {
92
- ...step.options,
93
- validateInput: validateInputs,
94
- trackMetrics,
95
- timeoutMs: timeout / steps.length, // Distribute timeout across steps
96
- });
91
+ const stepResult = await this.registry.executeTool(step.toolName, step.params, context);
97
92
  results.set(stepId, stepResult);
98
93
  stepsExecuted++;
99
94
  if (!stepResult.success) {
100
- errors.set(stepId, stepResult.error || "Unknown error");
95
+ const errorMessage = stepResult.error instanceof Error
96
+ ? stepResult.error.message
97
+ : stepResult.error || "Unknown error";
98
+ errors.set(stepId, errorMessage);
101
99
  if (stopOnError) {
102
100
  console.error(`[Orchestrator] Pipeline ${pipelineId} stopped due to error in step ${stepId}`);
103
101
  break;
@@ -300,10 +298,13 @@ export class MCPOrchestrator {
300
298
  executing.add(stepId);
301
299
  const step = stepMap.get(stepId);
302
300
  try {
303
- const result = await this.registry.executeTool(step.toolName, step.params, context, { ...step.options, ...options });
301
+ const result = await this.registry.executeTool(step.toolName, step.params, context);
304
302
  results.set(stepId, result);
305
303
  if (!result.success) {
306
- errors.set(stepId, result.error || "Unknown error");
304
+ const errorMessage = result.error instanceof Error
305
+ ? result.error.message
306
+ : result.error || "Unknown error";
307
+ errors.set(stepId, errorMessage);
307
308
  }
308
309
  }
309
310
  catch (error) {
@@ -0,0 +1,98 @@
1
+ /**
2
+ * PluginManager - Central Orchestrator for MCP Lifecycle
3
+ * Implements generic factory pattern with manifest-based discovery
4
+ * Based on research blueprint for extensible plugin architecture
5
+ */
6
+ import { MCP } from "./contracts/mcp-contract.js";
7
+ import type { MCPMetadata } from "./contracts/mcp-contract.js";
8
+ /**
9
+ * Plugin Manager Configuration
10
+ */
11
+ interface PluginManagerConfig {
12
+ /** Enable/disable plugin discovery */
13
+ enableDiscovery?: boolean;
14
+ /** Custom plugin directories */
15
+ pluginDirectories?: string[];
16
+ /** Security level for plugins */
17
+ securityLevel?: "strict" | "moderate" | "permissive";
18
+ /** Maximum plugins to load */
19
+ maxPlugins?: number;
20
+ }
21
+ /**
22
+ * Central Plugin Manager implementing the research blueprint
23
+ */
24
+ export declare class PluginManager {
25
+ private static instance;
26
+ private mcpConstructors;
27
+ private mcpInstances;
28
+ private discoveredMCPs;
29
+ private securityManager;
30
+ private initialized;
31
+ private config;
32
+ private constructor();
33
+ /**
34
+ * Get the singleton instance
35
+ */
36
+ static getInstance(config?: PluginManagerConfig): PluginManager;
37
+ /**
38
+ * Initialize the plugin manager with discovery
39
+ */
40
+ initialize(): Promise<void>;
41
+ /**
42
+ * Discover plugins following research blueprint priority:
43
+ * 1. Core plugins (bundled)
44
+ * 2. Project plugins (./neurolink-mcp/)
45
+ * 3. Installed plugins (node_modules)
46
+ */
47
+ private discoverPlugins;
48
+ /**
49
+ * Discover core plugins bundled with NeuroLink
50
+ */
51
+ private discoverCorePlugins;
52
+ /**
53
+ * Discover project-local plugins
54
+ */
55
+ private discoverProjectPlugins;
56
+ /**
57
+ * Discover installed plugins from node_modules
58
+ */
59
+ private discoverInstalledPlugins;
60
+ /**
61
+ * Discover plugins in a specific directory
62
+ */
63
+ private discoverPluginsInDirectory;
64
+ /**
65
+ * Validate manifest structure
66
+ */
67
+ private validateManifest;
68
+ /**
69
+ * Generic Factory Method - Creates type-safe MCP instances
70
+ * Core implementation of the research blueprint
71
+ */
72
+ createInstance<T extends MCP>(name: string, config: unknown): Promise<T>;
73
+ /**
74
+ * Get or load constructor for an MCP
75
+ */
76
+ private getConstructor;
77
+ /**
78
+ * List all discovered MCPs
79
+ */
80
+ listDiscovered(): MCPMetadata[];
81
+ /**
82
+ * Get metadata for a specific MCP
83
+ */
84
+ getMetadata(name: string): MCPMetadata | null;
85
+ /**
86
+ * Get discovery statistics
87
+ */
88
+ getDiscoveryStats(): Record<string, number>;
89
+ /**
90
+ * Dispose of all instances and cleanup
91
+ */
92
+ dispose(): Promise<void>;
93
+ }
94
+ /**
95
+ * Export singleton instance getter
96
+ */
97
+ export declare const pluginManager: PluginManager;
98
+ export {};