@juspay/neurolink 5.0.0 → 5.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 (214) hide show
  1. package/CHANGELOG.md +20 -7
  2. package/README.md +160 -172
  3. package/dist/agent/direct-tools.d.ts +6 -6
  4. package/dist/chat/sse-handler.js +5 -4
  5. package/dist/chat/websocket-chat-handler.js +9 -9
  6. package/dist/cli/commands/config.d.ts +3 -3
  7. package/dist/cli/commands/mcp.js +9 -8
  8. package/dist/cli/commands/ollama.js +3 -3
  9. package/dist/cli/factories/command-factory.d.ts +18 -0
  10. package/dist/cli/factories/command-factory.js +183 -0
  11. package/dist/cli/index.js +105 -157
  12. package/dist/cli/utils/interactive-setup.js +2 -2
  13. package/dist/core/base-provider.d.ts +423 -0
  14. package/dist/core/base-provider.js +365 -0
  15. package/dist/core/constants.d.ts +1 -1
  16. package/dist/core/constants.js +1 -1
  17. package/dist/core/dynamic-models.d.ts +6 -6
  18. package/dist/core/evaluation.d.ts +19 -80
  19. package/dist/core/evaluation.js +185 -484
  20. package/dist/core/factory.d.ts +3 -3
  21. package/dist/core/factory.js +31 -91
  22. package/dist/core/service-registry.d.ts +47 -0
  23. package/dist/core/service-registry.js +112 -0
  24. package/dist/core/types.d.ts +49 -49
  25. package/dist/core/types.js +1 -0
  26. package/dist/factories/compatibility-factory.d.ts +20 -0
  27. package/dist/factories/compatibility-factory.js +69 -0
  28. package/dist/factories/provider-factory.d.ts +72 -0
  29. package/dist/factories/provider-factory.js +144 -0
  30. package/dist/factories/provider-generate-factory.d.ts +20 -0
  31. package/dist/factories/provider-generate-factory.js +87 -0
  32. package/dist/factories/provider-registry.d.ts +38 -0
  33. package/dist/factories/provider-registry.js +107 -0
  34. package/dist/index.d.ts +8 -5
  35. package/dist/index.js +5 -5
  36. package/dist/lib/agent/direct-tools.d.ts +6 -6
  37. package/dist/lib/chat/sse-handler.js +5 -4
  38. package/dist/lib/chat/websocket-chat-handler.js +9 -9
  39. package/dist/lib/core/base-provider.d.ts +423 -0
  40. package/dist/lib/core/base-provider.js +365 -0
  41. package/dist/lib/core/constants.d.ts +1 -1
  42. package/dist/lib/core/constants.js +1 -1
  43. package/dist/lib/core/dynamic-models.d.ts +6 -6
  44. package/dist/lib/core/evaluation.d.ts +19 -80
  45. package/dist/lib/core/evaluation.js +185 -484
  46. package/dist/lib/core/factory.d.ts +3 -3
  47. package/dist/lib/core/factory.js +30 -91
  48. package/dist/lib/core/service-registry.d.ts +47 -0
  49. package/dist/lib/core/service-registry.js +112 -0
  50. package/dist/lib/core/types.d.ts +49 -49
  51. package/dist/lib/core/types.js +1 -0
  52. package/dist/lib/factories/compatibility-factory.d.ts +20 -0
  53. package/dist/lib/factories/compatibility-factory.js +69 -0
  54. package/dist/lib/factories/provider-factory.d.ts +72 -0
  55. package/dist/lib/factories/provider-factory.js +144 -0
  56. package/dist/lib/factories/provider-generate-factory.d.ts +20 -0
  57. package/dist/lib/factories/provider-generate-factory.js +87 -0
  58. package/dist/lib/factories/provider-registry.d.ts +38 -0
  59. package/dist/lib/factories/provider-registry.js +107 -0
  60. package/dist/lib/index.d.ts +8 -5
  61. package/dist/lib/index.js +5 -5
  62. package/dist/lib/mcp/client.js +5 -5
  63. package/dist/lib/mcp/config.js +28 -3
  64. package/dist/lib/mcp/dynamic-orchestrator.js +8 -8
  65. package/dist/lib/mcp/external-client.js +2 -2
  66. package/dist/lib/mcp/factory.d.ts +1 -1
  67. package/dist/lib/mcp/factory.js +1 -1
  68. package/dist/lib/mcp/function-calling.js +1 -1
  69. package/dist/lib/mcp/initialize-tools.d.ts +1 -1
  70. package/dist/lib/mcp/initialize-tools.js +45 -1
  71. package/dist/lib/mcp/initialize.js +16 -6
  72. package/dist/lib/mcp/neurolink-mcp-client.js +10 -10
  73. package/dist/lib/mcp/orchestrator.js +4 -4
  74. package/dist/lib/mcp/servers/agent/direct-tools-server.d.ts +8 -0
  75. package/dist/lib/mcp/servers/agent/direct-tools-server.js +109 -0
  76. package/dist/lib/mcp/servers/ai-providers/ai-analysis-tools.js +10 -10
  77. package/dist/lib/mcp/servers/ai-providers/ai-core-server.js +8 -6
  78. package/dist/lib/mcp/servers/ai-providers/ai-workflow-tools.d.ts +2 -2
  79. package/dist/lib/mcp/servers/ai-providers/ai-workflow-tools.js +16 -16
  80. package/dist/lib/mcp/unified-registry.d.ts +4 -0
  81. package/dist/lib/mcp/unified-registry.js +42 -9
  82. package/dist/lib/neurolink.d.ts +161 -174
  83. package/dist/lib/neurolink.js +723 -397
  84. package/dist/lib/providers/amazon-bedrock.d.ts +32 -0
  85. package/dist/lib/providers/amazon-bedrock.js +143 -0
  86. package/dist/lib/providers/analytics-helper.js +7 -4
  87. package/dist/lib/providers/anthropic-baseprovider.d.ts +23 -0
  88. package/dist/lib/providers/anthropic-baseprovider.js +114 -0
  89. package/dist/lib/providers/anthropic.d.ts +19 -39
  90. package/dist/lib/providers/anthropic.js +84 -378
  91. package/dist/lib/providers/azure-openai.d.ts +20 -0
  92. package/dist/lib/providers/azure-openai.js +89 -0
  93. package/dist/lib/providers/function-calling-provider.d.ts +14 -12
  94. package/dist/lib/providers/function-calling-provider.js +114 -64
  95. package/dist/lib/providers/google-ai-studio.d.ts +23 -0
  96. package/dist/lib/providers/google-ai-studio.js +107 -0
  97. package/dist/lib/providers/google-vertex.d.ts +47 -0
  98. package/dist/lib/providers/google-vertex.js +205 -0
  99. package/dist/lib/providers/huggingFace.d.ts +33 -27
  100. package/dist/lib/providers/huggingFace.js +103 -400
  101. package/dist/lib/providers/index.d.ts +9 -9
  102. package/dist/lib/providers/index.js +9 -9
  103. package/dist/lib/providers/mcp-provider.d.ts +13 -8
  104. package/dist/lib/providers/mcp-provider.js +63 -18
  105. package/dist/lib/providers/mistral.d.ts +42 -0
  106. package/dist/lib/providers/mistral.js +160 -0
  107. package/dist/lib/providers/ollama.d.ts +52 -35
  108. package/dist/lib/providers/ollama.js +297 -477
  109. package/dist/lib/providers/openAI.d.ts +21 -21
  110. package/dist/lib/providers/openAI.js +81 -245
  111. package/dist/lib/sdk/tool-extension.d.ts +181 -0
  112. package/dist/lib/sdk/tool-extension.js +283 -0
  113. package/dist/lib/sdk/tool-registration.d.ts +95 -0
  114. package/dist/lib/sdk/tool-registration.js +167 -0
  115. package/dist/lib/types/generate-types.d.ts +80 -0
  116. package/dist/lib/types/generate-types.js +1 -0
  117. package/dist/lib/types/mcp-types.d.ts +116 -0
  118. package/dist/lib/types/mcp-types.js +5 -0
  119. package/dist/lib/types/stream-types.d.ts +95 -0
  120. package/dist/lib/types/stream-types.js +1 -0
  121. package/dist/lib/types/universal-provider-options.d.ts +87 -0
  122. package/dist/lib/types/universal-provider-options.js +53 -0
  123. package/dist/lib/utils/providerUtils-fixed.js +1 -1
  124. package/dist/lib/utils/streaming-utils.d.ts +14 -2
  125. package/dist/lib/utils/streaming-utils.js +0 -3
  126. package/dist/mcp/client.js +5 -5
  127. package/dist/mcp/config.js +28 -3
  128. package/dist/mcp/dynamic-orchestrator.js +8 -8
  129. package/dist/mcp/external-client.js +2 -2
  130. package/dist/mcp/factory.d.ts +1 -1
  131. package/dist/mcp/factory.js +1 -1
  132. package/dist/mcp/function-calling.js +1 -1
  133. package/dist/mcp/initialize-tools.d.ts +1 -1
  134. package/dist/mcp/initialize-tools.js +45 -1
  135. package/dist/mcp/initialize.js +16 -6
  136. package/dist/mcp/neurolink-mcp-client.js +10 -10
  137. package/dist/mcp/orchestrator.js +4 -4
  138. package/dist/mcp/servers/agent/direct-tools-server.d.ts +8 -0
  139. package/dist/mcp/servers/agent/direct-tools-server.js +109 -0
  140. package/dist/mcp/servers/ai-providers/ai-analysis-tools.js +10 -10
  141. package/dist/mcp/servers/ai-providers/ai-core-server.js +8 -6
  142. package/dist/mcp/servers/ai-providers/ai-workflow-tools.d.ts +2 -2
  143. package/dist/mcp/servers/ai-providers/ai-workflow-tools.js +16 -16
  144. package/dist/mcp/unified-registry.d.ts +4 -0
  145. package/dist/mcp/unified-registry.js +42 -9
  146. package/dist/neurolink.d.ts +161 -174
  147. package/dist/neurolink.js +723 -397
  148. package/dist/providers/amazon-bedrock.d.ts +32 -0
  149. package/dist/providers/amazon-bedrock.js +143 -0
  150. package/dist/providers/analytics-helper.js +7 -4
  151. package/dist/providers/anthropic-baseprovider.d.ts +23 -0
  152. package/dist/providers/anthropic-baseprovider.js +114 -0
  153. package/dist/providers/anthropic.d.ts +19 -39
  154. package/dist/providers/anthropic.js +83 -377
  155. package/dist/providers/azure-openai.d.ts +20 -0
  156. package/dist/providers/azure-openai.js +89 -0
  157. package/dist/providers/function-calling-provider.d.ts +14 -12
  158. package/dist/providers/function-calling-provider.js +114 -64
  159. package/dist/providers/google-ai-studio.d.ts +23 -0
  160. package/dist/providers/google-ai-studio.js +108 -0
  161. package/dist/providers/google-vertex.d.ts +47 -0
  162. package/dist/providers/google-vertex.js +205 -0
  163. package/dist/providers/huggingFace.d.ts +33 -27
  164. package/dist/providers/huggingFace.js +102 -399
  165. package/dist/providers/index.d.ts +9 -9
  166. package/dist/providers/index.js +9 -9
  167. package/dist/providers/mcp-provider.d.ts +13 -8
  168. package/dist/providers/mcp-provider.js +63 -18
  169. package/dist/providers/mistral.d.ts +42 -0
  170. package/dist/providers/mistral.js +160 -0
  171. package/dist/providers/ollama.d.ts +52 -35
  172. package/dist/providers/ollama.js +297 -476
  173. package/dist/providers/openAI.d.ts +21 -21
  174. package/dist/providers/openAI.js +81 -246
  175. package/dist/sdk/tool-extension.d.ts +181 -0
  176. package/dist/sdk/tool-extension.js +283 -0
  177. package/dist/sdk/tool-registration.d.ts +95 -0
  178. package/dist/sdk/tool-registration.js +168 -0
  179. package/dist/types/generate-types.d.ts +80 -0
  180. package/dist/types/generate-types.js +1 -0
  181. package/dist/types/mcp-types.d.ts +116 -0
  182. package/dist/types/mcp-types.js +5 -0
  183. package/dist/types/stream-types.d.ts +95 -0
  184. package/dist/types/stream-types.js +1 -0
  185. package/dist/types/universal-provider-options.d.ts +87 -0
  186. package/dist/types/universal-provider-options.js +53 -0
  187. package/dist/utils/providerUtils-fixed.js +1 -1
  188. package/dist/utils/streaming-utils.d.ts +14 -2
  189. package/dist/utils/streaming-utils.js +0 -3
  190. package/package.json +15 -10
  191. package/dist/lib/providers/agent-enhanced-provider.d.ts +0 -89
  192. package/dist/lib/providers/agent-enhanced-provider.js +0 -614
  193. package/dist/lib/providers/amazonBedrock.d.ts +0 -19
  194. package/dist/lib/providers/amazonBedrock.js +0 -334
  195. package/dist/lib/providers/azureOpenAI.d.ts +0 -39
  196. package/dist/lib/providers/azureOpenAI.js +0 -436
  197. package/dist/lib/providers/googleAIStudio.d.ts +0 -49
  198. package/dist/lib/providers/googleAIStudio.js +0 -333
  199. package/dist/lib/providers/googleVertexAI.d.ts +0 -38
  200. package/dist/lib/providers/googleVertexAI.js +0 -519
  201. package/dist/lib/providers/mistralAI.d.ts +0 -34
  202. package/dist/lib/providers/mistralAI.js +0 -294
  203. package/dist/providers/agent-enhanced-provider.d.ts +0 -89
  204. package/dist/providers/agent-enhanced-provider.js +0 -614
  205. package/dist/providers/amazonBedrock.d.ts +0 -19
  206. package/dist/providers/amazonBedrock.js +0 -334
  207. package/dist/providers/azureOpenAI.d.ts +0 -39
  208. package/dist/providers/azureOpenAI.js +0 -437
  209. package/dist/providers/googleAIStudio.d.ts +0 -49
  210. package/dist/providers/googleAIStudio.js +0 -333
  211. package/dist/providers/googleVertexAI.d.ts +0 -38
  212. package/dist/providers/googleVertexAI.js +0 -519
  213. package/dist/providers/mistralAI.d.ts +0 -34
  214. package/dist/providers/mistralAI.js +0 -294
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { autoRegisterMCPServers, } from "./auto-discovery.js";
5
5
  import { unifiedRegistryLogger } from "./logging.js";
