@ai-sdk/anthropic 3.0.105 → 3.0.107

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,6 +1,7 @@
1
1
  // src/anthropic-messages-language-model.ts
2
2
  import {
3
- APICallError
3
+ APICallError,
4
+ InvalidResponseDataError
4
5
  } from "@ai-sdk/provider";
5
6
  import {
6
7
  combineHeaders,
@@ -4501,6 +4502,9 @@ var AnthropicMessagesLanguageModel = class {
4501
4502
  let stopDetails = void 0;
4502
4503
  let container = null;
4503
4504
  let isJsonResponseFromTool = false;
4505
+ let isMessageOpen = false;
4506
+ let activeMessageId;
4507
+ let hasInvalidMessageSequence = false;
4504
4508
  let blockType = void 0;
4505
4509
  const generateId2 = this.generateId;
4506
4510
  const transformedStream = response.pipeThrough(
@@ -4510,6 +4514,9 @@ var AnthropicMessagesLanguageModel = class {
4510
4514
  },
4511
4515
  transform(chunk, controller) {
4512
4516
  var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
4517
+ if (hasInvalidMessageSequence) {
4518
+ return;
4519
+ }
4513
4520
  if (options.includeRawChunks) {
4514
4521
  controller.enqueue({ type: "raw", rawValue: chunk.rawValue });
4515
4522
  }
@@ -5130,6 +5137,22 @@ var AnthropicMessagesLanguageModel = class {
5130
5137
  }
5131
5138
  }
5132
5139
  case "message_start": {
5140
+ if (isMessageOpen) {
5141
+ if (activeMessageId === value.message.id) {
5142
+ return;
5143
+ }
5144
+ hasInvalidMessageSequence = true;
5145
+ controller.enqueue({
5146
+ type: "error",
5147
+ error: new InvalidResponseDataError({
5148
+ data: value,
5149
+ message: `Received message_start for message ${JSON.stringify(value.message.id)} while message ${JSON.stringify(activeMessageId)} is still open.`
5150
+ })
5151
+ });
5152
+ return;
5153
+ }
5154
+ isMessageOpen = true;
5155
+ activeMessageId = value.message.id;
5133
5156
  usage.input_tokens = value.message.usage.input_tokens;
5134
5157
  usage.cache_read_input_tokens = (_e = value.message.usage.cache_read_input_tokens) != null ? _e : 0;
5135
5158
  usage.cache_creation_input_tokens = (_f = value.message.usage.cache_creation_input_tokens) != null ? _f : 0;
@@ -5248,6 +5271,8 @@ var AnthropicMessagesLanguageModel = class {
5248
5271
  return;
5249
5272
  }
5250
5273
  case "message_stop": {
5274
+ isMessageOpen = false;
5275
+ activeMessageId = void 0;
5251
5276
  const anthropicMetadata = {
5252
5277
  usage: rawUsage != null ? rawUsage : null,
5253
5278
  cacheCreationInputTokens,