@juspay/neurolink 1.5.3 → 1.9.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 (176) hide show
  1. package/CHANGELOG.md +241 -1
  2. package/README.md +113 -20
  3. package/dist/agent/direct-tools.d.ts +1203 -0
  4. package/dist/agent/direct-tools.js +387 -0
  5. package/dist/cli/commands/agent-generate.d.ts +2 -0
  6. package/dist/cli/commands/agent-generate.js +70 -0
  7. package/dist/cli/commands/config.d.ts +76 -9
  8. package/dist/cli/commands/config.js +358 -233
  9. package/dist/cli/commands/mcp.d.ts +2 -1
  10. package/dist/cli/commands/mcp.js +874 -146
  11. package/dist/cli/commands/ollama.d.ts +8 -0
  12. package/dist/cli/commands/ollama.js +333 -0
  13. package/dist/cli/index.js +591 -327
  14. package/dist/cli/utils/complete-setup.d.ts +19 -0
  15. package/dist/cli/utils/complete-setup.js +81 -0
  16. package/dist/cli/utils/env-manager.d.ts +44 -0
  17. package/dist/cli/utils/env-manager.js +226 -0
  18. package/dist/cli/utils/interactive-setup.d.ts +48 -0
  19. package/dist/cli/utils/interactive-setup.js +302 -0
  20. package/dist/core/dynamic-models.d.ts +208 -0
  21. package/dist/core/dynamic-models.js +250 -0
  22. package/dist/core/factory.d.ts +13 -6
  23. package/dist/core/factory.js +180 -50
  24. package/dist/core/types.d.ts +8 -3
  25. package/dist/core/types.js +7 -4
  26. package/dist/index.d.ts +16 -16
  27. package/dist/index.js +16 -16
  28. package/dist/lib/agent/direct-tools.d.ts +1203 -0
  29. package/dist/lib/agent/direct-tools.js +387 -0
  30. package/dist/lib/core/dynamic-models.d.ts +208 -0
  31. package/dist/lib/core/dynamic-models.js +250 -0
  32. package/dist/lib/core/factory.d.ts +13 -6
  33. package/dist/lib/core/factory.js +180 -50
  34. package/dist/lib/core/types.d.ts +8 -3
  35. package/dist/lib/core/types.js +7 -4
  36. package/dist/lib/index.d.ts +16 -16
  37. package/dist/lib/index.js +16 -16
  38. package/dist/lib/mcp/auto-discovery.d.ts +120 -0
  39. package/dist/lib/mcp/auto-discovery.js +793 -0
  40. package/dist/lib/mcp/client.d.ts +66 -0
  41. package/dist/lib/mcp/client.js +245 -0
  42. package/dist/lib/mcp/config.d.ts +31 -0
  43. package/dist/lib/mcp/config.js +74 -0
  44. package/dist/lib/mcp/context-manager.d.ts +4 -4
  45. package/dist/lib/mcp/context-manager.js +24 -18
  46. package/dist/lib/mcp/factory.d.ts +28 -11
  47. package/dist/lib/mcp/factory.js +36 -29
  48. package/dist/lib/mcp/function-calling.d.ts +51 -0
  49. package/dist/lib/mcp/function-calling.js +510 -0
  50. package/dist/lib/mcp/index.d.ts +190 -0
  51. package/dist/lib/mcp/index.js +156 -0
  52. package/dist/lib/mcp/initialize-tools.d.ts +28 -0
  53. package/dist/lib/mcp/initialize-tools.js +209 -0
  54. package/dist/lib/mcp/initialize.d.ts +17 -0
  55. package/dist/lib/mcp/initialize.js +51 -0
  56. package/dist/lib/mcp/logging.d.ts +71 -0
  57. package/dist/lib/mcp/logging.js +183 -0
  58. package/dist/lib/mcp/manager.d.ts +67 -0
  59. package/dist/lib/mcp/manager.js +176 -0
  60. package/dist/lib/mcp/neurolink-mcp-client.d.ts +96 -0
  61. package/dist/lib/mcp/neurolink-mcp-client.js +417 -0
  62. package/dist/lib/mcp/orchestrator.d.ts +3 -3
  63. package/dist/lib/mcp/orchestrator.js +46 -43
  64. package/dist/lib/mcp/registry.d.ts +2 -2
  65. package/dist/lib/mcp/registry.js +42 -33
  66. package/dist/lib/mcp/servers/ai-providers/ai-analysis-tools.d.ts +1 -1
  67. package/dist/lib/mcp/servers/ai-providers/ai-analysis-tools.js +205 -66
  68. package/dist/lib/mcp/servers/ai-providers/ai-core-server.js +143 -99
  69. package/dist/lib/mcp/servers/ai-providers/ai-workflow-tools.d.ts +6 -6
  70. package/dist/lib/mcp/servers/ai-providers/ai-workflow-tools.js +404 -251
  71. package/dist/lib/mcp/servers/utilities/utility-server.d.ts +8 -0
  72. package/dist/lib/mcp/servers/utilities/utility-server.js +326 -0
  73. package/dist/lib/mcp/tool-integration.d.ts +67 -0
  74. package/dist/lib/mcp/tool-integration.js +179 -0
  75. package/dist/lib/mcp/unified-registry.d.ts +269 -0
  76. package/dist/lib/mcp/unified-registry.js +1411 -0
  77. package/dist/lib/neurolink.d.ts +68 -6
  78. package/dist/lib/neurolink.js +314 -42
  79. package/dist/lib/providers/agent-enhanced-provider.d.ts +59 -0
  80. package/dist/lib/providers/agent-enhanced-provider.js +242 -0
  81. package/dist/lib/providers/amazonBedrock.d.ts +3 -3
  82. package/dist/lib/providers/amazonBedrock.js +54 -50
  83. package/dist/lib/providers/anthropic.d.ts +2 -2
  84. package/dist/lib/providers/anthropic.js +92 -84
  85. package/dist/lib/providers/azureOpenAI.d.ts +2 -2
  86. package/dist/lib/providers/azureOpenAI.js +97 -86
  87. package/dist/lib/providers/function-calling-provider.d.ts +70 -0
  88. package/dist/lib/providers/function-calling-provider.js +359 -0
  89. package/dist/lib/providers/googleAIStudio.d.ts +10 -5
  90. package/dist/lib/providers/googleAIStudio.js +60 -38
  91. package/dist/lib/providers/googleVertexAI.d.ts +3 -3
  92. package/dist/lib/providers/googleVertexAI.js +96 -86
  93. package/dist/lib/providers/huggingFace.d.ts +31 -0
  94. package/dist/lib/providers/huggingFace.js +362 -0
  95. package/dist/lib/providers/index.d.ts +14 -8
  96. package/dist/lib/providers/index.js +18 -12
  97. package/dist/lib/providers/mcp-provider.d.ts +62 -0
  98. package/dist/lib/providers/mcp-provider.js +183 -0
  99. package/dist/lib/providers/mistralAI.d.ts +32 -0
  100. package/dist/lib/providers/mistralAI.js +223 -0
  101. package/dist/lib/providers/ollama.d.ts +51 -0
  102. package/dist/lib/providers/ollama.js +508 -0
  103. package/dist/lib/providers/openAI.d.ts +7 -3
  104. package/dist/lib/providers/openAI.js +45 -33
  105. package/dist/lib/utils/logger.js +2 -2
  106. package/dist/lib/utils/providerUtils.js +59 -22
  107. package/dist/mcp/auto-discovery.d.ts +120 -0
  108. package/dist/mcp/auto-discovery.js +794 -0
  109. package/dist/mcp/client.d.ts +66 -0
  110. package/dist/mcp/client.js +245 -0
  111. package/dist/mcp/config.d.ts +31 -0
  112. package/dist/mcp/config.js +74 -0
  113. package/dist/mcp/context-manager.d.ts +4 -4
  114. package/dist/mcp/context-manager.js +24 -18
  115. package/dist/mcp/factory.d.ts +28 -11
  116. package/dist/mcp/factory.js +36 -29
  117. package/dist/mcp/function-calling.d.ts +51 -0
  118. package/dist/mcp/function-calling.js +510 -0
  119. package/dist/mcp/index.d.ts +190 -0
  120. package/dist/mcp/index.js +156 -0
  121. package/dist/mcp/initialize-tools.d.ts +28 -0
  122. package/dist/mcp/initialize-tools.js +210 -0
  123. package/dist/mcp/initialize.d.ts +17 -0
  124. package/dist/mcp/initialize.js +51 -0
  125. package/dist/mcp/logging.d.ts +71 -0
  126. package/dist/mcp/logging.js +183 -0
  127. package/dist/mcp/manager.d.ts +67 -0
  128. package/dist/mcp/manager.js +176 -0
  129. package/dist/mcp/neurolink-mcp-client.d.ts +96 -0
  130. package/dist/mcp/neurolink-mcp-client.js +417 -0
  131. package/dist/mcp/orchestrator.d.ts +3 -3
  132. package/dist/mcp/orchestrator.js +46 -43
  133. package/dist/mcp/registry.d.ts +2 -2
  134. package/dist/mcp/registry.js +42 -33
  135. package/dist/mcp/servers/ai-providers/ai-analysis-tools.d.ts +1 -1
  136. package/dist/mcp/servers/ai-providers/ai-analysis-tools.js +205 -66
  137. package/dist/mcp/servers/ai-providers/ai-core-server.js +143 -99
  138. package/dist/mcp/servers/ai-providers/ai-workflow-tools.d.ts +6 -6
  139. package/dist/mcp/servers/ai-providers/ai-workflow-tools.js +404 -253
  140. package/dist/mcp/servers/utilities/utility-server.d.ts +8 -0
  141. package/dist/mcp/servers/utilities/utility-server.js +326 -0
  142. package/dist/mcp/tool-integration.d.ts +67 -0
  143. package/dist/mcp/tool-integration.js +179 -0
  144. package/dist/mcp/unified-registry.d.ts +269 -0
  145. package/dist/mcp/unified-registry.js +1411 -0
  146. package/dist/neurolink.d.ts +68 -6
  147. package/dist/neurolink.js +314 -42
  148. package/dist/providers/agent-enhanced-provider.d.ts +59 -0
  149. package/dist/providers/agent-enhanced-provider.js +242 -0
  150. package/dist/providers/amazonBedrock.d.ts +3 -3
  151. package/dist/providers/amazonBedrock.js +54 -50
  152. package/dist/providers/anthropic.d.ts +2 -2
  153. package/dist/providers/anthropic.js +92 -84
  154. package/dist/providers/azureOpenAI.d.ts +2 -2
  155. package/dist/providers/azureOpenAI.js +97 -86
  156. package/dist/providers/function-calling-provider.d.ts +70 -0
  157. package/dist/providers/function-calling-provider.js +359 -0
  158. package/dist/providers/googleAIStudio.d.ts +10 -5
  159. package/dist/providers/googleAIStudio.js +60 -38
  160. package/dist/providers/googleVertexAI.d.ts +3 -3
  161. package/dist/providers/googleVertexAI.js +96 -86
  162. package/dist/providers/huggingFace.d.ts +31 -0
  163. package/dist/providers/huggingFace.js +362 -0
  164. package/dist/providers/index.d.ts +14 -8
  165. package/dist/providers/index.js +18 -12
  166. package/dist/providers/mcp-provider.d.ts +62 -0
  167. package/dist/providers/mcp-provider.js +183 -0
  168. package/dist/providers/mistralAI.d.ts +32 -0
  169. package/dist/providers/mistralAI.js +223 -0
  170. package/dist/providers/ollama.d.ts +51 -0
  171. package/dist/providers/ollama.js +508 -0
  172. package/dist/providers/openAI.d.ts +7 -3
  173. package/dist/providers/openAI.js +45 -33
  174. package/dist/utils/logger.js +2 -2
  175. package/dist/utils/providerUtils.js +59 -22
  176. package/package.json +28 -4