6
- import { MCPToolRegistry, } from "./tool-registry.js";
6
+ import { MCPToolRegistry, defaultToolRegistry, } from "./tool-registry.js";
7
7
  import { TransportManager, TransportConfigSchema, } from "./transport-manager.js";
8
8
  import { Client } from "@modelcontextprotocol/sdk/client/index.js";
9
9
  import { ErrorManager } from "./error-manager.js";
@@ -30,8 +30,18 @@ export class UnifiedMCPRegistry extends MCPToolRegistry {
30
30
  */
31
31
  async initialize(options = {}) {
32
32
  unifiedRegistryLogger.info("Initializing unified MCP registry...");
33
- // Load manual configuration first
34
- await this.loadManualConfig();
33
+ // Import ProviderRegistry to check options
34
+ const { ProviderRegistry } = await import("../factories/provider-registry.js");
35
+ const registryOptions = ProviderRegistry.getOptions();
36
+ // Only load manual config if explicitly enabled (CLI mode)
37
+ if (registryOptions.enableManualMCP) {
38
+ unifiedRegistryLogger.info("Manual MCP config enabled - loading .mcp-config.json");
39
+ await this.loadManualConfig();
40
+ await this.connectManualServers();
41
+ }
42
+ else {
43
+ unifiedRegistryLogger.debug("Manual MCP config disabled - skipping .mcp-config.json");
44
+ }
35
45
  if (this.autoDiscoveryEnabled) {
36
46
  const result = await autoRegisterMCPServers(options);
37
47
  unifiedRegistryLogger.info(`Auto-discovery complete: ${result.registered} registered, ${result.failed} failed`);
@@ -95,6 +105,29 @@ export class UnifiedMCPRegistry extends MCPToolRegistry {
95
105
  unifiedRegistryLogger.error("Failed to load manual config:", error instanceof Error ? error.message : String(error));
96
106
  }
97
107
  }
108
+ /**
109
+ * Connect to manually configured servers
110
+ */
111
+ async connectManualServers() {
112
+ for (const [serverId, serverConfig] of this.manualServers.entries()) {
113
+ try {
114
+ unifiedRegistryLogger.info(`Connecting to manual server: ${serverId}`);
115
+ // Use addExternalServer method which properly establishes connections
116
+ await this.addExternalServer(serverId, {
117
+ type: "stdio",
118
+ command: serverConfig.command || "npx",
119
+ args: serverConfig.args || [],
120
+ env: serverConfig.env,
121
+ });
122
+ unifiedRegistryLogger.info(`Successfully connected manual server: ${serverId}`);
123
+ }
124
+ catch (error) {
125
+ unifiedRegistryLogger.error(`Failed to connect manual server ${serverId}:`, error instanceof Error ? error.message : String(error));
126
+ // Remove from available servers if connection fails
127
+ this.availableServers.delete(serverId);
128
+ }
129
+ }
130
+ }
98
131
  /**
99
132
  * Enable or disable auto-discovery
100
133
  */
@@ -141,8 +174,8 @@ export class UnifiedMCPRegistry extends MCPToolRegistry {
141
174
  async listAllTools() {
142
175
  const allTools = [];
143
176
  try {
144
- // FIXED: Get built-in tools from base registry
145
- const builtInTools = await super.listTools();
177
+ // FIXED: Get built-in tools from defaultToolRegistry where they are actually registered
178
+ const builtInTools = await defaultToolRegistry.listTools();
146
179
  allTools.push(...builtInTools.map((tool) => ({
147
180
  ...tool,
148
181
  id: tool.name,
@@ -150,7 +183,7 @@ export class UnifiedMCPRegistry extends MCPToolRegistry {
150
183
  source: "built-in",
151
184
  isExternal: false,
152
185
  })));
153
- unifiedRegistryLogger.debug(`Found ${builtInTools.length} built-in tools`);
186
+ unifiedRegistryLogger.debug(`Found ${builtInTools.length} built-in tools from defaultToolRegistry`);
154
187
  }
155
188
  catch (error) {
156
189
  unifiedRegistryLogger.warn("Failed to get built-in tools:", error);
@@ -194,10 +227,10 @@ export class UnifiedMCPRegistry extends MCPToolRegistry {
194
227
  */
195
228
  async executeTool(toolName, args, context) {
196
229
  unifiedRegistryLogger.info(`Executing tool: ${toolName}`);
197
- // STEP 1: Try built-in tools first
230
+ // STEP 1: Try built-in tools first from defaultToolRegistry
198
231
  try {
199
- const result = await super.executeTool(toolName, args, context);
200
- unifiedRegistryLogger.info(`Tool ${toolName} executed successfully via built-in registry`);
232
+ const result = await defaultToolRegistry.executeTool(toolName, args, context);
233
+ unifiedRegistryLogger.info(`Tool ${toolName} executed successfully via defaultToolRegistry`);
201
234
  return result;
202
235
  }
203
236
  catch (builtInError) {
@@ -1,72 +1,48 @@
1
1
  /**
2
2
  * NeuroLink - Unified AI Interface with Real MCP Tool Integration
3
3
  *
4
+ * REDESIGNED FALLBACK CHAIN - NO CIRCULAR DEPENDENCIES
4
5
  * Enhanced AI provider system with natural MCP tool access.
5
6
  * Uses real MCP infrastructure for tool discovery and execution.
6
7
  */
7
- import type { AIProviderName } from "./core/types.js";
8
- export interface TextGenerationOptions {
9
- prompt: string;
10
- provider?: "openai" | "bedrock" | "vertex" | "anthropic" | "azure" | "google-ai" | "huggingface" | "ollama" | "mistral" | "auto";
8
+ import type { TextGenerationOptions, TextGenerationResult } from "./core/types.js";
9
+ import type { GenerateOptions, GenerateResult } from "./types/generate-types.js";
10
+ import type { StreamOptions, StreamResult } from "./types/stream-types.js";
11
+ import type { SimpleTool } from "./sdk/tool-registration.js";
12
+ import type { InMemoryMCPServerConfig } from "./types/mcp-types.js";
13
+ export interface ProviderStatus {
14
+ provider: string;
15
+ status: "working" | "failed" | "not-configured";
16
+ configured: boolean;
17
+ authenticated: boolean;
18
+ error?: string;
19
+ responseTime?: number;
11
20
  model?: string;
12
- temperature?: number;
13
- maxTokens?: number;
14
- systemPrompt?: string;
15
- schema?: any;
16
- timeout?: number | string;
17
- disableTools?: boolean;
18
- enableAnalytics?: boolean;
19
- enableEvaluation?: boolean;
20
- context?: Record<string, any>;
21
- evaluationDomain?: string;
22
- toolUsageContext?: string;
23
- conversationHistory?: Array<{
24
- role: string;
25
- content: string;
26
- }>;
27
21
  }
28
- export interface StreamTextOptions {
29
- prompt: string;
30
- provider?: "openai" | "bedrock" | "vertex" | "anthropic" | "azure" | "google-ai" | "huggingface" | "ollama" | "mistral" | "auto";
31
- model?: string;
32
- temperature?: number;
33
- maxTokens?: number;
34
- systemPrompt?: string;
35
- schema?: any;
36
- timeout?: number | string;
37
- disableTools?: boolean;
38
- enableAnalytics?: boolean;
39
- enableEvaluation?: boolean;
40
- context?: Record<string, any>;
22
+ export interface MCPStatus {
23
+ mcpInitialized: boolean;
24
+ totalServers: number;
25
+ availableServers: number;
26
+ autoDiscoveredCount: number;
27
+ totalTools: number;
28
+ autoDiscoveredServers: MCPServerInfo[];
29
+ customToolsCount: number;
30
+ inMemoryServersCount: number;
31
+ error?: string;
41
32
  }
42
- export interface TextGenerationResult {
43
- content: string;
44
- provider?: string;
45
- model?: string;
46
- usage?: {
47
- promptTokens?: number;
48
- completionTokens?: number;
49
- totalTokens?: number;
50
- };
51
- responseTime?: number;
52
- toolsUsed?: string[];
53
- toolExecutions?: Array<{
54
- toolName: string;
55
- executionTime: number;
56
- success: boolean;
57
- serverId?: string;
58
- }>;
59
- enhancedWithTools?: boolean;
60
- availableTools?: Array<{
61
- name: string;
62
- description: string;
63
- server: string;
64
- category?: string;
65
- }>;
33
+ export interface MCPServerInfo {
34
+ id: string;
35
+ name: string;
36
+ source: string;
37
+ status: "connected" | "discovered" | "failed";
38
+ hasServer: boolean;
39
+ metadata?: any;
66
40
  }
67
41
  export declare class NeuroLink {
68
42
  private mcpInitialized;
69
43
  private contextManager;
44
+ private customTools;
45
+ private inMemoryServers;
70
46
  constructor();
71
47
  /**
72
48
  * Initialize MCP registry with enhanced error handling and resource cleanup
@@ -74,146 +50,157 @@ export declare class NeuroLink {
74
50
  */
75
51
  private initializeMCP;
76
52
  /**
77
- * Isolated MCP initialization to prevent context-dependent hanging
53
+ * MAIN ENTRY POINT: Enhanced generate method with new function signature
54
+ * Replaces both generateText and legacy methods
78
55
  */
79
- private doIsolatedMCPInitialization;
56
+ generate(optionsOrPrompt: GenerateOptions | string): Promise<GenerateResult>;
80
57
  /**
81
- * Generate text using the best available AI provider with automatic fallback
82
- * Tools are ENABLED BY DEFAULT for natural AI behavior
58
+ * BACKWARD COMPATIBILITY: Legacy generateText method
59
+ * Internally calls generate() and converts result format
83
60
  */
84
61
  generateText(options: TextGenerationOptions): Promise<TextGenerationResult>;
85
62
  /**
86
- * Generate text with real MCP tool integration using automatic detection
63
+ * REDESIGNED INTERNAL GENERATION - NO CIRCULAR DEPENDENCIES
64
+ *
65
+ * This method implements a clean fallback chain:
66
+ * 1. Try MCP-enhanced generation if available
67
+ * 2. Fall back to direct provider generation
68
+ * 3. No recursive calls - each method has a specific purpose
69
+ */
70
+ private generateTextInternal;
71
+ /**
72
+ * Try MCP-enhanced generation (no fallback recursion)
87
73
  */
88
- private generateTextWithTools;
74
+ private tryMCPGeneration;
89
75
  /**
90
- * Regular text generation (existing logic)
76
+ * Direct provider generation (no MCP, no recursion)
91
77
  */
92
- private generateTextRegular;
78
+ private directProviderGeneration;
93
79
  /**
94
80
  * Create tool-aware system prompt that informs AI about available tools
95
81
  */
96
82
  private createToolAwareSystemPrompt;
97
83
  /**
98
- * Generate streaming text using the best available AI provider with automatic fallback
84
+ * BACKWARD COMPATIBILITY: Legacy streamText method
85
+ * Internally calls stream() and converts result format
99
86
  */
100
- generateTextStream(options: StreamTextOptions): Promise<AsyncIterable<{
101
- content: string;
102
- }>>;
87
+ streamText(prompt: string, options?: Partial<StreamOptions>): Promise<AsyncIterable<string>>;
103
88
  /**
104
- * Get the best available AI provider
89
+ * PRIMARY METHOD: Stream content using AI (recommended for new code)
90
+ * Future-ready for multi-modal capabilities with current text focus
105
91
  */
106
- getBestProvider(): Promise<string>;
92
+ stream(options: StreamOptions): Promise<StreamResult>;
107
93
  /**
108
- * Test a specific provider
94
+ * Register a custom tool that will be available to all AI providers
95
+ * @param name - Unique name for the tool
96
+ * @param tool - Tool configuration
109
97
  */
110
- testProvider(providerName: AIProviderName, testPrompt?: string): Promise<boolean>;
98
+ registerTool(name: string, tool: SimpleTool): void;
111
99
  /**
112
- * Get access to the unified MCP registry for tool inspection and management
100
+ * Register multiple tools at once
101
+ * @param tools - Object mapping tool names to configurations
113
102
  */
114
- getUnifiedRegistry(): import("./mcp/unified-registry.js").UnifiedMCPRegistry;
103
+ registerTools(tools: Record<string, SimpleTool>): void;
115
104
  /**
116
- * Initialize MCP and return discovery statistics
105
+ * Unregister a custom tool
106
+ * @param name - Name of the tool to remove
107
+ * @returns true if the tool was removed, false if it didn't exist
117
108
  */
118
- getMCPStatus(): Promise<{
119
- mcpInitialized: boolean;
120
- totalServers: number;
121
- availableServers: number;
122
- autoDiscoveredCount: number;
123
- totalTools: number;
124
- autoDiscoveredServers: {
125
- id: string;
126
- name: string;
127
- source: "core" | "project" | "installed";
128
- status: string;
129
- hasServer: boolean;
130
- }[];
131
- }>;
109
+ unregisterTool(name: string): boolean;
132
110
  /**
133
- * Add a new MCP server programmatically
134
- *
135
- * Allows dynamic registration of MCP servers at runtime for enhanced
136
- * tool ecosystem management. Perfect for integrating external services
137
- * like Bitbucket, Slack, databases, etc.
138
- *
139
- * @param serverId - Unique identifier for the server (e.g., 'bitbucket', 'slack-api')
140
- * @param config - Server configuration with command and execution parameters
141
- * @returns Promise that resolves when server is successfully added and connected
142
- *
143
- * @example
144
- * ```typescript
145
- * // Add Bitbucket MCP server
146
- * await neurolink.addMCPServer('bitbucket', {
147
- * command: 'npx',
148
- * args: ['-y', '@nexus2520/bitbucket-mcp-server'],
149
- * env: {
150
- * BITBUCKET_USERNAME: 'your-username',
151
- * BITBUCKET_APP_PASSWORD: 'your-app-password'
152
- * }
153
- * });
154
- *
155
- * // Add custom database connector
156
- * await neurolink.addMCPServer('database', {
157
- * command: 'node',
158
- * args: ['./custom-db-mcp-server.js'],
159
- * env: { DB_CONNECTION_STRING: 'postgresql://...' }
160
- * });
161
- * ```
162
- */
163
- addMCPServer(serverId: string, config: {
164
- command: string;
165
- args?: string[];
166
- env?: Record<string, string>;
167
- cwd?: string;
168
- type?: "stdio" | "sse" | "http";
169
- url?: string;
170
- headers?: Record<string, string>;
111
+ * Get all registered custom tools
112
+ * @returns Map of tool names to configurations
113
+ */
114
+ getCustomTools(): Map<string, SimpleTool>;
115
+ /**
116
+ * Add an in-memory MCP server (from git diff)
117
+ * Allows registration of pre-instantiated server objects
118
+ * @param serverId - Unique identifier for the server
119
+ * @param config - Server configuration
120
+ */
121
+ addInMemoryMCPServer(serverId: string, config: InMemoryMCPServerConfig): Promise<void>;
122
+ /**
123
+ * Get all registered in-memory servers
124
+ * @returns Map of server IDs to configurations
125
+ */
126
+ getInMemoryServers(): Map<string, InMemoryMCPServerConfig>;
127
+ /**
128
+ * Execute a specific tool by name (from git diff)
129
+ * Supports both custom tools and MCP server tools
130
+ * @param toolName - Name of the tool to execute
131
+ * @param params - Parameters to pass to the tool
132
+ * @param options - Execution options
133
+ * @returns Tool execution result
134
+ */
135
+ executeTool<T = any>(toolName: string, params?: any, options?: {
171
136
  timeout?: number;
172
- }): Promise<void>;
173
- /**
174
- * Alias for generateText() - CLI-SDK consistency
175
- * @param options - Text generation options
176
- * @returns Promise resolving to text generation result
177
- */
178
- generate(options: TextGenerationOptions): Promise<TextGenerationResult>;
179
- /**
180
- * Short alias for generateText() - CLI-SDK consistency
181
- * @param options - Text generation options
182
- * @returns Promise resolving to text generation result
183
- */
184
- gen(options: TextGenerationOptions): Promise<TextGenerationResult>;
185
- /**
186
- * Get the connection client for a specific MCP server
187
- * @param serverId - The ID of the server to get connection for
188
- * @returns Client connection object or undefined if not connected
189
- */
190
- getConnection(serverId: string): import("@modelcontextprotocol/sdk/client/index.js").Client<{
191
- method: string;
192
- params?: {
193
- [x: string]: unknown;
194
- _meta?: {
195
- [x: string]: unknown;
196
- progressToken?: string | number | undefined;
197
- } | undefined;
198
- } | undefined;
199
- }, {
200
- method: string;
201
- params?: {
202
- [x: string]: unknown;
203
- _meta?: {
204
- [x: string]: unknown;
205
- } | undefined;
206
- } | undefined;
207
- }, {
208
- [x: string]: unknown;
209
- _meta?: {
210
- [x: string]: unknown;
211
- } | undefined;
212
- }> | undefined;
213
- /**
214
- * Check if a specific MCP server is currently connected
215
- * @param serverId - The ID of the server to check
216
- * @returns True if server is connected, false otherwise
217
- */
218
- isConnected(serverId: string): boolean;
137
+ }): Promise<T>;
138
+ /**
139
+ * Get all available tools including custom and in-memory ones
140
+ * @returns Array of available tools with metadata
141
+ */
142
+ getAllAvailableTools(): Promise<{
143
+ serverId: string;
144
+ serverTitle: string;
145
+ toolName: string;
146
+ namespacedName: string;
147
+ description: string;
148
+ isImplemented: boolean;
149
+ }[]>;
150
+ /**
151
+ * Get comprehensive status of all AI providers
152
+ * Primary method for provider health checking and diagnostics
153
+ */
154
+ getProviderStatus(): Promise<ProviderStatus[]>;
155
+ /**
156
+ * Test a specific AI provider's connectivity and authentication
157
+ * @param providerName - Name of the provider to test
158
+ * @returns Promise resolving to true if provider is working
159
+ */
160
+ testProvider(providerName: string): Promise<boolean>;
161
+ /**
162
+ * Internal method to test provider connection with minimal generation call
163
+ */
164
+ private testProviderConnection;
165
+ /**
166
+ * Check if a provider has required environment variables configured
167
+ * @param providerName - Name of the provider to check
168
+ * @returns True if provider has required environment variables
169
+ */
170
+ hasProviderEnvVars(providerName: string): Promise<boolean>;
171
+ /**
172
+ * Get the best available AI provider based on configuration and availability
173
+ * @param requestedProvider - Optional preferred provider name
174
+ * @returns Promise resolving to the best provider name
175
+ */
176
+ getBestProvider(requestedProvider?: string): Promise<string>;
177
+ /**
178
+ * Get list of all available AI provider names
179
+ * @returns Array of supported provider names
180
+ */
181
+ getAvailableProviders(): Promise<string[]>;
182
+ /**
183
+ * Validate if a provider name is supported
184
+ * @param providerName - Provider name to validate
185
+ * @returns True if provider name is valid
186
+ */
187
+ isValidProvider(providerName: string): Promise<boolean>;
188
+ /**
189
+ * Get comprehensive MCP (Model Context Protocol) status information
190
+ * @returns Promise resolving to MCP status details
191
+ */
192
+ getMCPStatus(): Promise<MCPStatus>;
193
+ /**
194
+ * List all configured MCP servers with their status
195
+ * @returns Promise resolving to array of MCP server information
196
+ */
197
+ listMCPServers(): Promise<MCPServerInfo[]>;
198
+ /**
199
+ * Test connectivity to a specific MCP server
200
+ * @param serverId - ID of the MCP server to test
201
+ * @returns Promise resolving to true if server is reachable
202
+ */
203
+ testMCPServer(serverId: string): Promise<boolean>;
219
204
  }
205
+ export declare const neurolink: NeuroLink;
206
+ export default neurolink;