@juspay/neurolink 1.6.0 → 1.10.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 (182) hide show
  1. package/CHANGELOG.md +200 -7
  2. package/README.md +101 -18
  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 +6 -6
  8. package/dist/cli/commands/config.js +326 -273
  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 +1 -1
  12. package/dist/cli/commands/ollama.js +153 -143
  13. package/dist/cli/index.js +687 -325
  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 +177 -62
  24. package/dist/core/types.d.ts +4 -2
  25. package/dist/core/types.js +4 -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 +177 -62
  34. package/dist/lib/core/types.d.ts +4 -2
  35. package/dist/lib/core/types.js +4 -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 +12 -4
  65. package/dist/lib/mcp/registry.js +64 -37
  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 +204 -65
  68. package/dist/lib/mcp/servers/ai-providers/ai-core-server.js +142 -102
  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 +197 -142
  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 +304 -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 +3 -3
  94. package/dist/lib/providers/huggingFace.js +70 -63
  95. package/dist/lib/providers/index.d.ts +11 -11
  96. package/dist/lib/providers/index.js +18 -18
  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 +3 -3
  100. package/dist/lib/providers/mistralAI.js +42 -36
  101. package/dist/lib/providers/ollama.d.ts +4 -4
  102. package/dist/lib/providers/ollama.js +128 -98
  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-fixed.d.ts +8 -0
  107. package/dist/lib/utils/providerUtils-fixed.js +75 -0
  108. package/dist/lib/utils/providerUtils.d.ts +8 -1
  109. package/dist/lib/utils/providerUtils.js +63 -32
  110. package/dist/mcp/auto-discovery.d.ts +120 -0
  111. package/dist/mcp/auto-discovery.js +794 -0
  112. package/dist/mcp/client.d.ts +66 -0
  113. package/dist/mcp/client.js +245 -0
  114. package/dist/mcp/config.d.ts +31 -0
  115. package/dist/mcp/config.js +74 -0
  116. package/dist/mcp/context-manager.d.ts +4 -4
  117. package/dist/mcp/context-manager.js +24 -18
  118. package/dist/mcp/factory.d.ts +28 -11
  119. package/dist/mcp/factory.js +36 -29
  120. package/dist/mcp/function-calling.d.ts +51 -0
  121. package/dist/mcp/function-calling.js +510 -0
  122. package/dist/mcp/index.d.ts +190 -0
  123. package/dist/mcp/index.js +156 -0
  124. package/dist/mcp/initialize-tools.d.ts +28 -0
  125. package/dist/mcp/initialize-tools.js +210 -0
  126. package/dist/mcp/initialize.d.ts +17 -0
  127. package/dist/mcp/initialize.js +51 -0
  128. package/dist/mcp/logging.d.ts +71 -0
  129. package/dist/mcp/logging.js +183 -0
  130. package/dist/mcp/manager.d.ts +67 -0
  131. package/dist/mcp/manager.js +176 -0
  132. package/dist/mcp/neurolink-mcp-client.d.ts +96 -0
  133. package/dist/mcp/neurolink-mcp-client.js +417 -0
  134. package/dist/mcp/orchestrator.d.ts +3 -3
  135. package/dist/mcp/orchestrator.js +46 -43
  136. package/dist/mcp/registry.d.ts +12 -4
  137. package/dist/mcp/registry.js +64 -37
  138. package/dist/mcp/servers/ai-providers/ai-analysis-tools.d.ts +1 -1
  139. package/dist/mcp/servers/ai-providers/ai-analysis-tools.js +204 -65
  140. package/dist/mcp/servers/ai-providers/ai-core-server.js +142 -102
  141. package/dist/mcp/servers/ai-providers/ai-workflow-tools.d.ts +6 -6
  142. package/dist/mcp/servers/ai-providers/ai-workflow-tools.js +197 -142
  143. package/dist/mcp/servers/utilities/utility-server.d.ts +8 -0
  144. package/dist/mcp/servers/utilities/utility-server.js +326 -0
  145. package/dist/mcp/tool-integration.d.ts +67 -0
  146. package/dist/mcp/tool-integration.js +179 -0
  147. package/dist/mcp/unified-registry.d.ts +269 -0
  148. package/dist/mcp/unified-registry.js +1411 -0
  149. package/dist/neurolink.d.ts +68 -6
  150. package/dist/neurolink.js +304 -42
  151. package/dist/providers/agent-enhanced-provider.d.ts +59 -0
  152. package/dist/providers/agent-enhanced-provider.js +242 -0
  153. package/dist/providers/amazonBedrock.d.ts +3 -3
  154. package/dist/providers/amazonBedrock.js +54 -50
  155. package/dist/providers/anthropic.d.ts +2 -2
  156. package/dist/providers/anthropic.js +92 -84
  157. package/dist/providers/azureOpenAI.d.ts +2 -2
  158. package/dist/providers/azureOpenAI.js +97 -86
  159. package/dist/providers/function-calling-provider.d.ts +70 -0
  160. package/dist/providers/function-calling-provider.js +359 -0
  161. package/dist/providers/googleAIStudio.d.ts +10 -5
  162. package/dist/providers/googleAIStudio.js +60 -38
  163. package/dist/providers/googleVertexAI.d.ts +3 -3
  164. package/dist/providers/googleVertexAI.js +96 -86
  165. package/dist/providers/huggingFace.d.ts +3 -3
  166. package/dist/providers/huggingFace.js +70 -63
  167. package/dist/providers/index.d.ts +11 -11
  168. package/dist/providers/index.js +18 -18
  169. package/dist/providers/mcp-provider.d.ts +62 -0
  170. package/dist/providers/mcp-provider.js +183 -0
  171. package/dist/providers/mistralAI.d.ts +3 -3
  172. package/dist/providers/mistralAI.js +42 -36
  173. package/dist/providers/ollama.d.ts +4 -4
  174. package/dist/providers/ollama.js +128 -98
  175. package/dist/providers/openAI.d.ts +7 -3
  176. package/dist/providers/openAI.js +45 -33
  177. package/dist/utils/logger.js +2 -2
  178. package/dist/utils/providerUtils-fixed.d.ts +8 -0
  179. package/dist/utils/providerUtils-fixed.js +75 -0
  180. package/dist/utils/providerUtils.d.ts +8 -1
  181. package/dist/utils/providerUtils.js +63 -32
  182. package/package.json +182 -160
