ai 4.0.17 → 4.0.18
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 +7 -0
- package/dist/index.d.mts +42 -15
- package/dist/index.d.ts +42 -15
- package/dist/index.js +161 -78
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +155 -72
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# ai
|
2
2
|
|
3
|
+
## 4.0.18
|
4
|
+
|
5
|
+
### Patch Changes
|
6
|
+
|
7
|
+
- 304e6d3: feat (ai/core): standardize generateObject, streamObject, and output errors to NoObjectGeneratedError
|
8
|
+
- 304e6d3: feat (ai/core): add additional information to NoObjectGeneratedError
|
9
|
+
|
3
10
|
## 4.0.17
|
4
11
|
|
5
12
|
### Patch Changes
|
package/dist/index.d.mts
CHANGED
@@ -1608,6 +1608,9 @@ interface Output<OUTPUT> {
|
|
1608
1608
|
}) => LanguageModelV1CallOptions['responseFormat'];
|
1609
1609
|
parseOutput(options: {
|
1610
1610
|
text: string;
|
1611
|
+
}, context: {
|
1612
|
+
response: LanguageModelResponseMetadata;
|
1613
|
+
usage: LanguageModelUsage;
|
1611
1614
|
}): OUTPUT;
|
1612
1615
|
}
|
1613
1616
|
declare const text: () => Output<string>;
|
@@ -2274,8 +2277,44 @@ declare class InvalidArgumentError extends AISDKError {
|
|
2274
2277
|
}
|
2275
2278
|
|
2276
2279
|
declare const symbol$7: unique symbol;
|
2277
|
-
|
2280
|
+
/**
|
2281
|
+
Thrown when no object could be generated. This can have several causes:
|
2282
|
+
|
2283
|
+
- The model failed to generate a response.
|
2284
|
+
- The model generated a response that could not be parsed.
|
2285
|
+
- The model generated a response that could not be validated against the schema.
|
2286
|
+
|
2287
|
+
The error contains the following properties:
|
2288
|
+
|
2289
|
+
- `text`: The text that was generated by the model. This can be the raw text or the tool call text, depending on the model.
|
2290
|
+
*/
|
2291
|
+
declare class NoObjectGeneratedError extends AISDKError {
|
2278
2292
|
private readonly [symbol$7];
|
2293
|
+
/**
|
2294
|
+
The text that was generated by the model. This can be the raw text or the tool call text, depending on the model.
|
2295
|
+
*/
|
2296
|
+
readonly text: string | undefined;
|
2297
|
+
/**
|
2298
|
+
The response metadata.
|
2299
|
+
*/
|
2300
|
+
readonly response: LanguageModelResponseMetadata | undefined;
|
2301
|
+
/**
|
2302
|
+
The usage of the model.
|
2303
|
+
*/
|
2304
|
+
readonly usage: LanguageModelUsage | undefined;
|
2305
|
+
constructor({ message, cause, text, response, usage, }: {
|
2306
|
+
message?: string;
|
2307
|
+
cause?: Error;
|
2308
|
+
text?: string;
|
2309
|
+
response: LanguageModelResponseMetadata;
|
2310
|
+
usage: LanguageModelUsage;
|
2311
|
+
});
|
2312
|
+
static isInstance(error: unknown): error is NoObjectGeneratedError;
|
2313
|
+
}
|
2314
|
+
|
2315
|
+
declare const symbol$6: unique symbol;
|
2316
|
+
declare class ToolCallRepairError extends AISDKError {
|
2317
|
+
private readonly [symbol$6];
|
2279
2318
|
readonly originalError: NoSuchToolError | InvalidToolArgumentsError;
|
2280
2319
|
constructor({ cause, originalError, message, }: {
|
2281
2320
|
message?: string;
|
@@ -2285,9 +2324,9 @@ declare class ToolCallRepairError extends AISDKError {
|
|
2285
2324
|
static isInstance(error: unknown): error is ToolCallRepairError;
|
2286
2325
|
}
|
2287
2326
|
|
2288
|
-
declare const symbol$
|
2327
|
+
declare const symbol$5: unique symbol;
|
2289
2328
|
declare class ToolExecutionError extends AISDKError {
|
2290
|
-
private readonly [symbol$
|
2329
|
+
private readonly [symbol$5];
|
2291
2330
|
readonly toolName: string;
|
2292
2331
|
readonly toolArgs: JSONValue;
|
2293
2332
|
constructor({ toolArgs, toolName, cause, message, }: {
|
@@ -2299,18 +2338,6 @@ declare class ToolExecutionError extends AISDKError {
|
|
2299
2338
|
static isInstance(error: unknown): error is ToolExecutionError;
|
2300
2339
|
}
|
2301
2340
|
|
2302
|
-
declare const symbol$5: unique symbol;
|
2303
|
-
/**
|
2304
|
-
Thrown when the AI provider fails to generate a parsable object.
|
2305
|
-
*/
|
2306
|
-
declare class NoObjectGeneratedError extends AISDKError {
|
2307
|
-
private readonly [symbol$5];
|
2308
|
-
constructor({ message }?: {
|
2309
|
-
message?: string;
|
2310
|
-
});
|
2311
|
-
static isInstance(error: unknown): error is NoObjectGeneratedError;
|
2312
|
-
}
|
2313
|
-
|
2314
2341
|
declare const symbol$4: unique symbol;
|
2315
2342
|
declare class InvalidDataContentError extends AISDKError {
|
2316
2343
|
private readonly [symbol$4];
|
package/dist/index.d.ts
CHANGED
@@ -1608,6 +1608,9 @@ interface Output<OUTPUT> {
|
|
1608
1608
|
}) => LanguageModelV1CallOptions['responseFormat'];
|
1609
1609
|
parseOutput(options: {
|
1610
1610
|
text: string;
|
1611
|
+
}, context: {
|
1612
|
+
response: LanguageModelResponseMetadata;
|
1613
|
+
usage: LanguageModelUsage;
|
1611
1614
|
}): OUTPUT;
|
1612
1615
|
}
|
1613
1616
|
declare const text: () => Output<string>;
|
@@ -2274,8 +2277,44 @@ declare class InvalidArgumentError extends AISDKError {
|
|
2274
2277
|
}
|
2275
2278
|
|
2276
2279
|
declare const symbol$7: unique symbol;
|
2277
|
-
|
2280
|
+
/**
|
2281
|
+
Thrown when no object could be generated. This can have several causes:
|
2282
|
+
|
2283
|
+
- The model failed to generate a response.
|
2284
|
+
- The model generated a response that could not be parsed.
|
2285
|
+
- The model generated a response that could not be validated against the schema.
|
2286
|
+
|
2287
|
+
The error contains the following properties:
|
2288
|
+
|
2289
|
+
- `text`: The text that was generated by the model. This can be the raw text or the tool call text, depending on the model.
|
2290
|
+
*/
|
2291
|
+
declare class NoObjectGeneratedError extends AISDKError {
|
2278
2292
|
private readonly [symbol$7];
|
2293
|
+
/**
|
2294
|
+
The text that was generated by the model. This can be the raw text or the tool call text, depending on the model.
|
2295
|
+
*/
|
2296
|
+
readonly text: string | undefined;
|
2297
|
+
/**
|
2298
|
+
The response metadata.
|
2299
|
+
*/
|
2300
|
+
readonly response: LanguageModelResponseMetadata | undefined;
|
2301
|
+
/**
|
2302
|
+
The usage of the model.
|
2303
|
+
*/
|
2304
|
+
readonly usage: LanguageModelUsage | undefined;
|
2305
|
+
constructor({ message, cause, text, response, usage, }: {
|
2306
|
+
message?: string;
|
2307
|
+
cause?: Error;
|
2308
|
+
text?: string;
|
2309
|
+
response: LanguageModelResponseMetadata;
|
2310
|
+
usage: LanguageModelUsage;
|
2311
|
+
});
|
2312
|
+
static isInstance(error: unknown): error is NoObjectGeneratedError;
|
2313
|
+
}
|
2314
|
+
|
2315
|
+
declare const symbol$6: unique symbol;
|
2316
|
+
declare class ToolCallRepairError extends AISDKError {
|
2317
|
+
private readonly [symbol$6];
|
2279
2318
|
readonly originalError: NoSuchToolError | InvalidToolArgumentsError;
|
2280
2319
|
constructor({ cause, originalError, message, }: {
|
2281
2320
|
message?: string;
|
@@ -2285,9 +2324,9 @@ declare class ToolCallRepairError extends AISDKError {
|
|
2285
2324
|
static isInstance(error: unknown): error is ToolCallRepairError;
|
2286
2325
|
}
|
2287
2326
|
|
2288
|
-
declare const symbol$
|
2327
|
+
declare const symbol$5: unique symbol;
|
2289
2328
|
declare class ToolExecutionError extends AISDKError {
|
2290
|
-
private readonly [symbol$
|
2329
|
+
private readonly [symbol$5];
|
2291
2330
|
readonly toolName: string;
|
2292
2331
|
readonly toolArgs: JSONValue;
|
2293
2332
|
constructor({ toolArgs, toolName, cause, message, }: {
|
@@ -2299,18 +2338,6 @@ declare class ToolExecutionError extends AISDKError {
|
|
2299
2338
|
static isInstance(error: unknown): error is ToolExecutionError;
|
2300
2339
|
}
|
2301
2340
|
|
2302
|
-
declare const symbol$5: unique symbol;
|
2303
|
-
/**
|
2304
|
-
Thrown when the AI provider fails to generate a parsable object.
|
2305
|
-
*/
|
2306
|
-
declare class NoObjectGeneratedError extends AISDKError {
|
2307
|
-
private readonly [symbol$5];
|
2308
|
-
constructor({ message }?: {
|
2309
|
-
message?: string;
|
2310
|
-
});
|
2311
|
-
static isInstance(error: unknown): error is NoObjectGeneratedError;
|
2312
|
-
}
|
2313
|
-
|
2314
2341
|
declare const symbol$4: unique symbol;
|
2315
2342
|
declare class InvalidDataContentError extends AISDKError {
|
2316
2343
|
private readonly [symbol$4];
|
package/dist/index.js
CHANGED
@@ -900,13 +900,39 @@ var DefaultGenerateImageResult = class {
|
|
900
900
|
// core/generate-object/generate-object.ts
|
901
901
|
var import_provider_utils6 = require("@ai-sdk/provider-utils");
|
902
902
|
|
903
|
-
//
|
903
|
+
// errors/no-object-generated-error.ts
|
904
904
|
var import_provider4 = require("@ai-sdk/provider");
|
905
|
-
var name3 = "
|
905
|
+
var name3 = "AI_NoObjectGeneratedError";
|
906
906
|
var marker3 = `vercel.ai.error.${name3}`;
|
907
907
|
var symbol3 = Symbol.for(marker3);
|
908
908
|
var _a3;
|
909
|
-
var
|
909
|
+
var NoObjectGeneratedError = class extends import_provider4.AISDKError {
|
910
|
+
constructor({
|
911
|
+
message = "No object generated.",
|
912
|
+
cause,
|
913
|
+
text: text2,
|
914
|
+
response,
|
915
|
+
usage
|
916
|
+
}) {
|
917
|
+
super({ name: name3, message, cause });
|
918
|
+
this[_a3] = true;
|
919
|
+
this.text = text2;
|
920
|
+
this.response = response;
|
921
|
+
this.usage = usage;
|
922
|
+
}
|
923
|
+
static isInstance(error) {
|
924
|
+
return import_provider4.AISDKError.hasMarker(error, marker3);
|
925
|
+
}
|
926
|
+
};
|
927
|
+
_a3 = symbol3;
|
928
|
+
|
929
|
+
// util/download-error.ts
|
930
|
+
var import_provider5 = require("@ai-sdk/provider");
|
931
|
+
var name4 = "AI_DownloadError";
|
932
|
+
var marker4 = `vercel.ai.error.${name4}`;
|
933
|
+
var symbol4 = Symbol.for(marker4);
|
934
|
+
var _a4;
|
935
|
+
var DownloadError = class extends import_provider5.AISDKError {
|
910
936
|
constructor({
|
911
937
|
url,
|
912
938
|
statusCode,
|
@@ -914,17 +940,17 @@ var DownloadError = class extends import_provider4.AISDKError {
|
|
914
940
|
cause,
|
915
941
|
message = cause == null ? `Failed to download ${url}: ${statusCode} ${statusText}` : `Failed to download ${url}: ${cause}`
|
916
942
|
}) {
|
917
|
-
super({ name:
|
918
|
-
this[
|
943
|
+
super({ name: name4, message, cause });
|
944
|
+
this[_a4] = true;
|
919
945
|
this.url = url;
|
920
946
|
this.statusCode = statusCode;
|
921
947
|
this.statusText = statusText;
|
922
948
|
}
|
923
949
|
static isInstance(error) {
|
924
|
-
return
|
950
|
+
return import_provider5.AISDKError.hasMarker(error, marker4);
|
925
951
|
}
|
926
952
|
};
|
927
|
-
|
953
|
+
_a4 = symbol4;
|
928
954
|
|
929
955
|
// util/download.ts
|
930
956
|
async function download({
|
@@ -974,26 +1000,26 @@ function detectImageMimeType(image) {
|
|
974
1000
|
var import_provider_utils3 = require("@ai-sdk/provider-utils");
|
975
1001
|
|
976
1002
|
// core/prompt/invalid-data-content-error.ts
|
977
|
-
var
|
978
|
-
var
|
979
|
-
var
|
980
|
-
var
|
981
|
-
var
|
982
|
-
var InvalidDataContentError = class extends
|
1003
|
+
var import_provider6 = require("@ai-sdk/provider");
|
1004
|
+
var name5 = "AI_InvalidDataContentError";
|
1005
|
+
var marker5 = `vercel.ai.error.${name5}`;
|
1006
|
+
var symbol5 = Symbol.for(marker5);
|
1007
|
+
var _a5;
|
1008
|
+
var InvalidDataContentError = class extends import_provider6.AISDKError {
|
983
1009
|
constructor({
|
984
1010
|
content,
|
985
1011
|
cause,
|
986
1012
|
message = `Invalid data content. Expected a base64 string, Uint8Array, ArrayBuffer, or Buffer, but got ${typeof content}.`
|
987
1013
|
}) {
|
988
|
-
super({ name:
|
989
|
-
this[
|
1014
|
+
super({ name: name5, message, cause });
|
1015
|
+
this[_a5] = true;
|
990
1016
|
this.content = content;
|
991
1017
|
}
|
992
1018
|
static isInstance(error) {
|
993
|
-
return
|
1019
|
+
return import_provider6.AISDKError.hasMarker(error, marker5);
|
994
1020
|
}
|
995
1021
|
};
|
996
|
-
|
1022
|
+
_a5 = symbol5;
|
997
1023
|
|
998
1024
|
// core/prompt/data-content.ts
|
999
1025
|
var import_zod = require("zod");
|
@@ -1048,25 +1074,25 @@ function convertUint8ArrayToText(uint8Array) {
|
|
1048
1074
|
}
|
1049
1075
|
|
1050
1076
|
// core/prompt/invalid-message-role-error.ts
|
1051
|
-
var
|
1052
|
-
var
|
1053
|
-
var
|
1054
|
-
var
|
1055
|
-
var
|
1056
|
-
var InvalidMessageRoleError = class extends
|
1077
|
+
var import_provider7 = require("@ai-sdk/provider");
|
1078
|
+
var name6 = "AI_InvalidMessageRoleError";
|
1079
|
+
var marker6 = `vercel.ai.error.${name6}`;
|
1080
|
+
var symbol6 = Symbol.for(marker6);
|
1081
|
+
var _a6;
|
1082
|
+
var InvalidMessageRoleError = class extends import_provider7.AISDKError {
|
1057
1083
|
constructor({
|
1058
1084
|
role,
|
1059
1085
|
message = `Invalid message role: '${role}'. Must be one of: "system", "user", "assistant", "tool".`
|
1060
1086
|
}) {
|
1061
|
-
super({ name:
|
1062
|
-
this[
|
1087
|
+
super({ name: name6, message });
|
1088
|
+
this[_a6] = true;
|
1063
1089
|
this.role = role;
|
1064
1090
|
}
|
1065
1091
|
static isInstance(error) {
|
1066
|
-
return
|
1092
|
+
return import_provider7.AISDKError.hasMarker(error, marker6);
|
1067
1093
|
}
|
1068
1094
|
};
|
1069
|
-
|
1095
|
+
_a6 = symbol6;
|
1070
1096
|
|
1071
1097
|
// core/prompt/split-data-url.ts
|
1072
1098
|
function splitDataUrl(dataUrl) {
|
@@ -1363,7 +1389,7 @@ function prepareCallSettings({
|
|
1363
1389
|
}
|
1364
1390
|
|
1365
1391
|
// core/prompt/standardize-prompt.ts
|
1366
|
-
var
|
1392
|
+
var import_provider9 = require("@ai-sdk/provider");
|
1367
1393
|
var import_provider_utils4 = require("@ai-sdk/provider-utils");
|
1368
1394
|
var import_zod7 = require("zod");
|
1369
1395
|
|
@@ -1589,25 +1615,25 @@ function attachmentsToParts(attachments) {
|
|
1589
1615
|
}
|
1590
1616
|
|
1591
1617
|
// core/prompt/message-conversion-error.ts
|
1592
|
-
var
|
1593
|
-
var
|
1594
|
-
var
|
1595
|
-
var
|
1596
|
-
var
|
1597
|
-
var MessageConversionError = class extends
|
1618
|
+
var import_provider8 = require("@ai-sdk/provider");
|
1619
|
+
var name7 = "AI_MessageConversionError";
|
1620
|
+
var marker7 = `vercel.ai.error.${name7}`;
|
1621
|
+
var symbol7 = Symbol.for(marker7);
|
1622
|
+
var _a7;
|
1623
|
+
var MessageConversionError = class extends import_provider8.AISDKError {
|
1598
1624
|
constructor({
|
1599
1625
|
originalMessage,
|
1600
1626
|
message
|
1601
1627
|
}) {
|
1602
|
-
super({ name:
|
1603
|
-
this[
|
1628
|
+
super({ name: name7, message });
|
1629
|
+
this[_a7] = true;
|
1604
1630
|
this.originalMessage = originalMessage;
|
1605
1631
|
}
|
1606
1632
|
static isInstance(error) {
|
1607
|
-
return
|
1633
|
+
return import_provider8.AISDKError.hasMarker(error, marker7);
|
1608
1634
|
}
|
1609
1635
|
};
|
1610
|
-
|
1636
|
+
_a7 = symbol7;
|
1611
1637
|
|
1612
1638
|
// core/prompt/convert-to-core-messages.ts
|
1613
1639
|
function convertToCoreMessages(messages, options) {
|
@@ -1701,26 +1727,26 @@ function standardizePrompt({
|
|
1701
1727
|
tools
|
1702
1728
|
}) {
|
1703
1729
|
if (prompt.prompt == null && prompt.messages == null) {
|
1704
|
-
throw new
|
1730
|
+
throw new import_provider9.InvalidPromptError({
|
1705
1731
|
prompt,
|
1706
1732
|
message: "prompt or messages must be defined"
|
1707
1733
|
});
|
1708
1734
|
}
|
1709
1735
|
if (prompt.prompt != null && prompt.messages != null) {
|
1710
|
-
throw new
|
1736
|
+
throw new import_provider9.InvalidPromptError({
|
1711
1737
|
prompt,
|
1712
1738
|
message: "prompt and messages cannot be defined at the same time"
|
1713
1739
|
});
|
1714
1740
|
}
|
1715
1741
|
if (prompt.system != null && typeof prompt.system !== "string") {
|
1716
|
-
throw new
|
1742
|
+
throw new import_provider9.InvalidPromptError({
|
1717
1743
|
prompt,
|
1718
1744
|
message: "system must be a string"
|
1719
1745
|
});
|
1720
1746
|
}
|
1721
1747
|
if (prompt.prompt != null) {
|
1722
1748
|
if (typeof prompt.prompt !== "string") {
|
1723
|
-
throw new
|
1749
|
+
throw new import_provider9.InvalidPromptError({
|
1724
1750
|
prompt,
|
1725
1751
|
message: "prompt must be a string"
|
1726
1752
|
});
|
@@ -1739,7 +1765,7 @@ function standardizePrompt({
|
|
1739
1765
|
if (prompt.messages != null) {
|
1740
1766
|
const promptType = detectPromptType(prompt.messages);
|
1741
1767
|
if (promptType === "other") {
|
1742
|
-
throw new
|
1768
|
+
throw new import_provider9.InvalidPromptError({
|
1743
1769
|
prompt,
|
1744
1770
|
message: "messages must be an array of CoreMessage or UIMessage"
|
1745
1771
|
});
|
@@ -1752,7 +1778,7 @@ function standardizePrompt({
|
|
1752
1778
|
schema: import_zod7.z.array(coreMessageSchema)
|
1753
1779
|
});
|
1754
1780
|
if (!validationResult.success) {
|
1755
|
-
throw new
|
1781
|
+
throw new import_provider9.InvalidPromptError({
|
1756
1782
|
prompt,
|
1757
1783
|
message: "messages must be an array of CoreMessage or UIMessage",
|
1758
1784
|
cause: validationResult.error
|
@@ -1799,24 +1825,6 @@ function injectJsonInstruction({
|
|
1799
1825
|
].filter((line) => line != null).join("\n");
|
1800
1826
|
}
|
1801
1827
|
|
1802
|
-
// core/generate-object/no-object-generated-error.ts
|
1803
|
-
var import_provider9 = require("@ai-sdk/provider");
|
1804
|
-
var name7 = "AI_NoObjectGeneratedError";
|
1805
|
-
var marker7 = `vercel.ai.error.${name7}`;
|
1806
|
-
var symbol7 = Symbol.for(marker7);
|
1807
|
-
var _a7;
|
1808
|
-
var NoObjectGeneratedError = class extends import_provider9.AISDKError {
|
1809
|
-
// used in isInstance
|
1810
|
-
constructor({ message = "No object generated." } = {}) {
|
1811
|
-
super({ name: name7, message });
|
1812
|
-
this[_a7] = true;
|
1813
|
-
}
|
1814
|
-
static isInstance(error) {
|
1815
|
-
return import_provider9.AISDKError.hasMarker(error, marker7);
|
1816
|
-
}
|
1817
|
-
};
|
1818
|
-
_a7 = symbol7;
|
1819
|
-
|
1820
1828
|
// core/generate-object/output-strategy.ts
|
1821
1829
|
var import_provider10 = require("@ai-sdk/provider");
|
1822
1830
|
var import_provider_utils5 = require("@ai-sdk/provider-utils");
|
@@ -1846,8 +1854,16 @@ var noSchemaOutputStrategy = {
|
|
1846
1854
|
validatePartialResult({ value, textDelta }) {
|
1847
1855
|
return { success: true, value: { partial: value, textDelta } };
|
1848
1856
|
},
|
1849
|
-
validateFinalResult(value) {
|
1850
|
-
return value === void 0 ? {
|
1857
|
+
validateFinalResult(value, context) {
|
1858
|
+
return value === void 0 ? {
|
1859
|
+
success: false,
|
1860
|
+
error: new NoObjectGeneratedError({
|
1861
|
+
message: "No object generated: response did not match schema.",
|
1862
|
+
text: context.text,
|
1863
|
+
response: context.response,
|
1864
|
+
usage: context.usage
|
1865
|
+
})
|
1866
|
+
} : { success: true, value };
|
1851
1867
|
},
|
1852
1868
|
createElementStream() {
|
1853
1869
|
throw new import_provider10.UnsupportedFunctionalityError({
|
@@ -2326,14 +2342,18 @@ async function generateObject({
|
|
2326
2342
|
abortSignal,
|
2327
2343
|
headers
|
2328
2344
|
});
|
2329
|
-
if (result2.text === void 0) {
|
2330
|
-
throw new NoObjectGeneratedError();
|
2331
|
-
}
|
2332
2345
|
const responseData = {
|
2333
2346
|
id: (_b2 = (_a14 = result2.response) == null ? void 0 : _a14.id) != null ? _b2 : generateId3(),
|
2334
2347
|
timestamp: (_d = (_c = result2.response) == null ? void 0 : _c.timestamp) != null ? _d : currentDate(),
|
2335
2348
|
modelId: (_f = (_e = result2.response) == null ? void 0 : _e.modelId) != null ? _f : model.modelId
|
2336
2349
|
};
|
2350
|
+
if (result2.text === void 0) {
|
2351
|
+
throw new NoObjectGeneratedError({
|
2352
|
+
message: "No object generated: the model did not return a response.",
|
2353
|
+
response: responseData,
|
2354
|
+
usage: calculateLanguageModelUsage(result2.usage)
|
2355
|
+
});
|
2356
|
+
}
|
2337
2357
|
span2.setAttributes(
|
2338
2358
|
selectTelemetryAttributes({
|
2339
2359
|
telemetry,
|
@@ -2430,14 +2450,18 @@ async function generateObject({
|
|
2430
2450
|
headers
|
2431
2451
|
});
|
2432
2452
|
const objectText = (_b2 = (_a14 = result2.toolCalls) == null ? void 0 : _a14[0]) == null ? void 0 : _b2.args;
|
2433
|
-
if (objectText === void 0) {
|
2434
|
-
throw new NoObjectGeneratedError();
|
2435
|
-
}
|
2436
2453
|
const responseData = {
|
2437
2454
|
id: (_d = (_c = result2.response) == null ? void 0 : _c.id) != null ? _d : generateId3(),
|
2438
2455
|
timestamp: (_f = (_e = result2.response) == null ? void 0 : _e.timestamp) != null ? _f : currentDate(),
|
2439
2456
|
modelId: (_h = (_g = result2.response) == null ? void 0 : _g.modelId) != null ? _h : model.modelId
|
2440
2457
|
};
|
2458
|
+
if (objectText === void 0) {
|
2459
|
+
throw new NoObjectGeneratedError({
|
2460
|
+
message: "No object generated: the tool was not called.",
|
2461
|
+
response: responseData,
|
2462
|
+
usage: calculateLanguageModelUsage(result2.usage)
|
2463
|
+
});
|
2464
|
+
}
|
2441
2465
|
span2.setAttributes(
|
2442
2466
|
selectTelemetryAttributes({
|
2443
2467
|
telemetry,
|
@@ -2485,13 +2509,30 @@ async function generateObject({
|
|
2485
2509
|
}
|
2486
2510
|
const parseResult = (0, import_provider_utils6.safeParseJSON)({ text: result });
|
2487
2511
|
if (!parseResult.success) {
|
2488
|
-
throw
|
2512
|
+
throw new NoObjectGeneratedError({
|
2513
|
+
message: "No object generated: could not parse the response.",
|
2514
|
+
cause: parseResult.error,
|
2515
|
+
text: result,
|
2516
|
+
response,
|
2517
|
+
usage: calculateLanguageModelUsage(usage)
|
2518
|
+
});
|
2489
2519
|
}
|
2490
2520
|
const validationResult = outputStrategy.validateFinalResult(
|
2491
|
-
parseResult.value
|
2521
|
+
parseResult.value,
|
2522
|
+
{
|
2523
|
+
text: result,
|
2524
|
+
response,
|
2525
|
+
usage: calculateLanguageModelUsage(usage)
|
2526
|
+
}
|
2492
2527
|
);
|
2493
2528
|
if (!validationResult.success) {
|
2494
|
-
throw
|
2529
|
+
throw new NoObjectGeneratedError({
|
2530
|
+
message: "No object generated: response did not match schema.",
|
2531
|
+
cause: validationResult.error,
|
2532
|
+
text: result,
|
2533
|
+
response,
|
2534
|
+
usage: calculateLanguageModelUsage(usage)
|
2535
|
+
});
|
2495
2536
|
}
|
2496
2537
|
span.setAttributes(
|
2497
2538
|
selectTelemetryAttributes({
|
@@ -3026,12 +3067,25 @@ var DefaultStreamObjectResult = class {
|
|
3026
3067
|
...response,
|
3027
3068
|
headers: rawResponse == null ? void 0 : rawResponse.headers
|
3028
3069
|
});
|
3029
|
-
const validationResult = outputStrategy.validateFinalResult(
|
3070
|
+
const validationResult = outputStrategy.validateFinalResult(
|
3071
|
+
latestObjectJson,
|
3072
|
+
{
|
3073
|
+
text: accumulatedText,
|
3074
|
+
response,
|
3075
|
+
usage
|
3076
|
+
}
|
3077
|
+
);
|
3030
3078
|
if (validationResult.success) {
|
3031
3079
|
object2 = validationResult.value;
|
3032
3080
|
self.objectPromise.resolve(object2);
|
3033
3081
|
} else {
|
3034
|
-
error =
|
3082
|
+
error = new NoObjectGeneratedError({
|
3083
|
+
message: "No object generated: response did not match schema.",
|
3084
|
+
cause: validationResult.error,
|
3085
|
+
text: accumulatedText,
|
3086
|
+
response,
|
3087
|
+
usage
|
3088
|
+
});
|
3035
3089
|
self.objectPromise.reject(error);
|
3036
3090
|
}
|
3037
3091
|
break;
|
@@ -3777,7 +3831,13 @@ async function generateText({
|
|
3777
3831
|
);
|
3778
3832
|
return new DefaultGenerateTextResult({
|
3779
3833
|
text: text2,
|
3780
|
-
output: output == null ? void 0 : output.parseOutput(
|
3834
|
+
output: output == null ? void 0 : output.parseOutput(
|
3835
|
+
{ text: text2 },
|
3836
|
+
{
|
3837
|
+
response: currentModelResponse.response,
|
3838
|
+
usage
|
3839
|
+
}
|
3840
|
+
),
|
3781
3841
|
toolCalls: currentToolCalls,
|
3782
3842
|
toolResults: currentToolResults,
|
3783
3843
|
finishReason: currentModelResponse.finishReason,
|
@@ -3920,8 +3980,31 @@ var object = ({
|
|
3920
3980
|
schema: schema.jsonSchema
|
3921
3981
|
});
|
3922
3982
|
},
|
3923
|
-
parseOutput({ text: text2 }) {
|
3924
|
-
|
3983
|
+
parseOutput({ text: text2 }, context) {
|
3984
|
+
const parseResult = (0, import_provider_utils10.safeParseJSON)({ text: text2 });
|
3985
|
+
if (!parseResult.success) {
|
3986
|
+
throw new NoObjectGeneratedError({
|
3987
|
+
message: "No object generated: could not parse the response.",
|
3988
|
+
cause: parseResult.error,
|
3989
|
+
text: text2,
|
3990
|
+
response: context.response,
|
3991
|
+
usage: context.usage
|
3992
|
+
});
|
3993
|
+
}
|
3994
|
+
const validationResult = (0, import_provider_utils10.safeValidateTypes)({
|
3995
|
+
value: parseResult.value,
|
3996
|
+
schema
|
3997
|
+
});
|
3998
|
+
if (!validationResult.success) {
|
3999
|
+
throw new NoObjectGeneratedError({
|
4000
|
+
message: "No object generated: response did not match schema.",
|
4001
|
+
cause: validationResult.error,
|
4002
|
+
text: text2,
|
4003
|
+
response: context.response,
|
4004
|
+
usage: context.usage
|
4005
|
+
});
|
4006
|
+
}
|
4007
|
+
return validationResult.value;
|
3925
4008
|
}
|
3926
4009
|
};
|
3927
4010
|
};
|