@juspay/neurolink 6.0.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.
- package/CHANGELOG.md +14 -3
- package/dist/cli/commands/config.d.ts +13 -13
- package/dist/cli/index.js +3 -9
- package/dist/core/analytics.d.ts +11 -1
- package/dist/core/analytics.js +2 -2
- package/dist/core/base-provider.js +4 -18
- package/dist/core/dynamic-models.d.ts +8 -8
- package/dist/core/factory.js +3 -11
- package/dist/index.d.ts +2 -4
- package/dist/index.js +2 -11
- package/dist/lib/core/analytics.d.ts +11 -1
- package/dist/lib/core/analytics.js +2 -2
- package/dist/lib/core/base-provider.js +4 -18
- package/dist/lib/core/dynamic-models.d.ts +8 -8
- package/dist/lib/core/factory.js +3 -11
- package/dist/lib/index.d.ts +2 -4
- package/dist/lib/index.js +2 -11
- package/dist/lib/mcp/factory.d.ts +1 -1
- package/dist/lib/mcp/index.d.ts +7 -19
- package/dist/lib/mcp/index.js +15 -56
- package/dist/lib/neurolink.d.ts +1 -9
- package/dist/lib/neurolink.js +21 -70
- package/dist/lib/providers/amazon-bedrock.js +5 -16
- package/dist/lib/providers/anthropic-baseprovider.js +3 -21
- package/dist/lib/providers/anthropic.js +4 -7
- package/dist/lib/providers/azure-openai.js +4 -2
- package/dist/lib/providers/google-vertex.js +5 -9
- package/dist/lib/providers/huggingFace.js +5 -10
- package/dist/lib/providers/mistral.js +5 -8
- package/dist/lib/providers/openAI.js +4 -7
- package/dist/lib/utils/providerConfig.d.ts +117 -0
- package/dist/lib/utils/providerConfig.js +353 -0
- package/dist/lib/utils/providerUtils.d.ts +2 -1
- package/dist/lib/utils/providerUtils.js +53 -36
- package/dist/lib/utils/timeout.d.ts +72 -1
- package/dist/lib/utils/timeout.js +203 -2
- package/dist/mcp/factory.d.ts +1 -1
- package/dist/mcp/index.d.ts +7 -19
- package/dist/mcp/index.js +15 -56
- package/dist/neurolink.d.ts +1 -9
- package/dist/neurolink.js +21 -70
- package/dist/providers/amazon-bedrock.js +5 -16
- package/dist/providers/anthropic-baseprovider.js +3 -21
- package/dist/providers/anthropic.js +4 -7
- package/dist/providers/azure-openai.js +4 -2
- package/dist/providers/google-vertex.js +5 -9
- package/dist/providers/huggingFace.js +5 -10
- package/dist/providers/mistral.js +5 -8
- package/dist/providers/openAI.js +4 -7
- package/dist/utils/providerConfig.d.ts +117 -0
- package/dist/utils/providerConfig.js +353 -0
- package/dist/utils/providerUtils.d.ts +2 -1
- package/dist/utils/providerUtils.js +53 -36
- package/dist/utils/timeout.d.ts +72 -1
- package/dist/utils/timeout.js +203 -2
- package/package.json +2 -1
- package/dist/chat/client-utils.d.ts +0 -95
- package/dist/chat/client-utils.js +0 -315
- package/dist/chat/index.d.ts +0 -24
- package/dist/chat/index.js +0 -33
- package/dist/chat/session-storage.d.ts +0 -77
- package/dist/chat/session-storage.js +0 -233
- package/dist/chat/session.d.ts +0 -96
- package/dist/chat/session.js +0 -257
- package/dist/chat/sse-handler.d.ts +0 -49
- package/dist/chat/sse-handler.js +0 -259
- package/dist/chat/types.d.ts +0 -74
- package/dist/chat/types.js +0 -5
- package/dist/chat/websocket-chat-handler.d.ts +0 -37
- package/dist/chat/websocket-chat-handler.js +0 -262
- package/dist/cli/commands/mcp.d.ts +0 -20
- package/dist/cli/commands/mcp.js +0 -1272
- package/dist/core/defaults.d.ts +0 -19
- package/dist/core/defaults.js +0 -29
- package/dist/core/evaluation-config.d.ts +0 -29
- package/dist/core/evaluation-config.js +0 -144
- package/dist/factories/compatibility-factory.d.ts +0 -35
- package/dist/factories/compatibility-factory.js +0 -71
- package/dist/factories/provider-generate-factory.d.ts +0 -20
- package/dist/factories/provider-generate-factory.js +0 -93
- package/dist/lib/chat/client-utils.d.ts +0 -95
- package/dist/lib/chat/client-utils.js +0 -315
- package/dist/lib/chat/index.d.ts +0 -24
- package/dist/lib/chat/index.js +0 -33
- package/dist/lib/chat/session-storage.d.ts +0 -77
- package/dist/lib/chat/session-storage.js +0 -233
- package/dist/lib/chat/session.d.ts +0 -96
- package/dist/lib/chat/session.js +0 -257
- package/dist/lib/chat/sse-handler.d.ts +0 -49
- package/dist/lib/chat/sse-handler.js +0 -259
- package/dist/lib/chat/types.d.ts +0 -74
- package/dist/lib/chat/types.js +0 -5
- package/dist/lib/chat/websocket-chat-handler.d.ts +0 -37
- package/dist/lib/chat/websocket-chat-handler.js +0 -262
- package/dist/lib/core/defaults.d.ts +0 -19
- package/dist/lib/core/defaults.js +0 -29
- package/dist/lib/core/evaluation-config.d.ts +0 -29
- package/dist/lib/core/evaluation-config.js +0 -144
- package/dist/lib/factories/compatibility-factory.d.ts +0 -35
- package/dist/lib/factories/compatibility-factory.js +0 -71
- package/dist/lib/factories/provider-generate-factory.d.ts +0 -20
- package/dist/lib/factories/provider-generate-factory.js +0 -93
- package/dist/lib/mcp/adapters/plugin-bridge.d.ts +0 -40
- package/dist/lib/mcp/adapters/plugin-bridge.js +0 -89
- package/dist/lib/mcp/auto-discovery.d.ts +0 -62
- package/dist/lib/mcp/auto-discovery.js +0 -149
- package/dist/lib/mcp/client.d.ts +0 -68
- package/dist/lib/mcp/client.js +0 -248
- package/dist/lib/mcp/config.d.ts +0 -31
- package/dist/lib/mcp/config.js +0 -99
- package/dist/lib/mcp/context-manager.d.ts +0 -171
- package/dist/lib/mcp/context-manager.js +0 -362
- package/dist/lib/mcp/contracts/mcp-contract.d.ts +0 -169
- package/dist/lib/mcp/contracts/mcp-contract.js +0 -58
- package/dist/lib/mcp/core/plugin-manager.d.ts +0 -46
- package/dist/lib/mcp/core/plugin-manager.js +0 -110
- package/dist/lib/mcp/demo/plugin-demo.d.ts +0 -20
- package/dist/lib/mcp/demo/plugin-demo.js +0 -118
- package/dist/lib/mcp/dynamic-chain-executor.d.ts +0 -225
- package/dist/lib/mcp/dynamic-chain-executor.js +0 -489
- package/dist/lib/mcp/dynamic-orchestrator.d.ts +0 -115
- package/dist/lib/mcp/dynamic-orchestrator.js +0 -351
- package/dist/lib/mcp/ecosystem.d.ts +0 -75
- package/dist/lib/mcp/ecosystem.js +0 -161
- package/dist/lib/mcp/error-manager.d.ts +0 -254
- package/dist/lib/mcp/error-manager.js +0 -501
- package/dist/lib/mcp/error-recovery.d.ts +0 -159
- package/dist/lib/mcp/error-recovery.js +0 -405
- package/dist/lib/mcp/external-client.d.ts +0 -88
- package/dist/lib/mcp/external-client.js +0 -331
- package/dist/lib/mcp/external-manager.d.ts +0 -112
- package/dist/lib/mcp/external-manager.js +0 -308
- package/dist/lib/mcp/function-calling.d.ts +0 -65
- package/dist/lib/mcp/function-calling.js +0 -642
- package/dist/lib/mcp/health-monitor.d.ts +0 -257
- package/dist/lib/mcp/health-monitor.js +0 -630
- package/dist/lib/mcp/initialize-tools.d.ts +0 -29
- package/dist/lib/mcp/initialize-tools.js +0 -261
- package/dist/lib/mcp/initialize.d.ts +0 -18
- package/dist/lib/mcp/initialize.js +0 -62
- package/dist/lib/mcp/manager.d.ts +0 -68
- package/dist/lib/mcp/manager.js +0 -176
- package/dist/lib/mcp/neurolink-mcp-client.d.ts +0 -97
- package/dist/lib/mcp/neurolink-mcp-client.js +0 -462
- package/dist/lib/mcp/orchestrator.d.ts +0 -302
- package/dist/lib/mcp/orchestrator.js +0 -703
- package/dist/lib/mcp/plugin-manager.d.ts +0 -98
- package/dist/lib/mcp/plugin-manager.js +0 -296
- package/dist/lib/mcp/plugins/core/filesystem-mcp.d.ts +0 -36
- package/dist/lib/mcp/plugins/core/filesystem-mcp.js +0 -142
- package/dist/lib/mcp/plugins/filesystem-mcp.d.ts +0 -37
- package/dist/lib/mcp/plugins/filesystem-mcp.js +0 -54
- package/dist/lib/mcp/security-manager.d.ts +0 -87
- package/dist/lib/mcp/security-manager.js +0 -344
- package/dist/lib/mcp/semaphore-manager.d.ts +0 -137
- package/dist/lib/mcp/semaphore-manager.js +0 -329
- package/dist/lib/mcp/session-manager.d.ts +0 -187
- package/dist/lib/mcp/session-manager.js +0 -400
- package/dist/lib/mcp/session-persistence.d.ts +0 -93
- package/dist/lib/mcp/session-persistence.js +0 -301
- package/dist/lib/mcp/tool-integration.d.ts +0 -58
- package/dist/lib/mcp/tool-integration.js +0 -203
- package/dist/lib/mcp/transport-manager.d.ts +0 -154
- package/dist/lib/mcp/transport-manager.js +0 -334
- package/dist/lib/mcp/unified-mcp.d.ts +0 -133
- package/dist/lib/mcp/unified-mcp.js +0 -251
- package/dist/lib/mcp/unified-registry.d.ts +0 -165
- package/dist/lib/mcp/unified-registry.js +0 -538
- package/dist/lib/providers/analytics-helper.d.ts +0 -38
- package/dist/lib/providers/analytics-helper.js +0 -216
- package/dist/lib/providers/function-calling-provider.d.ts +0 -142
- package/dist/lib/providers/function-calling-provider.js +0 -630
- package/dist/lib/providers/mcp-provider.d.ts +0 -75
- package/dist/lib/providers/mcp-provider.js +0 -283
- package/dist/lib/providers/timeout-wrapper.d.ts +0 -40
- package/dist/lib/providers/timeout-wrapper.js +0 -100
- package/dist/lib/sdk/tool-extension.d.ts +0 -181
- package/dist/lib/sdk/tool-extension.js +0 -284
- package/dist/lib/services/streaming/streaming-manager.d.ts +0 -29
- package/dist/lib/services/streaming/streaming-manager.js +0 -245
- package/dist/lib/services/types.d.ts +0 -156
- package/dist/lib/services/types.js +0 -2
- package/dist/lib/services/websocket/websocket-server.d.ts +0 -34
- package/dist/lib/services/websocket/websocket-server.js +0 -305
- package/dist/lib/utils/provider-validation.d.ts +0 -36
- package/dist/lib/utils/provider-validation.js +0 -625
- package/dist/lib/utils/providerUtils-fixed.d.ts +0 -8
- package/dist/lib/utils/providerUtils-fixed.js +0 -94
- package/dist/lib/utils/streaming-utils.d.ts +0 -79
- package/dist/lib/utils/streaming-utils.js +0 -198
- package/dist/lib/utils/timeout-manager.d.ts +0 -75
- package/dist/lib/utils/timeout-manager.js +0 -244
- package/dist/mcp/adapters/plugin-bridge.d.ts +0 -40
- package/dist/mcp/adapters/plugin-bridge.js +0 -89
- package/dist/mcp/auto-discovery.d.ts +0 -62
- package/dist/mcp/auto-discovery.js +0 -149
- package/dist/mcp/client.d.ts +0 -68
- package/dist/mcp/client.js +0 -248
- package/dist/mcp/config.d.ts +0 -31
- package/dist/mcp/config.js +0 -99
- package/dist/mcp/context-manager.d.ts +0 -171
- package/dist/mcp/context-manager.js +0 -362
- package/dist/mcp/contracts/mcp-contract.d.ts +0 -169
- package/dist/mcp/contracts/mcp-contract.js +0 -58
- package/dist/mcp/core/plugin-manager.d.ts +0 -46
- package/dist/mcp/core/plugin-manager.js +0 -110
- package/dist/mcp/demo/plugin-demo.d.ts +0 -20
- package/dist/mcp/demo/plugin-demo.js +0 -118
- package/dist/mcp/dynamic-chain-executor.d.ts +0 -225
- package/dist/mcp/dynamic-chain-executor.js +0 -489
- package/dist/mcp/dynamic-orchestrator.d.ts +0 -115
- package/dist/mcp/dynamic-orchestrator.js +0 -351
- package/dist/mcp/ecosystem.d.ts +0 -75
- package/dist/mcp/ecosystem.js +0 -162
- package/dist/mcp/error-manager.d.ts +0 -254
- package/dist/mcp/error-manager.js +0 -501
- package/dist/mcp/error-recovery.d.ts +0 -159
- package/dist/mcp/error-recovery.js +0 -405
- package/dist/mcp/external-client.d.ts +0 -88
- package/dist/mcp/external-client.js +0 -331
- package/dist/mcp/external-manager.d.ts +0 -112
- package/dist/mcp/external-manager.js +0 -308
- package/dist/mcp/function-calling.d.ts +0 -65
- package/dist/mcp/function-calling.js +0 -642
- package/dist/mcp/health-monitor.d.ts +0 -257
- package/dist/mcp/health-monitor.js +0 -630
- package/dist/mcp/initialize-tools.d.ts +0 -29
- package/dist/mcp/initialize-tools.js +0 -262
- package/dist/mcp/initialize.d.ts +0 -18
- package/dist/mcp/initialize.js +0 -62
- package/dist/mcp/manager.d.ts +0 -68
- package/dist/mcp/manager.js +0 -176
- package/dist/mcp/neurolink-mcp-client.d.ts +0 -97
- package/dist/mcp/neurolink-mcp-client.js +0 -462
- package/dist/mcp/orchestrator.d.ts +0 -302
- package/dist/mcp/orchestrator.js +0 -703
- package/dist/mcp/plugin-manager.d.ts +0 -98
- package/dist/mcp/plugin-manager.js +0 -297
- package/dist/mcp/plugins/core/filesystem-mcp.d.ts +0 -36
- package/dist/mcp/plugins/core/filesystem-mcp.js +0 -142
- package/dist/mcp/plugins/core/neurolink-mcp.json +0 -17
- package/dist/mcp/plugins/filesystem-mcp.d.ts +0 -37
- package/dist/mcp/plugins/filesystem-mcp.js +0 -54
- package/dist/mcp/security-manager.d.ts +0 -87
- package/dist/mcp/security-manager.js +0 -344
- package/dist/mcp/semaphore-manager.d.ts +0 -137
- package/dist/mcp/semaphore-manager.js +0 -329
- package/dist/mcp/session-manager.d.ts +0 -187
- package/dist/mcp/session-manager.js +0 -400
- package/dist/mcp/session-persistence.d.ts +0 -93
- package/dist/mcp/session-persistence.js +0 -302
- package/dist/mcp/tool-integration.d.ts +0 -58
- package/dist/mcp/tool-integration.js +0 -203
- package/dist/mcp/transport-manager.d.ts +0 -154
- package/dist/mcp/transport-manager.js +0 -335
- package/dist/mcp/unified-mcp.d.ts +0 -133
- package/dist/mcp/unified-mcp.js +0 -251
- package/dist/mcp/unified-registry.d.ts +0 -165
- package/dist/mcp/unified-registry.js +0 -539
- package/dist/providers/analytics-helper.d.ts +0 -38
- package/dist/providers/analytics-helper.js +0 -216
- package/dist/providers/function-calling-provider.d.ts +0 -142
- package/dist/providers/function-calling-provider.js +0 -630
- package/dist/providers/mcp-provider.d.ts +0 -75
- package/dist/providers/mcp-provider.js +0 -283
- package/dist/providers/timeout-wrapper.d.ts +0 -40
- package/dist/providers/timeout-wrapper.js +0 -100
- package/dist/sdk/tool-extension.d.ts +0 -181
- package/dist/sdk/tool-extension.js +0 -284
- package/dist/services/streaming/streaming-manager.d.ts +0 -29
- package/dist/services/streaming/streaming-manager.js +0 -245
- package/dist/services/types.d.ts +0 -156
- package/dist/services/types.js +0 -2
- package/dist/services/websocket/websocket-server.d.ts +0 -34
- package/dist/services/websocket/websocket-server.js +0 -306
- package/dist/utils/provider-validation.d.ts +0 -36
- package/dist/utils/provider-validation.js +0 -625
- package/dist/utils/providerUtils-fixed.d.ts +0 -8
- package/dist/utils/providerUtils-fixed.js +0 -94
- package/dist/utils/streaming-utils.d.ts +0 -79
- package/dist/utils/streaming-utils.js +0 -198
- package/dist/utils/timeout-manager.d.ts +0 -75
- package/dist/utils/timeout-manager.js +0 -244
|
@@ -1,362 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* NeuroLink MCP Context Management System
|
|
3
|
-
* Unified context creation and management for all tool executions
|
|
4
|
-
* Ensures rich context flows through tool chain with session tracking
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* Context manager for creating and managing execution contexts
|
|
8
|
-
* Provides rich context for all tool executions with session tracking
|
|
9
|
-
*/
|
|
10
|
-
export class ContextManager {
|
|
11
|
-
sessionCounter = 0;
|
|
12
|
-
activeContexts = new Map();
|
|
13
|
-
static cachedLogger = null;
|
|
14
|
-
/**
|
|
15
|
-
* Create a new execution context with rich information
|
|
16
|
-
*
|
|
17
|
-
* @param request Context creation request with optional fields
|
|
18
|
-
* @returns Complete execution context ready for tool chain
|
|
19
|
-
*/
|
|
20
|
-
createContext(request = {}) {
|
|
21
|
-
// Generate session ID if not provided
|
|
22
|
-
const sessionId = request.sessionId || this.generateSessionId();
|
|
23
|
-
// Create comprehensive context
|
|
24
|
-
const context = {
|
|
25
|
-
// Session Management
|
|
26
|
-
sessionId,
|
|
27
|
-
userId: request.userId || "unknown-user",
|
|
28
|
-
// Required ExecutionContext properties
|
|
29
|
-
secureFS: {
|
|
30
|
-
readFile: async (path, encoding) => {
|
|
31
|
-
const fs = await import("fs/promises");
|
|
32
|
-
if (encoding) {
|
|
33
|
-
return fs.readFile(path, { encoding: encoding });
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
return fs.readFile(path);
|
|
37
|
-
}
|
|
38
|
-
},
|
|
39
|
-
writeFile: async (path, content) => {
|
|
40
|
-
const fs = await import("fs/promises");
|
|
41
|
-
return fs.writeFile(path, content);
|
|
42
|
-
},
|
|
43
|
-
readdir: async (path) => {
|
|
44
|
-
const fs = await import("fs/promises");
|
|
45
|
-
return fs.readdir(path);
|
|
46
|
-
},
|
|
47
|
-
stat: async (path) => {
|
|
48
|
-
const fs = await import("fs/promises");
|
|
49
|
-
return fs.stat(path);
|
|
50
|
-
},
|
|
51
|
-
mkdir: async (path, options) => {
|
|
52
|
-
const fs = await import("fs/promises");
|
|
53
|
-
await fs.mkdir(path, options);
|
|
54
|
-
},
|
|
55
|
-
exists: async (path) => {
|
|
56
|
-
const fs = await import("fs/promises");
|
|
57
|
-
try {
|
|
58
|
-
await fs.access(path);
|
|
59
|
-
return true;
|
|
60
|
-
}
|
|
61
|
-
catch {
|
|
62
|
-
return false;
|
|
63
|
-
}
|
|
64
|
-
},
|
|
65
|
-
},
|
|
66
|
-
path: {
|
|
67
|
-
join: (...paths) => {
|
|
68
|
-
// Use dynamic require for synchronous path operations
|
|
69
|
-
const path = require("path");
|
|
70
|
-
return path.join(...paths);
|
|
71
|
-
},
|
|
72
|
-
resolve: (...paths) => {
|
|
73
|
-
const path = require("path");
|
|
74
|
-
return path.resolve(...paths);
|
|
75
|
-
},
|
|
76
|
-
relative: (from, to) => {
|
|
77
|
-
const path = require("path");
|
|
78
|
-
return path.relative(from, to);
|
|
79
|
-
},
|
|
80
|
-
dirname: (path) => {
|
|
81
|
-
const pathModule = require("path");
|
|
82
|
-
return pathModule.dirname(path);
|
|
83
|
-
},
|
|
84
|
-
basename: (path, ext) => {
|
|
85
|
-
const pathModule = require("path");
|
|
86
|
-
return pathModule.basename(path, ext);
|
|
87
|
-
},
|
|
88
|
-
},
|
|
89
|
-
grantedPermissions: request.permissions || [],
|
|
90
|
-
log: async (level, message, data) => {
|
|
91
|
-
// Use cached logger if available, otherwise import and cache
|
|
92
|
-
try {
|
|
93
|
-
if (!ContextManager.cachedLogger) {
|
|
94
|
-
ContextManager.cachedLogger = await import("../utils/logger.js").then(({ logger }) => logger);
|
|
95
|
-
}
|
|
96
|
-
ContextManager.cachedLogger[level](message, data);
|
|
97
|
-
}
|
|
98
|
-
catch {
|
|
99
|
-
console[level === "debug" ? "log" : level](message, data);
|
|
100
|
-
}
|
|
101
|
-
},
|
|
102
|
-
// AI Provider Context (from existing NeuroLink)
|
|
103
|
-
aiProvider: request.aiProvider,
|
|
104
|
-
modelId: request.modelId,
|
|
105
|
-
temperature: request.temperature,
|
|
106
|
-
maxTokens: request.maxTokens,
|
|
107
|
-
// Business Context (new for MCP)
|
|
108
|
-
organizationId: request.organizationId,
|
|
109
|
-
projectId: request.projectId,
|
|
110
|
-
environmentType: request.environmentType || "development",
|
|
111
|
-
// Framework Context (new for MCP)
|
|
112
|
-
frameworkType: request.frameworkType,
|
|
113
|
-
// Tool Execution Context (initialized empty)
|
|
114
|
-
toolChain: [],
|
|
115
|
-
parentToolId: undefined,
|
|
116
|
-
// Security & Permissions
|
|
117
|
-
permissions: request.permissions || [],
|
|
118
|
-
securityLevel: request.securityLevel || "private",
|
|
119
|
-
// Copy any additional custom fields
|
|
120
|
-
...this.extractCustomFields(request),
|
|
121
|
-
};
|
|
122
|
-
// Store context for session management
|
|
123
|
-
this.activeContexts.set(sessionId, context);
|
|
124
|
-
return context;
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Add a tool to the execution chain
|
|
128
|
-
*
|
|
129
|
-
* @param context Execution context to modify
|
|
130
|
-
* @param toolName Name of the tool being executed
|
|
131
|
-
*/
|
|
132
|
-
addToToolChain(context, toolName) {
|
|
133
|
-
if (!context.toolChain) {
|
|
134
|
-
context.toolChain = [];
|
|
135
|
-
}
|
|
136
|
-
context.toolChain.push(toolName);
|
|
137
|
-
// Update the active context
|
|
138
|
-
this.activeContexts.set(context.sessionId, context);
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Get the current tool chain for a context
|
|
142
|
-
*
|
|
143
|
-
* @param context Execution context
|
|
144
|
-
* @returns Array of tool names in execution order
|
|
145
|
-
*/
|
|
146
|
-
getToolChain(context) {
|
|
147
|
-
return context.toolChain || [];
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Set parent tool for nested tool execution
|
|
151
|
-
*
|
|
152
|
-
* @param context Execution context to modify
|
|
153
|
-
* @param parentToolId ID of the parent tool
|
|
154
|
-
*/
|
|
155
|
-
setParentTool(context, parentToolId) {
|
|
156
|
-
context.parentToolId = parentToolId;
|
|
157
|
-
this.activeContexts.set(context.sessionId, context);
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Create child context for nested tool execution
|
|
161
|
-
*
|
|
162
|
-
* @param parentContext Parent execution context
|
|
163
|
-
* @param childToolName Name of the child tool
|
|
164
|
-
* @returns New child context with inherited properties
|
|
165
|
-
*/
|
|
166
|
-
createChildContext(parentContext, childToolName) {
|
|
167
|
-
const childContext = {
|
|
168
|
-
// Inherit all parent context
|
|
169
|
-
...parentContext,
|
|
170
|
-
// Create new session ID for child
|
|
171
|
-
sessionId: this.generateSessionId(),
|
|
172
|
-
// Set parent tool reference
|
|
173
|
-
parentToolId: parentContext.toolChain?.[parentContext.toolChain.length - 1],
|
|
174
|
-
// Reset tool chain for child (will be populated as child executes tools)
|
|
175
|
-
toolChain: [],
|
|
176
|
-
};
|
|
177
|
-
// Store child context
|
|
178
|
-
this.activeContexts.set(childContext.sessionId, childContext);
|
|
179
|
-
return childContext;
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Get context by session ID
|
|
183
|
-
*
|
|
184
|
-
* @param sessionId Session identifier
|
|
185
|
-
* @returns Execution context or undefined if not found
|
|
186
|
-
*/
|
|
187
|
-
getContext(sessionId) {
|
|
188
|
-
return this.activeContexts.get(sessionId);
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Update context with new information
|
|
192
|
-
*
|
|
193
|
-
* @param sessionId Session identifier
|
|
194
|
-
* @param updates Partial context updates
|
|
195
|
-
*/
|
|
196
|
-
updateContext(sessionId, updates) {
|
|
197
|
-
const context = this.activeContexts.get(sessionId);
|
|
198
|
-
if (context) {
|
|
199
|
-
const updatedContext = { ...context, ...updates };
|
|
200
|
-
this.activeContexts.set(sessionId, updatedContext);
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Store context directly (used when session ID changes)
|
|
205
|
-
*
|
|
206
|
-
* @param context Complete execution context to store
|
|
207
|
-
*/
|
|
208
|
-
storeContext(context) {
|
|
209
|
-
this.activeContexts.set(context.sessionId, context);
|
|
210
|
-
}
|
|
211
|
-
/**
|
|
212
|
-
* Remove context from active tracking
|
|
213
|
-
*
|
|
214
|
-
* @param sessionId Session identifier
|
|
215
|
-
*/
|
|
216
|
-
removeContext(sessionId) {
|
|
217
|
-
this.activeContexts.delete(sessionId);
|
|
218
|
-
}
|
|
219
|
-
/**
|
|
220
|
-
* Get all active contexts (for debugging/monitoring)
|
|
221
|
-
*
|
|
222
|
-
* @returns Array of all active contexts
|
|
223
|
-
*/
|
|
224
|
-
getActiveContexts() {
|
|
225
|
-
return Array.from(this.activeContexts.values());
|
|
226
|
-
}
|
|
227
|
-
/**
|
|
228
|
-
* Clear all active contexts
|
|
229
|
-
*/
|
|
230
|
-
clearAllContexts() {
|
|
231
|
-
this.activeContexts.clear();
|
|
232
|
-
this.sessionCounter = 0;
|
|
233
|
-
}
|
|
234
|
-
/**
|
|
235
|
-
* Get context statistics
|
|
236
|
-
*
|
|
237
|
-
* @returns Context usage statistics
|
|
238
|
-
*/
|
|
239
|
-
getStats() {
|
|
240
|
-
const contexts = Array.from(this.activeContexts.values());
|
|
241
|
-
const totalToolChainLength = contexts.reduce((sum, ctx) => sum + (ctx.toolChain?.length || 0), 0);
|
|
242
|
-
return {
|
|
243
|
-
activeContexts: contexts.length,
|
|
244
|
-
totalSessionsCreated: this.sessionCounter,
|
|
245
|
-
averageToolChainLength: contexts.length > 0 ? totalToolChainLength / contexts.length : 0,
|
|
246
|
-
};
|
|
247
|
-
}
|
|
248
|
-
/**
|
|
249
|
-
* Generate unique session ID
|
|
250
|
-
*
|
|
251
|
-
* @returns Unique session identifier
|
|
252
|
-
*/
|
|
253
|
-
generateSessionId() {
|
|
254
|
-
this.sessionCounter++;
|
|
255
|
-
const timestamp = Date.now();
|
|
256
|
-
const random = Math.random().toString(36).substring(2, 8);
|
|
257
|
-
return `nlmcp-${timestamp}-${this.sessionCounter}-${random}`;
|
|
258
|
-
}
|
|
259
|
-
/**
|
|
260
|
-
* Extract custom fields from request (excluding known fields)
|
|
261
|
-
*
|
|
262
|
-
* @param request Context creation request
|
|
263
|
-
* @returns Custom fields object
|
|
264
|
-
*/
|
|
265
|
-
extractCustomFields(request) {
|
|
266
|
-
const knownFields = new Set([
|
|
267
|
-
"sessionId",
|
|
268
|
-
"userId",
|
|
269
|
-
"aiProvider",
|
|
270
|
-
"modelId",
|
|
271
|
-
"temperature",
|
|
272
|
-
"maxTokens",
|
|
273
|
-
"organizationId",
|
|
274
|
-
"projectId",
|
|
275
|
-
"environmentType",
|
|
276
|
-
"frameworkType",
|
|
277
|
-
"permissions",
|
|
278
|
-
"securityLevel",
|
|
279
|
-
]);
|
|
280
|
-
const customFields = {};
|
|
281
|
-
for (const [key, value] of Object.entries(request)) {
|
|
282
|
-
if (!knownFields.has(key)) {
|
|
283
|
-
customFields[key] = value;
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
return customFields;
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
/**
|
|
290
|
-
* Default context manager instance
|
|
291
|
-
* Can be used across the application for consistent context management
|
|
292
|
-
*/
|
|
293
|
-
export const defaultContextManager = new ContextManager();
|
|
294
|
-
/**
|
|
295
|
-
* Utility function to create context with defaults
|
|
296
|
-
*
|
|
297
|
-
* @param request Optional context request
|
|
298
|
-
* @returns Execution context with sensible defaults
|
|
299
|
-
*/
|
|
300
|
-
export function createExecutionContext(request = {}) {
|
|
301
|
-
return defaultContextManager.createContext(request);
|
|
302
|
-
}
|
|
303
|
-
/**
|
|
304
|
-
* Utility function to add tool to default context manager
|
|
305
|
-
*
|
|
306
|
-
* @param context Execution context
|
|
307
|
-
* @param toolName Tool name to add
|
|
308
|
-
*/
|
|
309
|
-
export function addToolToChain(context, toolName) {
|
|
310
|
-
defaultContextManager.addToToolChain(context, toolName);
|
|
311
|
-
}
|
|
312
|
-
/**
|
|
313
|
-
* Context validation utilities
|
|
314
|
-
*/
|
|
315
|
-
export class ContextValidator {
|
|
316
|
-
/**
|
|
317
|
-
* Validate context has required fields for tool execution
|
|
318
|
-
*
|
|
319
|
-
* @param context Execution context to validate
|
|
320
|
-
* @returns Validation result with details
|
|
321
|
-
*/
|
|
322
|
-
static validateContext(context) {
|
|
323
|
-
const errors = [];
|
|
324
|
-
const warnings = [];
|
|
325
|
-
// Required field validation
|
|
326
|
-
if (!context.sessionId) {
|
|
327
|
-
errors.push("sessionId is required");
|
|
328
|
-
}
|
|
329
|
-
// Optional field validation with warnings
|
|
330
|
-
if (!context.environmentType) {
|
|
331
|
-
warnings.push("environmentType not specified, defaulting to development");
|
|
332
|
-
}
|
|
333
|
-
if (!context.securityLevel) {
|
|
334
|
-
warnings.push("securityLevel not specified, defaulting to private");
|
|
335
|
-
}
|
|
336
|
-
// Tool chain validation
|
|
337
|
-
if (context.toolChain && context.toolChain.length > 10) {
|
|
338
|
-
warnings.push("Tool chain is getting long (>10 tools), consider breaking into smaller workflows");
|
|
339
|
-
}
|
|
340
|
-
return {
|
|
341
|
-
isValid: errors.length === 0,
|
|
342
|
-
errors,
|
|
343
|
-
warnings,
|
|
344
|
-
};
|
|
345
|
-
}
|
|
346
|
-
/**
|
|
347
|
-
* Validate context permissions for tool execution
|
|
348
|
-
*
|
|
349
|
-
* @param context Execution context
|
|
350
|
-
* @param requiredPermissions Permissions required by tool
|
|
351
|
-
* @returns Whether context has required permissions
|
|
352
|
-
*/
|
|
353
|
-
static hasPermissions(context, requiredPermissions) {
|
|
354
|
-
if (!requiredPermissions || requiredPermissions.length === 0) {
|
|
355
|
-
return true;
|
|
356
|
-
}
|
|
357
|
-
const contextPermissions = context.permissions || [];
|
|
358
|
-
// Check if context has all required permissions
|
|
359
|
-
return requiredPermissions.every((permission) => contextPermissions.includes(permission) ||
|
|
360
|
-
contextPermissions.includes("*"));
|
|
361
|
-
}
|
|
362
|
-
}
|
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Abstract Contract - The Foundation of NeuroLink's Plugin Ecosystem
|
|
3
|
-
* Based on research blueprint for extensible MCP architecture
|
|
4
|
-
*/
|
|
5
|
-
import type { ZodSchema } from "zod";
|
|
6
|
-
/**
|
|
7
|
-
* Metadata structure for MCP plugins following manifest-based discovery
|
|
8
|
-
*/
|
|
9
|
-
export interface MCPMetadata {
|
|
10
|
-
/** Unique NPM-style package name */
|
|
11
|
-
name: string;
|
|
12
|
-
/** Semantic version */
|
|
13
|
-
version: string;
|
|
14
|
-
/** Entry point path */
|
|
15
|
-
main: string;
|
|
16
|
-
/** Compatible NeuroLink version range */
|
|
17
|
-
engine: {
|
|
18
|
-
neurolink: string;
|
|
19
|
-
};
|
|
20
|
-
/** Human-readable description */
|
|
21
|
-
description: string;
|
|
22
|
-
/** Declarative permissions array for security */
|
|
23
|
-
permissions: string[];
|
|
24
|
-
/** JSON Schema for configuration validation */
|
|
25
|
-
configSchema?: ZodSchema | object;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Execution Context - Security Sandbox for MCP Operations
|
|
29
|
-
* Provides sandboxed access to system resources with permission checking
|
|
30
|
-
*/
|
|
31
|
-
export interface ExecutionContext {
|
|
32
|
-
/** Session identifier for tracking */
|
|
33
|
-
sessionId: string;
|
|
34
|
-
/** User identifier for permissions */
|
|
35
|
-
userId: string;
|
|
36
|
-
/** Sandboxed filesystem operations */
|
|
37
|
-
secureFS: {
|
|
38
|
-
readFile: (path: string, encoding?: string) => Promise<string | Buffer>;
|
|
39
|
-
writeFile: (path: string, content: string | Buffer) => Promise<void>;
|
|
40
|
-
readdir: (path: string) => Promise<string[]>;
|
|
41
|
-
stat: (path: string) => Promise<{
|
|
42
|
-
size: number;
|
|
43
|
-
isFile: () => boolean;
|
|
44
|
-
isDirectory: () => boolean;
|
|
45
|
-
}>;
|
|
46
|
-
mkdir: (path: string, options?: {
|
|
47
|
-
recursive?: boolean;
|
|
48
|
-
}) => Promise<void>;
|
|
49
|
-
exists: (path: string) => Promise<boolean>;
|
|
50
|
-
};
|
|
51
|
-
/** Sandboxed path operations */
|
|
52
|
-
path: {
|
|
53
|
-
join: (...paths: string[]) => string;
|
|
54
|
-
resolve: (...paths: string[]) => string;
|
|
55
|
-
relative: (from: string, to: string) => string;
|
|
56
|
-
dirname: (path: string) => string;
|
|
57
|
-
basename: (path: string, ext?: string) => string;
|
|
58
|
-
};
|
|
59
|
-
/** Sandboxed network operations (future) */
|
|
60
|
-
secureNet?: {
|
|
61
|
-
fetch: (url: string, options?: RequestInit) => Promise<Response>;
|
|
62
|
-
};
|
|
63
|
-
/** Plugin-specific permissions granted */
|
|
64
|
-
grantedPermissions: string[];
|
|
65
|
-
/** Log function for debugging */
|
|
66
|
-
log: (level: "debug" | "info" | "warn" | "error", message: string, data?: unknown) => void;
|
|
67
|
-
/** Plugin instance reference (for plugin bridge compatibility) */
|
|
68
|
-
plugin?: unknown;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* MCP Abstract Class - The Core Contract for All Plugins
|
|
72
|
-
* Uses TypeScript generics for type-safe configuration
|
|
73
|
-
*/
|
|
74
|
-
export declare abstract class MCP<TConfig = unknown, TArgs = unknown, TResult = unknown> {
|
|
75
|
-
/** Static metadata loaded from manifest */
|
|
76
|
-
abstract readonly metadata: MCPMetadata;
|
|
77
|
-
/** Configuration state - accessible to child classes */
|
|
78
|
-
config?: TConfig;
|
|
79
|
-
/** Initialization flag */
|
|
80
|
-
protected initialized: boolean;
|
|
81
|
-
/**
|
|
82
|
-
* Initialize the MCP with user-provided configuration
|
|
83
|
-
* @param config - Plugin-specific configuration object
|
|
84
|
-
*/
|
|
85
|
-
abstract initialize(config: TConfig): Promise<void>;
|
|
86
|
-
/**
|
|
87
|
-
* Execute the MCP's primary functionality
|
|
88
|
-
* @param context - Sandboxed execution context
|
|
89
|
-
* @param args - Operation-specific arguments
|
|
90
|
-
* @returns Plugin-specific result
|
|
91
|
-
*/
|
|
92
|
-
abstract execute(context: ExecutionContext, args: TArgs): Promise<TResult>;
|
|
93
|
-
/**
|
|
94
|
-
* Graceful shutdown and resource cleanup
|
|
95
|
-
*/
|
|
96
|
-
abstract dispose(): Promise<void>;
|
|
97
|
-
/**
|
|
98
|
-
* Get the current configuration
|
|
99
|
-
*/
|
|
100
|
-
getConfig(): TConfig | undefined;
|
|
101
|
-
/**
|
|
102
|
-
* Check if the MCP is initialized
|
|
103
|
-
*/
|
|
104
|
-
isInitialized(): boolean;
|
|
105
|
-
/**
|
|
106
|
-
* Get plugin metadata
|
|
107
|
-
*/
|
|
108
|
-
getMetadata(): MCPMetadata;
|
|
109
|
-
/**
|
|
110
|
-
* Validate that the MCP is ready for execution
|
|
111
|
-
*/
|
|
112
|
-
protected ensureInitialized(): void;
|
|
113
|
-
/**
|
|
114
|
-
* Helper method for logging with context
|
|
115
|
-
*/
|
|
116
|
-
protected log(context: ExecutionContext, level: "debug" | "info" | "warn" | "error", message: string, data?: unknown): void;
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Type definitions for plugin registry
|
|
120
|
-
*/
|
|
121
|
-
export type MCPConstructor<T extends MCP = MCP> = new () => T;
|
|
122
|
-
export type MCPInstance<T extends MCP = MCP> = T;
|
|
123
|
-
/**
|
|
124
|
-
* Plugin discovery result
|
|
125
|
-
*/
|
|
126
|
-
export interface DiscoveredMCP {
|
|
127
|
-
metadata: MCPMetadata;
|
|
128
|
-
entryPath: string;
|
|
129
|
-
source: "core" | "project" | "installed";
|
|
130
|
-
constructor?: MCPConstructor;
|
|
131
|
-
[key: string]: unknown;
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Plugin load result
|
|
135
|
-
*/
|
|
136
|
-
export interface PluginLoadResult {
|
|
137
|
-
success: boolean;
|
|
138
|
-
plugin?: MCP;
|
|
139
|
-
error?: string;
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Plugin discovery result
|
|
143
|
-
*/
|
|
144
|
-
export interface PluginDiscoveryResult {
|
|
145
|
-
total: number;
|
|
146
|
-
loaded: number;
|
|
147
|
-
failed: number;
|
|
148
|
-
plugins: DiscoveredMCP[];
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Plugin execution result
|
|
152
|
-
*/
|
|
153
|
-
export interface PluginExecutionResult<T = unknown> {
|
|
154
|
-
success: boolean;
|
|
155
|
-
result?: T;
|
|
156
|
-
error?: string;
|
|
157
|
-
executionTime?: number;
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* MCP Category for organization
|
|
161
|
-
*/
|
|
162
|
-
export declare enum MCPCategory {
|
|
163
|
-
FILESYSTEM = "filesystem",
|
|
164
|
-
NETWORK = "network",
|
|
165
|
-
DATABASE = "database",
|
|
166
|
-
AI = "ai",
|
|
167
|
-
UTILITY = "utility",
|
|
168
|
-
INTEGRATION = "integration"
|
|
169
|
-
}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Abstract Contract - The Foundation of NeuroLink's Plugin Ecosystem
|
|
3
|
-
* Based on research blueprint for extensible MCP architecture
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* MCP Abstract Class - The Core Contract for All Plugins
|
|
7
|
-
* Uses TypeScript generics for type-safe configuration
|
|
8
|
-
*/
|
|
9
|
-
export class MCP {
|
|
10
|
-
/** Configuration state - accessible to child classes */
|
|
11
|
-
config;
|
|
12
|
-
/** Initialization flag */
|
|
13
|
-
initialized = false;
|
|
14
|
-
/**
|
|
15
|
-
* Get the current configuration
|
|
16
|
-
*/
|
|
17
|
-
getConfig() {
|
|
18
|
-
return this.config;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Check if the MCP is initialized
|
|
22
|
-
*/
|
|
23
|
-
isInitialized() {
|
|
24
|
-
return this.initialized;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Get plugin metadata
|
|
28
|
-
*/
|
|
29
|
-
getMetadata() {
|
|
30
|
-
return this.metadata;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Validate that the MCP is ready for execution
|
|
34
|
-
*/
|
|
35
|
-
ensureInitialized() {
|
|
36
|
-
if (!this.initialized) {
|
|
37
|
-
throw new Error(`MCP ${this.metadata.name} is not initialized. Call initialize() first.`);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Helper method for logging with context
|
|
42
|
-
*/
|
|
43
|
-
log(context, level, message, data) {
|
|
44
|
-
context.log(level, `[${this.metadata.name}] ${message}`, data);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* MCP Category for organization
|
|
49
|
-
*/
|
|
50
|
-
export var MCPCategory;
|
|
51
|
-
(function (MCPCategory) {
|
|
52
|
-
MCPCategory["FILESYSTEM"] = "filesystem";
|
|
53
|
-
MCPCategory["NETWORK"] = "network";
|
|
54
|
-
MCPCategory["DATABASE"] = "database";
|
|
55
|
-
MCPCategory["AI"] = "ai";
|
|
56
|
-
MCPCategory["UTILITY"] = "utility";
|
|
57
|
-
MCPCategory["INTEGRATION"] = "integration";
|
|
58
|
-
})(MCPCategory || (MCPCategory = {}));
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Core Plugin Manager
|
|
3
|
-
* Enhanced plugin management with advanced lifecycle control
|
|
4
|
-
*/
|
|
5
|
-
import type { MCP, MCPMetadata, MCPConstructor, PluginLoadResult, PluginExecutionResult, ExecutionContext } from "../contracts/mcp-contract.js";
|
|
6
|
-
import type { UnknownRecord, Unknown } from "../../types/common.js";
|
|
7
|
-
/**
|
|
8
|
-
* Enhanced plugin manager with core functionality
|
|
9
|
-
*/
|
|
10
|
-
export declare class CorePluginManager {
|
|
11
|
-
private plugins;
|
|
12
|
-
private constructors;
|
|
13
|
-
private metadata;
|
|
14
|
-
/**
|
|
15
|
-
* Load a plugin from constructor
|
|
16
|
-
*/
|
|
17
|
-
loadPlugin(name: string, Constructor: MCPConstructor, config: UnknownRecord): Promise<PluginLoadResult>;
|
|
18
|
-
/**
|
|
19
|
-
* Execute a plugin operation
|
|
20
|
-
*/
|
|
21
|
-
executePlugin<T = Unknown>(name: string, context: ExecutionContext, args: Unknown): Promise<PluginExecutionResult<T>>;
|
|
22
|
-
/**
|
|
23
|
-
* Get plugin instance
|
|
24
|
-
*/
|
|
25
|
-
getPlugin(name: string): MCP | undefined;
|
|
26
|
-
/**
|
|
27
|
-
* Get plugin metadata
|
|
28
|
-
*/
|
|
29
|
-
getPluginMetadata(name: string): MCPMetadata | undefined;
|
|
30
|
-
/**
|
|
31
|
-
* List all loaded plugins
|
|
32
|
-
*/
|
|
33
|
-
listPlugins(): string[];
|
|
34
|
-
/**
|
|
35
|
-
* Unload a plugin
|
|
36
|
-
*/
|
|
37
|
-
unloadPlugin(name: string): Promise<void>;
|
|
38
|
-
/**
|
|
39
|
-
* Dispose all plugins
|
|
40
|
-
*/
|
|
41
|
-
dispose(): Promise<void>;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Default core plugin manager instance
|
|
45
|
-
*/
|
|
46
|
-
export declare const corePluginManager: CorePluginManager;
|