ai 3.3.16 → 3.3.17
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 +160 -187
- package/dist/index.d.ts +160 -187
- package/dist/index.js +250 -92
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +236 -74
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -6
package/dist/index.js
CHANGED
@@ -20,9 +20,9 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
20
20
|
// streams/index.ts
|
21
21
|
var streams_exports = {};
|
22
22
|
__export(streams_exports, {
|
23
|
-
AISDKError: () =>
|
23
|
+
AISDKError: () => import_provider15.AISDKError,
|
24
24
|
AIStream: () => AIStream,
|
25
|
-
APICallError: () =>
|
25
|
+
APICallError: () => import_provider15.APICallError,
|
26
26
|
AWSBedrockAnthropicMessagesStream: () => AWSBedrockAnthropicMessagesStream,
|
27
27
|
AWSBedrockAnthropicStream: () => AWSBedrockAnthropicStream,
|
28
28
|
AWSBedrockCohereStream: () => AWSBedrockCohereStream,
|
@@ -32,7 +32,7 @@ __export(streams_exports, {
|
|
32
32
|
AssistantResponse: () => AssistantResponse,
|
33
33
|
CohereStream: () => CohereStream,
|
34
34
|
DownloadError: () => DownloadError,
|
35
|
-
EmptyResponseBodyError: () =>
|
35
|
+
EmptyResponseBodyError: () => import_provider15.EmptyResponseBodyError,
|
36
36
|
GoogleGenerativeAIStream: () => GoogleGenerativeAIStream,
|
37
37
|
HuggingFaceStream: () => HuggingFaceStream,
|
38
38
|
InkeepStream: () => InkeepStream,
|
@@ -40,13 +40,13 @@ __export(streams_exports, {
|
|
40
40
|
InvalidDataContentError: () => InvalidDataContentError,
|
41
41
|
InvalidMessageRoleError: () => InvalidMessageRoleError,
|
42
42
|
InvalidModelIdError: () => InvalidModelIdError,
|
43
|
-
InvalidPromptError: () =>
|
44
|
-
InvalidResponseDataError: () =>
|
43
|
+
InvalidPromptError: () => import_provider15.InvalidPromptError,
|
44
|
+
InvalidResponseDataError: () => import_provider15.InvalidResponseDataError,
|
45
45
|
InvalidToolArgumentsError: () => InvalidToolArgumentsError,
|
46
|
-
JSONParseError: () =>
|
46
|
+
JSONParseError: () => import_provider15.JSONParseError,
|
47
47
|
LangChainAdapter: () => langchain_adapter_exports,
|
48
48
|
LangChainStream: () => LangChainStream,
|
49
|
-
LoadAPIKeyError: () =>
|
49
|
+
LoadAPIKeyError: () => import_provider15.LoadAPIKeyError,
|
50
50
|
MistralStream: () => MistralStream,
|
51
51
|
NoObjectGeneratedError: () => NoObjectGeneratedError,
|
52
52
|
NoSuchModelError: () => NoSuchModelError,
|
@@ -57,8 +57,8 @@ __export(streams_exports, {
|
|
57
57
|
RetryError: () => RetryError,
|
58
58
|
StreamData: () => StreamData2,
|
59
59
|
StreamingTextResponse: () => StreamingTextResponse,
|
60
|
-
TypeValidationError: () =>
|
61
|
-
UnsupportedFunctionalityError: () =>
|
60
|
+
TypeValidationError: () => import_provider15.TypeValidationError,
|
61
|
+
UnsupportedFunctionalityError: () => import_provider15.UnsupportedFunctionalityError,
|
62
62
|
convertToCoreMessages: () => convertToCoreMessages,
|
63
63
|
cosineSimilarity: () => cosineSimilarity,
|
64
64
|
createCallbacksTransformer: () => createCallbacksTransformer,
|
@@ -669,8 +669,7 @@ var DefaultEmbedManyResult = class {
|
|
669
669
|
};
|
670
670
|
|
671
671
|
// core/generate-object/generate-object.ts
|
672
|
-
var
|
673
|
-
var import_ui_utils = require("@ai-sdk/ui-utils");
|
672
|
+
var import_provider_utils6 = require("@ai-sdk/provider-utils");
|
674
673
|
|
675
674
|
// core/prompt/convert-to-language-model-prompt.ts
|
676
675
|
var import_provider_utils3 = require("@ai-sdk/provider-utils");
|
@@ -1466,6 +1465,168 @@ var NoObjectGeneratedError = class extends import_provider8.AISDKError {
|
|
1466
1465
|
};
|
1467
1466
|
_a6 = symbol6;
|
1468
1467
|
|
1468
|
+
// core/generate-object/output-strategy.ts
|
1469
|
+
var import_provider9 = require("@ai-sdk/provider");
|
1470
|
+
var import_provider_utils5 = require("@ai-sdk/provider-utils");
|
1471
|
+
var import_ui_utils = require("@ai-sdk/ui-utils");
|
1472
|
+
|
1473
|
+
// core/util/async-iterable-stream.ts
|
1474
|
+
function createAsyncIterableStream(source, transformer) {
|
1475
|
+
const transformedStream = source.pipeThrough(
|
1476
|
+
new TransformStream(transformer)
|
1477
|
+
);
|
1478
|
+
transformedStream[Symbol.asyncIterator] = () => {
|
1479
|
+
const reader = transformedStream.getReader();
|
1480
|
+
return {
|
1481
|
+
async next() {
|
1482
|
+
const { done, value } = await reader.read();
|
1483
|
+
return done ? { done: true, value: void 0 } : { done: false, value };
|
1484
|
+
}
|
1485
|
+
};
|
1486
|
+
};
|
1487
|
+
return transformedStream;
|
1488
|
+
}
|
1489
|
+
|
1490
|
+
// core/generate-object/output-strategy.ts
|
1491
|
+
var noSchemaOutputStrategy = {
|
1492
|
+
type: "no-schema",
|
1493
|
+
jsonSchema: void 0,
|
1494
|
+
validatePartialResult({ value }) {
|
1495
|
+
return { success: true, value };
|
1496
|
+
},
|
1497
|
+
validateFinalResult(value) {
|
1498
|
+
return value === void 0 ? { success: false, error: new NoObjectGeneratedError() } : { success: true, value };
|
1499
|
+
},
|
1500
|
+
createElementStream() {
|
1501
|
+
throw new import_provider9.UnsupportedFunctionalityError({
|
1502
|
+
functionality: "element streams in no-schema mode"
|
1503
|
+
});
|
1504
|
+
}
|
1505
|
+
};
|
1506
|
+
var objectOutputStrategy = (schema) => ({
|
1507
|
+
type: "object",
|
1508
|
+
jsonSchema: schema.jsonSchema,
|
1509
|
+
validatePartialResult({ value }) {
|
1510
|
+
return { success: true, value };
|
1511
|
+
},
|
1512
|
+
validateFinalResult(value) {
|
1513
|
+
return (0, import_provider_utils5.safeValidateTypes)({ value, schema });
|
1514
|
+
},
|
1515
|
+
createElementStream() {
|
1516
|
+
throw new import_provider9.UnsupportedFunctionalityError({
|
1517
|
+
functionality: "element streams in object mode"
|
1518
|
+
});
|
1519
|
+
}
|
1520
|
+
});
|
1521
|
+
var arrayOutputStrategy = (schema) => {
|
1522
|
+
const { $schema, ...itemSchema } = schema.jsonSchema;
|
1523
|
+
return {
|
1524
|
+
type: "object",
|
1525
|
+
// wrap in object that contains array of elements, since most LLMs will not
|
1526
|
+
// be able to generate an array directly:
|
1527
|
+
// possible future optimization: use arrays directly when model supports grammar-guided generation
|
1528
|
+
jsonSchema: {
|
1529
|
+
$schema: "http://json-schema.org/draft-07/schema#",
|
1530
|
+
type: "object",
|
1531
|
+
properties: {
|
1532
|
+
elements: { type: "array", items: itemSchema }
|
1533
|
+
},
|
1534
|
+
required: ["elements"],
|
1535
|
+
additionalProperties: false
|
1536
|
+
},
|
1537
|
+
validatePartialResult({
|
1538
|
+
value,
|
1539
|
+
parseState
|
1540
|
+
}) {
|
1541
|
+
if (!(0, import_provider9.isJSONObject)(value) || !(0, import_provider9.isJSONArray)(value.elements)) {
|
1542
|
+
return {
|
1543
|
+
success: false,
|
1544
|
+
error: new import_provider9.TypeValidationError({
|
1545
|
+
value,
|
1546
|
+
cause: "value must be an object that contains an array of elements"
|
1547
|
+
})
|
1548
|
+
};
|
1549
|
+
}
|
1550
|
+
const inputArray = value.elements;
|
1551
|
+
const resultArray = [];
|
1552
|
+
for (let i = 0; i < inputArray.length; i++) {
|
1553
|
+
const element = inputArray[i];
|
1554
|
+
const result = (0, import_provider_utils5.safeValidateTypes)({ value: element, schema });
|
1555
|
+
if (i === inputArray.length - 1 && (!result.success || parseState !== "successful-parse")) {
|
1556
|
+
continue;
|
1557
|
+
}
|
1558
|
+
if (!result.success) {
|
1559
|
+
return result;
|
1560
|
+
}
|
1561
|
+
resultArray.push(result.value);
|
1562
|
+
}
|
1563
|
+
return { success: true, value: resultArray };
|
1564
|
+
},
|
1565
|
+
validateFinalResult(value) {
|
1566
|
+
if (!(0, import_provider9.isJSONObject)(value) || !(0, import_provider9.isJSONArray)(value.elements)) {
|
1567
|
+
return {
|
1568
|
+
success: false,
|
1569
|
+
error: new import_provider9.TypeValidationError({
|
1570
|
+
value,
|
1571
|
+
cause: "value must be an object that contains an array of elements"
|
1572
|
+
})
|
1573
|
+
};
|
1574
|
+
}
|
1575
|
+
const inputArray = value.elements;
|
1576
|
+
for (const element of inputArray) {
|
1577
|
+
const result = (0, import_provider_utils5.safeValidateTypes)({ value: element, schema });
|
1578
|
+
if (!result.success) {
|
1579
|
+
return result;
|
1580
|
+
}
|
1581
|
+
}
|
1582
|
+
return { success: true, value: inputArray };
|
1583
|
+
},
|
1584
|
+
createElementStream(originalStream) {
|
1585
|
+
let publishedElements = 0;
|
1586
|
+
return createAsyncIterableStream(originalStream, {
|
1587
|
+
transform(chunk, controller) {
|
1588
|
+
switch (chunk.type) {
|
1589
|
+
case "object": {
|
1590
|
+
const array = chunk.object;
|
1591
|
+
for (; publishedElements < array.length; publishedElements++) {
|
1592
|
+
controller.enqueue(array[publishedElements]);
|
1593
|
+
}
|
1594
|
+
break;
|
1595
|
+
}
|
1596
|
+
case "text-delta":
|
1597
|
+
case "finish":
|
1598
|
+
break;
|
1599
|
+
case "error":
|
1600
|
+
controller.error(chunk.error);
|
1601
|
+
break;
|
1602
|
+
default: {
|
1603
|
+
const _exhaustiveCheck = chunk;
|
1604
|
+
throw new Error(`Unsupported chunk type: ${_exhaustiveCheck}`);
|
1605
|
+
}
|
1606
|
+
}
|
1607
|
+
}
|
1608
|
+
});
|
1609
|
+
}
|
1610
|
+
};
|
1611
|
+
};
|
1612
|
+
function getOutputStrategy({
|
1613
|
+
output,
|
1614
|
+
schema
|
1615
|
+
}) {
|
1616
|
+
switch (output) {
|
1617
|
+
case "object":
|
1618
|
+
return objectOutputStrategy((0, import_ui_utils.asSchema)(schema));
|
1619
|
+
case "array":
|
1620
|
+
return arrayOutputStrategy((0, import_ui_utils.asSchema)(schema));
|
1621
|
+
case "no-schema":
|
1622
|
+
return noSchemaOutputStrategy;
|
1623
|
+
default: {
|
1624
|
+
const _exhaustiveCheck = output;
|
1625
|
+
throw new Error(`Unsupported output: ${_exhaustiveCheck}`);
|
1626
|
+
}
|
1627
|
+
}
|
1628
|
+
}
|
1629
|
+
|
1469
1630
|
// core/generate-object/validate-object-generation-input.ts
|
1470
1631
|
function validateObjectGenerationInput({
|
1471
1632
|
output,
|
@@ -1474,7 +1635,7 @@ function validateObjectGenerationInput({
|
|
1474
1635
|
schemaName,
|
1475
1636
|
schemaDescription
|
1476
1637
|
}) {
|
1477
|
-
if (output != null && output !== "object" && output !== "no-schema") {
|
1638
|
+
if (output != null && output !== "object" && output !== "array" && output !== "no-schema") {
|
1478
1639
|
throw new InvalidArgumentError({
|
1479
1640
|
parameter: "output",
|
1480
1641
|
value: output,
|
@@ -1520,6 +1681,15 @@ function validateObjectGenerationInput({
|
|
1520
1681
|
});
|
1521
1682
|
}
|
1522
1683
|
}
|
1684
|
+
if (output === "array") {
|
1685
|
+
if (schema == null) {
|
1686
|
+
throw new InvalidArgumentError({
|
1687
|
+
parameter: "schema",
|
1688
|
+
value: schema,
|
1689
|
+
message: "Element schema is required for array output."
|
1690
|
+
});
|
1691
|
+
}
|
1692
|
+
}
|
1523
1693
|
}
|
1524
1694
|
|
1525
1695
|
// core/generate-object/generate-object.ts
|
@@ -1547,7 +1717,8 @@ async function generateObject({
|
|
1547
1717
|
schemaName,
|
1548
1718
|
schemaDescription
|
1549
1719
|
});
|
1550
|
-
|
1720
|
+
const outputStrategy = getOutputStrategy({ output, schema: inputSchema });
|
1721
|
+
if (outputStrategy.type === "no-schema" && mode === void 0) {
|
1551
1722
|
mode = "json";
|
1552
1723
|
}
|
1553
1724
|
const baseTelemetryAttributes = getBaseTelemetryAttributes({
|
@@ -1556,7 +1727,6 @@ async function generateObject({
|
|
1556
1727
|
headers,
|
1557
1728
|
settings: { ...settings, maxRetries }
|
1558
1729
|
});
|
1559
|
-
const schema = inputSchema != null ? (0, import_ui_utils.asSchema)(inputSchema) : void 0;
|
1560
1730
|
const tracer = getTracer({ isEnabled: (_a12 = telemetry == null ? void 0 : telemetry.isEnabled) != null ? _a12 : false });
|
1561
1731
|
return recordSpan({
|
1562
1732
|
name: "ai.generateObject",
|
@@ -1572,10 +1742,10 @@ async function generateObject({
|
|
1572
1742
|
"ai.prompt": {
|
1573
1743
|
input: () => JSON.stringify({ system, prompt, messages })
|
1574
1744
|
},
|
1575
|
-
"ai.schema":
|
1745
|
+
"ai.schema": outputStrategy.jsonSchema != null ? { input: () => JSON.stringify(outputStrategy.jsonSchema) } : void 0,
|
1576
1746
|
"ai.schema.name": schemaName,
|
1577
1747
|
"ai.schema.description": schemaDescription,
|
1578
|
-
"ai.settings.output":
|
1748
|
+
"ai.settings.output": outputStrategy.type,
|
1579
1749
|
"ai.settings.mode": mode
|
1580
1750
|
}
|
1581
1751
|
}),
|
@@ -1595,9 +1765,9 @@ async function generateObject({
|
|
1595
1765
|
switch (mode) {
|
1596
1766
|
case "json": {
|
1597
1767
|
const validatedPrompt = validatePrompt({
|
1598
|
-
system:
|
1768
|
+
system: outputStrategy.jsonSchema == null ? injectJsonInstruction({ prompt: system }) : model.supportsStructuredOutputs ? system : injectJsonInstruction({
|
1599
1769
|
prompt: system,
|
1600
|
-
schema:
|
1770
|
+
schema: outputStrategy.jsonSchema
|
1601
1771
|
}),
|
1602
1772
|
prompt,
|
1603
1773
|
messages
|
@@ -1638,7 +1808,7 @@ async function generateObject({
|
|
1638
1808
|
const result2 = await model.doGenerate({
|
1639
1809
|
mode: {
|
1640
1810
|
type: "object-json",
|
1641
|
-
schema:
|
1811
|
+
schema: outputStrategy.jsonSchema,
|
1642
1812
|
name: schemaName,
|
1643
1813
|
description: schemaDescription
|
1644
1814
|
},
|
@@ -1726,7 +1896,7 @@ async function generateObject({
|
|
1726
1896
|
type: "function",
|
1727
1897
|
name: schemaName != null ? schemaName : "json",
|
1728
1898
|
description: schemaDescription != null ? schemaDescription : "Respond with a JSON object.",
|
1729
|
-
parameters:
|
1899
|
+
parameters: outputStrategy.jsonSchema
|
1730
1900
|
}
|
1731
1901
|
},
|
1732
1902
|
...prepareCallSettings(settings),
|
@@ -1777,15 +1947,16 @@ async function generateObject({
|
|
1777
1947
|
throw new Error(`Unsupported mode: ${_exhaustiveCheck}`);
|
1778
1948
|
}
|
1779
1949
|
}
|
1780
|
-
const parseResult = (0,
|
1781
|
-
text: result,
|
1782
|
-
// type casting required for `undefined` schema (no-schema mode),
|
1783
|
-
// in which case <T> is <JSONValue> as desired.
|
1784
|
-
schema
|
1785
|
-
});
|
1950
|
+
const parseResult = (0, import_provider_utils6.safeParseJSON)({ text: result });
|
1786
1951
|
if (!parseResult.success) {
|
1787
1952
|
throw parseResult.error;
|
1788
1953
|
}
|
1954
|
+
const validationResult = outputStrategy.validateFinalResult(
|
1955
|
+
parseResult.value
|
1956
|
+
);
|
1957
|
+
if (!validationResult.success) {
|
1958
|
+
throw validationResult.error;
|
1959
|
+
}
|
1789
1960
|
span.setAttributes(
|
1790
1961
|
selectTelemetryAttributes({
|
1791
1962
|
telemetry,
|
@@ -1794,13 +1965,13 @@ async function generateObject({
|
|
1794
1965
|
"ai.usage.promptTokens": usage.promptTokens,
|
1795
1966
|
"ai.usage.completionTokens": usage.completionTokens,
|
1796
1967
|
"ai.result.object": {
|
1797
|
-
output: () => JSON.stringify(
|
1968
|
+
output: () => JSON.stringify(validationResult.value)
|
1798
1969
|
}
|
1799
1970
|
}
|
1800
1971
|
})
|
1801
1972
|
);
|
1802
1973
|
return new DefaultGenerateObjectResult({
|
1803
|
-
object:
|
1974
|
+
object: validationResult.value,
|
1804
1975
|
finishReason,
|
1805
1976
|
usage: calculateCompletionTokenUsage(usage),
|
1806
1977
|
warnings,
|
@@ -1834,7 +2005,6 @@ var DefaultGenerateObjectResult = class {
|
|
1834
2005
|
var experimental_generateObject = generateObject;
|
1835
2006
|
|
1836
2007
|
// core/generate-object/stream-object.ts
|
1837
|
-
var import_provider_utils6 = require("@ai-sdk/provider-utils");
|
1838
2008
|
var import_ui_utils2 = require("@ai-sdk/ui-utils");
|
1839
2009
|
|
1840
2010
|
// util/create-resolvable-promise.ts
|
@@ -1890,23 +2060,6 @@ var DelayedPromise = class {
|
|
1890
2060
|
}
|
1891
2061
|
};
|
1892
2062
|
|
1893
|
-
// core/util/async-iterable-stream.ts
|
1894
|
-
function createAsyncIterableStream(source, transformer) {
|
1895
|
-
const transformedStream = source.pipeThrough(
|
1896
|
-
new TransformStream(transformer)
|
1897
|
-
);
|
1898
|
-
transformedStream[Symbol.asyncIterator] = () => {
|
1899
|
-
const reader = transformedStream.getReader();
|
1900
|
-
return {
|
1901
|
-
async next() {
|
1902
|
-
const { done, value } = await reader.read();
|
1903
|
-
return done ? { done: true, value: void 0 } : { done: false, value };
|
1904
|
-
}
|
1905
|
-
};
|
1906
|
-
};
|
1907
|
-
return transformedStream;
|
1908
|
-
}
|
1909
|
-
|
1910
2063
|
// core/generate-object/stream-object.ts
|
1911
2064
|
async function streamObject({
|
1912
2065
|
model,
|
@@ -1933,7 +2086,8 @@ async function streamObject({
|
|
1933
2086
|
schemaName,
|
1934
2087
|
schemaDescription
|
1935
2088
|
});
|
1936
|
-
|
2089
|
+
const outputStrategy = getOutputStrategy({ output, schema: inputSchema });
|
2090
|
+
if (outputStrategy.type === "no-schema" && mode === void 0) {
|
1937
2091
|
mode = "json";
|
1938
2092
|
}
|
1939
2093
|
const baseTelemetryAttributes = getBaseTelemetryAttributes({
|
@@ -1944,7 +2098,6 @@ async function streamObject({
|
|
1944
2098
|
});
|
1945
2099
|
const tracer = getTracer({ isEnabled: (_a12 = telemetry == null ? void 0 : telemetry.isEnabled) != null ? _a12 : false });
|
1946
2100
|
const retry = retryWithExponentialBackoff({ maxRetries });
|
1947
|
-
const schema = inputSchema != null ? (0, import_ui_utils2.asSchema)(inputSchema) : void 0;
|
1948
2101
|
return recordSpan({
|
1949
2102
|
name: "ai.streamObject",
|
1950
2103
|
attributes: selectTelemetryAttributes({
|
@@ -1959,10 +2112,10 @@ async function streamObject({
|
|
1959
2112
|
"ai.prompt": {
|
1960
2113
|
input: () => JSON.stringify({ system, prompt, messages })
|
1961
2114
|
},
|
1962
|
-
"ai.schema":
|
2115
|
+
"ai.schema": outputStrategy.jsonSchema != null ? { input: () => JSON.stringify(outputStrategy.jsonSchema) } : void 0,
|
1963
2116
|
"ai.schema.name": schemaName,
|
1964
2117
|
"ai.schema.description": schemaDescription,
|
1965
|
-
"ai.settings.output":
|
2118
|
+
"ai.settings.output": outputStrategy.type,
|
1966
2119
|
"ai.settings.mode": mode
|
1967
2120
|
}
|
1968
2121
|
}),
|
@@ -1977,9 +2130,9 @@ async function streamObject({
|
|
1977
2130
|
switch (mode) {
|
1978
2131
|
case "json": {
|
1979
2132
|
const validatedPrompt = validatePrompt({
|
1980
|
-
system:
|
2133
|
+
system: outputStrategy.jsonSchema == null ? injectJsonInstruction({ prompt: system }) : model.supportsStructuredOutputs ? system : injectJsonInstruction({
|
1981
2134
|
prompt: system,
|
1982
|
-
schema:
|
2135
|
+
schema: outputStrategy.jsonSchema
|
1983
2136
|
}),
|
1984
2137
|
prompt,
|
1985
2138
|
messages
|
@@ -1987,7 +2140,7 @@ async function streamObject({
|
|
1987
2140
|
callOptions = {
|
1988
2141
|
mode: {
|
1989
2142
|
type: "object-json",
|
1990
|
-
schema:
|
2143
|
+
schema: outputStrategy.jsonSchema,
|
1991
2144
|
name: schemaName,
|
1992
2145
|
description: schemaDescription
|
1993
2146
|
},
|
@@ -2028,7 +2181,7 @@ async function streamObject({
|
|
2028
2181
|
type: "function",
|
2029
2182
|
name: schemaName != null ? schemaName : "json",
|
2030
2183
|
description: schemaDescription != null ? schemaDescription : "Respond with a JSON object.",
|
2031
|
-
parameters:
|
2184
|
+
parameters: outputStrategy.jsonSchema
|
2032
2185
|
}
|
2033
2186
|
},
|
2034
2187
|
...prepareCallSettings(settings),
|
@@ -2106,12 +2259,10 @@ async function streamObject({
|
|
2106
2259
|
})
|
2107
2260
|
);
|
2108
2261
|
return new DefaultStreamObjectResult({
|
2262
|
+
outputStrategy,
|
2109
2263
|
stream: stream.pipeThrough(new TransformStream(transformer)),
|
2110
2264
|
warnings,
|
2111
2265
|
rawResponse,
|
2112
|
-
// type casting required for `undefined` schema (no-schema mode),
|
2113
|
-
// in which case <T> is <JSONValue> as desired.
|
2114
|
-
schema,
|
2115
2266
|
onFinish,
|
2116
2267
|
rootSpan,
|
2117
2268
|
doStreamSpan,
|
@@ -2126,7 +2277,7 @@ var DefaultStreamObjectResult = class {
|
|
2126
2277
|
stream,
|
2127
2278
|
warnings,
|
2128
2279
|
rawResponse,
|
2129
|
-
|
2280
|
+
outputStrategy,
|
2130
2281
|
onFinish,
|
2131
2282
|
rootSpan,
|
2132
2283
|
doStreamSpan,
|
@@ -2135,6 +2286,7 @@ var DefaultStreamObjectResult = class {
|
|
2135
2286
|
}) {
|
2136
2287
|
this.warnings = warnings;
|
2137
2288
|
this.rawResponse = rawResponse;
|
2289
|
+
this.outputStrategy = outputStrategy;
|
2138
2290
|
this.objectPromise = new DelayedPromise();
|
2139
2291
|
const { resolve: resolveUsage, promise: usagePromise } = createResolvablePromise();
|
2140
2292
|
this.usage = usagePromise;
|
@@ -2150,6 +2302,7 @@ var DefaultStreamObjectResult = class {
|
|
2150
2302
|
let error;
|
2151
2303
|
let accumulatedText = "";
|
2152
2304
|
let delta = "";
|
2305
|
+
let latestObjectJson = void 0;
|
2153
2306
|
let latestObject = void 0;
|
2154
2307
|
let firstChunk = true;
|
2155
2308
|
const self = this;
|
@@ -2169,20 +2322,25 @@ var DefaultStreamObjectResult = class {
|
|
2169
2322
|
if (typeof chunk === "string") {
|
2170
2323
|
accumulatedText += chunk;
|
2171
2324
|
delta += chunk;
|
2172
|
-
const
|
2173
|
-
|
2174
|
-
|
2175
|
-
|
2176
|
-
|
2177
|
-
controller.enqueue({
|
2178
|
-
type: "object",
|
2179
|
-
object: currentObject
|
2180
|
-
});
|
2181
|
-
controller.enqueue({
|
2182
|
-
type: "text-delta",
|
2183
|
-
textDelta: delta
|
2325
|
+
const { value: currentObjectJson, state: parseState } = (0, import_ui_utils2.parsePartialJson)(accumulatedText);
|
2326
|
+
if (currentObjectJson !== void 0 && !(0, import_ui_utils2.isDeepEqualData)(latestObjectJson, currentObjectJson)) {
|
2327
|
+
const validationResult = outputStrategy.validatePartialResult({
|
2328
|
+
value: currentObjectJson,
|
2329
|
+
parseState
|
2184
2330
|
});
|
2185
|
-
|
2331
|
+
if (validationResult.success && !(0, import_ui_utils2.isDeepEqualData)(latestObject, validationResult.value)) {
|
2332
|
+
latestObjectJson = currentObjectJson;
|
2333
|
+
latestObject = validationResult.value;
|
2334
|
+
controller.enqueue({
|
2335
|
+
type: "object",
|
2336
|
+
object: latestObject
|
2337
|
+
});
|
2338
|
+
controller.enqueue({
|
2339
|
+
type: "text-delta",
|
2340
|
+
textDelta: delta
|
2341
|
+
});
|
2342
|
+
delta = "";
|
2343
|
+
}
|
2186
2344
|
}
|
2187
2345
|
return;
|
2188
2346
|
}
|
@@ -2200,10 +2358,7 @@ var DefaultStreamObjectResult = class {
|
|
2200
2358
|
controller.enqueue({ ...chunk, usage });
|
2201
2359
|
resolveUsage(usage);
|
2202
2360
|
resolveProviderMetadata(providerMetadata);
|
2203
|
-
const validationResult = (
|
2204
|
-
value: latestObject,
|
2205
|
-
schema
|
2206
|
-
});
|
2361
|
+
const validationResult = outputStrategy.validateFinalResult(latestObjectJson);
|
2207
2362
|
if (validationResult.success) {
|
2208
2363
|
object = validationResult.value;
|
2209
2364
|
self.objectPromise.resolve(object);
|
@@ -2298,6 +2453,9 @@ var DefaultStreamObjectResult = class {
|
|
2298
2453
|
}
|
2299
2454
|
});
|
2300
2455
|
}
|
2456
|
+
get elementStream() {
|
2457
|
+
return this.outputStrategy.createElementStream(this.originalStream);
|
2458
|
+
}
|
2301
2459
|
get textStream() {
|
2302
2460
|
return createAsyncIterableStream(this.originalStream, {
|
2303
2461
|
transform(chunk, controller) {
|
@@ -2396,17 +2554,17 @@ var import_provider_utils7 = require("@ai-sdk/provider-utils");
|
|
2396
2554
|
var import_ui_utils4 = require("@ai-sdk/ui-utils");
|
2397
2555
|
|
2398
2556
|
// errors/invalid-tool-arguments-error.ts
|
2399
|
-
var
|
2557
|
+
var import_provider10 = require("@ai-sdk/provider");
|
2400
2558
|
var name7 = "AI_InvalidToolArgumentsError";
|
2401
2559
|
var marker7 = `vercel.ai.error.${name7}`;
|
2402
2560
|
var symbol7 = Symbol.for(marker7);
|
2403
2561
|
var _a7;
|
2404
|
-
var InvalidToolArgumentsError = class extends
|
2562
|
+
var InvalidToolArgumentsError = class extends import_provider10.AISDKError {
|
2405
2563
|
constructor({
|
2406
2564
|
toolArgs,
|
2407
2565
|
toolName,
|
2408
2566
|
cause,
|
2409
|
-
message = `Invalid arguments for tool ${toolName}: ${(0,
|
2567
|
+
message = `Invalid arguments for tool ${toolName}: ${(0, import_provider10.getErrorMessage)(
|
2410
2568
|
cause
|
2411
2569
|
)}`
|
2412
2570
|
}) {
|
@@ -2416,7 +2574,7 @@ var InvalidToolArgumentsError = class extends import_provider9.AISDKError {
|
|
2416
2574
|
this.toolName = toolName;
|
2417
2575
|
}
|
2418
2576
|
static isInstance(error) {
|
2419
|
-
return
|
2577
|
+
return import_provider10.AISDKError.hasMarker(error, marker7);
|
2420
2578
|
}
|
2421
2579
|
/**
|
2422
2580
|
* @deprecated use `isInstance` instead
|
@@ -2441,12 +2599,12 @@ var InvalidToolArgumentsError = class extends import_provider9.AISDKError {
|
|
2441
2599
|
_a7 = symbol7;
|
2442
2600
|
|
2443
2601
|
// errors/no-such-tool-error.ts
|
2444
|
-
var
|
2602
|
+
var import_provider11 = require("@ai-sdk/provider");
|
2445
2603
|
var name8 = "AI_NoSuchToolError";
|
2446
2604
|
var marker8 = `vercel.ai.error.${name8}`;
|
2447
2605
|
var symbol8 = Symbol.for(marker8);
|
2448
2606
|
var _a8;
|
2449
|
-
var NoSuchToolError = class extends
|
2607
|
+
var NoSuchToolError = class extends import_provider11.AISDKError {
|
2450
2608
|
constructor({
|
2451
2609
|
toolName,
|
2452
2610
|
availableTools = void 0,
|
@@ -2458,7 +2616,7 @@ var NoSuchToolError = class extends import_provider10.AISDKError {
|
|
2458
2616
|
this.availableTools = availableTools;
|
2459
2617
|
}
|
2460
2618
|
static isInstance(error) {
|
2461
|
-
return
|
2619
|
+
return import_provider11.AISDKError.hasMarker(error, marker8);
|
2462
2620
|
}
|
2463
2621
|
/**
|
2464
2622
|
* @deprecated use `isInstance` instead
|
@@ -3699,12 +3857,12 @@ function convertToCoreMessages(messages) {
|
|
3699
3857
|
}
|
3700
3858
|
|
3701
3859
|
// core/registry/invalid-model-id-error.ts
|
3702
|
-
var
|
3860
|
+
var import_provider12 = require("@ai-sdk/provider");
|
3703
3861
|
var name9 = "AI_InvalidModelIdError";
|
3704
3862
|
var marker9 = `vercel.ai.error.${name9}`;
|
3705
3863
|
var symbol9 = Symbol.for(marker9);
|
3706
3864
|
var _a9;
|
3707
|
-
var InvalidModelIdError = class extends
|
3865
|
+
var InvalidModelIdError = class extends import_provider12.AISDKError {
|
3708
3866
|
constructor({
|
3709
3867
|
id,
|
3710
3868
|
message = `Invalid model id: ${id}`
|
@@ -3714,7 +3872,7 @@ var InvalidModelIdError = class extends import_provider11.AISDKError {
|
|
3714
3872
|
this.id = id;
|
3715
3873
|
}
|
3716
3874
|
static isInstance(error) {
|
3717
|
-
return
|
3875
|
+
return import_provider12.AISDKError.hasMarker(error, marker9);
|
3718
3876
|
}
|
3719
3877
|
/**
|
3720
3878
|
* @deprecated use `isInstance` instead
|
@@ -3737,12 +3895,12 @@ var InvalidModelIdError = class extends import_provider11.AISDKError {
|
|
3737
3895
|
_a9 = symbol9;
|
3738
3896
|
|
3739
3897
|
// core/registry/no-such-model-error.ts
|
3740
|
-
var
|
3898
|
+
var import_provider13 = require("@ai-sdk/provider");
|
3741
3899
|
var name10 = "AI_NoSuchModelError";
|
3742
3900
|
var marker10 = `vercel.ai.error.${name10}`;
|
3743
3901
|
var symbol10 = Symbol.for(marker10);
|
3744
3902
|
var _a10;
|
3745
|
-
var NoSuchModelError = class extends
|
3903
|
+
var NoSuchModelError = class extends import_provider13.AISDKError {
|
3746
3904
|
constructor({
|
3747
3905
|
modelId,
|
3748
3906
|
modelType,
|
@@ -3754,7 +3912,7 @@ var NoSuchModelError = class extends import_provider12.AISDKError {
|
|
3754
3912
|
this.modelType = modelType;
|
3755
3913
|
}
|
3756
3914
|
static isInstance(error) {
|
3757
|
-
return
|
3915
|
+
return import_provider13.AISDKError.hasMarker(error, marker10);
|
3758
3916
|
}
|
3759
3917
|
/**
|
3760
3918
|
* @deprecated use `isInstance` instead
|
@@ -3778,12 +3936,12 @@ var NoSuchModelError = class extends import_provider12.AISDKError {
|
|
3778
3936
|
_a10 = symbol10;
|
3779
3937
|
|
3780
3938
|
// core/registry/no-such-provider-error.ts
|
3781
|
-
var
|
3939
|
+
var import_provider14 = require("@ai-sdk/provider");
|
3782
3940
|
var name11 = "AI_NoSuchProviderError";
|
3783
3941
|
var marker11 = `vercel.ai.error.${name11}`;
|
3784
3942
|
var symbol11 = Symbol.for(marker11);
|
3785
3943
|
var _a11;
|
3786
|
-
var NoSuchProviderError = class extends
|
3944
|
+
var NoSuchProviderError = class extends import_provider14.AISDKError {
|
3787
3945
|
constructor({
|
3788
3946
|
providerId,
|
3789
3947
|
availableProviders,
|
@@ -3795,7 +3953,7 @@ var NoSuchProviderError = class extends import_provider13.AISDKError {
|
|
3795
3953
|
this.availableProviders = availableProviders;
|
3796
3954
|
}
|
3797
3955
|
static isInstance(error) {
|
3798
|
-
return
|
3956
|
+
return import_provider14.AISDKError.hasMarker(error, marker11);
|
3799
3957
|
}
|
3800
3958
|
/**
|
3801
3959
|
* @deprecated use `isInstance` instead
|
@@ -3909,7 +4067,7 @@ function magnitude(vector) {
|
|
3909
4067
|
}
|
3910
4068
|
|
3911
4069
|
// errors/index.ts
|
3912
|
-
var
|
4070
|
+
var import_provider15 = require("@ai-sdk/provider");
|
3913
4071
|
|
3914
4072
|
// streams/ai-stream.ts
|
3915
4073
|
var import_eventsource_parser = require("eventsource-parser");
|