@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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # @ai-sdk/anthropic
2
2
 
3
+ ## 2.0.95
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [0e51b7b]
8
+ - @ai-sdk/provider-utils@3.0.32
9
+
10
+ ## 2.0.94
11
+
12
+ ### Patch Changes
13
+
14
+ - e7afc18: Reject spliced Anthropic generations while allowing duplicate message start events for the active message.
15
+
3
16
  ## 2.0.93
4
17
 
5
18
  ### Patch Changes
package/dist/index.js CHANGED
@@ -31,7 +31,7 @@ var import_provider4 = require("@ai-sdk/provider");
31
31
  var import_provider_utils20 = require("@ai-sdk/provider-utils");
32
32
 
33
33
  // src/version.ts
34
- var VERSION = true ? "2.0.93" : "0.0.0-test";
34
+ var VERSION = true ? "2.0.95" : "0.0.0-test";
35
35
 
36
36
  // src/anthropic-messages-language-model.ts
37
37
  var import_provider3 = require("@ai-sdk/provider");
@@ -3097,6 +3097,9 @@ var AnthropicMessagesLanguageModel = class {
3097
3097
  let container = null;
3098
3098
  let iterations = null;
3099
3099
  let contextManagement = null;
3100
+ let isMessageOpen = false;
3101
+ let activeMessageId;
3102
+ let hasInvalidMessageSequence = false;
3100
3103
  let blockType = void 0;
3101
3104
  const generateId3 = this.generateId;
3102
3105
  const transformedStream = response.pipeThrough(
@@ -3106,6 +3109,9 @@ var AnthropicMessagesLanguageModel = class {
3106
3109
  },
3107
3110
  transform(chunk, controller) {
3108
3111
  var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k;
3112
+ if (hasInvalidMessageSequence) {
3113
+ return;
3114
+ }
3109
3115
  if (options.includeRawChunks) {
3110
3116
  controller.enqueue({ type: "raw", rawValue: chunk.rawValue });
3111
3117
  }
@@ -3509,6 +3515,22 @@ var AnthropicMessagesLanguageModel = class {
3509
3515
  }
3510
3516
  }
3511
3517
  case "message_start": {
3518
+ if (isMessageOpen) {
3519
+ if (activeMessageId === value.message.id) {
3520
+ return;
3521
+ }
3522
+ hasInvalidMessageSequence = true;
3523
+ controller.enqueue({
3524
+ type: "error",
3525
+ error: new import_provider3.InvalidResponseDataError({
3526
+ data: value,
3527
+ message: `Received message_start for message ${JSON.stringify(value.message.id)} while message ${JSON.stringify(activeMessageId)} is still open.`
3528
+ })
3529
+ });
3530
+ return;
3531
+ }
3532
+ isMessageOpen = true;
3533
+ activeMessageId = value.message.id;
3512
3534
  usage.inputTokens = value.message.usage.input_tokens;
3513
3535
  usage.cachedInputTokens = (_b2 = value.message.usage.cache_read_input_tokens) != null ? _b2 : void 0;
3514
3536
  rawUsage = {
@@ -3601,6 +3623,8 @@ var AnthropicMessagesLanguageModel = class {
3601
3623
  return;
3602
3624
  }
3603
3625
  case "message_stop": {
3626
+ isMessageOpen = false;
3627
+ activeMessageId = void 0;
3604
3628
  controller.enqueue({
3605
3629
  type: "finish",
3606
3630
  finishReason,