@@ -4,8 +4,8 @@
4
4
  * Direct integration with Anthropic's Claude models via their native API.
5
5
  * Supports Claude 3.5 Sonnet, Claude 3.5 Haiku, and Claude 3 Opus.
6
6
  */
7
- import { AIProviderName } from '../core/types.js';
8
- import { logger } from '../utils/logger.js';
7
+ import { AIProviderName } from "../core/types.js";
8
+ import { logger } from "../utils/logger.js";
9
9
  export class AnthropicProvider {
10
10
  name = AIProviderName.ANTHROPIC;
11
11
  apiKey;
@@ -13,14 +13,16 @@ export class AnthropicProvider {
13
13
  defaultModel;
14
14
  constructor() {
15
15
  this.apiKey = this.getApiKey();
16
- this.baseURL = process.env.ANTHROPIC_BASE_URL || 'https://api.anthropic.com';
17
- this.defaultModel = process.env.ANTHROPIC_MODEL || 'claude-3-5-sonnet-20241022';
16
+ this.baseURL =
17
+ process.env.ANTHROPIC_BASE_URL || "https://api.anthropic.com";
18
+ this.defaultModel =
19
+ process.env.ANTHROPIC_MODEL || "claude-3-5-sonnet-20241022";
18
20
  logger.debug(`[AnthropicProvider] Initialized with model: ${this.defaultModel}`);
19
21
  }
20
22
  getApiKey() {
21
23
  const apiKey = process.env.ANTHROPIC_API_KEY;
22
24
  if (!apiKey) {
23
- throw new Error('ANTHROPIC_API_KEY environment variable is required');
25
+ throw new Error("ANTHROPIC_API_KEY environment variable is required");
24
26
  }
25
27
  return apiKey;
26
28
  }
@@ -30,17 +32,17 @@ export class AnthropicProvider {
30
32
  async makeRequest(endpoint, body, stream = false) {
31
33
  const url = `${this.baseURL}/v1/${endpoint}`;
32
34
  const headers = {
33
- 'Content-Type': 'application/json',
34
- 'x-api-key': this.apiKey,
35
- 'anthropic-version': '2023-06-01',
36
- 'anthropic-dangerous-direct-browser-access': 'true' // Required for browser usage
35
+ "Content-Type": "application/json",
36
+ "x-api-key": this.apiKey,
37
+ "anthropic-version": "2023-06-01",
38
+ "anthropic-dangerous-direct-browser-access": "true", // Required for browser usage
37
39
  };
38
- logger.debug(`[AnthropicProvider.makeRequest] ${stream ? 'Streaming' : 'Non-streaming'} request to ${url}`);
40
+ logger.debug(`[AnthropicProvider.makeRequest] ${stream ? "Streaming" : "Non-streaming"} request to ${url}`);
39
41
  logger.debug(`[AnthropicProvider.makeRequest] Model: ${body.model}, Max tokens: ${body.max_tokens}`);
40
42
  const response = await fetch(url, {
41
- method: 'POST',
43
+ method: "POST",
42
44
  headers,
43
- body: JSON.stringify(body)
45
+ body: JSON.stringify(body),
44
46
  });
45
47
  if (!response.ok) {
46
48
  const errorText = await response.text();
@@ -50,30 +52,30 @@ export class AnthropicProvider {
50
52
  return response;
51
53
  }
52
54
  async generateText(optionsOrPrompt, schema) {
53
- logger.debug('[AnthropicProvider.generateText] Starting text generation');
55
+ logger.debug("[AnthropicProvider.generateText] Starting text generation");
54
56
  // Parse parameters with backward compatibility
55
- const options = typeof optionsOrPrompt === 'string'
57
+ const options = typeof optionsOrPrompt === "string"
56
58
  ? { prompt: optionsOrPrompt }
57
59
  : optionsOrPrompt;
58
- const { prompt, temperature = 0.7, maxTokens = 500, systemPrompt = 'You are Claude, an AI assistant created by Anthropic. You are helpful, harmless, and honest.' } = options;
60
+ const { prompt, temperature = 0.7, maxTokens = 500, systemPrompt = "You are Claude, an AI assistant created by Anthropic. You are helpful, harmless, and honest.", } = options;
59
61
  logger.debug(`[AnthropicProvider.generateText] Prompt: "${prompt.substring(0, 100)}...", Temperature: ${temperature}, Max tokens: ${maxTokens}`);
60
62
  const requestBody = {
61
63
  model: this.getModel(),
62
64
  max_tokens: maxTokens,
63
65
  messages: [
64
66
  {
65
- role: 'user',
66
- content: prompt
67
- }
67
+ role: "user",
68
+ content: prompt,
69
+ },
68
70
  ],
69
71
  temperature,
70
- system: systemPrompt
72
+ system: systemPrompt,
71
73
  };
72
74
  try {
73
- const response = await this.makeRequest('messages', requestBody);
75
+ const response = await this.makeRequest("messages", requestBody);
74
76
  const data = await response.json();
75
77
  logger.debug(`[AnthropicProvider.generateText] Success. Generated ${data.usage.output_tokens} tokens`);
76
- const content = data.content.map(block => block.text).join('');
78
+ const content = data.content.map((block) => block.text).join("");
77
79
  return {
78
80
  content,
79
81
  provider: this.name,
@@ -81,83 +83,86 @@ export class AnthropicProvider {
81
83
  usage: {
82
84
  promptTokens: data.usage.input_tokens,
83
85
  completionTokens: data.usage.output_tokens,
84
- totalTokens: data.usage.input_tokens + data.usage.output_tokens
86
+ totalTokens: data.usage.input_tokens + data.usage.output_tokens,
85
87
  },
86
- finishReason: data.stop_reason
88
+ finishReason: data.stop_reason,
87
89
  };
88
90
  }
89
91
  catch (error) {
90
- logger.error('[AnthropicProvider.generateText] Error:', error);
92
+ logger.error("[AnthropicProvider.generateText] Error:", error);
91
93
  throw error;
92
94
  }
93
95
  }
94
96
  async streamText(optionsOrPrompt, schema) {
95
- logger.debug('[AnthropicProvider.streamText] Starting text streaming');
97
+ logger.debug("[AnthropicProvider.streamText] Starting text streaming");
96
98
  // Parse parameters with backward compatibility
97
- const options = typeof optionsOrPrompt === 'string'
99
+ const options = typeof optionsOrPrompt === "string"
98
100
  ? { prompt: optionsOrPrompt }
99
101
  : optionsOrPrompt;
100
- const { prompt, temperature = 0.7, maxTokens = 500, systemPrompt = 'You are Claude, an AI assistant created by Anthropic. You are helpful, harmless, and honest.' } = options;
102
+ const { prompt, temperature = 0.7, maxTokens = 500, systemPrompt = "You are Claude, an AI assistant created by Anthropic. You are helpful, harmless, and honest.", } = options;
101
103
  logger.debug(`[AnthropicProvider.streamText] Streaming prompt: "${prompt.substring(0, 100)}..."`);
102
104
  const requestBody = {
103
105
  model: this.getModel(),
104
106
  max_tokens: maxTokens,
105
107
  messages: [
106
108
  {
107
- role: 'user',
108
- content: prompt
109
- }
109
+ role: "user",
110
+ content: prompt,
111
+ },
110
112
  ],
111
113
  temperature,
112
114
  system: systemPrompt,
113
- stream: true
115
+ stream: true,
114
116
  };
115
117
  try {
116
- const response = await this.makeRequest('messages', requestBody, true);
118
+ const response = await this.makeRequest("messages", requestBody, true);
117
119
  if (!response.body) {
118
- throw new Error('No response body received');
120
+ throw new Error("No response body received");
119
121
  }
120
122
  // Return a StreamTextResult-like object
121
123
  return {
122
124
  textStream: this.createAsyncIterable(response.body),
123
- text: '',
125
+ text: "",
124
126
  usage: { promptTokens: 0, completionTokens: 0, totalTokens: 0 },
125
- finishReason: 'end_turn'
127
+ finishReason: "end_turn",
126
128
  };
127
129
  }
128
130
  catch (error) {
129
- logger.error('[AnthropicProvider.streamText] Error:', error);
131
+ logger.error("[AnthropicProvider.streamText] Error:", error);
130
132
  throw error;
131
133
  }
132
134
  }
133
135
  async *createAsyncIterable(body) {
134
136
  const reader = body.getReader();
135
137
  const decoder = new TextDecoder();
136
- let buffer = '';
138
+ let buffer = "";
137
139
  try {
138
140
  while (true) {
139
141
  const { done, value } = await reader.read();
140
- if (done)
142
+ if (done) {
141
143
  break;
144
+ }
142
145
  buffer += decoder.decode(value, { stream: true });
143
- const lines = buffer.split('\n');
144
- buffer = lines.pop() || '';
146
+ const lines = buffer.split("\n");
147
+ buffer = lines.pop() || "";
145
148
  for (const line of lines) {
146
- if (line.trim() === '')
149
+ if (line.trim() === "") {
147
150
  continue;
148
- if (line.startsWith('data: ')) {
151
+ }
152
+ if (line.startsWith("data: ")) {
149
153
  const data = line.slice(6);
150
- if (data.trim() === '[DONE]')
154
+ if (data.trim() === "[DONE]") {
151
155
  continue;
156
+ }
152
157
  try {
153
158
  const chunk = JSON.parse(data);
154
159
  // Extract text content from different chunk types
155
- if (chunk.type === 'content_block_delta' && chunk.delta?.text) {
160
+ if (chunk.type === "content_block_delta" && chunk.delta?.text) {
156
161
  yield chunk.delta.text;
157
162
  }
158
163
  }
159
164
  catch (parseError) {
160
- logger.warn('[AnthropicProvider.createAsyncIterable] Failed to parse chunk:', parseError);
165
+ logger.warn("[AnthropicProvider.createAsyncIterable] Failed to parse chunk:", parseError);
161
166
  continue;
162
167
  }
163
168
  }
@@ -169,62 +174,65 @@ export class AnthropicProvider {
169
174
  }
170
175
  }
171
176
  async *generateTextStream(optionsOrPrompt) {
172
- logger.debug('[AnthropicProvider.generateTextStream] Starting text streaming');
177
+ logger.debug("[AnthropicProvider.generateTextStream] Starting text streaming");
173
178
  // Parse parameters with backward compatibility
174
- const options = typeof optionsOrPrompt === 'string'
179
+ const options = typeof optionsOrPrompt === "string"
175
180
  ? { prompt: optionsOrPrompt }
176
181
  : optionsOrPrompt;
177
- const { prompt, temperature = 0.7, maxTokens = 500, systemPrompt = 'You are Claude, an AI assistant created by Anthropic. You are helpful, harmless, and honest.' } = options;
182
+ const { prompt, temperature = 0.7, maxTokens = 500, systemPrompt = "You are Claude, an AI assistant created by Anthropic. You are helpful, harmless, and honest.", } = options;
178
183
  logger.debug(`[AnthropicProvider.generateTextStream] Streaming prompt: "${prompt.substring(0, 100)}..."`);
179
184
  const requestBody = {
180
185
  model: this.getModel(),
181
186
  max_tokens: maxTokens,
182
187
  messages: [
183
188
  {
184
- role: 'user',
185
- content: prompt
186
- }
189
+ role: "user",
190
+ content: prompt,
191
+ },
187
192
  ],
188
193
  temperature,
189
194
  system: systemPrompt,
190
- stream: true
195
+ stream: true,
191
196
  };
192
197
  try {
193
- const response = await this.makeRequest('messages', requestBody, true);
198
+ const response = await this.makeRequest("messages", requestBody, true);
194
199
  if (!response.body) {
195
- throw new Error('No response body received');
200
+ throw new Error("No response body received");
196
201
  }
197
202
  const reader = response.body.getReader();
198
203
  const decoder = new TextDecoder();
199
- let buffer = '';
204
+ let buffer = "";
200
205
  try {
201
206
  while (true) {
202
207
  const { done, value } = await reader.read();
203
- if (done)
208
+ if (done) {
204
209
  break;
210
+ }
205
211
  buffer += decoder.decode(value, { stream: true });
206
- const lines = buffer.split('\n');
207
- buffer = lines.pop() || '';
212
+ const lines = buffer.split("\n");
213
+ buffer = lines.pop() || "";
208
214
  for (const line of lines) {
209
- if (line.trim() === '')
215
+ if (line.trim() === "") {
210
216
  continue;
211
- if (line.startsWith('data: ')) {
217
+ }
218
+ if (line.startsWith("data: ")) {
212
219
  const data = line.slice(6);
213
- if (data.trim() === '[DONE]')
220
+ if (data.trim() === "[DONE]") {
214
221
  continue;
222
+ }
215
223
  try {
216
224
  const chunk = JSON.parse(data);
217
225
  // Extract text content from different chunk types
218
- if (chunk.type === 'content_block_delta' && chunk.delta?.text) {
226
+ if (chunk.type === "content_block_delta" && chunk.delta?.text) {
219
227
  yield {
220
228
  content: chunk.delta.text,
221
229
  provider: this.name,
222
- model: this.getModel()
230
+ model: this.getModel(),
223
231
  };
224
232
  }
225
233
  }
226
234
  catch (parseError) {
227
- logger.warn('[AnthropicProvider.generateTextStream] Failed to parse chunk:', parseError);
235
+ logger.warn("[AnthropicProvider.generateTextStream] Failed to parse chunk:", parseError);
228
236
  continue;
229
237
  }
230
238
  }
@@ -234,26 +242,26 @@ export class AnthropicProvider {
234
242
  finally {
235
243
  reader.releaseLock();
236
244
  }
237
- logger.debug('[AnthropicProvider.generateTextStream] Streaming completed');
245
+ logger.debug("[AnthropicProvider.generateTextStream] Streaming completed");
238
246
  }
239
247
  catch (error) {
240
- logger.error('[AnthropicProvider.generateTextStream] Error:', error);
248
+ logger.error("[AnthropicProvider.generateTextStream] Error:", error);
241
249
  throw error;
242
250
  }
243
251
  }
244
252
  async testConnection() {
245
- logger.debug('[AnthropicProvider.testConnection] Testing connection to Anthropic API');
253
+ logger.debug("[AnthropicProvider.testConnection] Testing connection to Anthropic API");
246
254
  const startTime = Date.now();
247
255
  try {
248
256
  await this.generateText({
249
- prompt: 'Hello',
250
- maxTokens: 5
257
+ prompt: "Hello",
258
+ maxTokens: 5,
251
259
  });
252
260
  const responseTime = Date.now() - startTime;
253
261
  logger.debug(`[AnthropicProvider.testConnection] Connection test successful (${responseTime}ms)`);
254
262
  return {
255
263
  success: true,
256
- responseTime
264
+ responseTime,
257
265
  };
258
266
  }
259
267
  catch (error) {
@@ -261,8 +269,8 @@ export class AnthropicProvider {
261
269
  logger.error(`[AnthropicProvider.testConnection] Connection test failed (${responseTime}ms):`, error);
262
270
  return {
263
271
  success: false,
264
- error: error instanceof Error ? error.message : 'Unknown error',
265
- responseTime
272
+ error: error instanceof Error ? error.message : "Unknown error",
273
+ responseTime,
266
274
  };
267
275
  }
268
276
  }
@@ -276,18 +284,18 @@ export class AnthropicProvider {
276
284
  }
277
285
  }
278
286
  getRequiredConfig() {
279
- return ['ANTHROPIC_API_KEY'];
287
+ return ["ANTHROPIC_API_KEY"];
280
288
  }
281
289
  getOptionalConfig() {
282
- return ['ANTHROPIC_MODEL', 'ANTHROPIC_BASE_URL'];
290
+ return ["ANTHROPIC_MODEL", "ANTHROPIC_BASE_URL"];
283
291
  }
284
292
  getModels() {
285
293
  return [
286
- 'claude-3-5-sonnet-20241022',
287
- 'claude-3-5-haiku-20241022',
288
- 'claude-3-opus-20240229',
289
- 'claude-3-sonnet-20240229',
290
- 'claude-3-haiku-20240307'
294
+ "claude-3-5-sonnet-20241022",
295
+ "claude-3-5-haiku-20241022",
296
+ "claude-3-opus-20240229",
297
+ "claude-3-sonnet-20240229",
298
+ "claude-3-haiku-20240307",
291
299
  ];
292
300
  }
293
301
  supportsStreaming() {
@@ -298,11 +306,11 @@ export class AnthropicProvider {
298
306
  }
299
307
  getCapabilities() {
300
308
  return [
301
- 'text-generation',
302
- 'streaming',
303
- 'conversation',
304
- 'system-prompts',
305
- 'long-context' // Claude models support up to 200k tokens
309
+ "text-generation",
310
+ "streaming",
311
+ "conversation",
312
+ "system-prompts",
313
+ "long-context", // Claude models support up to 200k tokens
306
314
  ];
307
315
  }
308
316
  }
@@ -4,8 +4,8 @@
4
4
  * Enterprise-grade OpenAI integration through Microsoft Azure.
5
5
  * Supports all OpenAI models with enhanced security and compliance.
6
6
  */
7
- import type { AIProvider, TextGenerationOptions, StreamTextOptions } from '../core/types.js';
8
- import { AIProviderName } from '../core/types.js';
7
+ import type { AIProvider, TextGenerationOptions, StreamTextOptions } from "../core/types.js";
8
+ import { AIProviderName } from "../core/types.js";
9
9
  export declare class AzureOpenAIProvider implements AIProvider {
10
10
  readonly name: AIProviderName;
11
11
  private apiKey;