@propio-ai/providers 0.1.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 (91) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +85 -0
  3. package/dist/config.d.ts +91 -0
  4. package/dist/config.d.ts.map +1 -0
  5. package/dist/config.js +2 -0
  6. package/dist/config.js.map +1 -0
  7. package/dist/configFile.d.ts +22 -0
  8. package/dist/configFile.d.ts.map +1 -0
  9. package/dist/configFile.js +33 -0
  10. package/dist/configFile.js.map +1 -0
  11. package/dist/configValidation.d.ts +34 -0
  12. package/dist/configValidation.d.ts.map +1 -0
  13. package/dist/configValidation.js +185 -0
  14. package/dist/configValidation.js.map +1 -0
  15. package/dist/diagnostics.d.ts +29 -0
  16. package/dist/diagnostics.d.ts.map +1 -0
  17. package/dist/diagnostics.js +9 -0
  18. package/dist/diagnostics.js.map +1 -0
  19. package/dist/factory.d.ts +56 -0
  20. package/dist/factory.d.ts.map +1 -0
  21. package/dist/factory.js +162 -0
  22. package/dist/factory.js.map +1 -0
  23. package/dist/index.d.ts +11 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +9 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/interface.d.ts +36 -0
  28. package/dist/interface.d.ts.map +1 -0
  29. package/dist/interface.js +2 -0
  30. package/dist/interface.js.map +1 -0
  31. package/dist/internal/baseProvider.d.ts +20 -0
  32. package/dist/internal/baseProvider.d.ts.map +1 -0
  33. package/dist/internal/baseProvider.js +13 -0
  34. package/dist/internal/baseProvider.js.map +1 -0
  35. package/dist/internal/capabilities.d.ts +4 -0
  36. package/dist/internal/capabilities.d.ts.map +1 -0
  37. package/dist/internal/capabilities.js +12 -0
  38. package/dist/internal/capabilities.js.map +1 -0
  39. package/dist/internal/jsonFile.d.ts +11 -0
  40. package/dist/internal/jsonFile.d.ts.map +1 -0
  41. package/dist/internal/jsonFile.js +78 -0
  42. package/dist/internal/jsonFile.js.map +1 -0
  43. package/dist/internal/openAiCompatibleProvider.d.ts +44 -0
  44. package/dist/internal/openAiCompatibleProvider.d.ts.map +1 -0
  45. package/dist/internal/openAiCompatibleProvider.js +93 -0
  46. package/dist/internal/openAiCompatibleProvider.js.map +1 -0
  47. package/dist/internal/openAiStream.d.ts +13 -0
  48. package/dist/internal/openAiStream.d.ts.map +1 -0
  49. package/dist/internal/openAiStream.js +85 -0
  50. package/dist/internal/openAiStream.js.map +1 -0
  51. package/dist/internal/shared.d.ts +79 -0
  52. package/dist/internal/shared.d.ts.map +1 -0
  53. package/dist/internal/shared.js +250 -0
  54. package/dist/internal/shared.js.map +1 -0
  55. package/dist/internal/withRetry.d.ts +25 -0
  56. package/dist/internal/withRetry.d.ts.map +1 -0
  57. package/dist/internal/withRetry.js +46 -0
  58. package/dist/internal/withRetry.js.map +1 -0
  59. package/dist/providers/anthropic.d.ts +32 -0
  60. package/dist/providers/anthropic.d.ts.map +1 -0
  61. package/dist/providers/anthropic.js +435 -0
  62. package/dist/providers/anthropic.js.map +1 -0
  63. package/dist/providers/bedrock.d.ts +67 -0
  64. package/dist/providers/bedrock.d.ts.map +1 -0
  65. package/dist/providers/bedrock.js +442 -0
  66. package/dist/providers/bedrock.js.map +1 -0
  67. package/dist/providers/cloudflare.d.ts +40 -0
  68. package/dist/providers/cloudflare.d.ts.map +1 -0
  69. package/dist/providers/cloudflare.js +115 -0
  70. package/dist/providers/cloudflare.js.map +1 -0
  71. package/dist/providers/gemini.d.ts +57 -0
  72. package/dist/providers/gemini.d.ts.map +1 -0
  73. package/dist/providers/gemini.js +359 -0
  74. package/dist/providers/gemini.js.map +1 -0
  75. package/dist/providers/ollama.d.ts +67 -0
  76. package/dist/providers/ollama.d.ts.map +1 -0
  77. package/dist/providers/ollama.js +241 -0
  78. package/dist/providers/ollama.js.map +1 -0
  79. package/dist/providers/openrouter.d.ts +76 -0
  80. package/dist/providers/openrouter.d.ts.map +1 -0
  81. package/dist/providers/openrouter.js +571 -0
  82. package/dist/providers/openrouter.js.map +1 -0
  83. package/dist/providers/xai.d.ts +45 -0
  84. package/dist/providers/xai.d.ts.map +1 -0
  85. package/dist/providers/xai.js +371 -0
  86. package/dist/providers/xai.js.map +1 -0
  87. package/dist/types.d.ts +166 -0
  88. package/dist/types.d.ts.map +1 -0
  89. package/dist/types.js +60 -0
  90. package/dist/types.js.map +1 -0
  91. package/package.json +70 -0
