@ai-sdk/anthropic 3.0.105 → 3.0.108
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 +20 -0
- package/dist/index.js +25 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +27 -2
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.js +24 -0
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/index.mjs +26 -1
- package/dist/internal/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/anthropic-messages-language-model.ts +32 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-sdk/anthropic",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.108",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@ai-sdk/provider": "3.0.14",
|
|
40
|
-
"@ai-sdk/provider-utils": "4.0.
|
|
40
|
+
"@ai-sdk/provider-utils": "4.0.43"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@types/node": "20.17.24",
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
APICallError,
|
|
3
|
+
InvalidResponseDataError,
|
|
3
4
|
type JSONObject,
|
|
4
5
|
type LanguageModelV3,
|
|
5
6
|
type LanguageModelV3CallOptions,
|
|
@@ -1536,6 +1537,9 @@ export class AnthropicMessagesLanguageModel implements LanguageModelV3 {
|
|
|
1536
1537
|
let stopDetails: AnthropicMessageMetadata['stopDetails'] = undefined;
|
|
1537
1538
|
let container: AnthropicMessageMetadata['container'] | null = null;
|
|
1538
1539
|
let isJsonResponseFromTool = false;
|
|
1540
|
+
let isMessageOpen = false;
|
|
1541
|
+
let activeMessageId: string | null | undefined;
|
|
1542
|
+
let hasInvalidMessageSequence = false;
|
|
1539
1543
|
|
|
1540
1544
|
let blockType:
|
|
1541
1545
|
| 'text'
|
|
@@ -1567,6 +1571,10 @@ export class AnthropicMessagesLanguageModel implements LanguageModelV3 {
|
|
|
1567
1571
|
},
|
|
1568
1572
|
|
|
1569
1573
|
transform(chunk, controller) {
|
|
1574
|
+
if (hasInvalidMessageSequence) {
|
|
1575
|
+
return;
|
|
1576
|
+
}
|
|
1577
|
+
|
|
1570
1578
|
if (options.includeRawChunks) {
|
|
1571
1579
|
controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });
|
|
1572
1580
|
}
|
|
@@ -2353,6 +2361,27 @@ export class AnthropicMessagesLanguageModel implements LanguageModelV3 {
|
|
|
2353
2361
|
}
|
|
2354
2362
|
|
|
2355
2363
|
case 'message_start': {
|
|
2364
|
+
if (isMessageOpen) {
|
|
2365
|
+
if (activeMessageId === value.message.id) {
|
|
2366
|
+
return;
|
|
2367
|
+
}
|
|
2368
|
+
|
|
2369
|
+
hasInvalidMessageSequence = true;
|
|
2370
|
+
controller.enqueue({
|
|
2371
|
+
type: 'error',
|
|
2372
|
+
error: new InvalidResponseDataError({
|
|
2373
|
+
data: value,
|
|
2374
|
+
message:
|
|
2375
|
+
`Received message_start for message ${JSON.stringify(value.message.id)} ` +
|
|
2376
|
+
`while message ${JSON.stringify(activeMessageId)} is still open.`,
|
|
2377
|
+
}),
|
|
2378
|
+
});
|
|
2379
|
+
return;
|
|
2380
|
+
}
|
|
2381
|
+
|
|
2382
|
+
isMessageOpen = true;
|
|
2383
|
+
activeMessageId = value.message.id;
|
|
2384
|
+
|
|
2356
2385
|
usage.input_tokens = value.message.usage.input_tokens;
|
|
2357
2386
|
usage.cache_read_input_tokens =
|
|
2358
2387
|
value.message.usage.cache_read_input_tokens ?? 0;
|
|
@@ -2512,6 +2541,9 @@ export class AnthropicMessagesLanguageModel implements LanguageModelV3 {
|
|
|
2512
2541
|
}
|
|
2513
2542
|
|
|
2514
2543
|
case 'message_stop': {
|
|
2544
|
+
isMessageOpen = false;
|
|
2545
|
+
activeMessageId = undefined;
|
|
2546
|
+
|
|
2515
2547
|
const anthropicMetadata = {
|
|
2516
2548
|
usage: (rawUsage as JSONObject) ?? null,
|
|
2517
2549
|
cacheCreationInputTokens,
|