ai 6.0.294 → 6.0.295

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,13 @@
1
1
  # ai
2
2
 
3
+ ## 6.0.295
4
+
5
+ ### Patch Changes
6
+
7
+ - 0b38b6b: fix(ai): continue active UI message parts when resuming after a disconnect
8
+ - Updated dependencies [358683e]
9
+ - @ai-sdk/gateway@3.0.205
10
+
3
11
  ## 6.0.294
4
12
 
5
13
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -3862,6 +3862,7 @@ declare abstract class AbstractChat<UI_MESSAGE extends UIMessage> {
3862
3862
  private pendingApprovalMessageId;
3863
3863
  private activeResponse;
3864
3864
  private activeResumeRequest;
3865
+ private resumableStreamState;
3865
3866
  private jobExecutor;
3866
3867
  constructor({ generateId, id, transport, messageMetadataSchema, dataPartSchemas, state, onError, onToolCall, onFinish, onData, sendAutomaticallyWhen, }: Omit<ChatInit<UI_MESSAGE>, 'messages'> & {
3867
3868
  state: ChatState<UI_MESSAGE>;
package/dist/index.d.ts CHANGED
@@ -3862,6 +3862,7 @@ declare abstract class AbstractChat<UI_MESSAGE extends UIMessage> {
3862
3862
  private pendingApprovalMessageId;
3863
3863
  private activeResponse;
3864
3864
  private activeResumeRequest;
3865
+ private resumableStreamState;
3865
3866
  private jobExecutor;
3866
3867
  constructor({ generateId, id, transport, messageMetadataSchema, dataPartSchemas, state, onError, onToolCall, onFinish, onData, sendAutomaticallyWhen, }: Omit<ChatInit<UI_MESSAGE>, 'messages'> & {
3867
3868
  state: ChatState<UI_MESSAGE>;
package/dist/index.js CHANGED
@@ -1334,7 +1334,7 @@ function detectMediaType({
1334
1334
  var import_provider_utils3 = require("@ai-sdk/provider-utils");
1335
1335
 
1336
1336
  // src/version.ts
1337
- var VERSION = true ? "6.0.294" : "0.0.0-test";
1337
+ var VERSION = true ? "6.0.295" : "0.0.0-test";
1338
1338
 
1339
1339
  // src/util/download/download.ts
1340
1340
  var download = async ({
@@ -14450,6 +14450,7 @@ var AbstractChat = class {
14450
14450
  }) {
14451
14451
  this.activeResponse = void 0;
14452
14452
  this.activeResumeRequest = void 0;
14453
+ this.resumableStreamState = void 0;
14453
14454
  this.jobExecutor = new SerialJobExecutor();
14454
14455
  /**
14455
14456
  * Appends or replaces a user message to the chat list. This triggers the API call to fetch
@@ -14729,6 +14730,9 @@ var AbstractChat = class {
14729
14730
  messageId
14730
14731
  }) {
14731
14732
  var _a23, _b, _c;
14733
+ if (trigger !== "resume-stream") {
14734
+ this.resumableStreamState = void 0;
14735
+ }
14732
14736
  const abortController = new AbortController();
14733
14737
  const activeResumeRequest = trigger === "resume-stream" ? { abortController } : void 0;
14734
14738
  if (activeResumeRequest) {
@@ -14756,12 +14760,14 @@ var AbstractChat = class {
14756
14760
  }));
14757
14761
  if (isCurrentRequest()) {
14758
14762
  this.setStatus({ status: "ready" });
14763
+ this.resumableStreamState = void 0;
14759
14764
  }
14760
14765
  clearActiveResumeRequest();
14761
14766
  return;
14762
14767
  }
14763
14768
  if (reconnect == null) {
14764
14769
  this.setStatus({ status: "ready" });
14770
+ this.resumableStreamState = void 0;
14765
14771
  clearActiveResumeRequest();
14766
14772
  return;
14767
14773
  }
@@ -14770,6 +14776,7 @@ var AbstractChat = class {
14770
14776
  if (abortController.signal.aborted || err.name === "AbortError") {
14771
14777
  if (isCurrentRequest()) {
14772
14778
  this.setStatus({ status: "ready" });
14779
+ this.resumableStreamState = void 0;
14773
14780
  }
14774
14781
  clearActiveResumeRequest();
14775
14782
  return;
@@ -14796,7 +14803,7 @@ var AbstractChat = class {
14796
14803
  let activeResponse;
14797
14804
  try {
14798
14805
  const response = {
14799
- state: createStreamingUIMessageState({
14806
+ state: trigger === "resume-stream" && this.resumableStreamState != null ? this.resumableStreamState : createStreamingUIMessageState({
14800
14807
  lastMessage: trigger === "resume-stream" || trigger === "regenerate-message" ? void 0 : this.state.snapshot(responseMessage),
14801
14808
  messageId: this.generateId()
14802
14809
  }),
@@ -14875,17 +14882,26 @@ var AbstractChat = class {
14875
14882
  if (isAbort) {
14876
14883
  if (isCurrentRequest()) {
14877
14884
  this.setStatus({ status: "ready" });
14885
+ if (this.resumableStreamState === response.state) {
14886
+ this.resumableStreamState = void 0;
14887
+ }
14878
14888
  }
14879
14889
  return null;
14880
14890
  }
14881
14891
  if (isCurrentRequest()) {
14882
14892
  this.setStatus({ status: "ready" });
14893
+ if (this.resumableStreamState === response.state) {
14894
+ this.resumableStreamState = void 0;
14895
+ }
14883
14896
  }
14884
14897
  } catch (err) {
14885
14898
  if (isAbort || err.name === "AbortError") {
14886
14899
  isAbort = true;
14887
14900
  if (isCurrentRequest()) {
14888
14901
  this.setStatus({ status: "ready" });
14902
+ if (this.resumableStreamState === (activeResponse == null ? void 0 : activeResponse.state)) {
14903
+ this.resumableStreamState = void 0;
14904
+ }
14889
14905
  }
14890
14906
  return null;
14891
14907
  }
@@ -14896,6 +14912,11 @@ var AbstractChat = class {
14896
14912
  if (err instanceof TypeError && (err.message.toLowerCase().includes("fetch") || err.message.toLowerCase().includes("network"))) {
14897
14913
  isDisconnect = true;
14898
14914
  }
14915
+ if (isDisconnect) {
14916
+ this.resumableStreamState = activeResponse == null ? void 0 : activeResponse.state;
14917
+ } else if (this.resumableStreamState === (activeResponse == null ? void 0 : activeResponse.state)) {
14918
+ this.resumableStreamState = void 0;
14919
+ }
14899
14920
  if (this.onError && err instanceof Error) {
14900
14921
  this.onError(err);
14901
14922
  }