@@ -0,0 +1,435 @@
1
+ import Anthropic from "@anthropic-ai/sdk";
2
+ import { BaseProvider } from "../internal/baseProvider.js";
3
+ import { ProviderError, ProviderAuthenticationError, ProviderRateLimitError, ProviderModelNotFoundError, ProviderContextLengthError, ProviderCapacityError, } from "../types.js";
4
+ import { withRetry } from "../internal/withRetry.js";
5
+ import { createProviderRetryOptions } from "../internal/shared.js";
6
+ // Default budget and min output headroom when extended thinking is enabled.
7
+ const THINKING_BUDGET_TOKENS = 10000;
8
+ const THINKING_OUTPUT_HEADROOM = 1000;
9
+ const DEFAULT_MAX_TOKENS = 16384;
10
+ export class AnthropicProvider extends BaseProvider {
11
+ constructor(options) {
12
+ const apiKey = options.apiKey ?? process.env.ANTHROPIC_API_KEY;
13
+ if (!apiKey) {
14
+ throw new ProviderAuthenticationError("Anthropic API key not found. Set ANTHROPIC_API_KEY environment variable or provide apiKey in config.");
15
+ }
16
+ super(options);
17
+ this.name = "anthropic";
18
+ this.client = new Anthropic({ apiKey });
19
+ }
20
+ // fallow-ignore-next-line complexity
21
+ async *streamChat(request) {
22
+ try {
23
+ // Concatenate multiple system messages rather than silently dropping all but the first.
24
+ const systemMessages = request.messages.filter((m) => m.role === "system");
25
+ const systemContent = systemMessages.length > 0
26
+ ? systemMessages.map((m) => m.content).join("\n\n")
27
+ : undefined;
28
+ const replayThinkingBlocks = request.requestReasoning === true;
29
+ const messages = request.messages
30
+ .filter((m) => m.role !== "system")
31
+ .map((msg) => this.chatMessageToAnthropicMessage(msg, { replayThinkingBlocks }));
32
+ const anthropicTools = request.tools?.map((tool) => this.chatToolToAnthropicTool(tool));
33
+ const thinkingBudget = request.requestReasoning
34
+ ? THINKING_BUDGET_TOKENS
35
+ : undefined;
36
+ // max_tokens must exceed thinking.budget_tokens; use 16k floor for normal requests.
37
+ const maxTokens = thinkingBudget
38
+ ? Math.max(thinkingBudget + THINKING_OUTPUT_HEADROOM, DEFAULT_MAX_TOKENS)
39
+ : DEFAULT_MAX_TOKENS;
40
+ const createStream = () => this.client.messages.create({
41
+ model: request.model || this.model,
42
+ max_tokens: maxTokens,
43
+ system: systemContent,
44
+ messages: messages,
45
+ tools: anthropicTools,
46
+ thinking: thinkingBudget
47
+ ? { type: "enabled", budget_tokens: thinkingBudget }
48
+ : undefined,
49
+ stream: true,
50
+ }, { signal: request.signal });
51
+ const stream = (await withRetry(createStream, this.createRetryOptions(request)));
52
+ const state = {
53
+ toolCalls: [],
54
+ currentToolCall: null,
55
+ currentToolInputJson: "",
56
+ currentToolInputFromStart: null,
57
+ currentThinkingText: "",
58
+ currentThinkingSignature: "",
59
+ inThinkingBlock: false,
60
+ thinkingBlocks: [],
61
+ stopReason: "end_turn",
62
+ rawStopReason: "end_turn",
63
+ };
64
+ for await (const event of stream) {
65
+ if (event.type === "content_block_start") {
66
+ this.handleContentBlockStart(event, state);
67
+ }
68
+ else if (event.type === "content_block_delta") {
69
+ const { text, thinking } = this.handleContentBlockDelta(event, state);
70
+ if (text) {
71
+ yield { type: "assistant_text", delta: text };
72
+ }
73
+ if (thinking) {
74
+ yield { type: "thinking_delta", delta: thinking };
75
+ }
76
+ }
77
+ else if (event.type === "content_block_stop") {
78
+ this.handleContentBlockStop(state);
79
+ }
80
+ else if (event.type === "message_delta") {
81
+ // stop_reason lives on message_delta, not message_stop
82
+ const deltaEvent = event;
83
+ if (deltaEvent.delta.stop_reason) {
84
+ state.rawStopReason = deltaEvent.delta.stop_reason;
85
+ state.stopReason = this.mapStopReason(deltaEvent.delta.stop_reason);
86
+ }
87
+ }
88
+ }
89
+ if (state.toolCalls.length > 0) {
90
+ // Attach accumulated thinking blocks as reasoningContent for replay in the next turn.
91
+ const reasoningContent = state.thinkingBlocks.length > 0
92
+ ? JSON.stringify(state.thinkingBlocks)
93
+ : undefined;
94
+ yield {
95
+ type: "tool_calls",
96
+ toolCalls: state.toolCalls,
97
+ reasoningContent,
98
+ };
99
+ }
100
+ yield {
101
+ type: "terminal",
102
+ stopReason: state.stopReason,
103
+ rawProviderReason: state.rawStopReason,
104
+ };
105
+ }
106
+ catch (error) {
107
+ throw this.translateError(error);
108
+ }
109
+ }
110
+ handleContentBlockStart(event, state) {
111
+ const block = event.content_block;
112
+ if (block.type === "tool_use") {
113
+ const toolBlock = block;
114
+ state.currentToolCall = {
115
+ id: toolBlock.id,
116
+ function: {
117
+ name: toolBlock.name,
118
+ arguments: {},
119
+ },
120
+ };
121
+ state.currentToolInputJson = "";
122
+ state.currentToolInputFromStart = this.asToolInputObject(toolBlock.input);
123
+ }
124
+ else if (block.type === "thinking") {
125
+ state.inThinkingBlock = true;
126
+ state.currentThinkingText = "";
127
+ state.currentThinkingSignature = "";
128
+ }
129
+ else if (block.type === "redacted_thinking") {
130
+ state.thinkingBlocks.push({
131
+ type: "redacted_thinking",
132
+ data: block.data,
133
+ });
134
+ }
135
+ }
136
+ // fallow-ignore-next-line complexity
137
+ handleContentBlockDelta(event, state) {
138
+ const delta = event.delta;
139
+ if (delta.type === "text_delta") {
140
+ return { text: delta.text || undefined };
141
+ }
142
+ else if (delta.type === "thinking_delta") {
143
+ const text = delta.thinking || "";
144
+ state.currentThinkingText += text;
145
+ return { thinking: text || undefined };
146
+ }
147
+ else if (delta.type === "signature_delta") {
148
+ state.currentThinkingSignature +=
149
+ delta.signature || "";
150
+ }
151
+ else if (delta.type === "input_json_delta") {
152
+ state.currentToolInputJson +=
153
+ delta.partial_json || "";
154
+ }
155
+ return {};
156
+ }
157
+ handleContentBlockStop(state) {
158
+ if (state.inThinkingBlock) {
159
+ // Finalize the thinking block — keep text+signature for replay.
160
+ if (state.currentThinkingText || state.currentThinkingSignature) {
161
+ state.thinkingBlocks.push({
162
+ type: "thinking",
163
+ thinking: state.currentThinkingText,
164
+ signature: state.currentThinkingSignature,
165
+ });
166
+ }
167
+ state.inThinkingBlock = false;
168
+ state.currentThinkingText = "";
169
+ state.currentThinkingSignature = "";
170
+ return;
171
+ }
172
+ if (!state.currentToolCall?.function) {
173
+ return;
174
+ }
175
+ state.currentToolCall.function.arguments =
176
+ this.parseToolInputArguments(state);
177
+ state.toolCalls.push(state.currentToolCall);
178
+ state.currentToolCall = null;
179
+ state.currentToolInputJson = "";
180
+ state.currentToolInputFromStart = null;
181
+ }
182
+ parseToolInputArguments(state) {
183
+ const inputJson = state.currentToolInputJson.trim();
184
+ if (inputJson.length === 0) {
185
+ return state.currentToolInputFromStart ?? {};
186
+ }
187
+ try {
188
+ return JSON.parse(inputJson);
189
+ }
190
+ catch {
191
+ return {
192
+ raw: state.currentToolInputJson,
193
+ };
194
+ }
195
+ }
196
+ asToolInputObject(value) {
197
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
198
+ return null;
199
+ }
200
+ return value;
201
+ }
202
+ mapStopReason(reason) {
203
+ switch (reason) {
204
+ case "end_turn":
205
+ return "end_turn";
206
+ case "tool_use":
207
+ return "tool_use";
208
+ case "max_tokens":
209
+ return "max_tokens";
210
+ case "stop_sequence":
211
+ return "stop_sequence";
212
+ default:
213
+ return "end_turn";
214
+ }
215
+ }
216
+ chatMessageToAnthropicMessage(msg, options = {
217
+ replayThinkingBlocks: true,
218
+ }) {
219
+ const content = [];
220
+ if (options.replayThinkingBlocks !== false) {
221
+ this.appendThinkingBlocks(msg, content);
222
+ }
223
+ this.appendTextBlock(msg, content);
224
+ this.appendToolUseBlocks(msg, content);
225
+ this.appendImageBlocks(msg, content);
226
+ this.appendToolResultBlocks(msg, content);
227
+ return {
228
+ role: msg.role === "tool" ? "user" : msg.role,
229
+ content: content.length > 0 ? content : [{ type: "text", text: "." }],
230
+ };
231
+ }
232
+ // Replay thinking blocks on assistant turns preceding tool_result messages.
233
+ // Anthropic requires the prior thinking content to be re-sent in tool-call loops.
234
+ appendThinkingBlocks(msg, content) {
235
+ if (!(msg.role === "assistant" &&
236
+ msg.reasoningContent &&
237
+ msg.toolCalls?.length)) {
238
+ return;
239
+ }
240
+ try {
241
+ const blocks = JSON.parse(msg.reasoningContent);
242
+ for (const block of blocks) {
243
+ if (this.appendRedactedThinkingBlock(block, content))
244
+ continue;
245
+ this.appendThinkingReplayBlock(block, content);
246
+ }
247
+ }
248
+ catch {
249
+ // Malformed reasoningContent — skip rather than crash.
250
+ }
251
+ }
252
+ appendRedactedThinkingBlock(block, content) {
253
+ if (block.type !== "redacted_thinking" || typeof block.data !== "string") {
254
+ return false;
255
+ }
256
+ content.push({ type: "redacted_thinking", data: block.data });
257
+ return true;
258
+ }
259
+ appendThinkingReplayBlock(block, content) {
260
+ if (block.type !== undefined && block.type !== "thinking") {
261
+ return false;
262
+ }
263
+ if (typeof block.thinking !== "string" ||
264
+ typeof block.signature !== "string") {
265
+ return false;
266
+ }
267
+ content.push({
268
+ type: "thinking",
269
+ thinking: block.thinking,
270
+ signature: block.signature,
271
+ });
272
+ return true;
273
+ }
274
+ appendTextBlock(msg, content) {
275
+ if (msg.content && msg.role !== "tool") {
276
+ content.push({ type: "text", text: msg.content });
277
+ }
278
+ }
279
+ appendToolUseBlocks(msg, content) {
280
+ if (!msg.toolCalls?.length)
281
+ return;
282
+ for (const toolCall of msg.toolCalls) {
283
+ if (!toolCall.id) {
284
+ throw new ProviderError(`Anthropic requires a tool call id but tool call "${toolCall.function.name}" has none`);
285
+ }
286
+ content.push({
287
+ type: "tool_use",
288
+ id: toolCall.id,
289
+ name: toolCall.function.name,
290
+ input: toolCall.function.arguments,
291
+ });
292
+ }
293
+ }
294
+ appendImageBlocks(msg, content) {
295
+ if (!msg.images?.length)
296
+ return;
297
+ for (const image of msg.images) {
298
+ const { data, mediaType } = this.resolveImageData(image);
299
+ content.push({
300
+ type: "image",
301
+ source: { type: "base64", media_type: mediaType, data },
302
+ });
303
+ }
304
+ }
305
+ appendToolResultBlocks(msg, content) {
306
+ if (msg.role !== "tool")
307
+ return;
308
+ if (msg.toolResults?.length) {
309
+ for (const toolResult of msg.toolResults) {
310
+ content.push({
311
+ type: "tool_result",
312
+ tool_use_id: toolResult.toolCallId,
313
+ content: toolResult.content,
314
+ });
315
+ }
316
+ }
317
+ else if (msg.toolCallId) {
318
+ content.push({
319
+ type: "tool_result",
320
+ tool_use_id: msg.toolCallId,
321
+ content: msg.content,
322
+ });
323
+ }
324
+ }
325
+ resolveImageData(image) {
326
+ if (typeof image === "string") {
327
+ if (image.startsWith("data:")) {
328
+ const semicolonIndex = image.indexOf(";");
329
+ const commaIndex = image.indexOf(",");
330
+ if (semicolonIndex === -1 || commaIndex === -1) {
331
+ throw new ProviderError("Anthropic image data URLs must include a base64 payload");
332
+ }
333
+ const mediaType = image.slice(5, semicolonIndex);
334
+ const data = image.slice(commaIndex + 1);
335
+ const supportedMediaTypes = new Set([
336
+ "image/jpeg",
337
+ "image/png",
338
+ "image/gif",
339
+ "image/webp",
340
+ ]);
341
+ if (supportedMediaTypes.has(mediaType)) {
342
+ return {
343
+ mediaType: mediaType,
344
+ data,
345
+ };
346
+ }
347
+ throw new ProviderError(`Anthropic does not support image data URL media type "${mediaType || "unknown"}"`);
348
+ }
349
+ return { data: image, mediaType: "image/png" };
350
+ }
351
+ // Sniff magic bytes for Uint8Array images
352
+ const mediaType = this.sniffImageMediaType(image);
353
+ return { data: Buffer.from(image).toString("base64"), mediaType };
354
+ }
355
+ sniffImageMediaType(bytes) {
356
+ if (bytes[0] === 0xff && bytes[1] === 0xd8)
357
+ return "image/jpeg";
358
+ if (bytes[0] === 0x89 && bytes[1] === 0x50)
359
+ return "image/png"; // \x89P
360
+ if (bytes[0] === 0x47 && bytes[1] === 0x49)
361
+ return "image/gif"; // GI
362
+ if (bytes[8] === 0x57 && bytes[9] === 0x45)
363
+ return "image/webp"; // RIFF....WEBP
364
+ return "image/png";
365
+ }
366
+ chatToolToAnthropicTool(chatTool) {
367
+ return {
368
+ name: chatTool.function.name,
369
+ description: chatTool.function.description,
370
+ input_schema: chatTool.function
371
+ .parameters,
372
+ };
373
+ }
374
+ createRetryOptions(request) {
375
+ return createProviderRetryOptions({
376
+ request,
377
+ model: this.model,
378
+ provider: this.name,
379
+ retryConfig: this.retryConfig
380
+ ? { ...this.retryConfig, baseDelayMs: 500 }
381
+ : undefined,
382
+ isRetryable: (error) => this.isRetryableError(error),
383
+ onDiagnosticEvent: this.onDiagnosticEvent,
384
+ });
385
+ }
386
+ // fallow-ignore-next-line complexity
387
+ isRetryableError(error) {
388
+ if (error instanceof ProviderCapacityError)
389
+ return true;
390
+ if (error instanceof Anthropic.APIError) {
391
+ return AnthropicProvider.RETRYABLE_STATUSES.has(error.status);
392
+ }
393
+ const name = error?.name ?? "";
394
+ const message = error instanceof Error ? error.message : String(error);
395
+ return (name.includes("timeout") ||
396
+ message.includes("rate limit") ||
397
+ message.includes("throttle") ||
398
+ message.includes("ECONNREFUSED") ||
399
+ message.includes("ENOTFOUND"));
400
+ }
401
+ // fallow-ignore-next-line complexity
402
+ translateError(error) {
403
+ if (error instanceof Anthropic.APIError) {
404
+ const status = error.status;
405
+ if (status === 401 || error.message.includes("authentication")) {
406
+ return new ProviderAuthenticationError(`Anthropic authentication failed: ${error.message}`, error);
407
+ }
408
+ if (status === 429) {
409
+ const retryAfter = error.headers?.["retry-after"];
410
+ const retryAfterSeconds = retryAfter
411
+ ? parseInt(retryAfter, 10)
412
+ : undefined;
413
+ return new ProviderRateLimitError(`Anthropic rate limit exceeded: ${error.message}`, retryAfterSeconds, error);
414
+ }
415
+ if (status === 529) {
416
+ return new ProviderCapacityError(`Anthropic overloaded: ${error.message}`, error);
417
+ }
418
+ if (status === 404 || error.message.includes("Model not found")) {
419
+ return new ProviderModelNotFoundError(this.model, `Anthropic model not found: ${error.message}`, error);
420
+ }
421
+ if (status === 400 && error.message.includes("context length")) {
422
+ return new ProviderContextLengthError(`Anthropic context length exceeded: ${error.message}`, error);
423
+ }
424
+ return new ProviderError(`Anthropic API error (${status}): ${error.message}`, error);
425
+ }
426
+ if (error instanceof Error) {
427
+ return new ProviderError(`Anthropic provider error: ${error.message}`, error);
428
+ }
429
+ return new ProviderError(`Anthropic provider error: ${String(error)}`);
430
+ }
431
+ }
432
+ AnthropicProvider.RETRYABLE_STATUSES = new Set([
433
+ 429, 500, 502, 503, 504, 529,
434
+ ]);
435
+ //# sourceMappingURL=anthropic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import { BaseProvider, BaseProviderOptions } from "../internal/baseProvider.js";
2
+ import { ChatRequest, ChatStreamEvent } from "../types.js";
3
+ /**
4
+ * Bedrock implementation of LLMProvider
5
+ */
6
+ export declare class BedrockProvider extends BaseProvider {
7
+ readonly name = "bedrock";
8
+ private client;
9
+ constructor(options: BaseProviderOptions & {
10
+ region?: string;
11
+ });
12
+ streamChat(request: ChatRequest): AsyncIterable<ChatStreamEvent>;
13
+ private createRetryOptions;
14
+ private isRetryableError;
15
+ private emitRetryDiagnostic;
16
+ private captureStopReason;
17
+ private createConverseStreamCommand;
18
+ private getStreamFromResponse;
19
+ private handleStreamEvent;
20
+ private handleContentBlockDelta;
21
+ private handleContentBlockStart;
22
+ private handleContentBlockStop;
23
+ /**
24
+ * Check if a message is a system message
25
+ */
26
+ private isSystemMessage;
27
+ /**
28
+ * Translate ChatMessage to Bedrock Message format
29
+ */
30
+ private chatMessageToBedrockMessage;
31
+ private appendTextContentBlock;
32
+ private appendToolCallBlocks;
33
+ private appendImageBlocks;
34
+ private appendBase64ImageBlock;
35
+ private appendToolResultBlocks;
36
+ /**
37
+ * Translate Bedrock Message to ChatMessage
38
+ */
39
+ private bedrockMessageToChatMessage;
40
+ /**
41
+ * Translate ChatTool to Bedrock ToolSpecification
42
+ */
43
+ private chatToolToBedrockTool;
44
+ /**
45
+ * Clean JSON schema by removing unsupported fields like descriptions from properties
46
+ */
47
+ private isSchemaObject;
48
+ private cleanSchema;
49
+ private cleanSchemaProperty;
50
+ private copySchemaField;
51
+ /**
52
+ * Map Bedrock stop reason to provider-agnostic format
53
+ */
54
+ private mapStopReason;
55
+ /**
56
+ * Translate errors to ProviderError types
57
+ */
58
+ private isContextLengthError;
59
+ private getErrorDetails;
60
+ private translateError;
61
+ private translateContextLengthError;
62
+ private translateAuthenticationError;
63
+ private translateModelNotFoundError;
64
+ private translateRateLimitError;
65
+ private translateServiceError;
66
+ }
67
+ //# sourceMappingURL=bedrock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bedrock.d.ts","sourceRoot":"","sources":["../../src/providers/bedrock.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAEL,WAAW,EACX,eAAe,EAShB,MAAM,aAAa,CAAC;AAgBrB;;GAEG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,QAAQ,CAAC,IAAI,aAAa;IAC1B,OAAO,CAAC,MAAM,CAAuB;gBAEzB,OAAO,EAAE,mBAAmB,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAOvD,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,aAAa,CAAC,eAAe,CAAC;IAuCvE,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,2BAA2B;IAqBnC,OAAO,CAAC,qBAAqB;IAiB7B,OAAO,CAAC,iBAAiB;IA4BzB,OAAO,CAAC,uBAAuB;IAsB/B,OAAO,CAAC,uBAAuB;IAuB/B,OAAO,CAAC,sBAAsB;IAwB9B;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAcnC,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,iBAAiB;IAqBzB,OAAO,CAAC,sBAAsB;IAiB9B,OAAO,CAAC,sBAAsB;IA6B9B;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAuCnC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAsB7B;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,2BAA2B;IAYnC,OAAO,CAAC,4BAA4B;IAgBpC,OAAO,CAAC,2BAA2B;IAgBnC,OAAO,CAAC,uBAAuB;IAiB/B,OAAO,CAAC,qBAAqB;CAc9B"}