@juspay/neurolink 7.50.0 → 7.51.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (242) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +12 -9
  3. package/dist/adapters/providerImageAdapter.js +82 -10
  4. package/dist/agent/directTools.d.ts +10 -10
  5. package/dist/agent/directTools.js +5 -3
  6. package/dist/cli/commands/config.js +1 -0
  7. package/dist/cli/commands/mcp.js +1 -0
  8. package/dist/cli/commands/models.js +1 -0
  9. package/dist/cli/commands/ollama.js +1 -0
  10. package/dist/cli/commands/setup-anthropic.js +1 -0
  11. package/dist/cli/commands/setup-azure.js +1 -0
  12. package/dist/cli/commands/setup-bedrock.js +1 -0
  13. package/dist/cli/commands/setup-gcp.js +1 -0
  14. package/dist/cli/commands/setup-google-ai.js +1 -0
  15. package/dist/cli/commands/setup-huggingface.js +1 -0
  16. package/dist/cli/commands/setup-mistral.js +1 -0
  17. package/dist/cli/commands/setup-openai.js +1 -0
  18. package/dist/cli/commands/setup.js +1 -0
  19. package/dist/cli/errorHandler.js +1 -0
  20. package/dist/cli/factories/commandFactory.d.ts +1 -0
  21. package/dist/cli/factories/commandFactory.js +23 -6
  22. package/dist/cli/factories/ollamaCommandFactory.js +1 -0
  23. package/dist/cli/factories/sagemakerCommandFactory.js +1 -0
  24. package/dist/cli/factories/setupCommandFactory.js +1 -0
  25. package/dist/cli/index.js +1 -0
  26. package/dist/cli/loop/conversationSelector.js +1 -0
  27. package/dist/cli/loop/optionsSchema.js +1 -0
  28. package/dist/cli/loop/session.js +1 -0
  29. package/dist/cli/parser.js +1 -0
  30. package/dist/cli/utils/completeSetup.js +1 -0
  31. package/dist/cli/utils/envManager.js +1 -0
  32. package/dist/cli/utils/interactiveSetup.js +1 -0
  33. package/dist/cli/utils/ollamaUtils.js +1 -0
  34. package/dist/constants/index.js +1 -1
  35. package/dist/core/baseProvider.d.ts +5 -0
  36. package/dist/core/baseProvider.js +70 -20
  37. package/dist/index.d.ts +3 -3
  38. package/dist/lib/adapters/providerImageAdapter.js +83 -10
  39. package/dist/lib/agent/directTools.d.ts +10 -10
  40. package/dist/lib/agent/directTools.js +6 -3
  41. package/dist/lib/config/configManager.js +1 -0
  42. package/dist/lib/config/conversationMemory.js +1 -0
  43. package/dist/lib/config/taskClassificationConfig.js +1 -0
  44. package/dist/lib/constants/index.js +2 -1
  45. package/dist/lib/constants/performance.js +1 -0
  46. package/dist/lib/constants/retry.js +1 -0
  47. package/dist/lib/constants/timeouts.js +1 -0
  48. package/dist/lib/constants/tokens.js +1 -0
  49. package/dist/lib/core/analytics.js +1 -0
  50. package/dist/lib/core/baseProvider.d.ts +5 -0
  51. package/dist/lib/core/baseProvider.js +71 -20
  52. package/dist/lib/core/constants.js +1 -0
  53. package/dist/lib/core/conversationMemoryFactory.js +1 -0
  54. package/dist/lib/core/conversationMemoryInitializer.js +1 -0
  55. package/dist/lib/core/conversationMemoryManager.js +1 -0
  56. package/dist/lib/core/dynamicModels.js +1 -0
  57. package/dist/lib/core/evaluation.js +1 -0
  58. package/dist/lib/core/evaluationProviders.js +1 -0
  59. package/dist/lib/core/factory.js +1 -0
  60. package/dist/lib/core/modelConfiguration.js +1 -0
  61. package/dist/lib/core/redisConversationMemoryManager.js +1 -0
  62. package/dist/lib/core/serviceRegistry.js +1 -0
  63. package/dist/lib/core/streamAnalytics.js +1 -0
  64. package/dist/lib/evaluation/contextBuilder.js +1 -0
  65. package/dist/lib/evaluation/index.js +1 -0
  66. package/dist/lib/evaluation/prompts.js +1 -0
  67. package/dist/lib/evaluation/ragasEvaluator.js +1 -0
  68. package/dist/lib/evaluation/retryManager.js +1 -0
  69. package/dist/lib/evaluation/scoring.js +1 -0
  70. package/dist/lib/factories/providerFactory.js +1 -0
  71. package/dist/lib/factories/providerRegistry.js +1 -0
  72. package/dist/lib/hitl/hitlErrors.js +1 -0
  73. package/dist/lib/hitl/hitlManager.js +1 -0
  74. package/dist/lib/hitl/index.js +1 -0
  75. package/dist/lib/hitl/types.js +1 -0
  76. package/dist/lib/index.d.ts +3 -3
  77. package/dist/lib/index.js +1 -0
  78. package/dist/lib/mcp/externalServerManager.js +1 -0
  79. package/dist/lib/mcp/factory.js +1 -0
  80. package/dist/lib/mcp/flexibleToolValidator.js +1 -0
  81. package/dist/lib/mcp/index.js +1 -0
  82. package/dist/lib/mcp/mcpCircuitBreaker.js +1 -0
  83. package/dist/lib/mcp/mcpClientFactory.js +2 -1
  84. package/dist/lib/mcp/registry.js +1 -0
  85. package/dist/lib/mcp/servers/agent/directToolsServer.js +2 -0
  86. package/dist/lib/mcp/servers/aiProviders/aiAnalysisTools.js +1 -0
  87. package/dist/lib/mcp/servers/aiProviders/aiCoreServer.js +1 -0
  88. package/dist/lib/mcp/servers/aiProviders/aiWorkflowTools.js +1 -0
  89. package/dist/lib/mcp/servers/utilities/utilityServer.js +1 -0
  90. package/dist/lib/mcp/toolDiscoveryService.js +1 -0
  91. package/dist/lib/mcp/toolRegistry.js +1 -0
  92. package/dist/lib/memory/mem0Initializer.js +1 -0
  93. package/dist/lib/middleware/builtin/analytics.js +1 -0
  94. package/dist/lib/middleware/builtin/autoEvaluation.js +1 -0
  95. package/dist/lib/middleware/builtin/guardrails.js +1 -0
  96. package/dist/lib/middleware/factory.js +1 -0
  97. package/dist/lib/middleware/index.js +1 -0
  98. package/dist/lib/middleware/registry.js +1 -0
  99. package/dist/lib/middleware/utils/guardrailsUtils.js +1 -0
  100. package/dist/lib/models/modelRegistry.js +1 -0
  101. package/dist/lib/models/modelResolver.js +2 -0
  102. package/dist/lib/neurolink.d.ts +6 -0
  103. package/dist/lib/neurolink.js +135 -5
  104. package/dist/lib/providers/amazonBedrock.d.ts +1 -0
  105. package/dist/lib/providers/amazonBedrock.js +166 -14
  106. package/dist/lib/providers/amazonSagemaker.js +1 -0
  107. package/dist/lib/providers/anthropic.js +7 -21
  108. package/dist/lib/providers/anthropicBaseProvider.js +1 -0
  109. package/dist/lib/providers/azureOpenai.js +5 -21
  110. package/dist/lib/providers/googleAiStudio.js +5 -21
  111. package/dist/lib/providers/googleVertex.js +8 -1
  112. package/dist/lib/providers/huggingFace.js +34 -3
  113. package/dist/lib/providers/index.js +1 -0
  114. package/dist/lib/providers/litellm.js +34 -3
  115. package/dist/lib/providers/mistral.js +32 -2
  116. package/dist/lib/providers/ollama.d.ts +37 -1
  117. package/dist/lib/providers/ollama.js +544 -58
  118. package/dist/lib/providers/openAI.js +5 -21
  119. package/dist/lib/providers/openaiCompatible.js +41 -4
  120. package/dist/lib/providers/sagemaker/adaptive-semaphore.js +1 -0
  121. package/dist/lib/providers/sagemaker/client.js +1 -0
  122. package/dist/lib/providers/sagemaker/config.js +1 -0
  123. package/dist/lib/providers/sagemaker/detection.js +1 -0
  124. package/dist/lib/providers/sagemaker/diagnostics.js +1 -0
  125. package/dist/lib/providers/sagemaker/error-constants.js +1 -0
  126. package/dist/lib/providers/sagemaker/errors.js +1 -0
  127. package/dist/lib/providers/sagemaker/index.js +1 -0
  128. package/dist/lib/providers/sagemaker/language-model.js +1 -0
  129. package/dist/lib/providers/sagemaker/parsers.js +1 -0
  130. package/dist/lib/providers/sagemaker/streaming.js +1 -0
  131. package/dist/lib/providers/sagemaker/structured-parser.js +1 -0
  132. package/dist/lib/proxy/awsProxyIntegration.js +1 -0
  133. package/dist/lib/proxy/proxyFetch.js +1 -0
  134. package/dist/lib/proxy/utils/noProxyUtils.js +1 -0
  135. package/dist/lib/sdk/toolRegistration.js +2 -0
  136. package/dist/lib/services/server/ai/observability/instrumentation.js +1 -0
  137. package/dist/lib/session/globalSessionState.js +1 -0
  138. package/dist/lib/telemetry/index.js +1 -0
  139. package/dist/lib/telemetry/telemetryService.js +1 -0
  140. package/dist/lib/types/analytics.js +1 -0
  141. package/dist/lib/types/cli.js +1 -0
  142. package/dist/lib/types/common.js +1 -0
  143. package/dist/lib/types/configTypes.js +1 -0
  144. package/dist/lib/types/content.d.ts +14 -1
  145. package/dist/lib/types/content.js +1 -0
  146. package/dist/lib/types/contextTypes.js +1 -0
  147. package/dist/lib/types/conversation.js +1 -0
  148. package/dist/lib/types/domainTypes.js +1 -0
  149. package/dist/lib/types/errors.js +1 -0
  150. package/dist/lib/types/evaluation.js +1 -0
  151. package/dist/lib/types/evaluationProviders.js +1 -0
  152. package/dist/lib/types/evaluationTypes.js +1 -0
  153. package/dist/lib/types/externalMcp.js +1 -0
  154. package/dist/lib/types/fileTypes.d.ts +44 -0
  155. package/dist/lib/types/fileTypes.js +1 -0
  156. package/dist/lib/types/generateTypes.d.ts +1 -0
  157. package/dist/lib/types/generateTypes.js +1 -0
  158. package/dist/lib/types/guardrails.js +1 -0
  159. package/dist/lib/types/index.js +1 -0
  160. package/dist/lib/types/mcpTypes.js +1 -0
  161. package/dist/lib/types/middlewareTypes.js +1 -0
  162. package/dist/lib/types/modelTypes.js +1 -0
  163. package/dist/lib/types/observability.js +1 -0
  164. package/dist/lib/types/providers.d.ts +44 -0
  165. package/dist/lib/types/providers.js +1 -0
  166. package/dist/lib/types/sdkTypes.js +1 -0
  167. package/dist/lib/types/serviceTypes.js +1 -0
  168. package/dist/lib/types/streamTypes.d.ts +1 -0
  169. package/dist/lib/types/streamTypes.js +1 -0
  170. package/dist/lib/types/taskClassificationTypes.js +1 -0
  171. package/dist/lib/types/tools.js +2 -0
  172. package/dist/lib/types/typeAliases.js +1 -0
  173. package/dist/lib/types/universalProviderOptions.js +1 -0
  174. package/dist/lib/utils/analyticsUtils.js +1 -0
  175. package/dist/lib/utils/conversationMemory.js +1 -0
  176. package/dist/lib/utils/conversationMemoryUtils.js +1 -0
  177. package/dist/lib/utils/csvProcessor.js +1 -0
  178. package/dist/lib/utils/errorHandling.js +1 -0
  179. package/dist/lib/utils/evaluationUtils.js +1 -0
  180. package/dist/lib/utils/factoryProcessing.js +1 -0
  181. package/dist/lib/utils/fileDetector.js +7 -3
  182. package/dist/lib/utils/imageProcessor.js +1 -0
  183. package/dist/lib/utils/logger.js +1 -0
  184. package/dist/lib/utils/loopUtils.js +1 -0
  185. package/dist/lib/utils/mcpDefaults.js +1 -0
  186. package/dist/lib/utils/messageBuilder.js +96 -9
  187. package/dist/lib/utils/modelRouter.js +1 -0
  188. package/dist/lib/utils/multimodalOptionsBuilder.d.ts +67 -0
  189. package/dist/lib/utils/multimodalOptionsBuilder.js +65 -0
  190. package/dist/lib/utils/optionsConversion.js +1 -0
  191. package/dist/lib/utils/optionsUtils.js +1 -0
  192. package/dist/lib/utils/parameterValidation.js +1 -0
  193. package/dist/lib/utils/pdfProcessor.d.ts +10 -0
  194. package/dist/lib/utils/pdfProcessor.js +199 -0
  195. package/dist/lib/utils/performance.js +1 -0
  196. package/dist/lib/utils/promptRedaction.js +1 -0
  197. package/dist/lib/utils/providerConfig.js +1 -0
  198. package/dist/lib/utils/providerHealth.js +1 -0
  199. package/dist/lib/utils/providerSetupMessages.js +1 -0
  200. package/dist/lib/utils/providerUtils.js +1 -0
  201. package/dist/lib/utils/redis.js +1 -0
  202. package/dist/lib/utils/retryHandler.js +1 -0
  203. package/dist/lib/utils/schemaConversion.js +1 -0
  204. package/dist/lib/utils/taskClassificationUtils.js +1 -0
  205. package/dist/lib/utils/taskClassifier.js +1 -0
  206. package/dist/lib/utils/timeout.js +1 -0
  207. package/dist/lib/utils/tokenLimits.js +1 -0
  208. package/dist/lib/utils/toolUtils.js +1 -0
  209. package/dist/lib/utils/transformationUtils.js +1 -0
  210. package/dist/lib/utils/typeUtils.js +1 -0
  211. package/dist/mcp/mcpClientFactory.js +1 -1
  212. package/dist/mcp/servers/agent/directToolsServer.js +1 -0
  213. package/dist/models/modelResolver.js +1 -0
  214. package/dist/neurolink.d.ts +6 -0
  215. package/dist/neurolink.js +134 -5
  216. package/dist/providers/amazonBedrock.d.ts +1 -0
  217. package/dist/providers/amazonBedrock.js +165 -14
  218. package/dist/providers/anthropic.js +6 -21
  219. package/dist/providers/azureOpenai.js +4 -21
  220. package/dist/providers/googleAiStudio.js +4 -21
  221. package/dist/providers/googleVertex.js +7 -1
  222. package/dist/providers/huggingFace.js +33 -3
  223. package/dist/providers/litellm.js +33 -3
  224. package/dist/providers/mistral.js +31 -2
  225. package/dist/providers/ollama.d.ts +37 -1
  226. package/dist/providers/ollama.js +543 -58
  227. package/dist/providers/openAI.js +4 -21
  228. package/dist/providers/openaiCompatible.js +40 -4
  229. package/dist/sdk/toolRegistration.js +1 -0
  230. package/dist/types/content.d.ts +14 -1
  231. package/dist/types/fileTypes.d.ts +44 -0
  232. package/dist/types/generateTypes.d.ts +1 -0
  233. package/dist/types/providers.d.ts +44 -0
  234. package/dist/types/streamTypes.d.ts +1 -0
  235. package/dist/types/tools.js +1 -0
  236. package/dist/utils/fileDetector.js +6 -3
  237. package/dist/utils/messageBuilder.js +95 -9
  238. package/dist/utils/multimodalOptionsBuilder.d.ts +67 -0
  239. package/dist/utils/multimodalOptionsBuilder.js +64 -0
  240. package/dist/utils/pdfProcessor.d.ts +10 -0
  241. package/dist/utils/pdfProcessor.js +198 -0
  242. package/package.json +11 -20
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import { generateText } from "ai";
2
+ import { generateText, tool as createAISDKTool, jsonSchema } from "ai";
3
3
  import { MiddlewareFactory } from "../middleware/factory.js";
