@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.
Files changed (283) hide show
  1. package/CHANGELOG.md +14 -3
  2. package/dist/cli/commands/config.d.ts +13 -13
  3. package/dist/cli/index.js +3 -9
  4. package/dist/core/analytics.d.ts +11 -1
  5. package/dist/core/analytics.js +2 -2
  6. package/dist/core/base-provider.js +4 -18
  7. package/dist/core/dynamic-models.d.ts +8 -8
  8. package/dist/core/factory.js +3 -11
  9. package/dist/index.d.ts +2 -4
  10. package/dist/index.js +2 -11
  11. package/dist/lib/core/analytics.d.ts +11 -1
  12. package/dist/lib/core/analytics.js +2 -2
  13. package/dist/lib/core/base-provider.js +4 -18
  14. package/dist/lib/core/dynamic-models.d.ts +8 -8
  15. package/dist/lib/core/factory.js +3 -11
  16. package/dist/lib/index.d.ts +2 -4
  17. package/dist/lib/index.js +2 -11
  18. package/dist/lib/mcp/factory.d.ts +1 -1
  19. package/dist/lib/mcp/index.d.ts +7 -19
  20. package/dist/lib/mcp/index.js +15 -56
  21. package/dist/lib/neurolink.d.ts +1 -9
  22. package/dist/lib/neurolink.js +21 -70
  23. package/dist/lib/providers/amazon-bedrock.js +5 -16
  24. package/dist/lib/providers/anthropic-baseprovider.js +3 -21
  25. package/dist/lib/providers/anthropic.js +4 -7
  26. package/dist/lib/providers/azure-openai.js +4 -2
  27. package/dist/lib/providers/google-vertex.js +5 -9
  28. package/dist/lib/providers/huggingFace.js +5 -10
  29. package/dist/lib/providers/mistral.js +5 -8
  30. package/dist/lib/providers/openAI.js +4 -7
  31. package/dist/lib/utils/providerConfig.d.ts +117 -0
  32. package/dist/lib/utils/providerConfig.js +353 -0
  33. package/dist/lib/utils/providerUtils.d.ts +2 -1
  34. package/dist/lib/utils/providerUtils.js +53 -36
  35. package/dist/lib/utils/timeout.d.ts +72 -1
  36. package/dist/lib/utils/timeout.js +203 -2
  37. package/dist/mcp/factory.d.ts +1 -1
  38. package/dist/mcp/index.d.ts +7 -19
  39. package/dist/mcp/index.js +15 -56
  40. package/dist/neurolink.d.ts +1 -9
  41. package/dist/neurolink.js +21 -70
  42. package/dist/providers/amazon-bedrock.js +5 -16
  43. package/dist/providers/anthropic-baseprovider.js +3 -21
  44. package/dist/providers/anthropic.js +4 -7
  45. package/dist/providers/azure-openai.js +4 -2
  46. package/dist/providers/google-vertex.js +5 -9
  47. package/dist/providers/huggingFace.js +5 -10
  48. package/dist/providers/mistral.js +5 -8
  49. package/dist/providers/openAI.js +4 -7
  50. package/dist/utils/providerConfig.d.ts +117 -0
  51. package/dist/utils/providerConfig.js +353 -0
  52. package/dist/utils/providerUtils.d.ts +2 -1
  53. package/dist/utils/providerUtils.js +53 -36
  54. package/dist/utils/timeout.d.ts +72 -1
  55. package/dist/utils/timeout.js +203 -2
  56. package/package.json +2 -1
  57. package/dist/chat/client-utils.d.ts +0 -95
  58. package/dist/chat/client-utils.js +0 -315
  59. package/dist/chat/index.d.ts +0 -24
  60. package/dist/chat/index.js +0 -33
  61. package/dist/chat/session-storage.d.ts +0 -77
  62. package/dist/chat/session-storage.js +0 -233
  63. package/dist/chat/session.d.ts +0 -96
  64. package/dist/chat/session.js +0 -257
  65. package/dist/chat/sse-handler.d.ts +0 -49
  66. package/dist/chat/sse-handler.js +0 -259
  67. package/dist/chat/types.d.ts +0 -74
  68. package/dist/chat/types.js +0 -5
  69. package/dist/chat/websocket-chat-handler.d.ts +0 -37
  70. package/dist/chat/websocket-chat-handler.js +0 -262
  71. package/dist/cli/commands/mcp.d.ts +0 -20
  72. package/dist/cli/commands/mcp.js +0 -1272
  73. package/dist/core/defaults.d.ts +0 -19
  74. package/dist/core/defaults.js +0 -29
  75. package/dist/core/evaluation-config.d.ts +0 -29
  76. package/dist/core/evaluation-config.js +0 -144
  77. package/dist/factories/compatibility-factory.d.ts +0 -35
  78. package/dist/factories/compatibility-factory.js +0 -71
  79. package/dist/factories/provider-generate-factory.d.ts +0 -20
  80. package/dist/factories/provider-generate-factory.js +0 -93
  81. package/dist/lib/chat/client-utils.d.ts +0 -95
  82. package/dist/lib/chat/client-utils.js +0 -315
  83. package/dist/lib/chat/index.d.ts +0 -24
  84. package/dist/lib/chat/index.js +0 -33
  85. package/dist/lib/chat/session-storage.d.ts +0 -77
  86. package/dist/lib/chat/session-storage.js +0 -233
  87. package/dist/lib/chat/session.d.ts +0 -96
  88. package/dist/lib/chat/session.js +0 -257
  89. package/dist/lib/chat/sse-handler.d.ts +0 -49
  90. package/dist/lib/chat/sse-handler.js +0 -259
  91. package/dist/lib/chat/types.d.ts +0 -74
  92. package/dist/lib/chat/types.js +0 -5
  93. package/dist/lib/chat/websocket-chat-handler.d.ts +0 -37
  94. package/dist/lib/chat/websocket-chat-handler.js +0 -262
  95. package/dist/lib/core/defaults.d.ts +0 -19
  96. package/dist/lib/core/defaults.js +0 -29
  97. package/dist/lib/core/evaluation-config.d.ts +0 -29
  98. package/dist/lib/core/evaluation-config.js +0 -144
  99. package/dist/lib/factories/compatibility-factory.d.ts +0 -35
  100. package/dist/lib/factories/compatibility-factory.js +0 -71
  101. package/dist/lib/factories/provider-generate-factory.d.ts +0 -20
  102. package/dist/lib/factories/provider-generate-factory.js +0 -93
  103. package/dist/lib/mcp/adapters/plugin-bridge.d.ts +0 -40
  104. package/dist/lib/mcp/adapters/plugin-bridge.js +0 -89
  105. package/dist/lib/mcp/auto-discovery.d.ts +0 -62
  106. package/dist/lib/mcp/auto-discovery.js +0 -149
  107. package/dist/lib/mcp/client.d.ts +0 -68
  108. package/dist/lib/mcp/client.js +0 -248
  109. package/dist/lib/mcp/config.d.ts +0 -31
  110. package/dist/lib/mcp/config.js +0 -99
  111. package/dist/lib/mcp/context-manager.d.ts +0 -171
  112. package/dist/lib/mcp/context-manager.js +0 -362
  113. package/dist/lib/mcp/contracts/mcp-contract.d.ts +0 -169
  114. package/dist/lib/mcp/contracts/mcp-contract.js +0 -58
  115. package/dist/lib/mcp/core/plugin-manager.d.ts +0 -46
  116. package/dist/lib/mcp/core/plugin-manager.js +0 -110
  117. package/dist/lib/mcp/demo/plugin-demo.d.ts +0 -20
  118. package/dist/lib/mcp/demo/plugin-demo.js +0 -118
  119. package/dist/lib/mcp/dynamic-chain-executor.d.ts +0 -225
  120. package/dist/lib/mcp/dynamic-chain-executor.js +0 -489
  121. package/dist/lib/mcp/dynamic-orchestrator.d.ts +0 -115
  122. package/dist/lib/mcp/dynamic-orchestrator.js +0 -351
  123. package/dist/lib/mcp/ecosystem.d.ts +0 -75
  124. package/dist/lib/mcp/ecosystem.js +0 -161
  125. package/dist/lib/mcp/error-manager.d.ts +0 -254
  126. package/dist/lib/mcp/error-manager.js +0 -501
  127. package/dist/lib/mcp/error-recovery.d.ts +0 -159
  128. package/dist/lib/mcp/error-recovery.js +0 -405
  129. package/dist/lib/mcp/external-client.d.ts +0 -88
  130. package/dist/lib/mcp/external-client.js +0 -331
  131. package/dist/lib/mcp/external-manager.d.ts +0 -112
  132. package/dist/lib/mcp/external-manager.js +0 -308
  133. package/dist/lib/mcp/function-calling.d.ts +0 -65
  134. package/dist/lib/mcp/function-calling.js +0 -642
  135. package/dist/lib/mcp/health-monitor.d.ts +0 -257
  136. package/dist/lib/mcp/health-monitor.js +0 -630
  137. package/dist/lib/mcp/initialize-tools.d.ts +0 -29
  138. package/dist/lib/mcp/initialize-tools.js +0 -261
  139. package/dist/lib/mcp/initialize.d.ts +0 -18
  140. package/dist/lib/mcp/initialize.js +0 -62
  141. package/dist/lib/mcp/manager.d.ts +0 -68
  142. package/dist/lib/mcp/manager.js +0 -176
  143. package/dist/lib/mcp/neurolink-mcp-client.d.ts +0 -97
  144. package/dist/lib/mcp/neurolink-mcp-client.js +0 -462
  145. package/dist/lib/mcp/orchestrator.d.ts +0 -302
  146. package/dist/lib/mcp/orchestrator.js +0 -703
  147. package/dist/lib/mcp/plugin-manager.d.ts +0 -98
  148. package/dist/lib/mcp/plugin-manager.js +0 -296
  149. package/dist/lib/mcp/plugins/core/filesystem-mcp.d.ts +0 -36
  150. package/dist/lib/mcp/plugins/core/filesystem-mcp.js +0 -142
  151. package/dist/lib/mcp/plugins/filesystem-mcp.d.ts +0 -37
  152. package/dist/lib/mcp/plugins/filesystem-mcp.js +0 -54
  153. package/dist/lib/mcp/security-manager.d.ts +0 -87
  154. package/dist/lib/mcp/security-manager.js +0 -344
  155. package/dist/lib/mcp/semaphore-manager.d.ts +0 -137
  156. package/dist/lib/mcp/semaphore-manager.js +0 -329
  157. package/dist/lib/mcp/session-manager.d.ts +0 -187
  158. package/dist/lib/mcp/session-manager.js +0 -400
  159. package/dist/lib/mcp/session-persistence.d.ts +0 -93
  160. package/dist/lib/mcp/session-persistence.js +0 -301
  161. package/dist/lib/mcp/tool-integration.d.ts +0 -58
  162. package/dist/lib/mcp/tool-integration.js +0 -203
  163. package/dist/lib/mcp/transport-manager.d.ts +0 -154
  164. package/dist/lib/mcp/transport-manager.js +0 -334
  165. package/dist/lib/mcp/unified-mcp.d.ts +0 -133
  166. package/dist/lib/mcp/unified-mcp.js +0 -251
  167. package/dist/lib/mcp/unified-registry.d.ts +0 -165
  168. package/dist/lib/mcp/unified-registry.js +0 -538
  169. package/dist/lib/providers/analytics-helper.d.ts +0 -38
  170. package/dist/lib/providers/analytics-helper.js +0 -216
  171. package/dist/lib/providers/function-calling-provider.d.ts +0 -142
  172. package/dist/lib/providers/function-calling-provider.js +0 -630
  173. package/dist/lib/providers/mcp-provider.d.ts +0 -75
  174. package/dist/lib/providers/mcp-provider.js +0 -283
  175. package/dist/lib/providers/timeout-wrapper.d.ts +0 -40
  176. package/dist/lib/providers/timeout-wrapper.js +0 -100
  177. package/dist/lib/sdk/tool-extension.d.ts +0 -181
  178. package/dist/lib/sdk/tool-extension.js +0 -284
  179. package/dist/lib/services/streaming/streaming-manager.d.ts +0 -29
  180. package/dist/lib/services/streaming/streaming-manager.js +0 -245
  181. package/dist/lib/services/types.d.ts +0 -156
  182. package/dist/lib/services/types.js +0 -2
  183. package/dist/lib/services/websocket/websocket-server.d.ts +0 -34
  184. package/dist/lib/services/websocket/websocket-server.js +0 -305
  185. package/dist/lib/utils/provider-validation.d.ts +0 -36
  186. package/dist/lib/utils/provider-validation.js +0 -625
  187. package/dist/lib/utils/providerUtils-fixed.d.ts +0 -8
  188. package/dist/lib/utils/providerUtils-fixed.js +0 -94
  189. package/dist/lib/utils/streaming-utils.d.ts +0 -79
  190. package/dist/lib/utils/streaming-utils.js +0 -198
  191. package/dist/lib/utils/timeout-manager.d.ts +0 -75
  192. package/dist/lib/utils/timeout-manager.js +0 -244
  193. package/dist/mcp/adapters/plugin-bridge.d.ts +0 -40
  194. package/dist/mcp/adapters/plugin-bridge.js +0 -89
  195. package/dist/mcp/auto-discovery.d.ts +0 -62
  196. package/dist/mcp/auto-discovery.js +0 -149
  197. package/dist/mcp/client.d.ts +0 -68
  198. package/dist/mcp/client.js +0 -248
  199. package/dist/mcp/config.d.ts +0 -31
  200. package/dist/mcp/config.js +0 -99
  201. package/dist/mcp/context-manager.d.ts +0 -171
  202. package/dist/mcp/context-manager.js +0 -362
  203. package/dist/mcp/contracts/mcp-contract.d.ts +0 -169
  204. package/dist/mcp/contracts/mcp-contract.js +0 -58
  205. package/dist/mcp/core/plugin-manager.d.ts +0 -46
  206. package/dist/mcp/core/plugin-manager.js +0 -110
  207. package/dist/mcp/demo/plugin-demo.d.ts +0 -20
  208. package/dist/mcp/demo/plugin-demo.js +0 -118
  209. package/dist/mcp/dynamic-chain-executor.d.ts +0 -225
  210. package/dist/mcp/dynamic-chain-executor.js +0 -489
  211. package/dist/mcp/dynamic-orchestrator.d.ts +0 -115
  212. package/dist/mcp/dynamic-orchestrator.js +0 -351
  213. package/dist/mcp/ecosystem.d.ts +0 -75
  214. package/dist/mcp/ecosystem.js +0 -162
  215. package/dist/mcp/error-manager.d.ts +0 -254
  216. package/dist/mcp/error-manager.js +0 -501
  217. package/dist/mcp/error-recovery.d.ts +0 -159
  218. package/dist/mcp/error-recovery.js +0 -405
  219. package/dist/mcp/external-client.d.ts +0 -88
  220. package/dist/mcp/external-client.js +0 -331
  221. package/dist/mcp/external-manager.d.ts +0 -112
  222. package/dist/mcp/external-manager.js +0 -308
  223. package/dist/mcp/function-calling.d.ts +0 -65
  224. package/dist/mcp/function-calling.js +0 -642
  225. package/dist/mcp/health-monitor.d.ts +0 -257
  226. package/dist/mcp/health-monitor.js +0 -630
  227. package/dist/mcp/initialize-tools.d.ts +0 -29
  228. package/dist/mcp/initialize-tools.js +0 -262
  229. package/dist/mcp/initialize.d.ts +0 -18
  230. package/dist/mcp/initialize.js +0 -62
  231. package/dist/mcp/manager.d.ts +0 -68
  232. package/dist/mcp/manager.js +0 -176
  233. package/dist/mcp/neurolink-mcp-client.d.ts +0 -97
  234. package/dist/mcp/neurolink-mcp-client.js +0 -462
  235. package/dist/mcp/orchestrator.d.ts +0 -302
  236. package/dist/mcp/orchestrator.js +0 -703
  237. package/dist/mcp/plugin-manager.d.ts +0 -98
  238. package/dist/mcp/plugin-manager.js +0 -297
  239. package/dist/mcp/plugins/core/filesystem-mcp.d.ts +0 -36
  240. package/dist/mcp/plugins/core/filesystem-mcp.js +0 -142
  241. package/dist/mcp/plugins/core/neurolink-mcp.json +0 -17
  242. package/dist/mcp/plugins/filesystem-mcp.d.ts +0 -37
  243. package/dist/mcp/plugins/filesystem-mcp.js +0 -54
  244. package/dist/mcp/security-manager.d.ts +0 -87
  245. package/dist/mcp/security-manager.js +0 -344
  246. package/dist/mcp/semaphore-manager.d.ts +0 -137
  247. package/dist/mcp/semaphore-manager.js +0 -329
  248. package/dist/mcp/session-manager.d.ts +0 -187
  249. package/dist/mcp/session-manager.js +0 -400
  250. package/dist/mcp/session-persistence.d.ts +0 -93
  251. package/dist/mcp/session-persistence.js +0 -302
  252. package/dist/mcp/tool-integration.d.ts +0 -58
  253. package/dist/mcp/tool-integration.js +0 -203
  254. package/dist/mcp/transport-manager.d.ts +0 -154
  255. package/dist/mcp/transport-manager.js +0 -335
  256. package/dist/mcp/unified-mcp.d.ts +0 -133
  257. package/dist/mcp/unified-mcp.js +0 -251
  258. package/dist/mcp/unified-registry.d.ts +0 -165
  259. package/dist/mcp/unified-registry.js +0 -539
  260. package/dist/providers/analytics-helper.d.ts +0 -38
  261. package/dist/providers/analytics-helper.js +0 -216
  262. package/dist/providers/function-calling-provider.d.ts +0 -142
  263. package/dist/providers/function-calling-provider.js +0 -630
  264. package/dist/providers/mcp-provider.d.ts +0 -75
  265. package/dist/providers/mcp-provider.js +0 -283
  266. package/dist/providers/timeout-wrapper.d.ts +0 -40
  267. package/dist/providers/timeout-wrapper.js +0 -100
  268. package/dist/sdk/tool-extension.d.ts +0 -181
  269. package/dist/sdk/tool-extension.js +0 -284
  270. package/dist/services/streaming/streaming-manager.d.ts +0 -29
  271. package/dist/services/streaming/streaming-manager.js +0 -245
  272. package/dist/services/types.d.ts +0 -156
  273. package/dist/services/types.js +0 -2
  274. package/dist/services/websocket/websocket-server.d.ts +0 -34
  275. package/dist/services/websocket/websocket-server.js +0 -306
  276. package/dist/utils/provider-validation.d.ts +0 -36
  277. package/dist/utils/provider-validation.js +0 -625
  278. package/dist/utils/providerUtils-fixed.d.ts +0 -8
  279. package/dist/utils/providerUtils-fixed.js +0 -94
  280. package/dist/utils/streaming-utils.d.ts +0 -79
  281. package/dist/utils/streaming-utils.js +0 -198
  282. package/dist/utils/timeout-manager.d.ts +0 -75
  283. package/dist/utils/timeout-manager.js +0 -244
