@ai-sdk/anthropic 2.0.93 → 2.0.94

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/dist/index.mjs CHANGED
@@ -11,10 +11,11 @@ import {
11
11
  } from "@ai-sdk/provider-utils";
12
12
 
13
13
  // src/version.ts
14
- var VERSION = true ? "2.0.93" : "0.0.0-test";
14
+ var VERSION = true ? "2.0.94" : "0.0.0-test";
15
15
 
16
16
  // src/anthropic-messages-language-model.ts
17
17
  import {
18
+ InvalidResponseDataError,
18
19
  APICallError
19
20
  } from "@ai-sdk/provider";
20
21
  import {
@@ -3122,6 +3123,9 @@ var AnthropicMessagesLanguageModel = class {
3122
3123
  let container = null;
3123
3124
  let iterations = null;
3124
3125
  let contextManagement = null;
3126
+ let isMessageOpen = false;
3127
+ let activeMessageId;
3128
+ let hasInvalidMessageSequence = false;
3125
3129
  let blockType = void 0;
3126
3130
  const generateId3 = this.generateId;
3127
3131
  const transformedStream = response.pipeThrough(
@@ -3131,6 +3135,9 @@ var AnthropicMessagesLanguageModel = class {
3131
3135
  },
3132
3136
  transform(chunk, controller) {
3133
3137
  var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k;
3138
+ if (hasInvalidMessageSequence) {
3139
+ return;
3140
+ }
3134
3141
  if (options.includeRawChunks) {
3135
3142
  controller.enqueue({ type: "raw", rawValue: chunk.rawValue });
3136
3143
  }
@@ -3534,6 +3541,22 @@ var AnthropicMessagesLanguageModel = class {
3534
3541
  }
3535
3542
  }
3536
3543
  case "message_start": {
3544
+ if (isMessageOpen) {
3545
+ if (activeMessageId === value.message.id) {
3546
+ return;
3547
+ }
3548
+ hasInvalidMessageSequence = true;
3549
+ controller.enqueue({
3550
+ type: "error",
3551
+ error: new InvalidResponseDataError({
3552
+ data: value,
3553
+ message: `Received message_start for message ${JSON.stringify(value.message.id)} while message ${JSON.stringify(activeMessageId)} is still open.`
3554
+ })
3555
+ });
3556
+ return;
3557
+ }
3558
+ isMessageOpen = true;
3559
+ activeMessageId = value.message.id;
3537
3560
  usage.inputTokens = value.message.usage.input_tokens;
3538
3561
  usage.cachedInputTokens = (_b2 = value.message.usage.cache_read_input_tokens) != null ? _b2 : void 0;
3539
3562
  rawUsage = {
@@ -3626,6 +3649,8 @@ var AnthropicMessagesLanguageModel = class {
3626
3649
  return;
3627
3650
  }
3628
3651
  case "message_stop": {
3652
+ isMessageOpen = false;
3653
+ activeMessageId = void 0;
3629
3654
  controller.enqueue({
3630
3655
  type: "finish",
3631
3656
  finishReason,