4
4
  import { logger } from "../utils/logger.js";
5
5
  import { DEFAULT_MAX_STEPS, STEP_LIMITS } from "../core/constants.js";
@@ -234,8 +234,9 @@ export class BaseProvider {
234
234
  const hasImages = !!input?.images?.length;
235
235
  const hasContent = !!input?.content?.length;
236
236
  const hasCSVFiles = !!input?.csvFiles?.length;
237
+ const hasPdfFiles = !!input?.pdfFiles?.length;
237
238
  const hasFiles = !!input?.files?.length;
238
- return hasImages || hasContent || hasCSVFiles || hasFiles;
239
+ return hasImages || hasContent || hasCSVFiles || hasPdfFiles || hasFiles;
239
240
  };
240
241
  let messages;
241
242
  if (hasMultimodalInput(options)) {
@@ -249,6 +250,7 @@ export class BaseProvider {
249
250
  images: input?.images,
250
251
  content: input?.content,
251
252
  csvFiles: input?.csvFiles,
253
+ pdfFiles: input?.pdfFiles,
252
254
  files: input?.files,
253
255
  },
254
256
  csvOptions: options.csvOptions,
@@ -767,22 +769,24 @@ export class BaseProvider {
767
769
  async createCustomToolFromDefinition(toolName, toolInfo) {
768
770
  try {
769
771
  logger.debug(`[BaseProvider] Converting custom tool: ${toolName}`);
770
- // Convert to AI SDK tool format
771
- const { tool: createAISDKTool } = await import("ai");
772
- const { z } = await import("zod");
773
772
  let finalSchema;
774
- const schemaSource = toolInfo.parameters || toolInfo.inputSchema;
775
- if (this.isZodSchema(schemaSource)) {
776
- finalSchema = schemaSource;
777
- logger.debug(`[BaseProvider] ${toolName}: Using existing Zod schema from ${toolInfo.parameters ? "parameters" : "inputSchema"} field`);
773
+ let originalInputSchema;
774
+ // Prioritize parameters (Zod), then inputSchema (JSON Schema)
775
+ if (toolInfo.parameters && this.isZodSchema(toolInfo.parameters)) {
776
+ finalSchema = toolInfo.parameters;
778
777
  }
779
- else if (schemaSource && typeof schemaSource === "object") {
780
- logger.debug(`[BaseProvider] ${toolName}: Converting JSON Schema to Zod from ${toolInfo.parameters ? "parameters" : "inputSchema"} field`);
781
- finalSchema = convertJsonSchemaToZod(schemaSource);
778
+ else if (toolInfo.inputSchema &&
779
+ typeof toolInfo.inputSchema === "object") {
780
+ // Use original JSON Schema with jsonSchema() wrapper - NO CONVERSION!
781
+ originalInputSchema = toolInfo.inputSchema;
782
+ finalSchema = jsonSchema(originalInputSchema);
783
+ }
784
+ else if (toolInfo.parameters &&
785
+ typeof toolInfo.parameters === "object") {
786
+ finalSchema = convertJsonSchemaToZod(toolInfo.parameters);
782
787
  }
783
788
  else {
784
789
  finalSchema = z.object({});
785
- logger.debug(`[BaseProvider] ${toolName}: No schema found, using empty object`);
786
790
  }
787
791
  return createAISDKTool({
788
792
  description: toolInfo.description || `Tool ${toolName}`,
@@ -976,7 +980,7 @@ export class BaseProvider {
976
980
  {};
977
981
  if (toolInfo && typeof toolInfo.execute === "function") {
978
982
  const tool = await this.createCustomToolFromDefinition(toolName, toolInfo);
979
- if (tool) {
983
+ if (tool && !tools[toolName]) {
980
984
  tools[toolName] = tool;
981
985
  }
982
986
  }
@@ -985,17 +989,58 @@ export class BaseProvider {
985
989
  customToolsProcessed: this.customTools.size,
986
990
  });
987
991
  }
992
+ /**
993
+ * Recursively fix JSON Schema for OpenAI strict mode compatibility
994
+ * OpenAI requires additionalProperties: false at ALL levels and preserves required array
995
+ */
996
+ fixSchemaForOpenAIStrictMode(schema) {
997
+ const fixedSchema = JSON.parse(JSON.stringify(schema));
998
+ if (fixedSchema.type === "object" &&
999
+ fixedSchema.properties &&
1000
+ typeof fixedSchema.properties === "object") {
1001
+ const allPropertyNames = Object.keys(fixedSchema.properties);
1002
+ if (!fixedSchema.required || !Array.isArray(fixedSchema.required)) {
1003
+ fixedSchema.required = [];
1004
+ }
1005
+ fixedSchema.additionalProperties = false;
1006
+ for (const propName of allPropertyNames) {
1007
+ const propValue = fixedSchema.properties[propName];
1008
+ if (propValue && typeof propValue === "object") {
1009
+ if (propValue.type === "object") {
1010
+ fixedSchema.properties[propName] =
1011
+ this.fixSchemaForOpenAIStrictMode(propValue);
1012
+ }
1013
+ else if (propValue.type === "array" &&
1014
+ propValue.items &&
1015
+ typeof propValue.items === "object") {
1016
+ fixedSchema.properties[propName].items =
1017
+ this.fixSchemaForOpenAIStrictMode(propValue.items);
1018
+ }
1019
+ }
1020
+ }
1021
+ }
1022
+ return fixedSchema;
1023
+ }
988
1024
  /**
989
1025
  * Create an external MCP tool
990
1026
  */
991
1027
  async createExternalMCPTool(tool) {
992
1028
  try {
993
1029
  logger.debug(`[BaseProvider] Converting external MCP tool: ${tool.name}`);
994
- // Convert to AI SDK tool format
995
- const { tool: createAISDKTool } = await import("ai");
1030
+ // Use original JSON Schema from MCP tool if available, otherwise use permissive schema
1031
+ let finalSchema;
1032
+ if (tool.inputSchema && typeof tool.inputSchema === "object") {
1033
+ // Clone and fix the schema for OpenAI strict mode compatibility
1034
+ const originalSchema = tool.inputSchema;
1035
+ const fixedSchema = this.fixSchemaForOpenAIStrictMode(originalSchema);
1036
+ finalSchema = jsonSchema(fixedSchema);
1037
+ }
1038
+ else {
1039
+ finalSchema = this.createPermissiveZodSchema();
1040
+ }
996
1041
  return createAISDKTool({
997
1042
  description: tool.description || `External MCP tool ${tool.name}`,
998
- parameters: this.createPermissiveZodSchema(),
1043
+ parameters: finalSchema,
999
1044
  execute: async (params) => {
1000
1045
  logger.debug(`Executing external MCP tool: ${tool.name}`, {
1001
1046
  toolName: tool.name,
@@ -1118,7 +1163,7 @@ export class BaseProvider {
1118
1163
  logger.debug(`[BaseProvider] Found ${externalTools.length} external MCP tools`);
1119
1164
  for (const tool of externalTools) {
1120
1165
  const mcpTool = await this.createExternalMCPTool(tool);
1121
- if (mcpTool) {
1166
+ if (mcpTool && !tools[tool.name]) {
1122
1167
  tools[tool.name] = mcpTool;
1123
1168
  logger.debug(`[BaseProvider] Successfully added external MCP tool: ${tool.name}`);
1124
1169
  }
@@ -1141,9 +1186,14 @@ export class BaseProvider {
1141
1186
  // Set empty tools object - MCP tools are handled at a higher level
1142
1187
  this.mcpTools = {};
1143
1188
  }
1144
- // Add MCP tools if available
1189
+ // Add MCP tools if available, but don't overwrite existing direct tools
1190
+ // Direct tools (Zod-based) take precedence over MCP tools (JSON Schema)
1145
1191
  if (this.mcpTools) {
1146
- Object.assign(tools, this.mcpTools);
1192
+ for (const [name, tool] of Object.entries(this.mcpTools)) {
1193
+ if (!tools[name]) {
1194
+ tools[name] = tool;
1195
+ }
1196
+ }
1147
1197
  }
1148
1198
  }
1149
1199
  /**
package/dist/index.d.ts CHANGED
@@ -38,7 +38,7 @@ export declare const VERSION = "1.0.0";
38
38
  * const result = await provider.stream({ input: { text: 'Hello, AI!' } });
39
39
  * ```
40
40
  */
41
- export declare function createAIProvider(providerName?: string, modelName?: string): Promise<import("./types/providers.js").AIProvider>;
41
+ export declare function createAIProvider(providerName?: string, modelName?: string): Promise<import("./index.js").AIProvider>;
42
42
  /**
43
43
  * Create provider with automatic fallback
44
44
  *
@@ -49,7 +49,7 @@ export declare function createAIProvider(providerName?: string, modelName?: stri
49
49
  * const { primary, fallback } = await createAIProviderWithFallback('bedrock', 'vertex');
50
50
  * ```
51
51
  */
52
- export declare function createAIProviderWithFallback(primaryProvider?: string, fallbackProvider?: string, modelName?: string): Promise<import("./types/typeAliases.js").ProviderPairResult<import("./types/providers.js").AIProvider>>;
52
+ export declare function createAIProviderWithFallback(primaryProvider?: string, fallbackProvider?: string, modelName?: string): Promise<import("./types/typeAliases.js").ProviderPairResult<import("./index.js").AIProvider>>;
53
53
  /**
54
54
  * Create the best available provider based on configuration
55
55
  *
@@ -60,7 +60,7 @@ export declare function createAIProviderWithFallback(primaryProvider?: string, f
60
60
  * const provider = await createBestAIProvider();
61
61
  * ```
62
62
  */
63
- export declare function createBestAIProvider(requestedProvider?: string, modelName?: string): Promise<import("./types/providers.js").AIProvider>;
63
+ export declare function createBestAIProvider(requestedProvider?: string, modelName?: string): Promise<import("./index.js").AIProvider>;
64
64
  /**
65
65
  * MCP (Model Context Protocol) Plugin Ecosystem
66
66
  *
@@ -20,7 +20,29 @@ export class MultimodalLogger {
20
20
  * Vision capability definitions for each provider
21
21
  */
22
22
  const VISION_CAPABILITIES = {
23
- openai: ["gpt-4o", "gpt-4o-mini", "gpt-4-turbo", "gpt-4-vision-preview"],
23
+ openai: [
24
+ // GPT-5 family (released Aug 2025)
25
+ "gpt-5",
26
+ "gpt-5-2025-08-07",
27
+ "gpt-5-pro",
28
+ "gpt-5-mini",
29
+ "gpt-5-nano",
30
+ // GPT-4.1 family (released Apr 2025)
31
+ "gpt-4.1",
32
+ "gpt-4.1-mini",
33
+ "gpt-4.1-nano",
34
+ // o-series reasoning models (released Apr 2025)
35
+ "o3",
36
+ "o3-mini",
37
+ "o4",
38
+ "o4-mini",
39
+ "o4-mini-deep-research",
40
+ // Existing GPT-4 models
41
+ "gpt-4o",
42
+ "gpt-4o-mini",
43
+ "gpt-4-turbo",
44
+ "gpt-4-vision-preview",
45
+ ],
24
46
  "google-ai": [
25
47
  "gemini-2.5-pro",
26
48
  "gemini-2.5-flash",
@@ -29,44 +51,91 @@ const VISION_CAPABILITIES = {
29
51
  "gemini-pro-vision",
30
52
  ],
31
53
  anthropic: [
54
+ "claude-3-7-sonnet",
32
55
  "claude-3-5-sonnet",
33
56
  "claude-3-opus",
34
57
  "claude-3-sonnet",
35
58
  "claude-3-haiku",
36
59
  ],
37
60
  azure: [
61
+ // GPT-5 family
62
+ "gpt-5",
63
+ "gpt-5-pro",
64
+ "gpt-5-mini",
65
+ // GPT-4.1 family
66
+ "gpt-4.1",
67
+ "gpt-4.1-mini",
68
+ "gpt-4.1-nano",
69
+ // Existing GPT-4
38
70
  "gpt-4o",
39
71
  "gpt-4o-mini",
40
72
  "gpt-4-turbo",
41
73
  "gpt-4-vision-preview",
42
- "gpt-4.1",
43
74
  "gpt-4",
44
75
  ],
45
76
  vertex: [
46
77
  // Gemini models on Vertex AI
47
78
  "gemini-2.5-pro",
48
79
  "gemini-2.5-flash",
80
+ "gemini-2.0-flash",
49
81
  "gemini-1.5-pro",
50
82
  "gemini-1.5-flash",
51
- // Claude models on Vertex AI (with actual Vertex naming patterns)
83
+ // Claude 4.x models (versioned format)
84
+ "claude-sonnet-4-5@",
85
+ "claude-sonnet-4@",
86
+ "claude-opus-4-1@",
87
+ "claude-opus-4@",
88
+ // Claude 3.x models (versioned format)
89
+ "claude-3-7-sonnet@",
90
+ "claude-3-5-sonnet@",
91
+ "claude-opus-3@",
92
+ "claude-haiku-3@",
93
+ // Claude models (non-versioned format)
94
+ "claude-3-7-sonnet",
52
95
  "claude-3-5-sonnet",
53
96
  "claude-3-opus",
54
97
  "claude-3-sonnet",
55
98
  "claude-3-haiku",
56
- "claude-sonnet-3",
57
99
  "claude-sonnet-4",
100
+ "claude-sonnet-3",
58
101
  "claude-opus-3",
59
102
  "claude-haiku-3",
60
- // Additional Vertex AI Claude model patterns
103
+ // Additional patterns for compatibility
61
104
  "claude-3.5-sonnet",
62
105
  "claude-3.5-haiku",
63
106
  "claude-3.0-sonnet",
64
107
  "claude-3.0-opus",
65
- // Versioned model names (e.g., claude-sonnet-4@20250514)
66
- "claude-sonnet-4@",
67
- "claude-opus-3@",
68
- "claude-haiku-3@",
69
- "claude-3-5-sonnet@",
108
+ ],
109
+ litellm: [
110
+ // LiteLLM proxies to underlying providers
111
+ // List models that support vision when going through the proxy
112
+ "gemini-2.5-pro",
113
+ "gemini-2.5-flash",
114
+ "claude-sonnet-4",
115
+ "claude-sonnet-4-5",
116
+ "claude-opus-4-1",
117
+ "gpt-4o",
118
+ "gpt-4.1",
119
+ "gpt-5",
120
+ ],
121
+ ollama: [
122
+ // Llama 4 family (May 2025 - Best vision + tool calling)
123
+ "llama4:scout",
124
+ "llama4:maverick",
125
+ // Llama 3.2 vision
126
+ "llama3.2-vision",
127
+ // Gemma 3 family (SigLIP vision encoder - supports tool calling + vision)
128
+ "gemma3:4b",
129
+ "gemma3:12b",
130
+ "gemma3:27b",
131
+ "gemma3:latest",
132
+ // Mistral Small family (vision + tool calling)
133
+ "mistral-small3.1",
134
+ "mistral-small3.1:large",
135
+ "mistral-small3.1:medium",
136
+ "mistral-small3.1:small",
137
+ // LLaVA (vision-focused)
138
+ "llava",
70
139
  ],
71
140
  };
72
141
  /**
@@ -100,6 +169,9 @@ export class ProviderImageAdapter {
100
169
  case "vertex":
101
170
  adaptedPayload = this.formatForVertex(text, images, model);
102
171
  break;
172
+ case "ollama":
173
+ adaptedPayload = this.formatForOpenAI(text, images);
174
+ break;
103
175
  default:
104
176
  throw new Error(`Vision not supported for provider: ${provider}`);
105
177
  }
@@ -267,3 +339,4 @@ export class ProviderImageAdapter {
267
339
  return Object.keys(VISION_CAPABILITIES);
268
340
  }
269
341
  }
342
+ //# sourceMappingURL=providerImageAdapter.js.map
@@ -349,13 +349,13 @@ export declare const directAgentTools: {
349
349
  analyzeCSV: import("ai").Tool<z.ZodObject<{
350
350
  filePath: z.ZodEffects<z.ZodString, string, string>;
351
351
  operation: z.ZodEnum<["count_by_column", "sum_by_column", "average_by_column", "min_max_by_column", "describe"]>;
352
- column: z.ZodOptional<z.ZodString>;
353
- maxRows: z.ZodOptional<z.ZodNumber>;
352
+ column: z.ZodDefault<z.ZodOptional<z.ZodString>>;
353
+ maxRows: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
354
354
  }, "strip", z.ZodTypeAny, {
355
+ maxRows: number;
355
356
  filePath: string;
356
357
  operation: "count_by_column" | "sum_by_column" | "average_by_column" | "min_max_by_column" | "describe";
357
- maxRows?: number | undefined;
358
- column?: string | undefined;
358
+ column: string;
359
359
  }, {
360
360
  filePath: string;
361
361
  operation: "count_by_column" | "sum_by_column" | "average_by_column" | "min_max_by_column" | "describe";
@@ -364,7 +364,7 @@ export declare const directAgentTools: {
364
364
  }>, {
365
365
  success: boolean;
366
366
  operation: "count_by_column" | "sum_by_column" | "average_by_column" | "min_max_by_column" | "describe";
367
- column: string | undefined;
367
+ column: string;
368
368
  result: string;
369
369
  rowCount: number;
370
370
  } | {
@@ -376,17 +376,17 @@ export declare const directAgentTools: {
376
376
  success: boolean;
377
377
  error: string;
378
378
  operation: "count_by_column" | "sum_by_column" | "average_by_column" | "min_max_by_column" | "describe";
379
- column: string | undefined;
379
+ column: string;
380
380
  }> & {
381
381
  execute: (args: {
382
+ maxRows: number;
382
383
  filePath: string;
383
384
  operation: "count_by_column" | "sum_by_column" | "average_by_column" | "min_max_by_column" | "describe";
384
- maxRows?: number | undefined;
385
- column?: string | undefined;
385
+ column: string;
386
386
  }, options: import("ai").ToolExecutionOptions) => PromiseLike<{
387
387
  success: boolean;
388
388
  operation: "count_by_column" | "sum_by_column" | "average_by_column" | "min_max_by_column" | "describe";
389
- column: string | undefined;
389
+ column: string;
390
390
  result: string;
391
391
  rowCount: number;
392
392
  } | {
@@ -398,7 +398,7 @@ export declare const directAgentTools: {
398
398
  success: boolean;
399
399
  error: string;
400
400
  operation: "count_by_column" | "sum_by_column" | "average_by_column" | "min_max_by_column" | "describe";
401
- column: string | undefined;
401
+ column: string;
402
402
  }>;
403
403
  };
404
404
  websearchGrounding: import("ai").Tool<z.ZodObject<{
@@ -31,7 +31,7 @@ export const directAgentTools = {
31
31
  timezone: z
32
32
  .string()
33
33
  .optional()
34
- .describe('Timezone (e.g., "America/New_York", "Asia/Kolkata"). Defaults to local time.'),
34
+ .describe('Timezone (e.g., "America/New_York", "Asia/Kolkata"). Defaults to system local time.'),
35
35
  }),
36
36
  execute: async ({ timezone }) => {
37
37
  try {
@@ -103,8 +103,8 @@ export const directAgentTools = {
103
103
  includeHidden: z
104
104
  .boolean()
105
105
  .optional()
106
- .describe("Include hidden files (starting with .)")
107
- .default(false),
106
+ .default(false)
107
+ .describe("Include hidden files (starting with .)"),
108
108
  }),
109
109
  execute: async ({ path: dirPath, includeHidden }) => {
110
110
  try {
@@ -377,10 +377,12 @@ export const directAgentTools = {
377
377
  column: z
378
378
  .string()
379
379
  .optional()
380
+ .default("")
380
381
  .describe("Column name for the operation (required for most operations)"),
381
382
  maxRows: z
382
383
  .number()
383
384
  .optional()
385
+ .default(1000)
384
386
  .describe("Maximum rows to process (default: 1000)"),
385
387
  }),
386
388
  execute: async ({ filePath, operation, column, maxRows = 1000 }) => {
@@ -784,3 +786,4 @@ export function validateToolStructure() {
784
786
  return false;
785
787
  }
786
788
  }
789
+ //# sourceMappingURL=directTools.js.map
@@ -301,3 +301,4 @@ export default ${JSON.stringify(currentConfig, null, 2)};`;
301
301
  throw new Error("No config found in backup file");
302
302
  }
303
303
  }
304
+ //# sourceMappingURL=configManager.js.map
@@ -43,3 +43,4 @@ export function getConversationMemoryDefaults() {
43
43
  summarizationModel: process.env.NEUROLINK_SUMMARIZATION_MODEL || "gemini-2.5-flash",
44
44
  };
45
45
  }
46
+ //# sourceMappingURL=conversationMemory.js.map
@@ -146,3 +146,4 @@ export const DOMAIN_PATTERNS = {
146
146
  TECHNICAL: /\b(code|programming|development|software)\b/i,
147
147
  SIMPLE_DEFINITION: /\b(definition|meaning|what is)\b/i,
148
148
  };
149
+ //# sourceMappingURL=taskClassificationConfig.js.map
@@ -42,7 +42,7 @@ export const OPERATION_TIMEOUTS = {
42
42
  };
43
43
  // Import the constants from the individual files for use in composite configurations
44
44
  import { PROVIDER_TIMEOUTS, MCP_TIMEOUTS, TimeoutUtils, TOOL_TIMEOUTS, } from "./timeouts.js";
45
- import { RETRY_ATTEMPTS, RETRY_DELAYS, PROVIDER_RETRY, RetryUtils, } from "./retry.js";
45
+ import { RETRY_ATTEMPTS, RETRY_DELAYS, PROVIDER_RETRY, BACKOFF_CONFIG, RetryUtils, } from "./retry.js";
46
46
  import { CONCURRENCY_LIMITS, MEMORY_THRESHOLDS, BUFFER_SIZES, } from "./performance.js";
47
47
  import { TokenUtils } from "./tokens.js";
48
48
  /**
@@ -193,3 +193,4 @@ export const CONSTANTS_METADATA = {
193
193
  CATEGORIES: ["timeouts", "retry", "performance", "tokens"],
194
194
  COMPATIBILITY: "backward_compatible",
195
195
  };
196
+ //# sourceMappingURL=index.js.map
@@ -387,3 +387,4 @@ export const DEFAULT_CACHE_SIZE = CACHE_CONFIG.DEFAULT_SIZE;
387
387
  export const NANOSECOND_TO_MS_DIVISOR = UNIT_CONVERSIONS.NANOSECOND_TO_MS_DIVISOR;
388
388
  export const TEXT_PREVIEW_LENGTHS_EXPORT = TEXT_PREVIEW_LENGTHS;
389
389
  export const PERFORMANCE_THRESHOLDS_EXPORT = PERFORMANCE_THRESHOLDS;
390
+ //# sourceMappingURL=performance.js.map
@@ -264,3 +264,4 @@ export const DEFAULT_BACKOFF_MULTIPLIER = BACKOFF_CONFIG.MULTIPLIER;
264
264
  export const CIRCUIT_BREAKER_FAILURE_THRESHOLD = CIRCUIT_BREAKER.FAILURE_THRESHOLD;
265
265
  // Single source of truth: re-export from timeouts
266
266
  export { CIRCUIT_BREAKER_RESET_MS } from "./timeouts.js";
267
+ //# sourceMappingURL=retry.js.map
@@ -180,3 +180,4 @@ export const DEFAULT_TIMEOUT = TOOL_TIMEOUTS.EXECUTION_DEFAULT_MS;
180
180
  export const PROVIDER_TEST_TIMEOUT = PROVIDER_TIMEOUTS.TEST_MS;
181
181
  export const MCP_INIT_TIMEOUT = MCP_TIMEOUTS.INITIALIZATION_MS;
182
182
  export const CIRCUIT_BREAKER_RESET_MS = CIRCUIT_BREAKER_TIMEOUTS.RESET_MS;
183
+ //# sourceMappingURL=timeouts.js.map
@@ -312,3 +312,4 @@ export const DEFAULT_DOCUMENTATION_MAX_TOKENS = USE_CASE_TOKENS.DOCUMENTATION;
312
312
  export const ANTHROPIC_SAFE = PROVIDER_TOKEN_LIMITS.ANTHROPIC.default;
313
313
  export const OPENAI_STANDARD = PROVIDER_TOKEN_LIMITS.OPENAI.default;
314
314
  export const GOOGLE_STANDARD = PROVIDER_TOKEN_LIMITS.GOOGLE_AI.default;
315
+ //# sourceMappingURL=tokens.js.map
@@ -100,3 +100,4 @@ function estimateCost(provider, model, tokens) {
100
100
  return undefined;
101
101
  }
102
102
  }
103
+ //# sourceMappingURL=analytics.js.map
@@ -133,6 +133,11 @@ export declare abstract class BaseProvider implements AIProvider {
133
133
  * Process custom tools from setupToolExecutor
134
134
  */
135
135
  private processCustomTools;
136
+ /**
137
+ * Recursively fix JSON Schema for OpenAI strict mode compatibility
138
+ * OpenAI requires additionalProperties: false at ALL levels and preserves required array
139
+ */
140
+ private fixSchemaForOpenAIStrictMode;
136
141
  /**
137
142
  * Create an external MCP tool
138
143
  */