@ai-sdk/anthropic 2.0.93 → 2.0.95

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.
@@ -1,5 +1,6 @@
1
1
  // src/anthropic-messages-language-model.ts
2
2
  import {
3
+ InvalidResponseDataError,
3
4
  APICallError
4
5
  } from "@ai-sdk/provider";
5
6
  import {
@@ -3107,6 +3108,9 @@ var AnthropicMessagesLanguageModel = class {
3107
3108
  let container = null;
3108
3109
  let iterations = null;
3109
3110
  let contextManagement = null;
3111
+ let isMessageOpen = false;
3112
+ let activeMessageId;
3113
+ let hasInvalidMessageSequence = false;
3110
3114
  let blockType = void 0;
3111
3115
  const generateId2 = this.generateId;
3112
3116
  const transformedStream = response.pipeThrough(
@@ -3116,6 +3120,9 @@ var AnthropicMessagesLanguageModel = class {
3116
3120
  },
3117
3121
  transform(chunk, controller) {
3118
3122
  var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k;
3123
+ if (hasInvalidMessageSequence) {
3124
+ return;
3125
+ }
3119
3126
  if (options.includeRawChunks) {
3120
3127
  controller.enqueue({ type: "raw", rawValue: chunk.rawValue });
3121
3128
  }
@@ -3519,6 +3526,22 @@ var AnthropicMessagesLanguageModel = class {
3519
3526
  }
3520
3527
  }
3521
3528
  case "message_start": {
3529
+ if (isMessageOpen) {
3530
+ if (activeMessageId === value.message.id) {
3531
+ return;
3532
+ }
3533
+ hasInvalidMessageSequence = true;
3534
+ controller.enqueue({
3535
+ type: "error",
3536
+ error: new InvalidResponseDataError({
3537
+ data: value,
3538
+ message: `Received message_start for message ${JSON.stringify(value.message.id)} while message ${JSON.stringify(activeMessageId)} is still open.`
3539
+ })
3540
+ });
3541
+ return;
3542
+ }
3543
+ isMessageOpen = true;
3544
+ activeMessageId = value.message.id;
3522
3545
  usage.inputTokens = value.message.usage.input_tokens;
3523
3546
  usage.cachedInputTokens = (_b2 = value.message.usage.cache_read_input_tokens) != null ? _b2 : void 0;
3524
3547
  rawUsage = {
@@ -3611,6 +3634,8 @@ var AnthropicMessagesLanguageModel = class {
3611
3634
  return;
3612
3635
  }
3613
3636
  case "message_stop": {
3637
+ isMessageOpen = false;
3638
+ activeMessageId = void 0;
3614
3639
  controller.enqueue({
3615
3640
  type: "finish",
3616
3641
  finishReason,