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.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: () => import_provider14.AISDKError,
23
+ AISDKError: () => import_provider15.AISDKError,
24
24
  AIStream: () => AIStream,
25
- APICallError: () => import_provider14.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: () => import_provider14.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: () => import_provider14.InvalidPromptError,
44
- InvalidResponseDataError: () => import_provider14.InvalidResponseDataError,
43
+ InvalidPromptError: () => import_provider15.InvalidPromptError,
44
+ InvalidResponseDataError: () => import_provider15.InvalidResponseDataError,
45
45
  InvalidToolArgumentsError: () => InvalidToolArgumentsError,
46
- JSONParseError: () => import_provider14.JSONParseError,
46
+ JSONParseError: () => import_provider15.JSONParseError,
47
47
  LangChainAdapter: () => langchain_adapter_exports,
48
48
  LangChainStream: () => LangChainStream,
49
- LoadAPIKeyError: () => import_provider14.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: () => import_provider14.TypeValidationError,
61
- UnsupportedFunctionalityError: () => import_provider14.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 import_provider_utils5 = require("@ai-sdk/provider-utils");
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
- if (output === "no-schema" && mode === void 0) {
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": schema != null ? { input: () => JSON.stringify(schema.jsonSchema) } : void 0,
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": 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: schema == null ? injectJsonInstruction({ prompt: system }) : model.supportsStructuredOutputs && schema != null ? system : injectJsonInstruction({
1768
+ system: outputStrategy.jsonSchema == null ? injectJsonInstruction({ prompt: system }) : model.supportsStructuredOutputs ? system : injectJsonInstruction({
1599
1769
  prompt: system,
1600
- schema: schema.jsonSchema
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: schema == null ? void 0 : schema.jsonSchema,
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: schema.jsonSchema
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, import_provider_utils5.safeParseJSON)({
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(parseResult.value)
1968
+ output: () => JSON.stringify(validationResult.value)
1798
1969
  }
1799
1970
  }
1800
1971
  })
1801
1972
  );
1802
1973
  return new DefaultGenerateObjectResult({
1803
- object: parseResult.value,
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
- if (output === "no-schema" && mode === void 0) {
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": schema != null ? { input: () => JSON.stringify(schema.jsonSchema) } : void 0,
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": 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: schema == null ? injectJsonInstruction({ prompt: system }) : model.supportsStructuredOutputs && schema != null ? system : injectJsonInstruction({
2133
+ system: outputStrategy.jsonSchema == null ? injectJsonInstruction({ prompt: system }) : model.supportsStructuredOutputs ? system : injectJsonInstruction({
1981
2134
  prompt: system,
1982
- schema: schema.jsonSchema
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: schema == null ? void 0 : schema.jsonSchema,
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: schema.jsonSchema
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
- schema,
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 currentObject = (0, import_ui_utils2.parsePartialJson)(
2173
- accumulatedText
2174
- );
2175
- if (!(0, import_ui_utils2.isDeepEqualData)(latestObject, currentObject)) {
2176
- latestObject = currentObject;
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
- delta = "";
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 = (0, import_provider_utils6.safeValidateTypes)({
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 import_provider9 = require("@ai-sdk/provider");
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 import_provider9.AISDKError {
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, import_provider9.getErrorMessage)(
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 import_provider9.AISDKError.hasMarker(error, marker7);
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 import_provider10 = require("@ai-sdk/provider");
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 import_provider10.AISDKError {
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 import_provider10.AISDKError.hasMarker(error, marker8);
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 import_provider11 = require("@ai-sdk/provider");
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 import_provider11.AISDKError {
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 import_provider11.AISDKError.hasMarker(error, marker9);
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 import_provider12 = require("@ai-sdk/provider");
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 import_provider12.AISDKError {
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 import_provider12.AISDKError.hasMarker(error, marker10);
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 import_provider13 = require("@ai-sdk/provider");
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 import_provider13.AISDKError {
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 import_provider13.AISDKError.hasMarker(error, marker11);
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 import_provider14 = require("@ai-sdk/provider");
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");