@@ -0,0 +1,32 @@
1
+ import type { ZodType, ZodTypeDef } from "zod";
2
+ import { type StreamTextResult, type ToolSet, type Schema, type GenerateTextResult } from "ai";
3
+ import type { AIProvider, TextGenerationOptions, StreamTextOptions } from "../core/types.js";
4
+ export declare class MistralAI implements AIProvider {
5
+ private modelName;
6
+ private client;
7
+ /**
8
+ * Initializes a new instance of MistralAI
9
+ * @param modelName - Optional model name to override the default from config
10
+ */
11
+ constructor(modelName?: string | null);
12
+ /**
13
+ * Gets the appropriate model instance
14
+ * @private
15
+ */
16
+ private getModel;
17
+ /**
18
+ * Processes text using streaming approach with enhanced error handling callbacks
19
+ * @param prompt - The input text prompt to analyze
20
+ * @param analysisSchema - Optional Zod schema or Schema object for output validation
21
+ * @returns Promise resolving to StreamTextResult or null if operation fails
22
+ */
23
+ streamText(optionsOrPrompt: StreamTextOptions | string, analysisSchema?: ZodType<unknown, ZodTypeDef, unknown> | Schema<unknown>): Promise<StreamTextResult<ToolSet, unknown> | null>;
24
+ /**
25
+ * Processes text using non-streaming approach with optional schema validation
26
+ * @param prompt - The input text prompt to analyze
27
+ * @param analysisSchema - Optional Zod schema or Schema object for output validation
28
+ * @returns Promise resolving to GenerateTextResult or null if operation fails
29
+ */
30
+ generateText(optionsOrPrompt: TextGenerationOptions | string, analysisSchema?: ZodType<unknown, ZodTypeDef, unknown> | Schema<unknown>): Promise<GenerateTextResult<ToolSet, unknown> | null>;
31
+ }
32
+ export default MistralAI;
@@ -0,0 +1,223 @@
1
+ import { createMistral } from "@ai-sdk/mistral";
2
+ import { streamText, generateText, Output, } from "ai";
3
+ import { logger } from "../utils/logger.js";
4
+ // Default system context
5
+ const DEFAULT_SYSTEM_CONTEXT = {
6
+ systemPrompt: "You are a helpful AI assistant.",
7
+ };
8
+ // Configuration helpers
9
+ const getMistralApiKey = () => {
10
+ const apiKey = process.env.MISTRAL_API_KEY;
11
+ if (!apiKey) {
12
+ throw new Error("MISTRAL_API_KEY environment variable is not set");
13
+ }
14
+ return apiKey;
15
+ };
16
+ const getMistralModelId = () => {
17
+ return process.env.MISTRAL_MODEL || "mistral-small";
18
+ };
19
+ const hasValidAuth = () => {
20
+ return !!process.env.MISTRAL_API_KEY;
21
+ };
22
+ // Lazy initialization cache
23
+ let _mistralClient = null;
24
+ function getMistralClient() {
25
+ if (!_mistralClient) {
26
+ const apiKey = getMistralApiKey();
27
+ _mistralClient = createMistral({
28
+ apiKey,
29
+ baseURL: process.env.MISTRAL_ENDPOINT || "https://api.mistral.ai/v1",
30
+ });
31
+ }
32
+ return _mistralClient;
33
+ }
34
+ // Mistral AI class with enhanced error handling
35
+ export class MistralAI {
36
+ modelName;
37
+ client;
38
+ /**
39
+ * Initializes a new instance of MistralAI
40
+ * @param modelName - Optional model name to override the default from config
41
+ */
42
+ constructor(modelName) {
43
+ const functionTag = "MistralAI.constructor";
44
+ this.modelName = modelName || getMistralModelId();
45
+ try {
46
+ this.client = getMistralClient();
47
+ logger.debug(`[${functionTag}] Initialization started`, {
48
+ modelName: this.modelName,
49
+ hasApiKey: hasValidAuth(),
50
+ });
51
+ logger.debug(`[${functionTag}] Initialization completed`, {
52
+ modelName: this.modelName,
53
+ success: true,
54
+ });
55
+ }
56
+ catch (err) {
57
+ logger.error(`[${functionTag}] Initialization failed`, {
58
+ message: "Error in initializing Mistral AI",
59
+ modelName: this.modelName,
60
+ error: err instanceof Error ? err.message : String(err),
61
+ stack: err instanceof Error ? err.stack : undefined,
62
+ });
63
+ throw err;
64
+ }
65
+ }
66
+ /**
67
+ * Gets the appropriate model instance
68
+ * @private
69
+ */
70
+ getModel() {
71
+ logger.debug("MistralAI.getModel - Mistral AI model selected", {
72
+ modelName: this.modelName,
73
+ });
74
+ return this.client(this.modelName);
75
+ }
76
+ /**
77
+ * Processes text using streaming approach with enhanced error handling callbacks
78
+ * @param prompt - The input text prompt to analyze
79
+ * @param analysisSchema - Optional Zod schema or Schema object for output validation
80
+ * @returns Promise resolving to StreamTextResult or null if operation fails
81
+ */
82
+ async streamText(optionsOrPrompt, analysisSchema) {
83
+ const functionTag = "MistralAI.streamText";
84
+ const provider = "mistral";
85
+ let chunkCount = 0;
86
+ try {
87
+ // Parse parameters - support both string and options object
88
+ const options = typeof optionsOrPrompt === "string"
89
+ ? { prompt: optionsOrPrompt }
90
+ : optionsOrPrompt;
91
+ const { prompt, temperature = 0.7, maxTokens = 500, systemPrompt = DEFAULT_SYSTEM_CONTEXT.systemPrompt, schema, } = options;
92
+ // Use schema from options or fallback parameter
93
+ const finalSchema = schema || analysisSchema;
94
+ logger.debug(`[${functionTag}] Stream request started`, {
95
+ provider,
96
+ modelName: this.modelName,
97
+ promptLength: prompt.length,
98
+ temperature,
99
+ maxTokens,
100
+ hasSchema: !!finalSchema,
101
+ });
102
+ const model = this.getModel();
103
+ const streamOptions = {
104
+ model: model,
105
+ prompt: prompt,
106
+ system: systemPrompt,
107
+ temperature,
108
+ maxTokens,
109
+ onError: (event) => {
110
+ const error = event.error;
111
+ const errorMessage = error instanceof Error ? error.message : String(error);
112
+ const errorStack = error instanceof Error ? error.stack : undefined;
113
+ logger.error(`[${functionTag}] Stream text error`, {
114
+ provider,
115
+ modelName: this.modelName,
116
+ error: errorMessage,
117
+ stack: errorStack,
118
+ promptLength: prompt.length,
119
+ chunkCount,
120
+ });
121
+ },
122
+ onFinish: (event) => {
123
+ logger.debug(`[${functionTag}] Stream text finished`, {
124
+ provider,
125
+ modelName: this.modelName,
126
+ finishReason: event.finishReason,
127
+ usage: event.usage,
128
+ totalChunks: chunkCount,
129
+ promptLength: prompt.length,
130
+ responseLength: event.text?.length || 0,
131
+ });
132
+ },
133
+ onChunk: (event) => {
134
+ chunkCount++;
135
+ logger.debug(`[${functionTag}] Stream text chunk`, {
136
+ provider,
137
+ modelName: this.modelName,
138
+ chunkNumber: chunkCount,
139
+ chunkLength: event.chunk.text?.length || 0,
140
+ chunkType: event.chunk.type,
141
+ });
142
+ },
143
+ };
144
+ if (finalSchema) {
145
+ streamOptions.experimental_output = Output.object({
146
+ schema: finalSchema,
147
+ });
148
+ }
149
+ const result = streamText(streamOptions);
150
+ return result;
151
+ }
152
+ catch (err) {
153
+ logger.error(`[${functionTag}] Exception`, {
154
+ provider,
155
+ modelName: this.modelName,
156
+ message: "Error in streaming text",
157
+ err: String(err),
158
+ promptLength: typeof optionsOrPrompt === "string"
159
+ ? optionsOrPrompt.length
160
+ : optionsOrPrompt.prompt.length,
161
+ });
162
+ throw err; // Re-throw error to trigger fallback
163
+ }
164
+ }
165
+ /**
166
+ * Processes text using non-streaming approach with optional schema validation
167
+ * @param prompt - The input text prompt to analyze
168
+ * @param analysisSchema - Optional Zod schema or Schema object for output validation
169
+ * @returns Promise resolving to GenerateTextResult or null if operation fails
170
+ */
171
+ async generateText(optionsOrPrompt, analysisSchema) {
172
+ const functionTag = "MistralAI.generateText";
173
+ const provider = "mistral";
174
+ try {
175
+ // Parse parameters - support both string and options object
176
+ const options = typeof optionsOrPrompt === "string"
177
+ ? { prompt: optionsOrPrompt }
178
+ : optionsOrPrompt;
179
+ const { prompt, temperature = 0.7, maxTokens = 500, systemPrompt = DEFAULT_SYSTEM_CONTEXT.systemPrompt, schema, } = options;
180
+ // Use schema from options or fallback parameter
181
+ const finalSchema = schema || analysisSchema;
182
+ logger.debug(`[${functionTag}] Generate request started`, {
183
+ provider,
184
+ modelName: this.modelName,
185
+ promptLength: prompt.length,
186
+ temperature,
187
+ maxTokens,
188
+ });
189
+ const model = this.getModel();
190
+ const generateOptions = {
191
+ model: model,
192
+ prompt: prompt,
193
+ system: systemPrompt,
194
+ temperature,
195
+ maxTokens,
196
+ };
197
+ if (finalSchema) {
198
+ generateOptions.experimental_output = Output.object({
199
+ schema: finalSchema,
200
+ });
201
+ }
202
+ const result = await generateText(generateOptions);
203
+ logger.debug(`[${functionTag}] Generate text completed`, {
204
+ provider,
205
+ modelName: this.modelName,
206
+ usage: result.usage,
207
+ finishReason: result.finishReason,
208
+ responseLength: result.text?.length || 0,
209
+ });
210
+ return result;
211
+ }
212
+ catch (err) {
213
+ logger.error(`[${functionTag}] Exception`, {
214
+ provider,
215
+ modelName: this.modelName,
216
+ message: "Error in generating text",
217
+ err: String(err),
218
+ });
219
+ throw err; // Re-throw error to trigger fallback
220
+ }
221
+ }
222
+ }
223
+ export default MistralAI;
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Ollama Provider for NeuroLink
3
+ *
4
+ * Local AI model deployment and management using Ollama.
5
+ * Provides offline AI capabilities with local model hosting.
6
+ *
7
+ * Features:
8
+ * - Local model deployment (privacy-first)
9
+ * - Model management (download, list, remove)
10
+ * - Health checking and service validation
11
+ * - Streaming and non-streaming text generation
12
+ */
13
+ import type { AIProvider, TextGenerationOptions, StreamTextOptions } from "../core/types.js";
14
+ import type { GenerateTextResult, StreamTextResult, ToolSet } from "ai";
15
+ import type { ZodType, ZodTypeDef } from "zod";
16
+ import type { Schema } from "ai";
17
+ export declare class Ollama implements AIProvider {
18
+ private baseUrl;
19
+ private modelName;
20
+ private timeout;
21
+ constructor(modelName?: string);
22
+ /**
23
+ * Gets the appropriate model instance
24
+ * @private
25
+ */
26
+ private getModel;
27
+ /**
28
+ * Health check - verify Ollama service is running and accessible
29
+ */
30
+ checkHealth(): Promise<boolean>;
31
+ /**
32
+ * List available models on the Ollama instance
33
+ */
34
+ listModels(): Promise<string[]>;
35
+ /**
36
+ * Check if a specific model is available
37
+ */
38
+ isModelAvailable(modelName: string): Promise<boolean>;
39
+ /**
40
+ * Pull/download a model to the local Ollama instance
41
+ */
42
+ pullModel(modelName: string): Promise<void>;
43
+ /**
44
+ * Generate text using Ollama local models
45
+ */
46
+ generateText(optionsOrPrompt: TextGenerationOptions | string, analysisSchema?: ZodType<unknown, ZodTypeDef, unknown> | Schema<unknown>): Promise<GenerateTextResult<ToolSet, unknown> | null>;
47
+ /**
48
+ * Generate streaming text using Ollama local models
49
+ */
50
+ streamText(optionsOrPrompt: StreamTextOptions | string, analysisSchema?: ZodType<unknown, ZodTypeDef, unknown> | Schema<unknown>): Promise<StreamTextResult<ToolSet, unknown> | null>;
51
+ }