@@ -1,489 +0,0 @@
1
- /**
2
- * Dynamic AI Tool Chain Executor
3
- * Allows AI to dynamically decide tool execution sequences based on context and results
4
- */
5
- import { ErrorCategory, ErrorSeverity } from "./error-manager.js";
6
- /**
7
- * Simple AI Chain Planner using heuristics
8
- */
9
- export class HeuristicChainPlanner {
10
- name = "heuristic";
11
- async planNextStep(goal, availableTools, executionHistory, accumulatedContext) {
12
- // Simple heuristic-based planning
13
- const usedTools = new Set(executionHistory.map((h) => h.toolName));
14
- const availableUnused = availableTools.filter((t) => !usedTools.has(t.name));
15
- if (availableUnused.length === 0) {
16
- return null; // No more tools to try
17
- }
18
- // Select tool based on goal keywords and context
19
- const goalLower = goal.toLowerCase();
20
- let selectedTool = availableUnused[0];
21
- let confidence = 0.3;
22
- // Keyword-based tool selection
23
- for (const tool of availableUnused) {
24
- const toolDesc = tool.description.toLowerCase();
25
- let toolConfidence = 0.3;
26
- // Check for keyword matches
27
- if (goalLower.includes("fetch") && toolDesc.includes("fetch")) {
28
- toolConfidence += 0.4;
29
- }
30
- if (goalLower.includes("process") && toolDesc.includes("process")) {
31
- toolConfidence += 0.4;
32
- }
33
- if (goalLower.includes("analyze") && toolDesc.includes("analy")) {
34
- toolConfidence += 0.4;
35
- }
36
- if (goalLower.includes("data") && toolDesc.includes("data")) {
37
- toolConfidence += 0.3;
38
- }
39
- if (toolConfidence > confidence) {
40
- confidence = toolConfidence;
41
- selectedTool = tool;
42
- }
43
- }
44
- // Generate parameters based on context and previous results
45
- const parameters = this.generateParameters(selectedTool, accumulatedContext, executionHistory);
46
- return {
47
- stepId: `step-${Date.now()}`,
48
- toolName: selectedTool.name,
49
- parameters,
50
- reasoning: `Selected ${selectedTool.name} based on goal keywords and available context`,
51
- confidence: Math.min(confidence, 0.8),
52
- expectedOutcome: `Execute ${selectedTool.name} to progress towards: ${goal}`,
53
- };
54
- }
55
- async evaluateResult(step, result, goal) {
56
- if (!result.success) {
57
- return {
58
- goalAchieved: false,
59
- confidence: 0.1,
60
- nextAction: "retry",
61
- reasoning: `Tool ${step.toolName} failed: ${result.error?.message}"`,
62
- };
63
- }
64
- // Simple goal completion heuristic
65
- const goalKeywords = goal.toLowerCase().split(" ");
66
- const resultString = JSON.stringify(result.result || {}).toLowerCase();
67
- const matchedKeywords = goalKeywords.filter((keyword) => resultString.includes(keyword) || keyword.length < 3);
68
- const completionRatio = matchedKeywords.length / goalKeywords.length;
69
- const goalAchieved = completionRatio > 0.6;
70
- return {
71
- goalAchieved,
72
- confidence: completionRatio,
73
- nextAction: goalAchieved ? "complete" : "continue",
74
- reasoning: goalAchieved
75
- ? `Goal appears achieved based on result content`
76
- : `Goal not yet achieved (${Math.round(completionRatio * 100)}% match), continuing`,
77
- };
78
- }
79
- generateParameters(tool, context, history) {
80
- const params = {};
81
- // Extract useful data from previous results
82
- const lastResult = history[history.length - 1];
83
- if (lastResult?.result) {
84
- // Pass relevant data from previous step
85
- if (typeof lastResult.result === "object" && lastResult.result !== null) {
86
- Object.assign(params, lastResult.result);
87
- }
88
- else if (typeof lastResult.result === "string") {
89
- params.input = lastResult.result;
90
- }
91
- }
92
- // Add context data
93
- Object.assign(params, context);
94
- return params;
95
- }
96
- }
97
- /**
98
- * Advanced AI Chain Planner using actual AI model
99
- */
100
- export class AIModelChainPlanner {
101
- name = "ai-model";
102
- aiModel;
103
- constructor(aiModel = "gpt-4") {
104
- this.aiModel = aiModel;
105
- }
106
- async planNextStep(goal, availableTools, executionHistory, accumulatedContext) {
107
- const prompt = this.buildPlanningPrompt(goal, availableTools, executionHistory, accumulatedContext);
108
- try {
109
- // This would integrate with actual AI service
110
- // For now, return a structured response format
111
- const aiResponse = await this.callAIModel(prompt);
112
- return this.parseAIResponse(aiResponse);
113
- }
114
- catch (error) {
115
- // Fallback to heuristic planning
116
- console.warn("AI planning failed, falling back to heuristic", error);
117
- const fallback = new HeuristicChainPlanner();
118
- return fallback.planNextStep(goal, availableTools, executionHistory, accumulatedContext);
119
- }
120
- }
121
- async evaluateResult(step, result, goal) {
122
- const prompt = this.buildEvaluationPrompt(step, result, goal);
123
- try {
124
- const aiResponse = await this.callAIModel(prompt);
125
- return this.parseEvaluationResponse(aiResponse);
126
- }
127
- catch (error) {
128
- // Fallback to heuristic evaluation
129
- const fallback = new HeuristicChainPlanner();
130
- return fallback.evaluateResult(step, result, goal);
131
- }
132
- }
133
- buildPlanningPrompt(goal, availableTools, executionHistory, accumulatedContext) {
134
- return `
135
- You are an AI tool chain planner. Your job is to select the next tool to execute towards achieving a goal.
136
-
137
- GOAL: ${goal}
138
-
139
- AVAILABLE TOOLS:
140
- ${availableTools.map((t) => `- ${t.name}: ${t.description}`).join("\n")}
141
-
142
- EXECUTION HISTORY:
143
- ${executionHistory.map((h) => `${h.toolName}: ${h.success ? "SUCCESS" : "FAILED"} - ${JSON.stringify(h.result || h.error?.message)}`).join("\n")}
144
-
145
- ACCUMULATED CONTEXT:
146
- ${JSON.stringify(accumulatedContext, null, 2)}
147
-
148
- Select the next tool to execute, or return null if the goal is achieved or no progress can be made.
149
-
150
- Respond in JSON format:
151
- {
152
- "toolName": "tool-name",
153
- "parameters": { /* tool parameters */ },
154
- "reasoning": "why this tool was selected",
155
- "confidence": 0.8,
156
- "expectedOutcome": "what this step should achieve"
157
- }
158
-
159
- If no tool should be executed, return: {"toolName": null}
160
- `;
161
- }
162
- buildEvaluationPrompt(step, result, goal) {
163
- return `
164
- Evaluate whether the goal has been achieved after executing a tool.
165
-
166
- GOAL: ${goal}
167
-
168
- EXECUTED STEP:
169
- Tool: ${step.toolName}
170
- Reasoning: ${step.reasoning}
171
- Expected: ${step.expectedOutcome}
172
-
173
- ACTUAL RESULT:
174
- Success: ${result.success}
175
- Result: ${JSON.stringify(result.result || result.error?.message)}
176
-
177
- Respond in JSON format:
178
- {
179
- "goalAchieved": true/false,
180
- "confidence": 0.8,
181
- "nextAction": "continue"|"retry"|"abort"|"complete",
182
- "reasoning": "explanation of evaluation"
183
- }
184
- `;
185
- }
186
- async callAIModel(prompt) {
187
- // Mock AI response for now
188
- // In real implementation, this would call the actual AI service
189
- await new Promise((resolve) => setTimeout(resolve, 100));
190
- // Return mock structured response
191
- if (prompt.includes("Select the next tool")) {
192
- return JSON.stringify({
193
- toolName: "mock-tool",
194
- parameters: { input: "mock" },
195
- reasoning: "Mock AI selection",
196
- confidence: 0.7,
197
- expectedOutcome: "Mock execution",
198
- });
199
- }
200
- else {
201
- return JSON.stringify({
202
- goalAchieved: false,
203
- confidence: 0.6,
204
- nextAction: "continue",
205
- reasoning: "Mock AI evaluation",
206
- });
207
- }
208
- }
209
- parseAIResponse(response) {
210
- try {
211
- const parsed = JSON.parse(response);
212
- if (!parsed.toolName) {
213
- return null;
214
- }
215
- return {
216
- stepId: `ai-step-${Date.now()}`,
217
- toolName: parsed.toolName,
218
- parameters: parsed.parameters || {},
219
- reasoning: parsed.reasoning || "AI selected tool",
220
- confidence: parsed.confidence || 0.5,
221
- expectedOutcome: parsed.expectedOutcome || "Execute tool",
222
- };
223
- }
224
- catch (error) {
225
- console.warn("Failed to parse AI response", error);
226
- return null;
227
- }
228
- }
229
- parseEvaluationResponse(response) {
230
- try {
231
- const parsed = JSON.parse(response);
232
- return {
233
- goalAchieved: parsed.goalAchieved || false,
234
- confidence: parsed.confidence || 0.5,
235
- nextAction: parsed.nextAction || "continue",
236
- reasoning: parsed.reasoning || "AI evaluation",
237
- };
238
- }
239
- catch (error) {
240
- return {
241
- goalAchieved: false,
242
- confidence: 0.3,
243
- nextAction: "continue",
244
- reasoning: "Failed to parse AI evaluation",
245
- };
246
- }
247
- }
248
- }
249
- /**
250
- * Dynamic Chain Executor
251
- */
252
- export class DynamicChainExecutor {
253
- orchestrator;
254
- registry;
255
- errorManager;
256
- planner;
257
- constructor(orchestrator, registry, errorManager, planner) {
258
- this.orchestrator = orchestrator;
259
- this.registry = registry;
260
- this.errorManager = errorManager;
261
- this.planner = planner || new HeuristicChainPlanner();
262
- }
263
- /**
264
- * Execute dynamic tool chain to achieve a goal
265
- *
266
- * @param goal The goal to achieve
267
- * @param initialContext Initial context data
268
- * @param userContext User execution context
269
- * @param options Execution options
270
- * @returns Chain execution result
271
- */
272
- async executeChain(goal, initialContext = {}, userContext, options = {}) {
273
- const startTime = Date.now();
274
- const maxSteps = options.maxSteps || 10;
275
- const executionContext = {
276
- goal,
277
- currentStep: 0,
278
- executionHistory: [],
279
- accumulatedContext: { ...initialContext },
280
- userContext,
281
- maxSteps,
282
- aiModel: options.aiModel,
283
- };
284
- try {
285
- const result = await this.executeChainSteps(executionContext);
286
- return {
287
- success: true,
288
- goal,
289
- totalSteps: result.executionHistory.length,
290
- executionTime: Date.now() - startTime,
291
- results: result.executionHistory,
292
- finalResult: result.executionHistory[result.executionHistory.length - 1]?.result,
293
- reasoning: "Chain execution completed",
294
- metadata: {
295
- toolsUsed: [
296
- ...new Set(result.executionHistory.map((h) => h.toolName)),
297
- ],
298
- averageConfidence: this.calculateAverageConfidence(result.executionHistory),
299
- contextEvolution: this.trackContextEvolution(result.executionHistory),
300
- },
301
- };
302
- }
303
- catch (error) {
304
- await this.errorManager.recordError(error, {
305
- category: ErrorCategory.TOOL_ERROR,
306
- severity: ErrorSeverity.HIGH,
307
- toolName: "dynamic-chain-executor",
308
- executionContext: userContext,
309
- });
310
- return {
311
- success: false,
312
- goal,
313
- totalSteps: executionContext.executionHistory.length,
314
- executionTime: Date.now() - startTime,
315
- results: executionContext.executionHistory,
316
- error: error instanceof Error ? error : new Error(String(error)),
317
- reasoning: `Chain execution failed: ${error}`,
318
- metadata: {
319
- toolsUsed: [
320
- ...new Set(executionContext.executionHistory.map((h) => h.toolName)),
321
- ],
322
- averageConfidence: this.calculateAverageConfidence(executionContext.executionHistory),
323
- contextEvolution: this.trackContextEvolution(executionContext.executionHistory),
324
- },
325
- };
326
- }
327
- }
328
- /**
329
- * Execute chain steps iteratively
330
- *
331
- * @private
332
- */
333
- async executeChainSteps(context) {
334
- const availableTools = await this.registry.listTools();
335
- while (context.currentStep < context.maxSteps) {
336
- // Plan next step
337
- const nextStep = await this.planner.planNextStep(context.goal, availableTools.map((tool) => ({
338
- name: tool.name,
339
- description: tool.description || "No description available",
340
- inputSchema: tool.inputSchema || {},
341
- })), context.executionHistory, context.accumulatedContext);
342
- if (!nextStep) {
343
- // No more steps to execute
344
- break;
345
- }
346
- // Execute the planned step
347
- const stepResult = await this.executeStep(nextStep, context);
348
- context.executionHistory.push(stepResult);
349
- // Update accumulated context
350
- if (stepResult.success && stepResult.result) {
351
- this.updateAccumulatedContext(context.accumulatedContext, stepResult.result);
352
- }
353
- // Evaluate if goal is achieved
354
- const evaluation = await this.planner.evaluateResult(nextStep, stepResult, context.goal);
355
- if (evaluation.goalAchieved || evaluation.nextAction === "complete") {
356
- break;
357
- }
358
- else if (evaluation.nextAction === "abort") {
359
- throw new Error(`Chain execution aborted: ${evaluation.reasoning}`);
360
- }
361
- else if (evaluation.nextAction === "retry" && context.currentStep > 0) {
362
- // Retry logic could be implemented here
363
- console.warn(`Step retry suggested: ${evaluation.reasoning}`);
364
- }
365
- context.currentStep++;
366
- }
367
- return context;
368
- }
369
- /**
370
- * Execute a single step
371
- *
372
- * @private
373
- */
374
- async executeStep(step, context) {
375
- const startTime = Date.now();
376
- try {
377
- const result = await this.orchestrator.executeTool(step.toolName, step.parameters, context.userContext);
378
- return {
379
- toolName: step.toolName,
380
- success: true,
381
- result: result,
382
- timestamp: Date.now(),
383
- executionTime: Date.now() - startTime,
384
- context: {
385
- stepId: step.stepId,
386
- reasoning: step.reasoning,
387
- confidence: step.confidence,
388
- },
389
- };
390
- }
391
- catch (error) {
392
- return {
393
- toolName: step.toolName,
394
- success: false,
395
- error: error instanceof Error ? error : new Error(String(error)),
396
- timestamp: Date.now(),
397
- executionTime: Date.now() - startTime,
398
- context: {
399
- stepId: step.stepId,
400
- reasoning: step.reasoning,
401
- confidence: step.confidence,
402
- },
403
- };
404
- }
405
- }
406
- /**
407
- * Update accumulated context with new result
408
- *
409
- * @private
410
- */
411
- updateAccumulatedContext(context, result) {
412
- if (typeof result === "object" && result !== null) {
413
- Object.assign(context, result);
414
- }
415
- else {
416
- context.lastResult = result;
417
- }
418
- context.lastUpdated = Date.now();
419
- }
420
- /**
421
- * Calculate average confidence across execution history
422
- *
423
- * @private
424
- */
425
- calculateAverageConfidence(history) {
426
- if (history.length === 0) {
427
- return 0;
428
- }
429
- const confidences = history
430
- .map((h) => h.context?.confidence || 0.5)
431
- .filter((c) => typeof c === "number");
432
- return confidences.length > 0
433
- ? confidences.reduce((sum, c) => sum + c, 0) / confidences.length
434
- : 0.5;
435
- }
436
- /**
437
- * Track context evolution through execution
438
- *
439
- * @private
440
- */
441
- trackContextEvolution(history) {
442
- const evolution = [];
443
- history.forEach((result) => {
444
- if (result.success && result.result) {
445
- evolution.push({
446
- step: result.toolName,
447
- timestamp: result.timestamp,
448
- dataKeys: typeof result.result === "object" && result.result !== null
449
- ? Object.keys(result.result)
450
- : ["primitive"],
451
- });
452
- }
453
- });
454
- return evolution;
455
- }
456
- /**
457
- * Set AI planner
458
- *
459
- * @param planner AI chain planner instance
460
- */
461
- setPlanner(planner) {
462
- this.planner = planner;
463
- }
464
- /**
465
- * Get current planner
466
- *
467
- * @returns Current AI chain planner
468
- */
469
- getPlanner() {
470
- return this.planner;
471
- }
472
- }
473
- /**
474
- * Default dynamic chain executor instance
475
- */
476
- export let defaultDynamicChainExecutor = null;
477
- /**
478
- * Initialize default dynamic chain executor
479
- *
480
- * @param orchestrator MCP orchestrator
481
- * @param registry Tool registry
482
- * @param errorManager Error manager
483
- * @param planner Optional AI planner
484
- * @returns Dynamic chain executor instance
485
- */
486
- export function initializeDynamicChainExecutor(orchestrator, registry, errorManager, planner) {
487
- defaultDynamicChainExecutor = new DynamicChainExecutor(orchestrator, registry, errorManager, planner);
488
- return defaultDynamicChainExecutor;
489
- }
@@ -1,115 +0,0 @@
1
- /**
2
- * NeuroLink Dynamic AI-Driven Tool Orchestrator
3
- * Enables AI to dynamically select and execute tools based on task requirements
4
- * Based on patterns from reference implementations
5
- */
6
- import { MCPOrchestrator } from "./orchestrator.js";
7
- import type { ToolResult } from "./factory.js";
8
- import type { ContextRequest } from "./context-manager.js";
9
- import type { UnknownRecord } from "../types/common.js";
10
- import { ErrorManager } from "./error-manager.js";
11
- import type { MCPToolRegistry } from "./tool-registry.js";
12
- import type { ContextManager } from "./context-manager.js";
13
- import type { SemaphoreManager } from "./semaphore-manager.js";
14
- import type { SessionManager } from "./session-manager.js";
15
- /**
16
- * Tool decision made by AI
17
- */
18
- export interface ToolDecision {
19
- toolName: string;
20
- args: UnknownRecord;
21
- reasoning: string;
22
- confidence: number;
23
- shouldContinue: boolean;
24
- }
25
- /**
26
- * Dynamic tool chain execution options
27
- */
28
- export interface DynamicToolChainOptions {
29
- maxIterations?: number;
30
- requireConfidence?: number;
31
- includeReasoning?: boolean;
32
- allowParallel?: boolean;
33
- customSystemPrompt?: string;
34
- }
35
- /**
36
- * Dynamic tool chain result
37
- */
38
- export interface DynamicToolChainResult {
39
- success: boolean;
40
- iterations: number;
41
- results: ToolResult[];
42
- decisions: ToolDecision[];
43
- finalOutput?: string;
44
- error?: Error;
45
- totalDuration: number;
46
- }
47
- /**
48
- * Dynamic orchestrator with AI-driven tool selection
49
- */
50
- export declare class DynamicOrchestrator extends MCPOrchestrator {
51
- constructor(registry?: MCPToolRegistry, contextManager?: ContextManager, semaphoreManager?: SemaphoreManager, sessionManager?: SessionManager, errorManager?: ErrorManager);
52
- private defaultOptions;
53
- /**
54
- * Execute a dynamic tool chain where AI decides which tools to use
55
- *
56
- * @param prompt User's task or request
57
- * @param contextRequest Context creation request
58
- * @param options Dynamic execution options
59
- * @returns Dynamic tool chain result
60
- */
61
- executeDynamicToolChain(prompt: string, contextRequest?: ContextRequest, options?: DynamicToolChainOptions): Promise<DynamicToolChainResult>;
62
- /**
63
- * Get AI decision on which tool to use next
64
- *
65
- * @private
66
- */
67
- private getAIToolDecision;
68
- /**
69
- * Generate final output based on all execution results
70
- *
71
- * @private
72
- */
73
- private generateFinalOutput;
74
- /**
75
- * Execute parallel dynamic tool chains for complex tasks
76
- *
77
- * @param prompts Multiple prompts to execute in parallel
78
- * @param contextRequest Shared context request
79
- * @param options Dynamic execution options
80
- * @returns Array of dynamic tool chain results
81
- */
82
- executeParallelDynamicChains(prompts: string[], contextRequest?: ContextRequest, options?: DynamicToolChainOptions): Promise<DynamicToolChainResult[]>;
83
- /**
84
- * Get statistics including dynamic execution metrics
85
- */
86
- getStats(): {
87
- dynamicOrchestrator: {
88
- features: {
89
- aiToolSelection: boolean;
90
- iterativeExecution: boolean;
91
- parallelSupport: boolean;
92
- reasoningCapture: boolean;
93
- };
94
- };
95
- registry: UnknownRecord;
96
- context: UnknownRecord;
97
- session: UnknownRecord;
98
- error: UnknownRecord;
99
- health?: UnknownRecord;
100
- orchestrator: {
101
- pipelinesExecuted: number;
102
- };
103
- };
104
- }
105
- /**
106
- * Create a dynamic orchestrator instance
107
- *
108
- * @param registry Tool registry
109
- * @param contextManager Context manager
110
- * @param semaphoreManager Semaphore manager (optional)
111
- * @param sessionManager Session manager (optional)
112
- * @param errorManager Error manager (optional)
113
- * @returns Dynamic orchestrator instance
114
- */
115
- export declare function createDynamicOrchestrator(registry: MCPToolRegistry, contextManager: ContextManager, semaphoreManager?: SemaphoreManager, sessionManager?: SessionManager, errorManager?: ErrorManager): DynamicOrchestrator;