ai 3.2.0 → 3.2.1

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.js CHANGED
@@ -92,14 +92,14 @@ __export(streams_exports, {
92
92
  experimental_generateText: () => experimental_generateText,
93
93
  experimental_streamObject: () => experimental_streamObject,
94
94
  experimental_streamText: () => experimental_streamText,
95
- formatStreamPart: () => import_ui_utils5.formatStreamPart,
95
+ formatStreamPart: () => import_ui_utils6.formatStreamPart,
96
96
  generateId: () => generateId2,
97
97
  generateObject: () => generateObject,
98
98
  generateText: () => generateText,
99
99
  nanoid: () => nanoid,
100
- parseComplexResponse: () => import_ui_utils5.parseComplexResponse,
101
- parseStreamPart: () => import_ui_utils5.parseStreamPart,
102
- readDataStream: () => import_ui_utils5.readDataStream,
100
+ parseComplexResponse: () => import_ui_utils6.parseComplexResponse,
101
+ parseStreamPart: () => import_ui_utils6.parseStreamPart,
102
+ readDataStream: () => import_ui_utils6.readDataStream,
103
103
  readableFromAsyncIterable: () => readableFromAsyncIterable,
104
104
  streamObject: () => streamObject,
105
105
  streamText: () => streamText,
@@ -108,7 +108,7 @@ __export(streams_exports, {
108
108
  trimStartOfStreamHelper: () => trimStartOfStreamHelper
109
109
  });
110
110
  module.exports = __toCommonJS(streams_exports);
111
- var import_ui_utils5 = require("@ai-sdk/ui-utils");
111
+ var import_ui_utils6 = require("@ai-sdk/ui-utils");
112
112
  var import_provider_utils7 = require("@ai-sdk/provider-utils");
113
113
 
114
114
  // core/util/retry-with-exponential-backoff.ts
@@ -768,6 +768,10 @@ var GenerateObjectResult = class {
768
768
  };
769
769
  var experimental_generateObject = generateObject;
770
770
 
771
+ // core/generate-object/stream-object.ts
772
+ var import_provider_utils5 = require("@ai-sdk/provider-utils");
773
+ var import_ui_utils = require("@ai-sdk/ui-utils");
774
+
771
775
  // core/util/async-iterable-stream.ts
772
776
  function createAsyncIterableStream(source, transformer) {
773
777
  const transformedStream = source.pipeThrough(
@@ -785,381 +789,17 @@ function createAsyncIterableStream(source, transformer) {
785
789
  return transformedStream;
786
790
  }
787
791
 
788
- // core/util/is-deep-equal-data.ts
789
- function isDeepEqualData(obj1, obj2) {
790
- if (obj1 === obj2)
791
- return true;
792
- if (obj1 == null || obj2 == null)
793
- return false;
794
- if (typeof obj1 !== "object" && typeof obj2 !== "object")
795
- return obj1 === obj2;
796
- if (obj1.constructor !== obj2.constructor)
797
- return false;
798
- if (obj1 instanceof Date && obj2 instanceof Date) {
799
- return obj1.getTime() === obj2.getTime();
800
- }
801
- if (Array.isArray(obj1)) {
802
- if (obj1.length !== obj2.length)
803
- return false;
804
- for (let i = 0; i < obj1.length; i++) {
805
- if (!isDeepEqualData(obj1[i], obj2[i]))
806
- return false;
807
- }
808
- return true;
809
- }
810
- const keys1 = Object.keys(obj1);
811
- const keys2 = Object.keys(obj2);
812
- if (keys1.length !== keys2.length)
813
- return false;
814
- for (const key of keys1) {
815
- if (!keys2.includes(key))
816
- return false;
817
- if (!isDeepEqualData(obj1[key], obj2[key]))
818
- return false;
819
- }
820
- return true;
821
- }
822
-
823
- // core/util/parse-partial-json.ts
824
- var import_secure_json_parse = __toESM(require("secure-json-parse"));
825
-
826
- // core/util/fix-json.ts
827
- function fixJson(input) {
828
- const stack = ["ROOT"];
829
- let lastValidIndex = -1;
830
- let literalStart = null;
831
- function processValueStart(char, i, swapState) {
832
- {
833
- switch (char) {
834
- case '"': {
835
- lastValidIndex = i;
836
- stack.pop();
837
- stack.push(swapState);
838
- stack.push("INSIDE_STRING");
839
- break;
840
- }
841
- case "f":
842
- case "t":
843
- case "n": {
844
- lastValidIndex = i;
845
- literalStart = i;
846
- stack.pop();
847
- stack.push(swapState);
848
- stack.push("INSIDE_LITERAL");
849
- break;
850
- }
851
- case "-": {
852
- stack.pop();
853
- stack.push(swapState);
854
- stack.push("INSIDE_NUMBER");
855
- break;
856
- }
857
- case "0":
858
- case "1":
859
- case "2":
860
- case "3":
861
- case "4":
862
- case "5":
863
- case "6":
864
- case "7":
865
- case "8":
866
- case "9": {
867
- lastValidIndex = i;
868
- stack.pop();
869
- stack.push(swapState);
870
- stack.push("INSIDE_NUMBER");
871
- break;
872
- }
873
- case "{": {
874
- lastValidIndex = i;
875
- stack.pop();
876
- stack.push(swapState);
877
- stack.push("INSIDE_OBJECT_START");
878
- break;
879
- }
880
- case "[": {
881
- lastValidIndex = i;
882
- stack.pop();
883
- stack.push(swapState);
884
- stack.push("INSIDE_ARRAY_START");
885
- break;
886
- }
887
- }
888
- }
889
- }
890
- function processAfterObjectValue(char, i) {
891
- switch (char) {
892
- case ",": {
893
- stack.pop();
894
- stack.push("INSIDE_OBJECT_AFTER_COMMA");
895
- break;
896
- }
897
- case "}": {
898
- lastValidIndex = i;
899
- stack.pop();
900
- break;
901
- }
902
- }
903
- }
904
- function processAfterArrayValue(char, i) {
905
- switch (char) {
906
- case ",": {
907
- stack.pop();
908
- stack.push("INSIDE_ARRAY_AFTER_COMMA");
909
- break;
910
- }
911
- case "]": {
912
- lastValidIndex = i;
913
- stack.pop();
914
- break;
915
- }
916
- }
917
- }
918
- for (let i = 0; i < input.length; i++) {
919
- const char = input[i];
920
- const currentState = stack[stack.length - 1];
921
- switch (currentState) {
922
- case "ROOT":
923
- processValueStart(char, i, "FINISH");
924
- break;
925
- case "INSIDE_OBJECT_START": {
926
- switch (char) {
927
- case '"': {
928
- stack.pop();
929
- stack.push("INSIDE_OBJECT_KEY");
930
- break;
931
- }
932
- case "}": {
933
- lastValidIndex = i;
934
- stack.pop();
935
- break;
936
- }
937
- }
938
- break;
939
- }
940
- case "INSIDE_OBJECT_AFTER_COMMA": {
941
- switch (char) {
942
- case '"': {
943
- stack.pop();
944
- stack.push("INSIDE_OBJECT_KEY");
945
- break;
946
- }
947
- }
948
- break;
949
- }
950
- case "INSIDE_OBJECT_KEY": {
951
- switch (char) {
952
- case '"': {
953
- stack.pop();
954
- stack.push("INSIDE_OBJECT_AFTER_KEY");
955
- break;
956
- }
957
- }
958
- break;
959
- }
960
- case "INSIDE_OBJECT_AFTER_KEY": {
961
- switch (char) {
962
- case ":": {
963
- stack.pop();
964
- stack.push("INSIDE_OBJECT_BEFORE_VALUE");
965
- break;
966
- }
967
- }
968
- break;
969
- }
970
- case "INSIDE_OBJECT_BEFORE_VALUE": {
971
- processValueStart(char, i, "INSIDE_OBJECT_AFTER_VALUE");
972
- break;
973
- }
974
- case "INSIDE_OBJECT_AFTER_VALUE": {
975
- processAfterObjectValue(char, i);
976
- break;
977
- }
978
- case "INSIDE_STRING": {
979
- switch (char) {
980
- case '"': {
981
- stack.pop();
982
- lastValidIndex = i;
983
- break;
984
- }
985
- case "\\": {
986
- stack.push("INSIDE_STRING_ESCAPE");
987
- break;
988
- }
989
- default: {
990
- lastValidIndex = i;
991
- }
992
- }
993
- break;
994
- }
995
- case "INSIDE_ARRAY_START": {
996
- switch (char) {
997
- case "]": {
998
- lastValidIndex = i;
999
- stack.pop();
1000
- break;
1001
- }
1002
- default: {
1003
- lastValidIndex = i;
1004
- processValueStart(char, i, "INSIDE_ARRAY_AFTER_VALUE");
1005
- break;
1006
- }
1007
- }
1008
- break;
1009
- }
1010
- case "INSIDE_ARRAY_AFTER_VALUE": {
1011
- switch (char) {
1012
- case ",": {
1013
- stack.pop();
1014
- stack.push("INSIDE_ARRAY_AFTER_COMMA");
1015
- break;
1016
- }
1017
- case "]": {
1018
- lastValidIndex = i;
1019
- stack.pop();
1020
- break;
1021
- }
1022
- default: {
1023
- lastValidIndex = i;
1024
- break;
1025
- }
1026
- }
1027
- break;
1028
- }
1029
- case "INSIDE_ARRAY_AFTER_COMMA": {
1030
- processValueStart(char, i, "INSIDE_ARRAY_AFTER_VALUE");
1031
- break;
1032
- }
1033
- case "INSIDE_STRING_ESCAPE": {
1034
- stack.pop();
1035
- lastValidIndex = i;
1036
- break;
1037
- }
1038
- case "INSIDE_NUMBER": {
1039
- switch (char) {
1040
- case "0":
1041
- case "1":
1042
- case "2":
1043
- case "3":
1044
- case "4":
1045
- case "5":
1046
- case "6":
1047
- case "7":
1048
- case "8":
1049
- case "9": {
1050
- lastValidIndex = i;
1051
- break;
1052
- }
1053
- case "e":
1054
- case "E":
1055
- case "-":
1056
- case ".": {
1057
- break;
1058
- }
1059
- case ",": {
1060
- stack.pop();
1061
- if (stack[stack.length - 1] === "INSIDE_ARRAY_AFTER_VALUE") {
1062
- processAfterArrayValue(char, i);
1063
- }
1064
- if (stack[stack.length - 1] === "INSIDE_OBJECT_AFTER_VALUE") {
1065
- processAfterObjectValue(char, i);
1066
- }
1067
- break;
1068
- }
1069
- case "}": {
1070
- stack.pop();
1071
- if (stack[stack.length - 1] === "INSIDE_OBJECT_AFTER_VALUE") {
1072
- processAfterObjectValue(char, i);
1073
- }
1074
- break;
1075
- }
1076
- case "]": {
1077
- stack.pop();
1078
- if (stack[stack.length - 1] === "INSIDE_ARRAY_AFTER_VALUE") {
1079
- processAfterArrayValue(char, i);
1080
- }
1081
- break;
1082
- }
1083
- default: {
1084
- stack.pop();
1085
- break;
1086
- }
1087
- }
1088
- break;
1089
- }
1090
- case "INSIDE_LITERAL": {
1091
- const partialLiteral = input.substring(literalStart, i + 1);
1092
- if (!"false".startsWith(partialLiteral) && !"true".startsWith(partialLiteral) && !"null".startsWith(partialLiteral)) {
1093
- stack.pop();
1094
- if (stack[stack.length - 1] === "INSIDE_OBJECT_AFTER_VALUE") {
1095
- processAfterObjectValue(char, i);
1096
- } else if (stack[stack.length - 1] === "INSIDE_ARRAY_AFTER_VALUE") {
1097
- processAfterArrayValue(char, i);
1098
- }
1099
- } else {
1100
- lastValidIndex = i;
1101
- }
1102
- break;
1103
- }
1104
- }
1105
- }
1106
- let result = input.slice(0, lastValidIndex + 1);
1107
- for (let i = stack.length - 1; i >= 0; i--) {
1108
- const state = stack[i];
1109
- switch (state) {
1110
- case "INSIDE_STRING": {
1111
- result += '"';
1112
- break;
1113
- }
1114
- case "INSIDE_OBJECT_KEY":
1115
- case "INSIDE_OBJECT_AFTER_KEY":
1116
- case "INSIDE_OBJECT_AFTER_COMMA":
1117
- case "INSIDE_OBJECT_START":
1118
- case "INSIDE_OBJECT_BEFORE_VALUE":
1119
- case "INSIDE_OBJECT_AFTER_VALUE": {
1120
- result += "}";
1121
- break;
1122
- }
1123
- case "INSIDE_ARRAY_START":
1124
- case "INSIDE_ARRAY_AFTER_COMMA":
1125
- case "INSIDE_ARRAY_AFTER_VALUE": {
1126
- result += "]";
1127
- break;
1128
- }
1129
- case "INSIDE_LITERAL": {
1130
- const partialLiteral = input.substring(literalStart, input.length);
1131
- if ("true".startsWith(partialLiteral)) {
1132
- result += "true".slice(partialLiteral.length);
1133
- } else if ("false".startsWith(partialLiteral)) {
1134
- result += "false".slice(partialLiteral.length);
1135
- } else if ("null".startsWith(partialLiteral)) {
1136
- result += "null".slice(partialLiteral.length);
1137
- }
1138
- }
1139
- }
1140
- }
1141
- return result;
1142
- }
1143
-
1144
- // core/util/parse-partial-json.ts
1145
- function parsePartialJson(jsonText) {
1146
- if (jsonText == null) {
1147
- return void 0;
1148
- }
1149
- try {
1150
- return import_secure_json_parse.default.parse(jsonText);
1151
- } catch (ignored) {
1152
- try {
1153
- const fixedJsonText = fixJson(jsonText);
1154
- return import_secure_json_parse.default.parse(fixedJsonText);
1155
- } catch (ignored2) {
1156
- }
792
+ // core/util/prepare-response-headers.ts
793
+ function prepareResponseHeaders(init, { contentType }) {
794
+ var _a;
795
+ const headers = new Headers((_a = init == null ? void 0 : init.headers) != null ? _a : {});
796
+ if (!headers.has("Content-Type")) {
797
+ headers.set("Content-Type", contentType);
1157
798
  }
1158
- return void 0;
799
+ return headers;
1159
800
  }
1160
801
 
1161
802
  // core/generate-object/stream-object.ts
1162
- var import_provider_utils5 = require("@ai-sdk/provider-utils");
1163
803
  async function streamObject({
1164
804
  model,
1165
805
  schema,
@@ -1313,23 +953,39 @@ var StreamObjectResult = class {
1313
953
  let object;
1314
954
  let error;
1315
955
  let accumulatedText = "";
956
+ let delta = "";
1316
957
  let latestObject = void 0;
1317
958
  this.originalStream = stream.pipeThrough(
1318
959
  new TransformStream({
1319
960
  async transform(chunk, controller) {
1320
961
  if (typeof chunk === "string") {
1321
962
  accumulatedText += chunk;
1322
- const currentObject = parsePartialJson(
963
+ delta += chunk;
964
+ const currentObject = (0, import_ui_utils.parsePartialJson)(
1323
965
  accumulatedText
1324
966
  );
1325
- if (!isDeepEqualData(latestObject, currentObject)) {
967
+ if (!(0, import_ui_utils.isDeepEqualData)(latestObject, currentObject)) {
1326
968
  latestObject = currentObject;
1327
- controller.enqueue({ type: "object", object: currentObject });
969
+ controller.enqueue({
970
+ type: "object",
971
+ object: currentObject
972
+ });
973
+ controller.enqueue({
974
+ type: "text-delta",
975
+ textDelta: delta
976
+ });
977
+ delta = "";
1328
978
  }
1329
979
  return;
1330
980
  }
1331
981
  switch (chunk.type) {
1332
982
  case "finish": {
983
+ if (delta !== "") {
984
+ controller.enqueue({
985
+ type: "text-delta",
986
+ textDelta: delta
987
+ });
988
+ }
1333
989
  usage = calculateTokenUsage(chunk.usage);
1334
990
  controller.enqueue({ ...chunk, usage });
1335
991
  resolveUsage(usage);
@@ -1373,6 +1029,12 @@ var StreamObjectResult = class {
1373
1029
  })
1374
1030
  );
1375
1031
  }
1032
+ /**
1033
+ Stream of partial objects. It gets more complete as the stream progresses.
1034
+
1035
+ Note that the partial object is not validated.
1036
+ If you want to be certain that the actual content matches your schema, you need to implement your own validation for partial results.
1037
+ */
1376
1038
  get partialObjectStream() {
1377
1039
  return createAsyncIterableStream(this.originalStream, {
1378
1040
  transform(chunk, controller) {
@@ -1380,6 +1042,7 @@ var StreamObjectResult = class {
1380
1042
  case "object":
1381
1043
  controller.enqueue(chunk.object);
1382
1044
  break;
1045
+ case "text-delta":
1383
1046
  case "finish":
1384
1047
  break;
1385
1048
  case "error":
@@ -1393,6 +1056,34 @@ var StreamObjectResult = class {
1393
1056
  }
1394
1057
  });
1395
1058
  }
1059
+ /**
1060
+ Text stream of the JSON representation of the generated object. It contains text chunks.
1061
+ When the stream is finished, the object is valid JSON that can be parsed.
1062
+ */
1063
+ get textStream() {
1064
+ return createAsyncIterableStream(this.originalStream, {
1065
+ transform(chunk, controller) {
1066
+ switch (chunk.type) {
1067
+ case "text-delta":
1068
+ controller.enqueue(chunk.textDelta);
1069
+ break;
1070
+ case "object":
1071
+ case "finish":
1072
+ break;
1073
+ case "error":
1074
+ controller.error(chunk.error);
1075
+ break;
1076
+ default: {
1077
+ const _exhaustiveCheck = chunk;
1078
+ throw new Error(`Unsupported chunk type: ${_exhaustiveCheck}`);
1079
+ }
1080
+ }
1081
+ }
1082
+ });
1083
+ }
1084
+ /**
1085
+ Stream of different types of events, including partial objects, errors, and finish events.
1086
+ */
1396
1087
  get fullStream() {
1397
1088
  return createAsyncIterableStream(this.originalStream, {
1398
1089
  transform(chunk, controller) {
@@ -1400,6 +1091,53 @@ var StreamObjectResult = class {
1400
1091
  }
1401
1092
  });
1402
1093
  }
1094
+ /**
1095
+ Writes text delta output to a Node.js response-like object.
1096
+ It sets a `Content-Type` header to `text/plain; charset=utf-8` and
1097
+ writes each text delta as a separate chunk.
1098
+
1099
+ @param response A Node.js response-like object (ServerResponse).
1100
+ @param init Optional headers and status code.
1101
+ */
1102
+ pipeTextStreamToResponse(response, init) {
1103
+ var _a;
1104
+ response.writeHead((_a = init == null ? void 0 : init.status) != null ? _a : 200, {
1105
+ "Content-Type": "text/plain; charset=utf-8",
1106
+ ...init == null ? void 0 : init.headers
1107
+ });
1108
+ const reader = this.textStream.pipeThrough(new TextEncoderStream()).getReader();
1109
+ const read = async () => {
1110
+ try {
1111
+ while (true) {
1112
+ const { done, value } = await reader.read();
1113
+ if (done)
1114
+ break;
1115
+ response.write(value);
1116
+ }
1117
+ } catch (error) {
1118
+ throw error;
1119
+ } finally {
1120
+ response.end();
1121
+ }
1122
+ };
1123
+ read();
1124
+ }
1125
+ /**
1126
+ Creates a simple text stream response.
1127
+ Each text delta is encoded as UTF-8 and sent as a separate chunk.
1128
+ Non-text-delta events are ignored.
1129
+
1130
+ @param init Optional headers and status code.
1131
+ */
1132
+ toTextStreamResponse(init) {
1133
+ var _a;
1134
+ return new Response(this.textStream.pipeThrough(new TextEncoderStream()), {
1135
+ status: (_a = init == null ? void 0 : init.status) != null ? _a : 200,
1136
+ headers: prepareResponseHeaders(init, {
1137
+ contentType: "text/plain; charset=utf-8"
1138
+ })
1139
+ });
1140
+ }
1403
1141
  };
1404
1142
  var experimental_streamObject = streamObject;
1405
1143
 
@@ -1601,19 +1339,9 @@ function toResponseMessages({
1601
1339
  }
1602
1340
  var experimental_generateText = generateText;
1603
1341
 
1604
- // core/util/prepare-response-headers.ts
1605
- function prepareResponseHeaders(init, { contentType }) {
1606
- var _a;
1607
- const headers = new Headers((_a = init == null ? void 0 : init.headers) != null ? _a : {});
1608
- if (!headers.has("Content-Type")) {
1609
- headers.set("Content-Type", contentType);
1610
- }
1611
- return headers;
1612
- }
1613
-
1614
1342
  // core/generate-text/run-tools-transformation.ts
1615
1343
  var import_provider7 = require("@ai-sdk/provider");
1616
- var import_ui_utils = require("@ai-sdk/ui-utils");
1344
+ var import_ui_utils2 = require("@ai-sdk/ui-utils");
1617
1345
  function runToolsTransformation({
1618
1346
  tools,
1619
1347
  generatorStream
@@ -1662,7 +1390,7 @@ function runToolsTransformation({
1662
1390
  });
1663
1391
  controller.enqueue(toolCall);
1664
1392
  if (tool2.execute != null) {
1665
- const toolExecutionId = (0, import_ui_utils.generateId)();
1393
+ const toolExecutionId = (0, import_ui_utils2.generateId)();
1666
1394
  outstandingToolCalls.add(toolExecutionId);
1667
1395
  tool2.execute(toolCall.args).then(
1668
1396
  (result) => {
@@ -1960,11 +1688,11 @@ var StreamTextResult = class {
1960
1688
  transform: async (chunk, controller) => {
1961
1689
  switch (chunk.type) {
1962
1690
  case "text-delta":
1963
- controller.enqueue((0, import_ui_utils5.formatStreamPart)("text", chunk.textDelta));
1691
+ controller.enqueue((0, import_ui_utils6.formatStreamPart)("text", chunk.textDelta));
1964
1692
  break;
1965
1693
  case "tool-call":
1966
1694
  controller.enqueue(
1967
- (0, import_ui_utils5.formatStreamPart)("tool_call", {
1695
+ (0, import_ui_utils6.formatStreamPart)("tool_call", {
1968
1696
  toolCallId: chunk.toolCallId,
1969
1697
  toolName: chunk.toolName,
1970
1698
  args: chunk.args
@@ -1973,7 +1701,7 @@ var StreamTextResult = class {
1973
1701
  break;
1974
1702
  case "tool-result":
1975
1703
  controller.enqueue(
1976
- (0, import_ui_utils5.formatStreamPart)("tool_result", {
1704
+ (0, import_ui_utils6.formatStreamPart)("tool_result", {
1977
1705
  toolCallId: chunk.toolCallId,
1978
1706
  toolName: chunk.toolName,
1979
1707
  args: chunk.args,
@@ -1983,7 +1711,7 @@ var StreamTextResult = class {
1983
1711
  break;
1984
1712
  case "error":
1985
1713
  controller.enqueue(
1986
- (0, import_ui_utils5.formatStreamPart)("error", JSON.stringify(chunk.error))
1714
+ (0, import_ui_utils6.formatStreamPart)("error", JSON.stringify(chunk.error))
1987
1715
  );
1988
1716
  break;
1989
1717
  }
@@ -2412,7 +2140,7 @@ function readableFromAsyncIterable(iterable) {
2412
2140
  }
2413
2141
 
2414
2142
  // streams/stream-data.ts
2415
- var import_ui_utils2 = require("@ai-sdk/ui-utils");
2143
+ var import_ui_utils3 = require("@ai-sdk/ui-utils");
2416
2144
  var StreamData = class {
2417
2145
  constructor() {
2418
2146
  this.encoder = new TextEncoder();
@@ -2459,7 +2187,7 @@ var StreamData = class {
2459
2187
  throw new Error("Stream controller is not initialized.");
2460
2188
  }
2461
2189
  this.controller.enqueue(
2462
- this.encoder.encode((0, import_ui_utils2.formatStreamPart)("data", [value]))
2190
+ this.encoder.encode((0, import_ui_utils3.formatStreamPart)("data", [value]))
2463
2191
  );
2464
2192
  }
2465
2193
  appendMessageAnnotation(value) {
@@ -2470,7 +2198,7 @@ var StreamData = class {
2470
2198
  throw new Error("Stream controller is not initialized.");
2471
2199
  }
2472
2200
  this.controller.enqueue(
2473
- this.encoder.encode((0, import_ui_utils2.formatStreamPart)("message_annotations", [value]))
2201
+ this.encoder.encode((0, import_ui_utils3.formatStreamPart)("message_annotations", [value]))
2474
2202
  );
2475
2203
  }
2476
2204
  };
@@ -2480,7 +2208,7 @@ function createStreamDataTransformer() {
2480
2208
  return new TransformStream({
2481
2209
  transform: async (chunk, controller) => {
2482
2210
  const message = decoder.decode(chunk);
2483
- controller.enqueue(encoder.encode((0, import_ui_utils2.formatStreamPart)("text", message)));
2211
+ controller.enqueue(encoder.encode((0, import_ui_utils3.formatStreamPart)("text", message)));
2484
2212
  }
2485
2213
  });
2486
2214
  }
@@ -2534,7 +2262,7 @@ function AnthropicStream(res, cb) {
2534
2262
  }
2535
2263
 
2536
2264
  // streams/assistant-response.ts
2537
- var import_ui_utils3 = require("@ai-sdk/ui-utils");
2265
+ var import_ui_utils4 = require("@ai-sdk/ui-utils");
2538
2266
  function AssistantResponse({ threadId, messageId }, process2) {
2539
2267
  const stream = new ReadableStream({
2540
2268
  async start(controller) {
@@ -2542,17 +2270,17 @@ function AssistantResponse({ threadId, messageId }, process2) {
2542
2270
  const textEncoder = new TextEncoder();
2543
2271
  const sendMessage = (message) => {
2544
2272
  controller.enqueue(
2545
- textEncoder.encode((0, import_ui_utils3.formatStreamPart)("assistant_message", message))
2273
+ textEncoder.encode((0, import_ui_utils4.formatStreamPart)("assistant_message", message))
2546
2274
  );
2547
2275
  };
2548
2276
  const sendDataMessage = (message) => {
2549
2277
  controller.enqueue(
2550
- textEncoder.encode((0, import_ui_utils3.formatStreamPart)("data_message", message))
2278
+ textEncoder.encode((0, import_ui_utils4.formatStreamPart)("data_message", message))
2551
2279
  );
2552
2280
  };
2553
2281
  const sendError = (errorMessage) => {
2554
2282
  controller.enqueue(
2555
- textEncoder.encode((0, import_ui_utils3.formatStreamPart)("error", errorMessage))
2283
+ textEncoder.encode((0, import_ui_utils4.formatStreamPart)("error", errorMessage))
2556
2284
  );
2557
2285
  };
2558
2286
  const forwardStream = async (stream2) => {
@@ -2563,7 +2291,7 @@ function AssistantResponse({ threadId, messageId }, process2) {
2563
2291
  case "thread.message.created": {
2564
2292
  controller.enqueue(
2565
2293
  textEncoder.encode(
2566
- (0, import_ui_utils3.formatStreamPart)("assistant_message", {
2294
+ (0, import_ui_utils4.formatStreamPart)("assistant_message", {
2567
2295
  id: value.data.id,
2568
2296
  role: "assistant",
2569
2297
  content: [{ type: "text", text: { value: "" } }]
@@ -2577,7 +2305,7 @@ function AssistantResponse({ threadId, messageId }, process2) {
2577
2305
  if ((content == null ? void 0 : content.type) === "text" && ((_b = content.text) == null ? void 0 : _b.value) != null) {
2578
2306
  controller.enqueue(
2579
2307
  textEncoder.encode(
2580
- (0, import_ui_utils3.formatStreamPart)("text", content.text.value)
2308
+ (0, import_ui_utils4.formatStreamPart)("text", content.text.value)
2581
2309
  )
2582
2310
  );
2583
2311
  }
@@ -2594,7 +2322,7 @@ function AssistantResponse({ threadId, messageId }, process2) {
2594
2322
  };
2595
2323
  controller.enqueue(
2596
2324
  textEncoder.encode(
2597
- (0, import_ui_utils3.formatStreamPart)("assistant_control_data", {
2325
+ (0, import_ui_utils4.formatStreamPart)("assistant_control_data", {
2598
2326
  threadId,
2599
2327
  messageId
2600
2328
  })
@@ -2909,7 +2637,7 @@ function MistralStream(response, callbacks) {
2909
2637
  }
2910
2638
 
2911
2639
  // streams/openai-stream.ts
2912
- var import_ui_utils4 = require("@ai-sdk/ui-utils");
2640
+ var import_ui_utils5 = require("@ai-sdk/ui-utils");
2913
2641
  function parseOpenAIStream() {
2914
2642
  const extract = chunkToText();
2915
2643
  return (data) => extract(JSON.parse(data));
@@ -3060,7 +2788,7 @@ function createFunctionCallTransformer(callbacks) {
3060
2788
  let aggregatedFinalCompletionResponse = "";
3061
2789
  let isFunctionStreamingIn = false;
3062
2790
  let functionCallMessages = callbacks[__internal__OpenAIFnMessagesSymbol] || [];
3063
- const decode = (0, import_ui_utils4.createChunkDecoder)();
2791
+ const decode = (0, import_ui_utils5.createChunkDecoder)();
3064
2792
  return new TransformStream({
3065
2793
  async transform(chunk, controller) {
3066
2794
  const message = decode(chunk);
@@ -3074,7 +2802,7 @@ function createFunctionCallTransformer(callbacks) {
3074
2802
  }
3075
2803
  if (!isFunctionStreamingIn) {
3076
2804
  controller.enqueue(
3077
- textEncoder.encode((0, import_ui_utils4.formatStreamPart)("text", message))
2805
+ textEncoder.encode((0, import_ui_utils5.formatStreamPart)("text", message))
3078
2806
  );
3079
2807
  return;
3080
2808
  } else {
@@ -3185,7 +2913,7 @@ function createFunctionCallTransformer(callbacks) {
3185
2913
  if (!functionResponse) {
3186
2914
  controller.enqueue(
3187
2915
  textEncoder.encode(
3188
- (0, import_ui_utils4.formatStreamPart)(
2916
+ (0, import_ui_utils5.formatStreamPart)(
3189
2917
  payload.function_call ? "function_call" : "tool_calls",
3190
2918
  // parse to prevent double-encoding:
3191
2919
  JSON.parse(aggregatedResponse)
@@ -3195,7 +2923,7 @@ function createFunctionCallTransformer(callbacks) {
3195
2923
  return;
3196
2924
  } else if (typeof functionResponse === "string") {
3197
2925
  controller.enqueue(
3198
- textEncoder.encode((0, import_ui_utils4.formatStreamPart)("text", functionResponse))
2926
+ textEncoder.encode((0, import_ui_utils5.formatStreamPart)("text", functionResponse))
3199
2927
  );
3200
2928
  aggregatedFinalCompletionResponse = functionResponse;
3201
2929
  return;