ai 3.2.0 → 3.2.2
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.d.mts +51 -23
- package/dist/index.d.ts +51 -23
- package/dist/index.js +156 -414
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +130 -385
- package/dist/index.mjs.map +1 -1
- package/package.json +8 -8
- package/rsc/dist/index.d.ts +68 -3
- package/rsc/dist/rsc-server.d.mts +68 -3
- package/rsc/dist/rsc-server.mjs +17 -0
- package/rsc/dist/rsc-server.mjs.map +1 -1
package/dist/index.mjs
CHANGED
@@ -528,6 +528,16 @@ function injectJsonSchemaIntoSystem({
|
|
528
528
|
].filter((line) => line != null).join("\n");
|
529
529
|
}
|
530
530
|
|
531
|
+
// core/util/prepare-response-headers.ts
|
532
|
+
function prepareResponseHeaders(init, { contentType }) {
|
533
|
+
var _a;
|
534
|
+
const headers = new Headers((_a = init == null ? void 0 : init.headers) != null ? _a : {});
|
535
|
+
if (!headers.has("Content-Type")) {
|
536
|
+
headers.set("Content-Type", contentType);
|
537
|
+
}
|
538
|
+
return headers;
|
539
|
+
}
|
540
|
+
|
531
541
|
// core/generate-object/generate-object.ts
|
532
542
|
async function generateObject({
|
533
543
|
model,
|
@@ -670,9 +680,29 @@ var GenerateObjectResult = class {
|
|
670
680
|
this.rawResponse = options.rawResponse;
|
671
681
|
this.logprobs = options.logprobs;
|
672
682
|
}
|
683
|
+
/**
|
684
|
+
Converts the object to a JSON response.
|
685
|
+
The response will have a status code of 200 and a content type of `application/json; charset=utf-8`.
|
686
|
+
*/
|
687
|
+
toJsonResponse(init) {
|
688
|
+
var _a;
|
689
|
+
return new Response(JSON.stringify(this.object), {
|
690
|
+
status: (_a = init == null ? void 0 : init.status) != null ? _a : 200,
|
691
|
+
headers: prepareResponseHeaders(init, {
|
692
|
+
contentType: "application/json; charset=utf-8"
|
693
|
+
})
|
694
|
+
});
|
695
|
+
}
|
673
696
|
};
|
674
697
|
var experimental_generateObject = generateObject;
|
675
698
|
|
699
|
+
// core/generate-object/stream-object.ts
|
700
|
+
import { safeValidateTypes } from "@ai-sdk/provider-utils";
|
701
|
+
import {
|
702
|
+
isDeepEqualData,
|
703
|
+
parsePartialJson
|
704
|
+
} from "@ai-sdk/ui-utils";
|
705
|
+
|
676
706
|
// core/util/async-iterable-stream.ts
|
677
707
|
function createAsyncIterableStream(source, transformer) {
|
678
708
|
const transformedStream = source.pipeThrough(
|
@@ -690,381 +720,7 @@ function createAsyncIterableStream(source, transformer) {
|
|
690
720
|
return transformedStream;
|
691
721
|
}
|
692
722
|
|
693
|
-
// core/util/is-deep-equal-data.ts
|
694
|
-
function isDeepEqualData(obj1, obj2) {
|
695
|
-
if (obj1 === obj2)
|
696
|
-
return true;
|
697
|
-
if (obj1 == null || obj2 == null)
|
698
|
-
return false;
|
699
|
-
if (typeof obj1 !== "object" && typeof obj2 !== "object")
|
700
|
-
return obj1 === obj2;
|
701
|
-
if (obj1.constructor !== obj2.constructor)
|
702
|
-
return false;
|
703
|
-
if (obj1 instanceof Date && obj2 instanceof Date) {
|
704
|
-
return obj1.getTime() === obj2.getTime();
|
705
|
-
}
|
706
|
-
if (Array.isArray(obj1)) {
|
707
|
-
if (obj1.length !== obj2.length)
|
708
|
-
return false;
|
709
|
-
for (let i = 0; i < obj1.length; i++) {
|
710
|
-
if (!isDeepEqualData(obj1[i], obj2[i]))
|
711
|
-
return false;
|
712
|
-
}
|
713
|
-
return true;
|
714
|
-
}
|
715
|
-
const keys1 = Object.keys(obj1);
|
716
|
-
const keys2 = Object.keys(obj2);
|
717
|
-
if (keys1.length !== keys2.length)
|
718
|
-
return false;
|
719
|
-
for (const key of keys1) {
|
720
|
-
if (!keys2.includes(key))
|
721
|
-
return false;
|
722
|
-
if (!isDeepEqualData(obj1[key], obj2[key]))
|
723
|
-
return false;
|
724
|
-
}
|
725
|
-
return true;
|
726
|
-
}
|
727
|
-
|
728
|
-
// core/util/parse-partial-json.ts
|
729
|
-
import SecureJSON from "secure-json-parse";
|
730
|
-
|
731
|
-
// core/util/fix-json.ts
|
732
|
-
function fixJson(input) {
|
733
|
-
const stack = ["ROOT"];
|
734
|
-
let lastValidIndex = -1;
|
735
|
-
let literalStart = null;
|
736
|
-
function processValueStart(char, i, swapState) {
|
737
|
-
{
|
738
|
-
switch (char) {
|
739
|
-
case '"': {
|
740
|
-
lastValidIndex = i;
|
741
|
-
stack.pop();
|
742
|
-
stack.push(swapState);
|
743
|
-
stack.push("INSIDE_STRING");
|
744
|
-
break;
|
745
|
-
}
|
746
|
-
case "f":
|
747
|
-
case "t":
|
748
|
-
case "n": {
|
749
|
-
lastValidIndex = i;
|
750
|
-
literalStart = i;
|
751
|
-
stack.pop();
|
752
|
-
stack.push(swapState);
|
753
|
-
stack.push("INSIDE_LITERAL");
|
754
|
-
break;
|
755
|
-
}
|
756
|
-
case "-": {
|
757
|
-
stack.pop();
|
758
|
-
stack.push(swapState);
|
759
|
-
stack.push("INSIDE_NUMBER");
|
760
|
-
break;
|
761
|
-
}
|
762
|
-
case "0":
|
763
|
-
case "1":
|
764
|
-
case "2":
|
765
|
-
case "3":
|
766
|
-
case "4":
|
767
|
-
case "5":
|
768
|
-
case "6":
|
769
|
-
case "7":
|
770
|
-
case "8":
|
771
|
-
case "9": {
|
772
|
-
lastValidIndex = i;
|
773
|
-
stack.pop();
|
774
|
-
stack.push(swapState);
|
775
|
-
stack.push("INSIDE_NUMBER");
|
776
|
-
break;
|
777
|
-
}
|
778
|
-
case "{": {
|
779
|
-
lastValidIndex = i;
|
780
|
-
stack.pop();
|
781
|
-
stack.push(swapState);
|
782
|
-
stack.push("INSIDE_OBJECT_START");
|
783
|
-
break;
|
784
|
-
}
|
785
|
-
case "[": {
|
786
|
-
lastValidIndex = i;
|
787
|
-
stack.pop();
|
788
|
-
stack.push(swapState);
|
789
|
-
stack.push("INSIDE_ARRAY_START");
|
790
|
-
break;
|
791
|
-
}
|
792
|
-
}
|
793
|
-
}
|
794
|
-
}
|
795
|
-
function processAfterObjectValue(char, i) {
|
796
|
-
switch (char) {
|
797
|
-
case ",": {
|
798
|
-
stack.pop();
|
799
|
-
stack.push("INSIDE_OBJECT_AFTER_COMMA");
|
800
|
-
break;
|
801
|
-
}
|
802
|
-
case "}": {
|
803
|
-
lastValidIndex = i;
|
804
|
-
stack.pop();
|
805
|
-
break;
|
806
|
-
}
|
807
|
-
}
|
808
|
-
}
|
809
|
-
function processAfterArrayValue(char, i) {
|
810
|
-
switch (char) {
|
811
|
-
case ",": {
|
812
|
-
stack.pop();
|
813
|
-
stack.push("INSIDE_ARRAY_AFTER_COMMA");
|
814
|
-
break;
|
815
|
-
}
|
816
|
-
case "]": {
|
817
|
-
lastValidIndex = i;
|
818
|
-
stack.pop();
|
819
|
-
break;
|
820
|
-
}
|
821
|
-
}
|
822
|
-
}
|
823
|
-
for (let i = 0; i < input.length; i++) {
|
824
|
-
const char = input[i];
|
825
|
-
const currentState = stack[stack.length - 1];
|
826
|
-
switch (currentState) {
|
827
|
-
case "ROOT":
|
828
|
-
processValueStart(char, i, "FINISH");
|
829
|
-
break;
|
830
|
-
case "INSIDE_OBJECT_START": {
|
831
|
-
switch (char) {
|
832
|
-
case '"': {
|
833
|
-
stack.pop();
|
834
|
-
stack.push("INSIDE_OBJECT_KEY");
|
835
|
-
break;
|
836
|
-
}
|
837
|
-
case "}": {
|
838
|
-
lastValidIndex = i;
|
839
|
-
stack.pop();
|
840
|
-
break;
|
841
|
-
}
|
842
|
-
}
|
843
|
-
break;
|
844
|
-
}
|
845
|
-
case "INSIDE_OBJECT_AFTER_COMMA": {
|
846
|
-
switch (char) {
|
847
|
-
case '"': {
|
848
|
-
stack.pop();
|
849
|
-
stack.push("INSIDE_OBJECT_KEY");
|
850
|
-
break;
|
851
|
-
}
|
852
|
-
}
|
853
|
-
break;
|
854
|
-
}
|
855
|
-
case "INSIDE_OBJECT_KEY": {
|
856
|
-
switch (char) {
|
857
|
-
case '"': {
|
858
|
-
stack.pop();
|
859
|
-
stack.push("INSIDE_OBJECT_AFTER_KEY");
|
860
|
-
break;
|
861
|
-
}
|
862
|
-
}
|
863
|
-
break;
|
864
|
-
}
|
865
|
-
case "INSIDE_OBJECT_AFTER_KEY": {
|
866
|
-
switch (char) {
|
867
|
-
case ":": {
|
868
|
-
stack.pop();
|
869
|
-
stack.push("INSIDE_OBJECT_BEFORE_VALUE");
|
870
|
-
break;
|
871
|
-
}
|
872
|
-
}
|
873
|
-
break;
|
874
|
-
}
|
875
|
-
case "INSIDE_OBJECT_BEFORE_VALUE": {
|
876
|
-
processValueStart(char, i, "INSIDE_OBJECT_AFTER_VALUE");
|
877
|
-
break;
|
878
|
-
}
|
879
|
-
case "INSIDE_OBJECT_AFTER_VALUE": {
|
880
|
-
processAfterObjectValue(char, i);
|
881
|
-
break;
|
882
|
-
}
|
883
|
-
case "INSIDE_STRING": {
|
884
|
-
switch (char) {
|
885
|
-
case '"': {
|
886
|
-
stack.pop();
|
887
|
-
lastValidIndex = i;
|
888
|
-
break;
|
889
|
-
}
|
890
|
-
case "\\": {
|
891
|
-
stack.push("INSIDE_STRING_ESCAPE");
|
892
|
-
break;
|
893
|
-
}
|
894
|
-
default: {
|
895
|
-
lastValidIndex = i;
|
896
|
-
}
|
897
|
-
}
|
898
|
-
break;
|
899
|
-
}
|
900
|
-
case "INSIDE_ARRAY_START": {
|
901
|
-
switch (char) {
|
902
|
-
case "]": {
|
903
|
-
lastValidIndex = i;
|
904
|
-
stack.pop();
|
905
|
-
break;
|
906
|
-
}
|
907
|
-
default: {
|
908
|
-
lastValidIndex = i;
|
909
|
-
processValueStart(char, i, "INSIDE_ARRAY_AFTER_VALUE");
|
910
|
-
break;
|
911
|
-
}
|
912
|
-
}
|
913
|
-
break;
|
914
|
-
}
|
915
|
-
case "INSIDE_ARRAY_AFTER_VALUE": {
|
916
|
-
switch (char) {
|
917
|
-
case ",": {
|
918
|
-
stack.pop();
|
919
|
-
stack.push("INSIDE_ARRAY_AFTER_COMMA");
|
920
|
-
break;
|
921
|
-
}
|
922
|
-
case "]": {
|
923
|
-
lastValidIndex = i;
|
924
|
-
stack.pop();
|
925
|
-
break;
|
926
|
-
}
|
927
|
-
default: {
|
928
|
-
lastValidIndex = i;
|
929
|
-
break;
|
930
|
-
}
|
931
|
-
}
|
932
|
-
break;
|
933
|
-
}
|
934
|
-
case "INSIDE_ARRAY_AFTER_COMMA": {
|
935
|
-
processValueStart(char, i, "INSIDE_ARRAY_AFTER_VALUE");
|
936
|
-
break;
|
937
|
-
}
|
938
|
-
case "INSIDE_STRING_ESCAPE": {
|
939
|
-
stack.pop();
|
940
|
-
lastValidIndex = i;
|
941
|
-
break;
|
942
|
-
}
|
943
|
-
case "INSIDE_NUMBER": {
|
944
|
-
switch (char) {
|
945
|
-
case "0":
|
946
|
-
case "1":
|
947
|
-
case "2":
|
948
|
-
case "3":
|
949
|
-
case "4":
|
950
|
-
case "5":
|
951
|
-
case "6":
|
952
|
-
case "7":
|
953
|
-
case "8":
|
954
|
-
case "9": {
|
955
|
-
lastValidIndex = i;
|
956
|
-
break;
|
957
|
-
}
|
958
|
-
case "e":
|
959
|
-
case "E":
|
960
|
-
case "-":
|
961
|
-
case ".": {
|
962
|
-
break;
|
963
|
-
}
|
964
|
-
case ",": {
|
965
|
-
stack.pop();
|
966
|
-
if (stack[stack.length - 1] === "INSIDE_ARRAY_AFTER_VALUE") {
|
967
|
-
processAfterArrayValue(char, i);
|
968
|
-
}
|
969
|
-
if (stack[stack.length - 1] === "INSIDE_OBJECT_AFTER_VALUE") {
|
970
|
-
processAfterObjectValue(char, i);
|
971
|
-
}
|
972
|
-
break;
|
973
|
-
}
|
974
|
-
case "}": {
|
975
|
-
stack.pop();
|
976
|
-
if (stack[stack.length - 1] === "INSIDE_OBJECT_AFTER_VALUE") {
|
977
|
-
processAfterObjectValue(char, i);
|
978
|
-
}
|
979
|
-
break;
|
980
|
-
}
|
981
|
-
case "]": {
|
982
|
-
stack.pop();
|
983
|
-
if (stack[stack.length - 1] === "INSIDE_ARRAY_AFTER_VALUE") {
|
984
|
-
processAfterArrayValue(char, i);
|
985
|
-
}
|
986
|
-
break;
|
987
|
-
}
|
988
|
-
default: {
|
989
|
-
stack.pop();
|
990
|
-
break;
|
991
|
-
}
|
992
|
-
}
|
993
|
-
break;
|
994
|
-
}
|
995
|
-
case "INSIDE_LITERAL": {
|
996
|
-
const partialLiteral = input.substring(literalStart, i + 1);
|
997
|
-
if (!"false".startsWith(partialLiteral) && !"true".startsWith(partialLiteral) && !"null".startsWith(partialLiteral)) {
|
998
|
-
stack.pop();
|
999
|
-
if (stack[stack.length - 1] === "INSIDE_OBJECT_AFTER_VALUE") {
|
1000
|
-
processAfterObjectValue(char, i);
|
1001
|
-
} else if (stack[stack.length - 1] === "INSIDE_ARRAY_AFTER_VALUE") {
|
1002
|
-
processAfterArrayValue(char, i);
|
1003
|
-
}
|
1004
|
-
} else {
|
1005
|
-
lastValidIndex = i;
|
1006
|
-
}
|
1007
|
-
break;
|
1008
|
-
}
|
1009
|
-
}
|
1010
|
-
}
|
1011
|
-
let result = input.slice(0, lastValidIndex + 1);
|
1012
|
-
for (let i = stack.length - 1; i >= 0; i--) {
|
1013
|
-
const state = stack[i];
|
1014
|
-
switch (state) {
|
1015
|
-
case "INSIDE_STRING": {
|
1016
|
-
result += '"';
|
1017
|
-
break;
|
1018
|
-
}
|
1019
|
-
case "INSIDE_OBJECT_KEY":
|
1020
|
-
case "INSIDE_OBJECT_AFTER_KEY":
|
1021
|
-
case "INSIDE_OBJECT_AFTER_COMMA":
|
1022
|
-
case "INSIDE_OBJECT_START":
|
1023
|
-
case "INSIDE_OBJECT_BEFORE_VALUE":
|
1024
|
-
case "INSIDE_OBJECT_AFTER_VALUE": {
|
1025
|
-
result += "}";
|
1026
|
-
break;
|
1027
|
-
}
|
1028
|
-
case "INSIDE_ARRAY_START":
|
1029
|
-
case "INSIDE_ARRAY_AFTER_COMMA":
|
1030
|
-
case "INSIDE_ARRAY_AFTER_VALUE": {
|
1031
|
-
result += "]";
|
1032
|
-
break;
|
1033
|
-
}
|
1034
|
-
case "INSIDE_LITERAL": {
|
1035
|
-
const partialLiteral = input.substring(literalStart, input.length);
|
1036
|
-
if ("true".startsWith(partialLiteral)) {
|
1037
|
-
result += "true".slice(partialLiteral.length);
|
1038
|
-
} else if ("false".startsWith(partialLiteral)) {
|
1039
|
-
result += "false".slice(partialLiteral.length);
|
1040
|
-
} else if ("null".startsWith(partialLiteral)) {
|
1041
|
-
result += "null".slice(partialLiteral.length);
|
1042
|
-
}
|
1043
|
-
}
|
1044
|
-
}
|
1045
|
-
}
|
1046
|
-
return result;
|
1047
|
-
}
|
1048
|
-
|
1049
|
-
// core/util/parse-partial-json.ts
|
1050
|
-
function parsePartialJson(jsonText) {
|
1051
|
-
if (jsonText == null) {
|
1052
|
-
return void 0;
|
1053
|
-
}
|
1054
|
-
try {
|
1055
|
-
return SecureJSON.parse(jsonText);
|
1056
|
-
} catch (ignored) {
|
1057
|
-
try {
|
1058
|
-
const fixedJsonText = fixJson(jsonText);
|
1059
|
-
return SecureJSON.parse(fixedJsonText);
|
1060
|
-
} catch (ignored2) {
|
1061
|
-
}
|
1062
|
-
}
|
1063
|
-
return void 0;
|
1064
|
-
}
|
1065
|
-
|
1066
723
|
// core/generate-object/stream-object.ts
|
1067
|
-
import { safeValidateTypes } from "@ai-sdk/provider-utils";
|
1068
724
|
async function streamObject({
|
1069
725
|
model,
|
1070
726
|
schema,
|
@@ -1218,23 +874,39 @@ var StreamObjectResult = class {
|
|
1218
874
|
let object;
|
1219
875
|
let error;
|
1220
876
|
let accumulatedText = "";
|
877
|
+
let delta = "";
|
1221
878
|
let latestObject = void 0;
|
1222
879
|
this.originalStream = stream.pipeThrough(
|
1223
880
|
new TransformStream({
|
1224
881
|
async transform(chunk, controller) {
|
1225
882
|
if (typeof chunk === "string") {
|
1226
883
|
accumulatedText += chunk;
|
884
|
+
delta += chunk;
|
1227
885
|
const currentObject = parsePartialJson(
|
1228
886
|
accumulatedText
|
1229
887
|
);
|
1230
888
|
if (!isDeepEqualData(latestObject, currentObject)) {
|
1231
889
|
latestObject = currentObject;
|
1232
|
-
controller.enqueue({
|
890
|
+
controller.enqueue({
|
891
|
+
type: "object",
|
892
|
+
object: currentObject
|
893
|
+
});
|
894
|
+
controller.enqueue({
|
895
|
+
type: "text-delta",
|
896
|
+
textDelta: delta
|
897
|
+
});
|
898
|
+
delta = "";
|
1233
899
|
}
|
1234
900
|
return;
|
1235
901
|
}
|
1236
902
|
switch (chunk.type) {
|
1237
903
|
case "finish": {
|
904
|
+
if (delta !== "") {
|
905
|
+
controller.enqueue({
|
906
|
+
type: "text-delta",
|
907
|
+
textDelta: delta
|
908
|
+
});
|
909
|
+
}
|
1238
910
|
usage = calculateTokenUsage(chunk.usage);
|
1239
911
|
controller.enqueue({ ...chunk, usage });
|
1240
912
|
resolveUsage(usage);
|
@@ -1278,6 +950,12 @@ var StreamObjectResult = class {
|
|
1278
950
|
})
|
1279
951
|
);
|
1280
952
|
}
|
953
|
+
/**
|
954
|
+
Stream of partial objects. It gets more complete as the stream progresses.
|
955
|
+
|
956
|
+
Note that the partial object is not validated.
|
957
|
+
If you want to be certain that the actual content matches your schema, you need to implement your own validation for partial results.
|
958
|
+
*/
|
1281
959
|
get partialObjectStream() {
|
1282
960
|
return createAsyncIterableStream(this.originalStream, {
|
1283
961
|
transform(chunk, controller) {
|
@@ -1285,6 +963,32 @@ var StreamObjectResult = class {
|
|
1285
963
|
case "object":
|
1286
964
|
controller.enqueue(chunk.object);
|
1287
965
|
break;
|
966
|
+
case "text-delta":
|
967
|
+
case "finish":
|
968
|
+
break;
|
969
|
+
case "error":
|
970
|
+
controller.error(chunk.error);
|
971
|
+
break;
|
972
|
+
default: {
|
973
|
+
const _exhaustiveCheck = chunk;
|
974
|
+
throw new Error(`Unsupported chunk type: ${_exhaustiveCheck}`);
|
975
|
+
}
|
976
|
+
}
|
977
|
+
}
|
978
|
+
});
|
979
|
+
}
|
980
|
+
/**
|
981
|
+
Text stream of the JSON representation of the generated object. It contains text chunks.
|
982
|
+
When the stream is finished, the object is valid JSON that can be parsed.
|
983
|
+
*/
|
984
|
+
get textStream() {
|
985
|
+
return createAsyncIterableStream(this.originalStream, {
|
986
|
+
transform(chunk, controller) {
|
987
|
+
switch (chunk.type) {
|
988
|
+
case "text-delta":
|
989
|
+
controller.enqueue(chunk.textDelta);
|
990
|
+
break;
|
991
|
+
case "object":
|
1288
992
|
case "finish":
|
1289
993
|
break;
|
1290
994
|
case "error":
|
@@ -1298,6 +1002,9 @@ var StreamObjectResult = class {
|
|
1298
1002
|
}
|
1299
1003
|
});
|
1300
1004
|
}
|
1005
|
+
/**
|
1006
|
+
Stream of different types of events, including partial objects, errors, and finish events.
|
1007
|
+
*/
|
1301
1008
|
get fullStream() {
|
1302
1009
|
return createAsyncIterableStream(this.originalStream, {
|
1303
1010
|
transform(chunk, controller) {
|
@@ -1305,6 +1012,54 @@ var StreamObjectResult = class {
|
|
1305
1012
|
}
|
1306
1013
|
});
|
1307
1014
|
}
|
1015
|
+
/**
|
1016
|
+
Writes text delta output to a Node.js response-like object.
|
1017
|
+
It sets a `Content-Type` header to `text/plain; charset=utf-8` and
|
1018
|
+
writes each text delta as a separate chunk.
|
1019
|
+
|
1020
|
+
@param response A Node.js response-like object (ServerResponse).
|
1021
|
+
@param init Optional headers and status code.
|
1022
|
+
*/
|
1023
|
+
pipeTextStreamToResponse(response, init) {
|
1024
|
+
var _a;
|
1025
|
+
response.writeHead((_a = init == null ? void 0 : init.status) != null ? _a : 200, {
|
1026
|
+
"Content-Type": "text/plain; charset=utf-8",
|
1027
|
+
...init == null ? void 0 : init.headers
|
1028
|
+
});
|
1029
|
+
const reader = this.textStream.pipeThrough(new TextEncoderStream()).getReader();
|
1030
|
+
const read = async () => {
|
1031
|
+
try {
|
1032
|
+
while (true) {
|
1033
|
+
const { done, value } = await reader.read();
|
1034
|
+
if (done)
|
1035
|
+
break;
|
1036
|
+
response.write(value);
|
1037
|
+
}
|
1038
|
+
} catch (error) {
|
1039
|
+
throw error;
|
1040
|
+
} finally {
|
1041
|
+
response.end();
|
1042
|
+
}
|
1043
|
+
};
|
1044
|
+
read();
|
1045
|
+
}
|
1046
|
+
/**
|
1047
|
+
Creates a simple text stream response.
|
1048
|
+
The response has a `Content-Type` header set to `text/plain; charset=utf-8`.
|
1049
|
+
Each text delta is encoded as UTF-8 and sent as a separate chunk.
|
1050
|
+
Non-text-delta events are ignored.
|
1051
|
+
|
1052
|
+
@param init Optional headers and status code.
|
1053
|
+
*/
|
1054
|
+
toTextStreamResponse(init) {
|
1055
|
+
var _a;
|
1056
|
+
return new Response(this.textStream.pipeThrough(new TextEncoderStream()), {
|
1057
|
+
status: (_a = init == null ? void 0 : init.status) != null ? _a : 200,
|
1058
|
+
headers: prepareResponseHeaders(init, {
|
1059
|
+
contentType: "text/plain; charset=utf-8"
|
1060
|
+
})
|
1061
|
+
});
|
1062
|
+
}
|
1308
1063
|
};
|
1309
1064
|
var experimental_streamObject = streamObject;
|
1310
1065
|
|
@@ -1509,16 +1264,6 @@ function toResponseMessages({
|
|
1509
1264
|
}
|
1510
1265
|
var experimental_generateText = generateText;
|
1511
1266
|
|
1512
|
-
// core/util/prepare-response-headers.ts
|
1513
|
-
function prepareResponseHeaders(init, { contentType }) {
|
1514
|
-
var _a;
|
1515
|
-
const headers = new Headers((_a = init == null ? void 0 : init.headers) != null ? _a : {});
|
1516
|
-
if (!headers.has("Content-Type")) {
|
1517
|
-
headers.set("Content-Type", contentType);
|
1518
|
-
}
|
1519
|
-
return headers;
|
1520
|
-
}
|
1521
|
-
|
1522
1267
|
// core/generate-text/run-tools-transformation.ts
|
1523
1268
|
import { NoSuchToolError as NoSuchToolError2 } from "@ai-sdk/provider";
|
1524
1269
|
import { generateId } from "@ai-sdk/ui-utils";
|