@ai-sdk/amazon-bedrock 5.0.0-beta.3 → 5.0.0-beta.30
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.
- package/CHANGELOG.md +226 -4
- package/README.md +2 -0
- package/dist/anthropic/index.js +34 -6
- package/dist/anthropic/index.js.map +1 -1
- package/dist/anthropic/index.mjs +31 -3
- package/dist/anthropic/index.mjs.map +1 -1
- package/dist/index.d.mts +6 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +132 -38
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +131 -33
- package/dist/index.mjs.map +1 -1
- package/docs/08-amazon-bedrock.mdx +52 -6
- package/package.json +4 -6
- package/src/anthropic/bedrock-anthropic-fetch.ts +26 -0
- package/src/anthropic/bedrock-anthropic-provider.ts +11 -1
- package/src/bedrock-api-types.ts +3 -0
- package/src/bedrock-chat-language-model.ts +98 -4
- package/src/bedrock-chat-options.ts +10 -0
- package/src/bedrock-prepare-tools.ts +1 -0
- package/src/convert-to-bedrock-chat-messages.ts +45 -33
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,227 @@
|
|
|
1
1
|
# @ai-sdk/amazon-bedrock
|
|
2
2
|
|
|
3
|
+
## 5.0.0-beta.30
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 90e2d8a: chore: fix unused vars not being flagged by our lint tooling
|
|
8
|
+
- Updated dependencies [90e2d8a]
|
|
9
|
+
- @ai-sdk/provider-utils@5.0.0-beta.18
|
|
10
|
+
- @ai-sdk/anthropic@4.0.0-beta.26
|
|
11
|
+
|
|
12
|
+
## 5.0.0-beta.29
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- Updated dependencies [09bd27b]
|
|
17
|
+
- @ai-sdk/anthropic@4.0.0-beta.25
|
|
18
|
+
|
|
19
|
+
## 5.0.0-beta.28
|
|
20
|
+
|
|
21
|
+
### Patch Changes
|
|
22
|
+
|
|
23
|
+
- Updated dependencies [3ae1786]
|
|
24
|
+
- @ai-sdk/provider-utils@5.0.0-beta.17
|
|
25
|
+
- @ai-sdk/anthropic@4.0.0-beta.24
|
|
26
|
+
|
|
27
|
+
## 5.0.0-beta.27
|
|
28
|
+
|
|
29
|
+
### Patch Changes
|
|
30
|
+
|
|
31
|
+
- Updated dependencies [176466a]
|
|
32
|
+
- @ai-sdk/provider@4.0.0-beta.10
|
|
33
|
+
- @ai-sdk/anthropic@4.0.0-beta.23
|
|
34
|
+
- @ai-sdk/provider-utils@5.0.0-beta.16
|
|
35
|
+
|
|
36
|
+
## 5.0.0-beta.26
|
|
37
|
+
|
|
38
|
+
### Patch Changes
|
|
39
|
+
|
|
40
|
+
- Updated dependencies [e311194]
|
|
41
|
+
- @ai-sdk/provider@4.0.0-beta.9
|
|
42
|
+
- @ai-sdk/anthropic@4.0.0-beta.22
|
|
43
|
+
- @ai-sdk/provider-utils@5.0.0-beta.15
|
|
44
|
+
|
|
45
|
+
## 5.0.0-beta.25
|
|
46
|
+
|
|
47
|
+
### Patch Changes
|
|
48
|
+
|
|
49
|
+
- 24ac76f: fix(amazon-bedrock): preserve empty text blocks when reasoning content is present
|
|
50
|
+
- cdc15f3: feat(bedrock): support native structured output for anthropic models without reasoning
|
|
51
|
+
- Updated dependencies [34bd95d]
|
|
52
|
+
- Updated dependencies [008271d]
|
|
53
|
+
- @ai-sdk/anthropic@4.0.0-beta.21
|
|
54
|
+
- @ai-sdk/provider@4.0.0-beta.8
|
|
55
|
+
- @ai-sdk/provider-utils@5.0.0-beta.14
|
|
56
|
+
|
|
57
|
+
## 5.0.0-beta.24
|
|
58
|
+
|
|
59
|
+
### Patch Changes
|
|
60
|
+
|
|
61
|
+
- Updated dependencies [b0c2869]
|
|
62
|
+
- Updated dependencies [7e26e81]
|
|
63
|
+
- @ai-sdk/provider-utils@5.0.0-beta.13
|
|
64
|
+
- @ai-sdk/anthropic@4.0.0-beta.20
|
|
65
|
+
|
|
66
|
+
## 5.0.0-beta.23
|
|
67
|
+
|
|
68
|
+
### Patch Changes
|
|
69
|
+
|
|
70
|
+
- Updated dependencies [46d1149]
|
|
71
|
+
- @ai-sdk/provider-utils@5.0.0-beta.12
|
|
72
|
+
- @ai-sdk/anthropic@4.0.0-beta.19
|
|
73
|
+
|
|
74
|
+
## 5.0.0-beta.22
|
|
75
|
+
|
|
76
|
+
### Patch Changes
|
|
77
|
+
|
|
78
|
+
- Updated dependencies [6fd51c0]
|
|
79
|
+
- @ai-sdk/provider-utils@5.0.0-beta.11
|
|
80
|
+
- @ai-sdk/provider@4.0.0-beta.7
|
|
81
|
+
- @ai-sdk/anthropic@4.0.0-beta.18
|
|
82
|
+
|
|
83
|
+
## 5.0.0-beta.21
|
|
84
|
+
|
|
85
|
+
### Patch Changes
|
|
86
|
+
|
|
87
|
+
- c29a26f: feat(provider): add support for provider references and uploading files as supported per provider
|
|
88
|
+
- Updated dependencies [c29a26f]
|
|
89
|
+
- @ai-sdk/provider-utils@5.0.0-beta.10
|
|
90
|
+
- @ai-sdk/anthropic@4.0.0-beta.17
|
|
91
|
+
- @ai-sdk/provider@4.0.0-beta.6
|
|
92
|
+
|
|
93
|
+
## 5.0.0-beta.20
|
|
94
|
+
|
|
95
|
+
### Patch Changes
|
|
96
|
+
|
|
97
|
+
- 38fc777: Add AI Gateway hint to provider READMEs
|
|
98
|
+
- Updated dependencies [38fc777]
|
|
99
|
+
- @ai-sdk/anthropic@4.0.0-beta.16
|
|
100
|
+
|
|
101
|
+
## 5.0.0-beta.19
|
|
102
|
+
|
|
103
|
+
### Patch Changes
|
|
104
|
+
|
|
105
|
+
- Updated dependencies [f57c702]
|
|
106
|
+
- @ai-sdk/anthropic@4.0.0-beta.15
|
|
107
|
+
|
|
108
|
+
## 5.0.0-beta.18
|
|
109
|
+
|
|
110
|
+
### Patch Changes
|
|
111
|
+
|
|
112
|
+
- Updated dependencies [2e17091]
|
|
113
|
+
- @ai-sdk/provider-utils@5.0.0-beta.9
|
|
114
|
+
- @ai-sdk/anthropic@4.0.0-beta.14
|
|
115
|
+
|
|
116
|
+
## 5.0.0-beta.17
|
|
117
|
+
|
|
118
|
+
### Patch Changes
|
|
119
|
+
|
|
120
|
+
- Updated dependencies [986c6fd]
|
|
121
|
+
- Updated dependencies [493295c]
|
|
122
|
+
- @ai-sdk/provider-utils@5.0.0-beta.8
|
|
123
|
+
- @ai-sdk/anthropic@4.0.0-beta.13
|
|
124
|
+
|
|
125
|
+
## 5.0.0-beta.16
|
|
126
|
+
|
|
127
|
+
### Patch Changes
|
|
128
|
+
|
|
129
|
+
- 6d8716c: feat(bedrock): add support for service tier for model inference
|
|
130
|
+
|
|
131
|
+
## 5.0.0-beta.15
|
|
132
|
+
|
|
133
|
+
### Patch Changes
|
|
134
|
+
|
|
135
|
+
- 4b20a5d: fix(provider/amazon-bedrock): transform bedrock/anthropic error responses to anthropic format
|
|
136
|
+
|
|
137
|
+
## 5.0.0-beta.14
|
|
138
|
+
|
|
139
|
+
### Patch Changes
|
|
140
|
+
|
|
141
|
+
- b0c59e8: fix(amazon-bedrock): preserve reasoning text when signature is present
|
|
142
|
+
|
|
143
|
+
## 5.0.0-beta.13
|
|
144
|
+
|
|
145
|
+
### Patch Changes
|
|
146
|
+
|
|
147
|
+
- 1921625: fix(provider/amazon-bedrock): add tool search beta for Anthropic
|
|
148
|
+
|
|
149
|
+
## 5.0.0-beta.12
|
|
150
|
+
|
|
151
|
+
### Patch Changes
|
|
152
|
+
|
|
153
|
+
- Updated dependencies [1f509d4]
|
|
154
|
+
- @ai-sdk/provider-utils@5.0.0-beta.7
|
|
155
|
+
- @ai-sdk/provider@4.0.0-beta.5
|
|
156
|
+
- @ai-sdk/anthropic@4.0.0-beta.12
|
|
157
|
+
|
|
158
|
+
## 5.0.0-beta.11
|
|
159
|
+
|
|
160
|
+
### Patch Changes
|
|
161
|
+
|
|
162
|
+
- Updated dependencies [0ee8aec]
|
|
163
|
+
- @ai-sdk/anthropic@4.0.0-beta.11
|
|
164
|
+
|
|
165
|
+
## 5.0.0-beta.10
|
|
166
|
+
|
|
167
|
+
### Patch Changes
|
|
168
|
+
|
|
169
|
+
- 3887c70: feat(provider): add new top-level reasoning parameter to spec and support it in `generateText` and `streamText`
|
|
170
|
+
- Updated dependencies [3887c70]
|
|
171
|
+
- @ai-sdk/provider-utils@5.0.0-beta.6
|
|
172
|
+
- @ai-sdk/anthropic@4.0.0-beta.10
|
|
173
|
+
- @ai-sdk/provider@4.0.0-beta.4
|
|
174
|
+
|
|
175
|
+
## 5.0.0-beta.9
|
|
176
|
+
|
|
177
|
+
### Patch Changes
|
|
178
|
+
|
|
179
|
+
- Updated dependencies [776b617]
|
|
180
|
+
- @ai-sdk/provider-utils@5.0.0-beta.5
|
|
181
|
+
- @ai-sdk/provider@4.0.0-beta.3
|
|
182
|
+
- @ai-sdk/anthropic@4.0.0-beta.9
|
|
183
|
+
|
|
184
|
+
## 5.0.0-beta.8
|
|
185
|
+
|
|
186
|
+
### Patch Changes
|
|
187
|
+
|
|
188
|
+
- Updated dependencies [61753c3]
|
|
189
|
+
- @ai-sdk/provider-utils@5.0.0-beta.4
|
|
190
|
+
- @ai-sdk/anthropic@4.0.0-beta.8
|
|
191
|
+
|
|
192
|
+
## 5.0.0-beta.7
|
|
193
|
+
|
|
194
|
+
### Patch Changes
|
|
195
|
+
|
|
196
|
+
- Updated dependencies [f7d4f01]
|
|
197
|
+
- @ai-sdk/provider-utils@5.0.0-beta.3
|
|
198
|
+
- @ai-sdk/provider@4.0.0-beta.2
|
|
199
|
+
- @ai-sdk/anthropic@4.0.0-beta.7
|
|
200
|
+
|
|
201
|
+
## 5.0.0-beta.6
|
|
202
|
+
|
|
203
|
+
### Patch Changes
|
|
204
|
+
|
|
205
|
+
- Updated dependencies [21d1ee3]
|
|
206
|
+
- @ai-sdk/anthropic@4.0.0-beta.6
|
|
207
|
+
|
|
208
|
+
## 5.0.0-beta.5
|
|
209
|
+
|
|
210
|
+
### Patch Changes
|
|
211
|
+
|
|
212
|
+
- Updated dependencies [5c2a5a2]
|
|
213
|
+
- @ai-sdk/provider@4.0.0-beta.1
|
|
214
|
+
- @ai-sdk/anthropic@4.0.0-beta.5
|
|
215
|
+
- @ai-sdk/provider-utils@5.0.0-beta.2
|
|
216
|
+
|
|
217
|
+
## 5.0.0-beta.4
|
|
218
|
+
|
|
219
|
+
### Patch Changes
|
|
220
|
+
|
|
221
|
+
- f05a40d: fix(vertex): throw warning when strict: true for vertexAnthropic
|
|
222
|
+
- Updated dependencies [f05a40d]
|
|
223
|
+
- @ai-sdk/anthropic@4.0.0-beta.4
|
|
224
|
+
|
|
3
225
|
## 5.0.0-beta.3
|
|
4
226
|
|
|
5
227
|
### Patch Changes
|
|
@@ -627,13 +849,13 @@
|
|
|
627
849
|
Before
|
|
628
850
|
|
|
629
851
|
```ts
|
|
630
|
-
model.textEmbeddingModel(
|
|
852
|
+
model.textEmbeddingModel("my-model-id");
|
|
631
853
|
```
|
|
632
854
|
|
|
633
855
|
After
|
|
634
856
|
|
|
635
857
|
```ts
|
|
636
|
-
model.embeddingModel(
|
|
858
|
+
model.embeddingModel("my-model-id");
|
|
637
859
|
```
|
|
638
860
|
|
|
639
861
|
- 2625a04: feat(openai); update spec for mcp approval
|
|
@@ -1025,13 +1247,13 @@
|
|
|
1025
1247
|
Before
|
|
1026
1248
|
|
|
1027
1249
|
```ts
|
|
1028
|
-
model.textEmbeddingModel(
|
|
1250
|
+
model.textEmbeddingModel("my-model-id");
|
|
1029
1251
|
```
|
|
1030
1252
|
|
|
1031
1253
|
After
|
|
1032
1254
|
|
|
1033
1255
|
```ts
|
|
1034
|
-
model.embeddingModel(
|
|
1256
|
+
model.embeddingModel("my-model-id");
|
|
1035
1257
|
```
|
|
1036
1258
|
|
|
1037
1259
|
- Updated dependencies [8d9e8ad]
|
package/README.md
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
The **[Amazon Bedrock provider](https://ai-sdk.dev/providers/ai-sdk-providers/amazon-bedrock)** for the [AI SDK](https://ai-sdk.dev/docs)
|
|
4
4
|
contains language model support for the Amazon Bedrock [converse API](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html).
|
|
5
5
|
|
|
6
|
+
> **Deploying to Vercel?** With Vercel's AI Gateway you can access Amazon Bedrock (and hundreds of models from other providers) — no additional packages, API keys, or extra cost. [Get started with AI Gateway](https://vercel.com/ai-gateway).
|
|
7
|
+
|
|
6
8
|
## Setup
|
|
7
9
|
|
|
8
10
|
The Amazon Bedrock provider is available in the `@ai-sdk/amazon-bedrock` module. You can install it with
|
package/dist/anthropic/index.js
CHANGED
|
@@ -18,12 +18,12 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
|
|
20
20
|
// src/anthropic/index.ts
|
|
21
|
-
var
|
|
22
|
-
__export(
|
|
21
|
+
var index_exports = {};
|
|
22
|
+
__export(index_exports, {
|
|
23
23
|
bedrockAnthropic: () => bedrockAnthropic,
|
|
24
24
|
createBedrockAnthropic: () => createBedrockAnthropic
|
|
25
25
|
});
|
|
26
|
-
module.exports = __toCommonJS(
|
|
26
|
+
module.exports = __toCommonJS(index_exports);
|
|
27
27
|
|
|
28
28
|
// src/anthropic/bedrock-anthropic-provider.ts
|
|
29
29
|
var import_provider = require("@ai-sdk/provider");
|
|
@@ -35,7 +35,7 @@ var import_provider_utils = require("@ai-sdk/provider-utils");
|
|
|
35
35
|
var import_aws4fetch = require("aws4fetch");
|
|
36
36
|
|
|
37
37
|
// src/version.ts
|
|
38
|
-
var VERSION = true ? "5.0.0-beta.
|
|
38
|
+
var VERSION = true ? "5.0.0-beta.30" : "0.0.0-test";
|
|
39
39
|
|
|
40
40
|
// src/bedrock-sigv4-fetch.ts
|
|
41
41
|
function createSigV4FetchFunction(getCredentials, fetch = globalThis.fetch) {
|
|
@@ -120,6 +120,7 @@ function createApiKeyFetchFunction(apiKey, fetch = globalThis.fetch) {
|
|
|
120
120
|
|
|
121
121
|
// src/anthropic/bedrock-anthropic-fetch.ts
|
|
122
122
|
var import_provider_utils2 = require("@ai-sdk/provider-utils");
|
|
123
|
+
var import_v4 = require("zod/v4");
|
|
123
124
|
|
|
124
125
|
// src/bedrock-event-stream-decoder.ts
|
|
125
126
|
var import_eventstream_codec = require("@smithy/eventstream-codec");
|
|
@@ -163,9 +164,26 @@ function createBedrockEventStreamDecoder(body, processEvent) {
|
|
|
163
164
|
}
|
|
164
165
|
|
|
165
166
|
// src/anthropic/bedrock-anthropic-fetch.ts
|
|
167
|
+
var bedrockErrorSchema = import_v4.z.looseObject({
|
|
168
|
+
message: import_v4.z.string().optional()
|
|
169
|
+
});
|
|
166
170
|
function createBedrockAnthropicFetch(baseFetch) {
|
|
167
171
|
return async (url, options) => {
|
|
168
172
|
const response = await baseFetch(url, options);
|
|
173
|
+
if (!response.ok) {
|
|
174
|
+
const text = await response.text();
|
|
175
|
+
const parsed = await (0, import_provider_utils2.safeParseJSON)({ text, schema: bedrockErrorSchema });
|
|
176
|
+
const message = parsed.success && parsed.value.message ? parsed.value.message : text;
|
|
177
|
+
const anthropicError = JSON.stringify({
|
|
178
|
+
type: "error",
|
|
179
|
+
error: { type: "error", message }
|
|
180
|
+
});
|
|
181
|
+
return new Response(anthropicError, {
|
|
182
|
+
status: response.status,
|
|
183
|
+
statusText: response.statusText,
|
|
184
|
+
headers: response.headers
|
|
185
|
+
});
|
|
186
|
+
}
|
|
169
187
|
const contentType = response.headers.get("content-type");
|
|
170
188
|
if ((contentType == null ? void 0 : contentType.includes("application/vnd.amazon.eventstream")) && response.body != null) {
|
|
171
189
|
const transformedBody = transformBedrockEventStreamToSSE(response.body);
|
|
@@ -238,7 +256,11 @@ var BEDROCK_TOOL_BETA_MAP = {
|
|
|
238
256
|
text_editor_20250429: "computer-use-2025-01-24",
|
|
239
257
|
text_editor_20250728: "computer-use-2025-01-24",
|
|
240
258
|
computer_20250124: "computer-use-2025-01-24",
|
|
241
|
-
computer_20241022: "computer-use-2024-10-22"
|
|
259
|
+
computer_20241022: "computer-use-2024-10-22",
|
|
260
|
+
tool_search_tool_regex_20251119: "tool-search-tool-2025-10-19",
|
|
261
|
+
// BM25 is not currently supported on Bedrock, but including the beta flag
|
|
262
|
+
// so that Bedrock returns a more useful error message if it's used.
|
|
263
|
+
tool_search_tool_bm25_20251119: "tool-search-tool-2025-10-19"
|
|
242
264
|
};
|
|
243
265
|
function createBedrockAnthropic(options = {}) {
|
|
244
266
|
const rawApiKey = (0, import_provider_utils3.loadOptionalSetting)({
|
|
@@ -331,7 +353,13 @@ Original error: ${errorMessage}`
|
|
|
331
353
|
fetch: fetchFunction,
|
|
332
354
|
buildRequestUrl: (baseURL, isStreaming) => `${baseURL}/model/${encodeURIComponent(modelId)}/${isStreaming ? "invoke-with-response-stream" : "invoke"}`,
|
|
333
355
|
transformRequestBody: (args, betas) => {
|
|
334
|
-
const {
|
|
356
|
+
const {
|
|
357
|
+
model: _model,
|
|
358
|
+
stream: _stream,
|
|
359
|
+
tool_choice,
|
|
360
|
+
tools,
|
|
361
|
+
...rest
|
|
362
|
+
} = args;
|
|
335
363
|
const transformedToolChoice = tool_choice != null ? {
|
|
336
364
|
type: tool_choice.type,
|
|
337
365
|
...tool_choice.name != null ? { name: tool_choice.name } : {}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/anthropic/index.ts","../../src/anthropic/bedrock-anthropic-provider.ts","../../src/bedrock-sigv4-fetch.ts","../../src/version.ts","../../src/anthropic/bedrock-anthropic-fetch.ts","../../src/bedrock-event-stream-decoder.ts"],"sourcesContent":["export {\n bedrockAnthropic,\n createBedrockAnthropic,\n} from './bedrock-anthropic-provider';\nexport type {\n BedrockAnthropicProvider,\n BedrockAnthropicProviderSettings,\n} from './bedrock-anthropic-provider';\nexport type { BedrockAnthropicModelId } from './bedrock-anthropic-options';\n","import {\n LanguageModelV4,\n NoSuchModelError,\n ProviderV4,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadOptionalSetting,\n loadSetting,\n Resolvable,\n resolve,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport {\n anthropicTools,\n AnthropicMessagesLanguageModel,\n} from '@ai-sdk/anthropic/internal';\nimport {\n BedrockCredentials,\n createApiKeyFetchFunction,\n createSigV4FetchFunction,\n} from '../bedrock-sigv4-fetch';\nimport { createBedrockAnthropicFetch } from './bedrock-anthropic-fetch';\nimport { BedrockAnthropicModelId } from './bedrock-anthropic-options';\nimport { VERSION } from '../version';\n\n// Bedrock requires newer tool versions than the default Anthropic SDK versions\nconst BEDROCK_TOOL_VERSION_MAP = {\n bash_20241022: 'bash_20250124',\n text_editor_20241022: 'text_editor_20250728',\n computer_20241022: 'computer_20250124',\n} as const;\n\n// Tool name mappings when upgrading versions (text_editor_20250728 requires different name)\nconst BEDROCK_TOOL_NAME_MAP: Record<string, string> = {\n text_editor_20250728: 'str_replace_based_edit_tool',\n};\n\n// Map tool types to required anthropic_beta values for Bedrock\nconst BEDROCK_TOOL_BETA_MAP: Record<string, string> = {\n bash_20250124: 'computer-use-2025-01-24',\n bash_20241022: 'computer-use-2024-10-22',\n text_editor_20250124: 'computer-use-2025-01-24',\n text_editor_20241022: 'computer-use-2024-10-22',\n text_editor_20250429: 'computer-use-2025-01-24',\n text_editor_20250728: 'computer-use-2025-01-24',\n computer_20250124: 'computer-use-2025-01-24',\n computer_20241022: 'computer-use-2024-10-22',\n};\n\nexport interface BedrockAnthropicProvider extends ProviderV4 {\n /**\n * Creates a model for text generation.\n */\n (modelId: BedrockAnthropicModelId): LanguageModelV4;\n\n /**\n * Creates a model for text generation.\n */\n languageModel(modelId: BedrockAnthropicModelId): LanguageModelV4;\n\n /**\n * Anthropic-specific computer use tool.\n */\n tools: typeof anthropicTools;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\nexport interface BedrockAnthropicProviderSettings {\n /**\n * The AWS region to use for the Bedrock provider. Defaults to the value of the\n * `AWS_REGION` environment variable.\n */\n region?: string;\n\n /**\n * API key for authenticating requests using Bearer token authentication.\n * When provided, this will be used instead of AWS SigV4 authentication.\n * Defaults to the value of the `AWS_BEARER_TOKEN_BEDROCK` environment variable.\n */\n apiKey?: string;\n\n /**\n * The AWS access key ID to use for the Bedrock provider. Defaults to the value of the\n * `AWS_ACCESS_KEY_ID` environment variable.\n */\n accessKeyId?: string;\n\n /**\n * The AWS secret access key to use for the Bedrock provider. Defaults to the value of the\n * `AWS_SECRET_ACCESS_KEY` environment variable.\n */\n secretAccessKey?: string;\n\n /**\n * The AWS session token to use for the Bedrock provider. Defaults to the value of the\n * `AWS_SESSION_TOKEN` environment variable.\n */\n sessionToken?: string;\n\n /**\n * Base URL for the Bedrock API calls.\n */\n baseURL?: string;\n\n /**\n * Custom headers to include in the requests.\n */\n headers?: Resolvable<Record<string, string | undefined>>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n\n /**\n * The AWS credential provider to use for the Bedrock provider to get dynamic\n * credentials similar to the AWS SDK. Setting a provider here will cause its\n * credential values to be used instead of the `accessKeyId`, `secretAccessKey`,\n * and `sessionToken` settings.\n */\n credentialProvider?: () => PromiseLike<Omit<BedrockCredentials, 'region'>>;\n}\n\n/**\n * Create an Amazon Bedrock Anthropic provider instance.\n * This provider uses the native Anthropic API through Bedrock's InvokeModel endpoint,\n * bypassing the Converse API for better feature compatibility.\n */\nexport function createBedrockAnthropic(\n options: BedrockAnthropicProviderSettings = {},\n): BedrockAnthropicProvider {\n // Check for API key authentication first\n const rawApiKey = loadOptionalSetting({\n settingValue: options.apiKey,\n environmentVariableName: 'AWS_BEARER_TOKEN_BEDROCK',\n });\n\n // Only use API key if it's a non-empty, non-whitespace string\n const apiKey =\n rawApiKey && rawApiKey.trim().length > 0 ? rawApiKey.trim() : undefined;\n\n // Use API key authentication if available, otherwise fall back to SigV4\n const baseFetchFunction = apiKey\n ? createApiKeyFetchFunction(apiKey, options.fetch)\n : createSigV4FetchFunction(async () => {\n const region = loadSetting({\n settingValue: options.region,\n settingName: 'region',\n environmentVariableName: 'AWS_REGION',\n description: 'AWS region',\n });\n\n // If a credential provider is provided, use it to get the credentials.\n if (options.credentialProvider) {\n try {\n return {\n ...(await options.credentialProvider()),\n region,\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n throw new Error(\n `AWS credential provider failed: ${errorMessage}. ` +\n 'Please ensure your credential provider returns valid AWS credentials ' +\n 'with accessKeyId and secretAccessKey properties.',\n );\n }\n }\n\n try {\n return {\n region,\n accessKeyId: loadSetting({\n settingValue: options.accessKeyId,\n settingName: 'accessKeyId',\n environmentVariableName: 'AWS_ACCESS_KEY_ID',\n description: 'AWS access key ID',\n }),\n secretAccessKey: loadSetting({\n settingValue: options.secretAccessKey,\n settingName: 'secretAccessKey',\n environmentVariableName: 'AWS_SECRET_ACCESS_KEY',\n description: 'AWS secret access key',\n }),\n sessionToken: loadOptionalSetting({\n settingValue: options.sessionToken,\n environmentVariableName: 'AWS_SESSION_TOKEN',\n }),\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n if (\n errorMessage.includes('AWS_ACCESS_KEY_ID') ||\n errorMessage.includes('accessKeyId')\n ) {\n throw new Error(\n 'AWS SigV4 authentication requires AWS credentials. Please provide either:\\n' +\n '1. Set AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables\\n' +\n '2. Provide accessKeyId and secretAccessKey in options\\n' +\n '3. Use a credentialProvider function\\n' +\n '4. Use API key authentication with AWS_BEARER_TOKEN_BEDROCK or apiKey option\\n' +\n `Original error: ${errorMessage}`,\n );\n }\n if (\n errorMessage.includes('AWS_SECRET_ACCESS_KEY') ||\n errorMessage.includes('secretAccessKey')\n ) {\n throw new Error(\n 'AWS SigV4 authentication requires both AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY. ' +\n 'Please ensure both credentials are provided.\\n' +\n `Original error: ${errorMessage}`,\n );\n }\n throw error;\n }\n }, options.fetch);\n\n // Wrap with Bedrock event stream to SSE transformer for streaming support\n const fetchFunction = createBedrockAnthropicFetch(baseFetchFunction);\n\n const getBaseURL = (): string =>\n withoutTrailingSlash(\n options.baseURL ??\n `https://bedrock-runtime.${loadSetting({\n settingValue: options.region,\n settingName: 'region',\n environmentVariableName: 'AWS_REGION',\n description: 'AWS region',\n })}.amazonaws.com`,\n ) ?? 'https://bedrock-runtime.us-east-1.amazonaws.com';\n\n const getHeaders = async () => {\n const baseHeaders = (await resolve(options.headers)) ?? {};\n return withUserAgentSuffix(baseHeaders, `ai-sdk/amazon-bedrock/${VERSION}`);\n };\n\n const createChatModel = (modelId: BedrockAnthropicModelId) =>\n new AnthropicMessagesLanguageModel(modelId, {\n provider: 'bedrock.anthropic.messages',\n baseURL: getBaseURL(),\n headers: getHeaders,\n fetch: fetchFunction,\n\n buildRequestUrl: (baseURL, isStreaming) =>\n `${baseURL}/model/${encodeURIComponent(modelId)}/${\n isStreaming ? 'invoke-with-response-stream' : 'invoke'\n }`,\n\n transformRequestBody: (args, betas) => {\n const { model, stream, tool_choice, tools, ...rest } = args;\n\n const transformedToolChoice =\n tool_choice != null\n ? {\n type: tool_choice.type,\n ...(tool_choice.name != null ? { name: tool_choice.name } : {}),\n }\n : undefined;\n\n const requiredBetas = new Set<string>(betas);\n const transformedTools = tools?.map((tool: Record<string, unknown>) => {\n const toolType = tool.type as string | undefined;\n\n if (toolType && toolType in BEDROCK_TOOL_VERSION_MAP) {\n const newType =\n BEDROCK_TOOL_VERSION_MAP[\n toolType as keyof typeof BEDROCK_TOOL_VERSION_MAP\n ];\n if (newType in BEDROCK_TOOL_BETA_MAP) {\n requiredBetas.add(BEDROCK_TOOL_BETA_MAP[newType]);\n }\n const newName =\n newType in BEDROCK_TOOL_NAME_MAP\n ? BEDROCK_TOOL_NAME_MAP[newType]\n : tool.name;\n return {\n ...tool,\n type: newType,\n name: newName,\n };\n }\n\n if (toolType && toolType in BEDROCK_TOOL_BETA_MAP) {\n requiredBetas.add(BEDROCK_TOOL_BETA_MAP[toolType]);\n }\n\n if (toolType && toolType in BEDROCK_TOOL_NAME_MAP) {\n return {\n ...tool,\n name: BEDROCK_TOOL_NAME_MAP[toolType],\n };\n }\n\n return tool;\n });\n\n return {\n ...rest,\n ...(transformedTools != null ? { tools: transformedTools } : {}),\n ...(transformedToolChoice != null\n ? { tool_choice: transformedToolChoice }\n : {}),\n ...(requiredBetas.size > 0\n ? { anthropic_beta: Array.from(requiredBetas) }\n : {}),\n anthropic_version: 'bedrock-2023-05-31',\n };\n },\n\n // Bedrock Anthropic doesn't support URL sources, force download and base64 conversion\n supportedUrls: () => ({}),\n // native structured output via output_config.format is supported on Bedrock\n supportsNativeStructuredOutput: true,\n });\n\n const provider = function (modelId: BedrockAnthropicModelId) {\n if (new.target) {\n throw new Error(\n 'The Bedrock Anthropic model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId);\n };\n\n provider.specificationVersion = 'v4' as const;\n provider.languageModel = createChatModel;\n provider.chat = createChatModel;\n provider.messages = createChatModel;\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n provider.tools = anthropicTools;\n\n return provider;\n}\n\n/**\n * Default Bedrock Anthropic provider instance.\n */\nexport const bedrockAnthropic = createBedrockAnthropic();\n","import {\n FetchFunction,\n combineHeaders,\n normalizeHeaders,\n withUserAgentSuffix,\n getRuntimeEnvironmentUserAgent,\n} from '@ai-sdk/provider-utils';\nimport { AwsV4Signer } from 'aws4fetch';\nimport { VERSION } from './version';\n\nexport interface BedrockCredentials {\n region: string;\n accessKeyId: string;\n secretAccessKey: string;\n sessionToken?: string;\n}\n\n/**\n * Creates a fetch function that applies AWS Signature Version 4 signing.\n *\n * @param getCredentials - Function that returns the AWS credentials to use when signing.\n * @param fetch - Optional original fetch implementation to wrap. Defaults to global fetch.\n * @returns A FetchFunction that signs requests before passing them to the underlying fetch.\n */\nexport function createSigV4FetchFunction(\n getCredentials: () => BedrockCredentials | PromiseLike<BedrockCredentials>,\n fetch: FetchFunction = globalThis.fetch,\n): FetchFunction {\n return async (\n input: RequestInfo | URL,\n init?: RequestInit,\n ): Promise<Response> => {\n const request = input instanceof Request ? input : undefined;\n const originalHeaders = combineHeaders(\n normalizeHeaders(request?.headers),\n normalizeHeaders(init?.headers),\n );\n const headersWithUserAgent = withUserAgentSuffix(\n originalHeaders,\n `ai-sdk/amazon-bedrock/${VERSION}`,\n getRuntimeEnvironmentUserAgent(),\n );\n\n let effectiveBody: BodyInit | undefined = init?.body ?? undefined;\n if (effectiveBody === undefined && request && request.body !== null) {\n try {\n effectiveBody = await request.clone().text();\n } catch {}\n }\n\n const effectiveMethod = init?.method ?? request?.method;\n\n if (effectiveMethod?.toUpperCase() !== 'POST' || !effectiveBody) {\n return fetch(input, {\n ...init,\n headers: headersWithUserAgent as HeadersInit,\n });\n }\n\n const url =\n typeof input === 'string'\n ? input\n : input instanceof URL\n ? input.href\n : input.url;\n\n const body = prepareBodyString(effectiveBody);\n const credentials = await getCredentials();\n const signer = new AwsV4Signer({\n url,\n method: 'POST',\n headers: Object.entries(headersWithUserAgent),\n body,\n region: credentials.region,\n accessKeyId: credentials.accessKeyId,\n secretAccessKey: credentials.secretAccessKey,\n sessionToken: credentials.sessionToken,\n service: 'bedrock',\n });\n\n const signingResult = await signer.sign();\n const signedHeaders = normalizeHeaders(signingResult.headers);\n\n // Use the combined headers directly as HeadersInit\n const combinedHeaders = combineHeaders(headersWithUserAgent, signedHeaders);\n\n return fetch(input, {\n ...init,\n body,\n headers: combinedHeaders as HeadersInit,\n });\n };\n}\n\nfunction prepareBodyString(body: BodyInit | undefined): string {\n if (typeof body === 'string') {\n return body;\n } else if (body instanceof Uint8Array) {\n return new TextDecoder().decode(body);\n } else if (body instanceof ArrayBuffer) {\n return new TextDecoder().decode(new Uint8Array(body));\n } else {\n return JSON.stringify(body);\n }\n}\n\n/**\n * Creates a fetch function that applies Bearer token authentication.\n *\n * @param apiKey - The API key to use for Bearer token authentication.\n * @param fetch - Optional original fetch implementation to wrap. Defaults to global fetch.\n * @returns A FetchFunction that adds Authorization header with Bearer token to requests.\n */\nexport function createApiKeyFetchFunction(\n apiKey: string,\n fetch: FetchFunction = globalThis.fetch,\n): FetchFunction {\n return async (\n input: RequestInfo | URL,\n init?: RequestInit,\n ): Promise<Response> => {\n const originalHeaders = normalizeHeaders(init?.headers);\n const headersWithUserAgent = withUserAgentSuffix(\n originalHeaders,\n `ai-sdk/amazon-bedrock/${VERSION}`,\n getRuntimeEnvironmentUserAgent(),\n );\n\n const finalHeaders = combineHeaders(headersWithUserAgent, {\n Authorization: `Bearer ${apiKey}`,\n });\n\n return fetch(input, {\n ...init,\n headers: finalHeaders as HeadersInit,\n });\n };\n}\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n","import {\n convertBase64ToUint8Array,\n FetchFunction,\n safeParseJSON,\n} from '@ai-sdk/provider-utils';\nimport { createBedrockEventStreamDecoder } from '../bedrock-event-stream-decoder';\n\nexport function createBedrockAnthropicFetch(\n baseFetch: FetchFunction,\n): FetchFunction {\n return async (url, options) => {\n const response = await baseFetch(url, options);\n\n const contentType = response.headers.get('content-type');\n if (\n contentType?.includes('application/vnd.amazon.eventstream') &&\n response.body != null\n ) {\n const transformedBody = transformBedrockEventStreamToSSE(response.body);\n\n return new Response(transformedBody, {\n status: response.status,\n statusText: response.statusText,\n headers: new Headers({\n ...Object.fromEntries(response.headers.entries()),\n 'content-type': 'text/event-stream',\n }),\n });\n }\n\n return response;\n };\n}\n\nfunction transformBedrockEventStreamToSSE(\n body: ReadableStream<Uint8Array>,\n): ReadableStream<Uint8Array> {\n const textEncoder = new TextEncoder();\n\n return createBedrockEventStreamDecoder(body, async (event, controller) => {\n if (event.messageType === 'event') {\n if (event.eventType === 'chunk') {\n const parsed = await safeParseJSON({ text: event.data });\n if (!parsed.success) {\n controller.enqueue(textEncoder.encode(`data: ${event.data}\\n\\n`));\n return;\n }\n const bytes = (parsed.value as { bytes?: string }).bytes;\n if (bytes) {\n const anthropicEvent = new TextDecoder().decode(\n convertBase64ToUint8Array(bytes),\n );\n controller.enqueue(textEncoder.encode(`data: ${anthropicEvent}\\n\\n`));\n } else {\n controller.enqueue(textEncoder.encode(`data: ${event.data}\\n\\n`));\n }\n } else if (event.eventType === 'messageStop') {\n controller.enqueue(textEncoder.encode('data: [DONE]\\n\\n'));\n }\n } else if (event.messageType === 'exception') {\n controller.enqueue(\n textEncoder.encode(\n `data: ${JSON.stringify({ type: 'error', error: event.data })}\\n\\n`,\n ),\n );\n }\n });\n}\n","import { EventStreamCodec } from '@smithy/eventstream-codec';\nimport { toUtf8, fromUtf8 } from '@smithy/util-utf8';\n\nexport interface DecodedEvent {\n messageType: string;\n eventType: string;\n data: string;\n}\n\nexport function createBedrockEventStreamDecoder<T>(\n body: ReadableStream<Uint8Array>,\n processEvent: (\n event: DecodedEvent,\n controller: TransformStreamDefaultController<T>,\n ) => void | Promise<void>,\n): ReadableStream<T> {\n const codec = new EventStreamCodec(toUtf8, fromUtf8);\n let buffer = new Uint8Array(0);\n const textDecoder = new TextDecoder();\n\n return body.pipeThrough(\n new TransformStream<Uint8Array, T>({\n async transform(chunk, controller) {\n const newBuffer = new Uint8Array(buffer.length + chunk.length);\n newBuffer.set(buffer);\n newBuffer.set(chunk, buffer.length);\n buffer = newBuffer;\n\n while (buffer.length >= 4) {\n const totalLength = new DataView(\n buffer.buffer,\n buffer.byteOffset,\n buffer.byteLength,\n ).getUint32(0, false);\n\n if (buffer.length < totalLength) {\n break;\n }\n\n try {\n const subView = buffer.subarray(0, totalLength);\n const decoded = codec.decode(subView);\n\n buffer = buffer.slice(totalLength);\n\n const messageType = decoded.headers[':message-type']\n ?.value as string;\n const eventType = decoded.headers[':event-type']?.value as string;\n const data = textDecoder.decode(decoded.body);\n\n await processEvent({ messageType, eventType, data }, controller);\n } catch {\n break;\n }\n }\n },\n }),\n );\n}\n"],"mappings":"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","names":["import_provider_utils","import_provider_utils"]}
|
|
1
|
+
{"version":3,"sources":["../../src/anthropic/index.ts","../../src/anthropic/bedrock-anthropic-provider.ts","../../src/bedrock-sigv4-fetch.ts","../../src/version.ts","../../src/anthropic/bedrock-anthropic-fetch.ts","../../src/bedrock-event-stream-decoder.ts"],"sourcesContent":["export {\n bedrockAnthropic,\n createBedrockAnthropic,\n} from './bedrock-anthropic-provider';\nexport type {\n BedrockAnthropicProvider,\n BedrockAnthropicProviderSettings,\n} from './bedrock-anthropic-provider';\nexport type { BedrockAnthropicModelId } from './bedrock-anthropic-options';\n","import {\n LanguageModelV4,\n NoSuchModelError,\n ProviderV4,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadOptionalSetting,\n loadSetting,\n Resolvable,\n resolve,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport {\n anthropicTools,\n AnthropicMessagesLanguageModel,\n} from '@ai-sdk/anthropic/internal';\nimport {\n BedrockCredentials,\n createApiKeyFetchFunction,\n createSigV4FetchFunction,\n} from '../bedrock-sigv4-fetch';\nimport { createBedrockAnthropicFetch } from './bedrock-anthropic-fetch';\nimport { BedrockAnthropicModelId } from './bedrock-anthropic-options';\nimport { VERSION } from '../version';\n\n// Bedrock requires newer tool versions than the default Anthropic SDK versions\nconst BEDROCK_TOOL_VERSION_MAP = {\n bash_20241022: 'bash_20250124',\n text_editor_20241022: 'text_editor_20250728',\n computer_20241022: 'computer_20250124',\n} as const;\n\n// Tool name mappings when upgrading versions (text_editor_20250728 requires different name)\nconst BEDROCK_TOOL_NAME_MAP: Record<string, string> = {\n text_editor_20250728: 'str_replace_based_edit_tool',\n};\n\n// Map tool types to required anthropic_beta values for Bedrock\nconst BEDROCK_TOOL_BETA_MAP: Record<string, string> = {\n bash_20250124: 'computer-use-2025-01-24',\n bash_20241022: 'computer-use-2024-10-22',\n text_editor_20250124: 'computer-use-2025-01-24',\n text_editor_20241022: 'computer-use-2024-10-22',\n text_editor_20250429: 'computer-use-2025-01-24',\n text_editor_20250728: 'computer-use-2025-01-24',\n computer_20250124: 'computer-use-2025-01-24',\n computer_20241022: 'computer-use-2024-10-22',\n tool_search_tool_regex_20251119: 'tool-search-tool-2025-10-19',\n // BM25 is not currently supported on Bedrock, but including the beta flag\n // so that Bedrock returns a more useful error message if it's used.\n tool_search_tool_bm25_20251119: 'tool-search-tool-2025-10-19',\n};\n\nexport interface BedrockAnthropicProvider extends ProviderV4 {\n /**\n * Creates a model for text generation.\n */\n (modelId: BedrockAnthropicModelId): LanguageModelV4;\n\n /**\n * Creates a model for text generation.\n */\n languageModel(modelId: BedrockAnthropicModelId): LanguageModelV4;\n\n /**\n * Anthropic-specific computer use tool.\n */\n tools: typeof anthropicTools;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\nexport interface BedrockAnthropicProviderSettings {\n /**\n * The AWS region to use for the Bedrock provider. Defaults to the value of the\n * `AWS_REGION` environment variable.\n */\n region?: string;\n\n /**\n * API key for authenticating requests using Bearer token authentication.\n * When provided, this will be used instead of AWS SigV4 authentication.\n * Defaults to the value of the `AWS_BEARER_TOKEN_BEDROCK` environment variable.\n */\n apiKey?: string;\n\n /**\n * The AWS access key ID to use for the Bedrock provider. Defaults to the value of the\n * `AWS_ACCESS_KEY_ID` environment variable.\n */\n accessKeyId?: string;\n\n /**\n * The AWS secret access key to use for the Bedrock provider. Defaults to the value of the\n * `AWS_SECRET_ACCESS_KEY` environment variable.\n */\n secretAccessKey?: string;\n\n /**\n * The AWS session token to use for the Bedrock provider. Defaults to the value of the\n * `AWS_SESSION_TOKEN` environment variable.\n */\n sessionToken?: string;\n\n /**\n * Base URL for the Bedrock API calls.\n */\n baseURL?: string;\n\n /**\n * Custom headers to include in the requests.\n */\n headers?: Resolvable<Record<string, string | undefined>>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n\n /**\n * The AWS credential provider to use for the Bedrock provider to get dynamic\n * credentials similar to the AWS SDK. Setting a provider here will cause its\n * credential values to be used instead of the `accessKeyId`, `secretAccessKey`,\n * and `sessionToken` settings.\n */\n credentialProvider?: () => PromiseLike<Omit<BedrockCredentials, 'region'>>;\n}\n\n/**\n * Create an Amazon Bedrock Anthropic provider instance.\n * This provider uses the native Anthropic API through Bedrock's InvokeModel endpoint,\n * bypassing the Converse API for better feature compatibility.\n */\nexport function createBedrockAnthropic(\n options: BedrockAnthropicProviderSettings = {},\n): BedrockAnthropicProvider {\n // Check for API key authentication first\n const rawApiKey = loadOptionalSetting({\n settingValue: options.apiKey,\n environmentVariableName: 'AWS_BEARER_TOKEN_BEDROCK',\n });\n\n // Only use API key if it's a non-empty, non-whitespace string\n const apiKey =\n rawApiKey && rawApiKey.trim().length > 0 ? rawApiKey.trim() : undefined;\n\n // Use API key authentication if available, otherwise fall back to SigV4\n const baseFetchFunction = apiKey\n ? createApiKeyFetchFunction(apiKey, options.fetch)\n : createSigV4FetchFunction(async () => {\n const region = loadSetting({\n settingValue: options.region,\n settingName: 'region',\n environmentVariableName: 'AWS_REGION',\n description: 'AWS region',\n });\n\n // If a credential provider is provided, use it to get the credentials.\n if (options.credentialProvider) {\n try {\n return {\n ...(await options.credentialProvider()),\n region,\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n throw new Error(\n `AWS credential provider failed: ${errorMessage}. ` +\n 'Please ensure your credential provider returns valid AWS credentials ' +\n 'with accessKeyId and secretAccessKey properties.',\n );\n }\n }\n\n try {\n return {\n region,\n accessKeyId: loadSetting({\n settingValue: options.accessKeyId,\n settingName: 'accessKeyId',\n environmentVariableName: 'AWS_ACCESS_KEY_ID',\n description: 'AWS access key ID',\n }),\n secretAccessKey: loadSetting({\n settingValue: options.secretAccessKey,\n settingName: 'secretAccessKey',\n environmentVariableName: 'AWS_SECRET_ACCESS_KEY',\n description: 'AWS secret access key',\n }),\n sessionToken: loadOptionalSetting({\n settingValue: options.sessionToken,\n environmentVariableName: 'AWS_SESSION_TOKEN',\n }),\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n if (\n errorMessage.includes('AWS_ACCESS_KEY_ID') ||\n errorMessage.includes('accessKeyId')\n ) {\n throw new Error(\n 'AWS SigV4 authentication requires AWS credentials. Please provide either:\\n' +\n '1. Set AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables\\n' +\n '2. Provide accessKeyId and secretAccessKey in options\\n' +\n '3. Use a credentialProvider function\\n' +\n '4. Use API key authentication with AWS_BEARER_TOKEN_BEDROCK or apiKey option\\n' +\n `Original error: ${errorMessage}`,\n );\n }\n if (\n errorMessage.includes('AWS_SECRET_ACCESS_KEY') ||\n errorMessage.includes('secretAccessKey')\n ) {\n throw new Error(\n 'AWS SigV4 authentication requires both AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY. ' +\n 'Please ensure both credentials are provided.\\n' +\n `Original error: ${errorMessage}`,\n );\n }\n throw error;\n }\n }, options.fetch);\n\n // Wrap with Bedrock event stream to SSE transformer for streaming support\n const fetchFunction = createBedrockAnthropicFetch(baseFetchFunction);\n\n const getBaseURL = (): string =>\n withoutTrailingSlash(\n options.baseURL ??\n `https://bedrock-runtime.${loadSetting({\n settingValue: options.region,\n settingName: 'region',\n environmentVariableName: 'AWS_REGION',\n description: 'AWS region',\n })}.amazonaws.com`,\n ) ?? 'https://bedrock-runtime.us-east-1.amazonaws.com';\n\n const getHeaders = async () => {\n const baseHeaders = (await resolve(options.headers)) ?? {};\n return withUserAgentSuffix(baseHeaders, `ai-sdk/amazon-bedrock/${VERSION}`);\n };\n\n const createChatModel = (modelId: BedrockAnthropicModelId) =>\n new AnthropicMessagesLanguageModel(modelId, {\n provider: 'bedrock.anthropic.messages',\n baseURL: getBaseURL(),\n headers: getHeaders,\n fetch: fetchFunction,\n\n buildRequestUrl: (baseURL, isStreaming) =>\n `${baseURL}/model/${encodeURIComponent(modelId)}/${\n isStreaming ? 'invoke-with-response-stream' : 'invoke'\n }`,\n\n transformRequestBody: (args, betas) => {\n const {\n model: _model,\n stream: _stream,\n tool_choice,\n tools,\n ...rest\n } = args;\n\n const transformedToolChoice =\n tool_choice != null\n ? {\n type: tool_choice.type,\n ...(tool_choice.name != null ? { name: tool_choice.name } : {}),\n }\n : undefined;\n\n const requiredBetas = new Set<string>(betas);\n const transformedTools = tools?.map((tool: Record<string, unknown>) => {\n const toolType = tool.type as string | undefined;\n\n if (toolType && toolType in BEDROCK_TOOL_VERSION_MAP) {\n const newType =\n BEDROCK_TOOL_VERSION_MAP[\n toolType as keyof typeof BEDROCK_TOOL_VERSION_MAP\n ];\n if (newType in BEDROCK_TOOL_BETA_MAP) {\n requiredBetas.add(BEDROCK_TOOL_BETA_MAP[newType]);\n }\n const newName =\n newType in BEDROCK_TOOL_NAME_MAP\n ? BEDROCK_TOOL_NAME_MAP[newType]\n : tool.name;\n return {\n ...tool,\n type: newType,\n name: newName,\n };\n }\n\n if (toolType && toolType in BEDROCK_TOOL_BETA_MAP) {\n requiredBetas.add(BEDROCK_TOOL_BETA_MAP[toolType]);\n }\n\n if (toolType && toolType in BEDROCK_TOOL_NAME_MAP) {\n return {\n ...tool,\n name: BEDROCK_TOOL_NAME_MAP[toolType],\n };\n }\n\n return tool;\n });\n\n return {\n ...rest,\n ...(transformedTools != null ? { tools: transformedTools } : {}),\n ...(transformedToolChoice != null\n ? { tool_choice: transformedToolChoice }\n : {}),\n ...(requiredBetas.size > 0\n ? { anthropic_beta: Array.from(requiredBetas) }\n : {}),\n anthropic_version: 'bedrock-2023-05-31',\n };\n },\n\n // Bedrock Anthropic doesn't support URL sources, force download and base64 conversion\n supportedUrls: () => ({}),\n // native structured output via output_config.format is supported on Bedrock\n supportsNativeStructuredOutput: true,\n });\n\n const provider = function (modelId: BedrockAnthropicModelId) {\n if (new.target) {\n throw new Error(\n 'The Bedrock Anthropic model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId);\n };\n\n provider.specificationVersion = 'v4' as const;\n provider.languageModel = createChatModel;\n provider.chat = createChatModel;\n provider.messages = createChatModel;\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n provider.tools = anthropicTools;\n\n return provider;\n}\n\n/**\n * Default Bedrock Anthropic provider instance.\n */\nexport const bedrockAnthropic = createBedrockAnthropic();\n","import {\n FetchFunction,\n combineHeaders,\n normalizeHeaders,\n withUserAgentSuffix,\n getRuntimeEnvironmentUserAgent,\n} from '@ai-sdk/provider-utils';\nimport { AwsV4Signer } from 'aws4fetch';\nimport { VERSION } from './version';\n\nexport interface BedrockCredentials {\n region: string;\n accessKeyId: string;\n secretAccessKey: string;\n sessionToken?: string;\n}\n\n/**\n * Creates a fetch function that applies AWS Signature Version 4 signing.\n *\n * @param getCredentials - Function that returns the AWS credentials to use when signing.\n * @param fetch - Optional original fetch implementation to wrap. Defaults to global fetch.\n * @returns A FetchFunction that signs requests before passing them to the underlying fetch.\n */\nexport function createSigV4FetchFunction(\n getCredentials: () => BedrockCredentials | PromiseLike<BedrockCredentials>,\n fetch: FetchFunction = globalThis.fetch,\n): FetchFunction {\n return async (\n input: RequestInfo | URL,\n init?: RequestInit,\n ): Promise<Response> => {\n const request = input instanceof Request ? input : undefined;\n const originalHeaders = combineHeaders(\n normalizeHeaders(request?.headers),\n normalizeHeaders(init?.headers),\n );\n const headersWithUserAgent = withUserAgentSuffix(\n originalHeaders,\n `ai-sdk/amazon-bedrock/${VERSION}`,\n getRuntimeEnvironmentUserAgent(),\n );\n\n let effectiveBody: BodyInit | undefined = init?.body ?? undefined;\n if (effectiveBody === undefined && request && request.body !== null) {\n try {\n effectiveBody = await request.clone().text();\n } catch {}\n }\n\n const effectiveMethod = init?.method ?? request?.method;\n\n if (effectiveMethod?.toUpperCase() !== 'POST' || !effectiveBody) {\n return fetch(input, {\n ...init,\n headers: headersWithUserAgent as HeadersInit,\n });\n }\n\n const url =\n typeof input === 'string'\n ? input\n : input instanceof URL\n ? input.href\n : input.url;\n\n const body = prepareBodyString(effectiveBody);\n const credentials = await getCredentials();\n const signer = new AwsV4Signer({\n url,\n method: 'POST',\n headers: Object.entries(headersWithUserAgent),\n body,\n region: credentials.region,\n accessKeyId: credentials.accessKeyId,\n secretAccessKey: credentials.secretAccessKey,\n sessionToken: credentials.sessionToken,\n service: 'bedrock',\n });\n\n const signingResult = await signer.sign();\n const signedHeaders = normalizeHeaders(signingResult.headers);\n\n // Use the combined headers directly as HeadersInit\n const combinedHeaders = combineHeaders(headersWithUserAgent, signedHeaders);\n\n return fetch(input, {\n ...init,\n body,\n headers: combinedHeaders as HeadersInit,\n });\n };\n}\n\nfunction prepareBodyString(body: BodyInit | undefined): string {\n if (typeof body === 'string') {\n return body;\n } else if (body instanceof Uint8Array) {\n return new TextDecoder().decode(body);\n } else if (body instanceof ArrayBuffer) {\n return new TextDecoder().decode(new Uint8Array(body));\n } else {\n return JSON.stringify(body);\n }\n}\n\n/**\n * Creates a fetch function that applies Bearer token authentication.\n *\n * @param apiKey - The API key to use for Bearer token authentication.\n * @param fetch - Optional original fetch implementation to wrap. Defaults to global fetch.\n * @returns A FetchFunction that adds Authorization header with Bearer token to requests.\n */\nexport function createApiKeyFetchFunction(\n apiKey: string,\n fetch: FetchFunction = globalThis.fetch,\n): FetchFunction {\n return async (\n input: RequestInfo | URL,\n init?: RequestInit,\n ): Promise<Response> => {\n const originalHeaders = normalizeHeaders(init?.headers);\n const headersWithUserAgent = withUserAgentSuffix(\n originalHeaders,\n `ai-sdk/amazon-bedrock/${VERSION}`,\n getRuntimeEnvironmentUserAgent(),\n );\n\n const finalHeaders = combineHeaders(headersWithUserAgent, {\n Authorization: `Bearer ${apiKey}`,\n });\n\n return fetch(input, {\n ...init,\n headers: finalHeaders as HeadersInit,\n });\n };\n}\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n","import {\n convertBase64ToUint8Array,\n FetchFunction,\n safeParseJSON,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { createBedrockEventStreamDecoder } from '../bedrock-event-stream-decoder';\n\nconst bedrockErrorSchema = z.looseObject({\n message: z.string().optional(),\n});\n\nexport function createBedrockAnthropicFetch(\n baseFetch: FetchFunction,\n): FetchFunction {\n return async (url, options) => {\n const response = await baseFetch(url, options);\n\n // Transform Bedrock error responses into Anthropic error format\n // so that anthropicFailedResponseHandler can extract the message.\n if (!response.ok) {\n const text = await response.text();\n const parsed = await safeParseJSON({ text, schema: bedrockErrorSchema });\n\n const message =\n parsed.success && parsed.value.message ? parsed.value.message : text;\n\n const anthropicError = JSON.stringify({\n type: 'error',\n error: { type: 'error', message },\n });\n\n return new Response(anthropicError, {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n });\n }\n\n const contentType = response.headers.get('content-type');\n if (\n contentType?.includes('application/vnd.amazon.eventstream') &&\n response.body != null\n ) {\n const transformedBody = transformBedrockEventStreamToSSE(response.body);\n\n return new Response(transformedBody, {\n status: response.status,\n statusText: response.statusText,\n headers: new Headers({\n ...Object.fromEntries(response.headers.entries()),\n 'content-type': 'text/event-stream',\n }),\n });\n }\n\n return response;\n };\n}\n\nfunction transformBedrockEventStreamToSSE(\n body: ReadableStream<Uint8Array>,\n): ReadableStream<Uint8Array> {\n const textEncoder = new TextEncoder();\n\n return createBedrockEventStreamDecoder(body, async (event, controller) => {\n if (event.messageType === 'event') {\n if (event.eventType === 'chunk') {\n const parsed = await safeParseJSON({ text: event.data });\n if (!parsed.success) {\n controller.enqueue(textEncoder.encode(`data: ${event.data}\\n\\n`));\n return;\n }\n const bytes = (parsed.value as { bytes?: string }).bytes;\n if (bytes) {\n const anthropicEvent = new TextDecoder().decode(\n convertBase64ToUint8Array(bytes),\n );\n controller.enqueue(textEncoder.encode(`data: ${anthropicEvent}\\n\\n`));\n } else {\n controller.enqueue(textEncoder.encode(`data: ${event.data}\\n\\n`));\n }\n } else if (event.eventType === 'messageStop') {\n controller.enqueue(textEncoder.encode('data: [DONE]\\n\\n'));\n }\n } else if (event.messageType === 'exception') {\n controller.enqueue(\n textEncoder.encode(\n `data: ${JSON.stringify({ type: 'error', error: event.data })}\\n\\n`,\n ),\n );\n }\n });\n}\n","import { EventStreamCodec } from '@smithy/eventstream-codec';\nimport { toUtf8, fromUtf8 } from '@smithy/util-utf8';\n\nexport interface DecodedEvent {\n messageType: string;\n eventType: string;\n data: string;\n}\n\nexport function createBedrockEventStreamDecoder<T>(\n body: ReadableStream<Uint8Array>,\n processEvent: (\n event: DecodedEvent,\n controller: TransformStreamDefaultController<T>,\n ) => void | Promise<void>,\n): ReadableStream<T> {\n const codec = new EventStreamCodec(toUtf8, fromUtf8);\n let buffer = new Uint8Array(0);\n const textDecoder = new TextDecoder();\n\n return body.pipeThrough(\n new TransformStream<Uint8Array, T>({\n async transform(chunk, controller) {\n const newBuffer = new Uint8Array(buffer.length + chunk.length);\n newBuffer.set(buffer);\n newBuffer.set(chunk, buffer.length);\n buffer = newBuffer;\n\n while (buffer.length >= 4) {\n const totalLength = new DataView(\n buffer.buffer,\n buffer.byteOffset,\n buffer.byteLength,\n ).getUint32(0, false);\n\n if (buffer.length < totalLength) {\n break;\n }\n\n try {\n const subView = buffer.subarray(0, totalLength);\n const decoded = codec.decode(subView);\n\n buffer = buffer.slice(totalLength);\n\n const messageType = decoded.headers[':message-type']\n ?.value as string;\n const eventType = decoded.headers[':event-type']?.value as string;\n const data = textDecoder.decode(decoded.body);\n\n await processEvent({ messageType, eventType, data }, controller);\n } catch {\n break;\n }\n }\n },\n }),\n );\n}\n"],"mappings":"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","names":["import_provider_utils","import_provider_utils"]}
|
package/dist/anthropic/index.mjs
CHANGED
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
import { AwsV4Signer } from "aws4fetch";
|
|
25
25
|
|
|
26
26
|
// src/version.ts
|
|
27
|
-
var VERSION = true ? "5.0.0-beta.
|
|
27
|
+
var VERSION = true ? "5.0.0-beta.30" : "0.0.0-test";
|
|
28
28
|
|
|
29
29
|
// src/bedrock-sigv4-fetch.ts
|
|
30
30
|
function createSigV4FetchFunction(getCredentials, fetch = globalThis.fetch) {
|
|
@@ -112,6 +112,7 @@ import {
|
|
|
112
112
|
convertBase64ToUint8Array,
|
|
113
113
|
safeParseJSON
|
|
114
114
|
} from "@ai-sdk/provider-utils";
|
|
115
|
+
import { z } from "zod/v4";
|
|
115
116
|
|
|
116
117
|
// src/bedrock-event-stream-decoder.ts
|
|
117
118
|
import { EventStreamCodec } from "@smithy/eventstream-codec";
|
|
@@ -155,9 +156,26 @@ function createBedrockEventStreamDecoder(body, processEvent) {
|
|
|
155
156
|
}
|
|
156
157
|
|
|
157
158
|
// src/anthropic/bedrock-anthropic-fetch.ts
|
|
159
|
+
var bedrockErrorSchema = z.looseObject({
|
|
160
|
+
message: z.string().optional()
|
|
161
|
+
});
|
|
158
162
|
function createBedrockAnthropicFetch(baseFetch) {
|
|
159
163
|
return async (url, options) => {
|
|
160
164
|
const response = await baseFetch(url, options);
|
|
165
|
+
if (!response.ok) {
|
|
166
|
+
const text = await response.text();
|
|
167
|
+
const parsed = await safeParseJSON({ text, schema: bedrockErrorSchema });
|
|
168
|
+
const message = parsed.success && parsed.value.message ? parsed.value.message : text;
|
|
169
|
+
const anthropicError = JSON.stringify({
|
|
170
|
+
type: "error",
|
|
171
|
+
error: { type: "error", message }
|
|
172
|
+
});
|
|
173
|
+
return new Response(anthropicError, {
|
|
174
|
+
status: response.status,
|
|
175
|
+
statusText: response.statusText,
|
|
176
|
+
headers: response.headers
|
|
177
|
+
});
|
|
178
|
+
}
|
|
161
179
|
const contentType = response.headers.get("content-type");
|
|
162
180
|
if ((contentType == null ? void 0 : contentType.includes("application/vnd.amazon.eventstream")) && response.body != null) {
|
|
163
181
|
const transformedBody = transformBedrockEventStreamToSSE(response.body);
|
|
@@ -230,7 +248,11 @@ var BEDROCK_TOOL_BETA_MAP = {
|
|
|
230
248
|
text_editor_20250429: "computer-use-2025-01-24",
|
|
231
249
|
text_editor_20250728: "computer-use-2025-01-24",
|
|
232
250
|
computer_20250124: "computer-use-2025-01-24",
|
|
233
|
-
computer_20241022: "computer-use-2024-10-22"
|
|
251
|
+
computer_20241022: "computer-use-2024-10-22",
|
|
252
|
+
tool_search_tool_regex_20251119: "tool-search-tool-2025-10-19",
|
|
253
|
+
// BM25 is not currently supported on Bedrock, but including the beta flag
|
|
254
|
+
// so that Bedrock returns a more useful error message if it's used.
|
|
255
|
+
tool_search_tool_bm25_20251119: "tool-search-tool-2025-10-19"
|
|
234
256
|
};
|
|
235
257
|
function createBedrockAnthropic(options = {}) {
|
|
236
258
|
const rawApiKey = loadOptionalSetting({
|
|
@@ -323,7 +345,13 @@ Original error: ${errorMessage}`
|
|
|
323
345
|
fetch: fetchFunction,
|
|
324
346
|
buildRequestUrl: (baseURL, isStreaming) => `${baseURL}/model/${encodeURIComponent(modelId)}/${isStreaming ? "invoke-with-response-stream" : "invoke"}`,
|
|
325
347
|
transformRequestBody: (args, betas) => {
|
|
326
|
-
const {
|
|
348
|
+
const {
|
|
349
|
+
model: _model,
|
|
350
|
+
stream: _stream,
|
|
351
|
+
tool_choice,
|
|
352
|
+
tools,
|
|
353
|
+
...rest
|
|
354
|
+
} = args;
|
|
327
355
|
const transformedToolChoice = tool_choice != null ? {
|
|
328
356
|
type: tool_choice.type,
|
|
329
357
|
...tool_choice.name != null ? { name: tool_choice.name } : {}
|