@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
@@ -60,12 +60,12 @@ export class WebSocketChatHandler extends SSEChatHandler {
60
60
  latencyTarget: 200,
61
61
  });
62
62
  // Generate AI response
63
- const result = await this.provider.generateText({
63
+ const result = await this.provider.generate({
64
64
  prompt: request.prompt,
65
65
  temperature: request.options?.temperature,
66
66
  maxTokens: request.options?.maxTokens,
67
67
  });
68
- if (!result || !result.text) {
68
+ if (!result || !result.content) {
69
69
  throw new Error("Invalid AI response");
70
70
  }
71
71
  // Send response via WebSocket
@@ -75,7 +75,7 @@ export class WebSocketChatHandler extends SSEChatHandler {
75
75
  connectionId,
76
76
  timestamp: Date.now(),
77
77
  data: {
78
- text: result.text,
78
+ text: result.content,
79
79
  sessionId: request.sessionId,
80
80
  metadata: {
81
81
  provider: this.provider.constructor.name,
@@ -98,12 +98,12 @@ export class WebSocketChatHandler extends SSEChatHandler {
98
98
  async handleGroupChat(roomId, request) {
99
99
  try {
100
100
  // Process AI request
101
- const result = await this.provider.generateText({
101
+ const result = await this.provider.generate({
102
102
  prompt: request.prompt,
103
103
  temperature: request.options?.temperature,
104
104
  maxTokens: request.options?.maxTokens,
105
105
  });
106
- if (!result || !result.text) {
106
+ if (!result || !result.content) {
107
107
  throw new Error("Invalid AI response");
108
108
  }
109
109
  // Broadcast to room
@@ -113,7 +113,7 @@ export class WebSocketChatHandler extends SSEChatHandler {
113
113
  connectionId: "system",
114
114
  timestamp: Date.now(),
115
115
  data: {
116
- text: result.text,
116
+ text: result.content,
117
117
  sessionId: request.sessionId,
118
118
  userId: request.userId,
119
119
  isGroupMessage: true,
@@ -136,11 +136,11 @@ export class WebSocketChatHandler extends SSEChatHandler {
136
136
  const channelId = randomUUID();
137
137
  const channel = this.wsServer.createStreamingChannel(connectionId, channelId);
138
138
  // Generate response
139
- const result = await this.provider.generateText({
139
+ const result = await this.provider.generate({
140
140
  prompt: request.prompt,
141
141
  ...request.options,
142
142
  });
143
- if (!result || !result.text) {
143
+ if (!result || !result.content) {
144
144
  throw new Error("Invalid AI response");
145
145
  }
146
146
  // Send complete response
@@ -150,7 +150,7 @@ export class WebSocketChatHandler extends SSEChatHandler {
150
150
  connectionId,
151
151
  timestamp: Date.now(),
152
152
  data: {
153
- text: result.text,
153
+ text: result.content,
154
154
  isStreamingComplete: true,
155
155
  channelId,
156
156
  },
@@ -0,0 +1,423 @@
1
+ import type { ZodType, ZodTypeDef } from "zod";
2
+ import type { Schema } from "ai";
3
+ import type { Tool } from "ai";
4
+ import type { AIProvider, TextGenerationOptions, EnhancedGenerateResult, AnalyticsData, AIProviderName } from "../core/types.js";
5
+ import type { StreamOptions, StreamResult } from "../types/stream-types.js";
6
+ /**
7
+ * Abstract base class for all AI providers
8
+ * Tools are integrated as first-class citizens - always available by default
9
+ */
10
+ export declare abstract class BaseProvider implements AIProvider {
11
+ protected readonly modelName: string;
12
+ protected readonly providerName: AIProviderName;
13
+ protected readonly defaultTimeout: number;
14
+ protected readonly directTools: {
15
+ getCurrentTime: Tool<import("zod").ZodObject<{
16
+ timezone: import("zod").ZodOptional<import("zod").ZodString>;
17
+ }, "strip", import("zod").ZodTypeAny, {
18
+ timezone?: string | undefined;
19
+ }, {
20
+ timezone?: string | undefined;
21
+ }>, {
22
+ success: boolean;
23
+ time: string;
24
+ timezone: string;
25
+ iso: string;
26
+ timestamp?: undefined;
27
+ error?: undefined;
28
+ } | {
29
+ success: boolean;
30
+ time: string;
31
+ iso: string;
32
+ timestamp: number;
33
+ timezone?: undefined;
34
+ error?: undefined;
35
+ } | {
36
+ success: boolean;
37
+ error: string;
38
+ time?: undefined;
39
+ timezone?: undefined;
40
+ iso?: undefined;
41
+ timestamp?: undefined;
42
+ }> & {
43
+ execute: (args: {
44
+ timezone?: string | undefined;
45
+ }, options: import("ai").ToolExecutionOptions) => PromiseLike<{
46
+ success: boolean;
47
+ time: string;
48
+ timezone: string;
49
+ iso: string;
50
+ timestamp?: undefined;
51
+ error?: undefined;
52
+ } | {
53
+ success: boolean;
54
+ time: string;
55
+ iso: string;
56
+ timestamp: number;
57
+ timezone?: undefined;
58
+ error?: undefined;
59
+ } | {
60
+ success: boolean;
61
+ error: string;
62
+ time?: undefined;
63
+ timezone?: undefined;
64
+ iso?: undefined;
65
+ timestamp?: undefined;
66
+ }>;
67
+ };
68
+ readFile: Tool<import("zod").ZodObject<{
69
+ path: import("zod").ZodString;
70
+ }, "strip", import("zod").ZodTypeAny, {
71
+ path: string;
72
+ }, {
73
+ path: string;
74
+ }>, {
75
+ success: boolean;
76
+ error: string;
77
+ content?: undefined;
78
+ size?: undefined;
79
+ path?: undefined;
80
+ lastModified?: undefined;
81
+ } | {
82
+ success: boolean;
83
+ content: string;
84
+ size: number;
85
+ path: string;
86
+ lastModified: string;
87
+ error?: undefined;
88
+ } | {
89
+ success: boolean;
90
+ error: string;
91
+ path: string;
92
+ content?: undefined;
93
+ size?: undefined;
94
+ lastModified?: undefined;
95
+ }> & {
96
+ execute: (args: {
97
+ path: string;
98
+ }, options: import("ai").ToolExecutionOptions) => PromiseLike<{
99
+ success: boolean;
100
+ error: string;
101
+ content?: undefined;
102
+ size?: undefined;
103
+ path?: undefined;
104
+ lastModified?: undefined;
105
+ } | {
106
+ success: boolean;
107
+ content: string;
108
+ size: number;
109
+ path: string;
110
+ lastModified: string;
111
+ error?: undefined;
112
+ } | {
113
+ success: boolean;
114
+ error: string;
115
+ path: string;
116
+ content?: undefined;
117
+ size?: undefined;
118
+ lastModified?: undefined;
119
+ }>;
120
+ };
121
+ listDirectory: Tool<import("zod").ZodObject<{
122
+ path: import("zod").ZodString;
123
+ includeHidden: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>;
124
+ }, "strip", import("zod").ZodTypeAny, {
125
+ path: string;
126
+ includeHidden: boolean;
127
+ }, {
128
+ path: string;
129
+ includeHidden?: boolean | undefined;
130
+ }>, {
131
+ success: boolean;
132
+ path: string;
133
+ items: {
134
+ name: string;
135
+ type: string;
136
+ size: number | undefined;
137
+ lastModified: string;
138
+ }[];
139
+ count: number;
140
+ error?: undefined;
141
+ } | {
142
+ success: boolean;
143
+ error: string;
144
+ path: string;
145
+ items?: undefined;
146
+ count?: undefined;
147
+ }> & {
148
+ execute: (args: {
149
+ path: string;
150
+ includeHidden: boolean;
151
+ }, options: import("ai").ToolExecutionOptions) => PromiseLike<{
152
+ success: boolean;
153
+ path: string;
154
+ items: {
155
+ name: string;
156
+ type: string;
157
+ size: number | undefined;
158
+ lastModified: string;
159
+ }[];
160
+ count: number;
161
+ error?: undefined;
162
+ } | {
163
+ success: boolean;
164
+ error: string;
165
+ path: string;
166
+ items?: undefined;
167
+ count?: undefined;
168
+ }>;
169
+ };
170
+ calculateMath: Tool<import("zod").ZodObject<{
171
+ expression: import("zod").ZodString;
172
+ precision: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodNumber>>;
173
+ }, "strip", import("zod").ZodTypeAny, {
174
+ expression: string;
175
+ precision: number;
176
+ }, {
177
+ expression: string;
178
+ precision?: number | undefined;
179
+ }>, {
180
+ success: boolean;
181
+ error: string;
182
+ expression?: undefined;
183
+ result?: undefined;
184
+ type?: undefined;
185
+ } | {
186
+ success: boolean;
187
+ expression: string;
188
+ result: any;
189
+ type: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function";
190
+ error?: undefined;
191
+ } | {
192
+ success: boolean;
193
+ error: string;
194
+ expression: string;
195
+ result?: undefined;
196
+ type?: undefined;
197
+ }> & {
198
+ execute: (args: {
199
+ expression: string;
200
+ precision: number;
201
+ }, options: import("ai").ToolExecutionOptions) => PromiseLike<{
202
+ success: boolean;
203
+ error: string;
204
+ expression?: undefined;
205
+ result?: undefined;
206
+ type?: undefined;
207
+ } | {
208
+ success: boolean;
209
+ expression: string;
210
+ result: any;
211
+ type: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function";
212
+ error?: undefined;
213
+ } | {
214
+ success: boolean;
215
+ error: string;
216
+ expression: string;
217
+ result?: undefined;
218
+ type?: undefined;
219
+ }>;
220
+ };
221
+ writeFile: Tool<import("zod").ZodObject<{
222
+ path: import("zod").ZodString;
223
+ content: import("zod").ZodString;
224
+ mode: import("zod").ZodDefault<import("zod").ZodEnum<["create", "overwrite", "append"]>>;
225
+ }, "strip", import("zod").ZodTypeAny, {
226
+ path: string;
227
+ content: string;
228
+ mode: "create" | "overwrite" | "append";
229
+ }, {
230
+ path: string;
231
+ content: string;
232
+ mode?: "create" | "overwrite" | "append" | undefined;
233
+ }>, {
234
+ success: boolean;
235
+ error: string;
236
+ path?: undefined;
237
+ mode?: undefined;
238
+ size?: undefined;
239
+ written?: undefined;
240
+ } | {
241
+ success: boolean;
242
+ path: string;
243
+ mode: "create" | "overwrite" | "append";
244
+ size: number;
245
+ written: number;
246
+ error?: undefined;
247
+ } | {
248
+ success: boolean;
249
+ error: string;
250
+ path: string;
251
+ mode?: undefined;
252
+ size?: undefined;
253
+ written?: undefined;
254
+ }> & {
255
+ execute: (args: {
256
+ path: string;
257
+ content: string;
258
+ mode: "create" | "overwrite" | "append";
259
+ }, options: import("ai").ToolExecutionOptions) => PromiseLike<{
260
+ success: boolean;
261
+ error: string;
262
+ path?: undefined;
263
+ mode?: undefined;
264
+ size?: undefined;
265
+ written?: undefined;
266
+ } | {
267
+ success: boolean;
268
+ path: string;
269
+ mode: "create" | "overwrite" | "append";
270
+ size: number;
271
+ written: number;
272
+ error?: undefined;
273
+ } | {
274
+ success: boolean;
275
+ error: string;
276
+ path: string;
277
+ mode?: undefined;
278
+ size?: undefined;
279
+ written?: undefined;
280
+ }>;
281
+ };
282
+ searchFiles: Tool<import("zod").ZodObject<{
283
+ directory: import("zod").ZodString;
284
+ pattern: import("zod").ZodString;
285
+ recursive: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>;
286
+ }, "strip", import("zod").ZodTypeAny, {
287
+ directory: string;
288
+ pattern: string;
289
+ recursive: boolean;
290
+ }, {
291
+ directory: string;
292
+ pattern: string;
293
+ recursive?: boolean | undefined;
294
+ }>, {
295
+ success: boolean;
296
+ error: string;
297
+ directory?: undefined;
298
+ pattern?: undefined;
299
+ matches?: undefined;
300
+ count?: undefined;
301
+ } | {
302
+ success: boolean;
303
+ directory: string;
304
+ pattern: string;
305
+ matches: {
306
+ name: string;
307
+ path: string;
308
+ size: number;
309
+ lastModified: string;
310
+ }[];
311
+ count: number;
312
+ error?: undefined;
313
+ } | {
314
+ success: boolean;
315
+ error: string;
316
+ directory: string;
317
+ pattern: string;
318
+ matches?: undefined;
319
+ count?: undefined;
320
+ }> & {
321
+ execute: (args: {
322
+ directory: string;
323
+ pattern: string;
324
+ recursive: boolean;
325
+ }, options: import("ai").ToolExecutionOptions) => PromiseLike<{
326
+ success: boolean;
327
+ error: string;
328
+ directory?: undefined;
329
+ pattern?: undefined;
330
+ matches?: undefined;
331
+ count?: undefined;
332
+ } | {
333
+ success: boolean;
334
+ directory: string;
335
+ pattern: string;
336
+ matches: {
337
+ name: string;
338
+ path: string;
339
+ size: number;
340
+ lastModified: string;
341
+ }[];
342
+ count: number;
343
+ error?: undefined;
344
+ } | {
345
+ success: boolean;
346
+ error: string;
347
+ directory: string;
348
+ pattern: string;
349
+ matches?: undefined;
350
+ count?: undefined;
351
+ }>;
352
+ };
353
+ };
354
+ protected mcpTools?: Record<string, Tool>;
355
+ protected sessionId?: string;
356
+ protected userId?: string;
357
+ protected sdk?: any;
358
+ constructor(modelName?: string, providerName?: AIProviderName, sdk?: any);
359
+ /**
360
+ * Check if this provider supports tool/function calling
361
+ * Override in subclasses to disable tools for specific providers or models
362
+ * @returns true by default, providers can override to return false
363
+ */
364
+ supportsTools(): boolean;
365
+ /**
366
+ * Primary streaming method - implements AIProvider interface
367
+ * When tools are involved, falls back to generate() with synthetic streaming
368
+ */
369
+ stream(optionsOrPrompt: StreamOptions | string, analysisSchema?: ZodType<unknown, ZodTypeDef, unknown> | Schema<unknown>): Promise<StreamResult>;
370
+ /**
371
+ * Text generation method - implements AIProvider interface
372
+ * Tools are always available unless explicitly disabled
373
+ */
374
+ generate(optionsOrPrompt: TextGenerationOptions | string, analysisSchema?: ZodType<unknown, ZodTypeDef, unknown> | Schema<unknown>): Promise<EnhancedGenerateResult | null>;
375
+ /**
376
+ * Alias for generate method - implements AIProvider interface
377
+ */
378
+ gen(optionsOrPrompt: TextGenerationOptions | string, analysisSchema?: ZodType<unknown, ZodTypeDef, unknown> | Schema<unknown>): Promise<EnhancedGenerateResult | null>;
379
+ /**
380
+ * Provider-specific streaming implementation (only used when tools are disabled)
381
+ */
382
+ protected abstract executeStream(options: StreamOptions, analysisSchema?: ZodType<unknown, ZodTypeDef, unknown> | Schema<unknown>): Promise<StreamResult>;
383
+ /**
384
+ * Get the provider name
385
+ */
386
+ protected abstract getProviderName(): AIProviderName;
387
+ /**
388
+ * Get the default model for this provider
389
+ */
390
+ protected abstract getDefaultModel(): string;
391
+ /**
392
+ * REQUIRED: Every provider MUST implement this method
393
+ * Returns the Vercel AI SDK model instance for this provider
394
+ */
395
+ protected abstract getAISDKModel(): any | Promise<any>;
396
+ /**
397
+ * Get all available tools - direct tools are ALWAYS available
398
+ * MCP tools are added when available (without blocking)
399
+ */
400
+ protected getAllTools(): Promise<Record<string, Tool>>;
401
+ /**
402
+ * Set session context for MCP tools
403
+ */
404
+ setSessionContext(sessionId?: string, userId?: string): void;
405
+ /**
406
+ * Provider-specific error handling
407
+ */
408
+ protected abstract handleProviderError(error: any): Error;
409
+ protected normalizeTextOptions(optionsOrPrompt: TextGenerationOptions | string): TextGenerationOptions;
410
+ protected normalizeStreamOptions(optionsOrPrompt: StreamOptions | string): StreamOptions;
411
+ protected enhanceResult(result: EnhancedGenerateResult, options: TextGenerationOptions, startTime: number): Promise<EnhancedGenerateResult>;
412
+ protected createAnalytics(result: EnhancedGenerateResult, responseTime: number, options: TextGenerationOptions): Promise<AnalyticsData>;
413
+ protected createEvaluation(result: EnhancedGenerateResult, options: TextGenerationOptions): Promise<any>;
414
+ protected validateOptions(options: TextGenerationOptions): void;
415
+ protected getProviderInfo(): {
416
+ provider: string;
417
+ model: string;
418
+ };
419
+ /**
420
+ * Get timeout value in milliseconds
421
+ */
422
+ getTimeout(options: TextGenerationOptions | StreamOptions): number;
423
+ }