@puckeditor/cloud-client 0.7.1-canary.de512376 → 0.8.0-canary.06341da7

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.
@@ -13,13 +13,13 @@ var tool = (t) => t;
13
13
  // src/api/chat.ts
14
14
  init_react_import();
15
15
 
16
- // ../../node_modules/.pnpm/ai@6.0.61_zod@4.3.6/node_modules/ai/dist/index.mjs
16
+ // ../../node_modules/.pnpm/ai@6.0.197_zod@4.3.6/node_modules/ai/dist/index.mjs
17
17
  init_react_import();
18
18
 
19
- // ../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.10_zod@4.3.6/node_modules/@ai-sdk/provider-utils/dist/index.mjs
19
+ // ../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.27_zod@4.3.6/node_modules/@ai-sdk/provider-utils/dist/index.mjs
20
20
  init_react_import();
21
21
 
22
- // ../../node_modules/.pnpm/@ai-sdk+provider@3.0.5/node_modules/@ai-sdk/provider/dist/index.mjs
22
+ // ../../node_modules/.pnpm/@ai-sdk+provider@3.0.10/node_modules/@ai-sdk/provider/dist/index.mjs
23
23
  init_react_import();
24
24
  var marker = "vercel.ai.error";
25
25
  var symbol = Symbol.for(marker);
@@ -290,34 +290,61 @@ var symbol13 = Symbol.for(marker13);
290
290
  var _a13;
291
291
  var _b13;
292
292
  var TypeValidationError = class _TypeValidationError extends (_b13 = AISDKError, _a13 = symbol13, _b13) {
293
- constructor({ value, cause }) {
293
+ constructor({
294
+ value,
295
+ cause,
296
+ context
297
+ }) {
298
+ let contextPrefix = "Type validation failed";
299
+ if (context == null ? void 0 : context.field) {
300
+ contextPrefix += ` for ${context.field}`;
301
+ }
302
+ if ((context == null ? void 0 : context.entityName) || (context == null ? void 0 : context.entityId)) {
303
+ contextPrefix += " (";
304
+ const parts = [];
305
+ if (context.entityName) {
306
+ parts.push(context.entityName);
307
+ }
308
+ if (context.entityId) {
309
+ parts.push(`id: "${context.entityId}"`);
310
+ }
311
+ contextPrefix += parts.join(", ");
312
+ contextPrefix += ")";
313
+ }
294
314
  super({
295
315
  name: name12,
296
- message: `Type validation failed: Value: ${JSON.stringify(value)}.
316
+ message: `${contextPrefix}: Value: ${JSON.stringify(value)}.
297
317
  Error message: ${getErrorMessage(cause)}`,
298
318
  cause
299
319
  });
300
320
  this[_a13] = true;
301
321
  this.value = value;
322
+ this.context = context;
302
323
  }
303
324
  static isInstance(error48) {
304
325
  return AISDKError.hasMarker(error48, marker13);
305
326
  }
306
327
  /**
307
328
  * Wraps an error into a TypeValidationError.
308
- * If the cause is already a TypeValidationError with the same value, it returns the cause.
329
+ * If the cause is already a TypeValidationError with the same value and context, it returns the cause.
309
330
  * Otherwise, it creates a new TypeValidationError.
310
331
  *
311
332
  * @param {Object} params - The parameters for wrapping the error.
312
333
  * @param {unknown} params.value - The value that failed validation.
313
334
  * @param {unknown} params.cause - The original error or cause of the validation failure.
335
+ * @param {TypeValidationContext} params.context - Optional context about what is being validated.
314
336
  * @returns {TypeValidationError} A TypeValidationError instance.
315
337
  */
316
338
  static wrap({
317
339
  value,
318
- cause
340
+ cause,
341
+ context
319
342
  }) {
320
- return _TypeValidationError.isInstance(cause) && cause.value === value ? cause : new _TypeValidationError({ value, cause });
343
+ var _a153, _b152, _c;
344
+ if (_TypeValidationError.isInstance(cause) && cause.value === value && ((_a153 = cause.context) == null ? void 0 : _a153.field) === (context == null ? void 0 : context.field) && ((_b152 = cause.context) == null ? void 0 : _b152.entityName) === (context == null ? void 0 : context.entityName) && ((_c = cause.context) == null ? void 0 : _c.entityId) === (context == null ? void 0 : context.entityId)) {
345
+ return cause;
346
+ }
347
+ return new _TypeValidationError({ value, cause, context });
321
348
  }
322
349
  };
323
350
  var name13 = "AI_UnsupportedFunctionalityError";
@@ -872,7 +899,7 @@ var NEVER = Object.freeze({
872
899
  status: "aborted"
873
900
  });
874
901
  // @__NO_SIDE_EFFECTS__
875
- function $constructor(name20, initializer3, params) {
902
+ function $constructor(name21, initializer3, params) {
876
903
  function init(inst, def) {
877
904
  if (!inst._zod) {
878
905
  Object.defineProperty(inst, "_zod", {
@@ -884,10 +911,10 @@ function $constructor(name20, initializer3, params) {
884
911
  enumerable: false
885
912
  });
886
913
  }
887
- if (inst._zod.traits.has(name20)) {
914
+ if (inst._zod.traits.has(name21)) {
888
915
  return;
889
916
  }
890
- inst._zod.traits.add(name20);
917
+ inst._zod.traits.add(name21);
891
918
  initializer3(inst, def);
892
919
  const proto = _.prototype;
893
920
  const keys = Object.keys(proto);
@@ -901,12 +928,12 @@ function $constructor(name20, initializer3, params) {
901
928
  const Parent = params?.Parent ?? Object;
902
929
  class Definition extends Parent {
903
930
  }
904
- Object.defineProperty(Definition, "name", { value: name20 });
931
+ Object.defineProperty(Definition, "name", { value: name21 });
905
932
  function _(def) {
906
- var _a20;
933
+ var _a21;
907
934
  const inst = params?.Parent ? new Definition() : this;
908
935
  init(inst, def);
909
- (_a20 = inst._zod).deferred ?? (_a20.deferred = []);
936
+ (_a21 = inst._zod).deferred ?? (_a21.deferred = []);
910
937
  for (const fn of inst._zod.deferred) {
911
938
  fn();
912
939
  }
@@ -917,10 +944,10 @@ function $constructor(name20, initializer3, params) {
917
944
  value: (inst) => {
918
945
  if (params?.Parent && inst instanceof params.Parent)
919
946
  return true;
920
- return inst?._zod?.traits?.has(name20);
947
+ return inst?._zod?.traits?.has(name21);
921
948
  }
922
949
  });
923
- Object.defineProperty(_, "name", { value: name20 });
950
+ Object.defineProperty(_, "name", { value: name21 });
924
951
  return _;
925
952
  }
926
953
  var $brand = Symbol("zod_brand");
@@ -930,8 +957,8 @@ var $ZodAsyncError = class extends Error {
930
957
  }
931
958
  };
932
959
  var $ZodEncodeError = class extends Error {
933
- constructor(name20) {
934
- super(`Encountered unidirectional transform during encode: ${name20}`);
960
+ constructor(name21) {
961
+ super(`Encountered unidirectional transform during encode: ${name21}`);
935
962
  this.name = "ZodEncodeError";
936
963
  }
937
964
  };
@@ -1510,8 +1537,8 @@ function aborted(x, startIndex = 0) {
1510
1537
  }
1511
1538
  function prefixIssues(path, issues) {
1512
1539
  return issues.map((iss) => {
1513
- var _a20;
1514
- (_a20 = iss).path ?? (_a20.path = []);
1540
+ var _a21;
1541
+ (_a21 = iss).path ?? (_a21.path = []);
1515
1542
  iss.path.unshift(path);
1516
1543
  return iss;
1517
1544
  });
@@ -1696,7 +1723,7 @@ function formatError(error48, mapper = (issue2) => issue2.message) {
1696
1723
  function treeifyError(error48, mapper = (issue2) => issue2.message) {
1697
1724
  const result = { errors: [] };
1698
1725
  const processError = (error49, path = []) => {
1699
- var _a20, _b16;
1726
+ var _a21, _b16;
1700
1727
  for (const issue2 of error49.issues) {
1701
1728
  if (issue2.code === "invalid_union" && issue2.errors.length) {
1702
1729
  issue2.errors.map((issues) => processError({ issues }, issue2.path));
@@ -1717,7 +1744,7 @@ function treeifyError(error48, mapper = (issue2) => issue2.message) {
1717
1744
  const terminal = i === fullpath.length - 1;
1718
1745
  if (typeof el === "string") {
1719
1746
  curr.properties ?? (curr.properties = {});
1720
- (_a20 = curr.properties)[el] ?? (_a20[el] = { errors: [] });
1747
+ (_a21 = curr.properties)[el] ?? (_a21[el] = { errors: [] });
1721
1748
  curr = curr.properties[el];
1722
1749
  } else {
1723
1750
  curr.items ?? (curr.items = []);
@@ -2018,10 +2045,10 @@ var sha512_base64url = /* @__PURE__ */ fixedBase64url(86);
2018
2045
 
2019
2046
  // ../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/checks.js
2020
2047
  var $ZodCheck = /* @__PURE__ */ $constructor("$ZodCheck", (inst, def) => {
2021
- var _a20;
2048
+ var _a21;
2022
2049
  inst._zod ?? (inst._zod = {});
2023
2050
  inst._zod.def = def;
2024
- (_a20 = inst._zod).onattach ?? (_a20.onattach = []);
2051
+ (_a21 = inst._zod).onattach ?? (_a21.onattach = []);
2025
2052
  });
2026
2053
  var numericOriginMap = {
2027
2054
  number: "number",
@@ -2087,8 +2114,8 @@ var $ZodCheckGreaterThan = /* @__PURE__ */ $constructor("$ZodCheckGreaterThan",
2087
2114
  var $ZodCheckMultipleOf = /* @__PURE__ */ $constructor("$ZodCheckMultipleOf", (inst, def) => {
2088
2115
  $ZodCheck.init(inst, def);
2089
2116
  inst._zod.onattach.push((inst2) => {
2090
- var _a20;
2091
- (_a20 = inst2._zod.bag).multipleOf ?? (_a20.multipleOf = def.value);
2117
+ var _a21;
2118
+ (_a21 = inst2._zod.bag).multipleOf ?? (_a21.multipleOf = def.value);
2092
2119
  });
2093
2120
  inst._zod.check = (payload) => {
2094
2121
  if (typeof payload.value !== typeof def.value)
@@ -2221,9 +2248,9 @@ var $ZodCheckBigIntFormat = /* @__PURE__ */ $constructor("$ZodCheckBigIntFormat"
2221
2248
  };
2222
2249
  });
2223
2250
  var $ZodCheckMaxSize = /* @__PURE__ */ $constructor("$ZodCheckMaxSize", (inst, def) => {
2224
- var _a20;
2251
+ var _a21;
2225
2252
  $ZodCheck.init(inst, def);
2226
- (_a20 = inst._zod.def).when ?? (_a20.when = (payload) => {
2253
+ (_a21 = inst._zod.def).when ?? (_a21.when = (payload) => {
2227
2254
  const val = payload.value;
2228
2255
  return !nullish(val) && val.size !== void 0;
2229
2256
  });
@@ -2249,9 +2276,9 @@ var $ZodCheckMaxSize = /* @__PURE__ */ $constructor("$ZodCheckMaxSize", (inst, d
2249
2276
  };
2250
2277
  });
2251
2278
  var $ZodCheckMinSize = /* @__PURE__ */ $constructor("$ZodCheckMinSize", (inst, def) => {
2252
- var _a20;
2279
+ var _a21;
2253
2280
  $ZodCheck.init(inst, def);
2254
- (_a20 = inst._zod.def).when ?? (_a20.when = (payload) => {
2281
+ (_a21 = inst._zod.def).when ?? (_a21.when = (payload) => {
2255
2282
  const val = payload.value;
2256
2283
  return !nullish(val) && val.size !== void 0;
2257
2284
  });
@@ -2277,9 +2304,9 @@ var $ZodCheckMinSize = /* @__PURE__ */ $constructor("$ZodCheckMinSize", (inst, d
2277
2304
  };
2278
2305
  });
2279
2306
  var $ZodCheckSizeEquals = /* @__PURE__ */ $constructor("$ZodCheckSizeEquals", (inst, def) => {
2280
- var _a20;
2307
+ var _a21;
2281
2308
  $ZodCheck.init(inst, def);
2282
- (_a20 = inst._zod.def).when ?? (_a20.when = (payload) => {
2309
+ (_a21 = inst._zod.def).when ?? (_a21.when = (payload) => {
2283
2310
  const val = payload.value;
2284
2311
  return !nullish(val) && val.size !== void 0;
2285
2312
  });
@@ -2307,9 +2334,9 @@ var $ZodCheckSizeEquals = /* @__PURE__ */ $constructor("$ZodCheckSizeEquals", (i
2307
2334
  };
2308
2335
  });
2309
2336
  var $ZodCheckMaxLength = /* @__PURE__ */ $constructor("$ZodCheckMaxLength", (inst, def) => {
2310
- var _a20;
2337
+ var _a21;
2311
2338
  $ZodCheck.init(inst, def);
2312
- (_a20 = inst._zod.def).when ?? (_a20.when = (payload) => {
2339
+ (_a21 = inst._zod.def).when ?? (_a21.when = (payload) => {
2313
2340
  const val = payload.value;
2314
2341
  return !nullish(val) && val.length !== void 0;
2315
2342
  });
@@ -2336,9 +2363,9 @@ var $ZodCheckMaxLength = /* @__PURE__ */ $constructor("$ZodCheckMaxLength", (ins
2336
2363
  };
2337
2364
  });
2338
2365
  var $ZodCheckMinLength = /* @__PURE__ */ $constructor("$ZodCheckMinLength", (inst, def) => {
2339
- var _a20;
2366
+ var _a21;
2340
2367
  $ZodCheck.init(inst, def);
2341
- (_a20 = inst._zod.def).when ?? (_a20.when = (payload) => {
2368
+ (_a21 = inst._zod.def).when ?? (_a21.when = (payload) => {
2342
2369
  const val = payload.value;
2343
2370
  return !nullish(val) && val.length !== void 0;
2344
2371
  });
@@ -2365,9 +2392,9 @@ var $ZodCheckMinLength = /* @__PURE__ */ $constructor("$ZodCheckMinLength", (ins
2365
2392
  };
2366
2393
  });
2367
2394
  var $ZodCheckLengthEquals = /* @__PURE__ */ $constructor("$ZodCheckLengthEquals", (inst, def) => {
2368
- var _a20;
2395
+ var _a21;
2369
2396
  $ZodCheck.init(inst, def);
2370
- (_a20 = inst._zod.def).when ?? (_a20.when = (payload) => {
2397
+ (_a21 = inst._zod.def).when ?? (_a21.when = (payload) => {
2371
2398
  const val = payload.value;
2372
2399
  return !nullish(val) && val.length !== void 0;
2373
2400
  });
@@ -2396,7 +2423,7 @@ var $ZodCheckLengthEquals = /* @__PURE__ */ $constructor("$ZodCheckLengthEquals"
2396
2423
  };
2397
2424
  });
2398
2425
  var $ZodCheckStringFormat = /* @__PURE__ */ $constructor("$ZodCheckStringFormat", (inst, def) => {
2399
- var _a20, _b16;
2426
+ var _a21, _b16;
2400
2427
  $ZodCheck.init(inst, def);
2401
2428
  inst._zod.onattach.push((inst2) => {
2402
2429
  const bag = inst2._zod.bag;
@@ -2407,7 +2434,7 @@ var $ZodCheckStringFormat = /* @__PURE__ */ $constructor("$ZodCheckStringFormat"
2407
2434
  }
2408
2435
  });
2409
2436
  if (def.pattern)
2410
- (_a20 = inst._zod).check ?? (_a20.check = (payload) => {
2437
+ (_a21 = inst._zod).check ?? (_a21.check = (payload) => {
2411
2438
  def.pattern.lastIndex = 0;
2412
2439
  if (def.pattern.test(payload.value))
2413
2440
  return;
@@ -2611,7 +2638,7 @@ var version = {
2611
2638
 
2612
2639
  // ../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/schemas.js
2613
2640
  var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
2614
- var _a20;
2641
+ var _a21;
2615
2642
  inst ?? (inst = {});
2616
2643
  inst._zod.def = def;
2617
2644
  inst._zod.bag = inst._zod.bag || {};
@@ -2626,7 +2653,7 @@ var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
2626
2653
  }
2627
2654
  }
2628
2655
  if (checks.length === 0) {
2629
- (_a20 = inst._zod).deferred ?? (_a20.deferred = []);
2656
+ (_a21 = inst._zod).deferred ?? (_a21.deferred = []);
2630
2657
  inst._zod.deferred?.push(() => {
2631
2658
  inst._zod.run = inst._zod.parse;
2632
2659
  });
@@ -11326,7 +11353,7 @@ function initializeContext(params) {
11326
11353
  };
11327
11354
  }
11328
11355
  function process2(schema, ctx, _params = { path: [], schemaPath: [] }) {
11329
- var _a20;
11356
+ var _a21;
11330
11357
  const def = schema._zod.def;
11331
11358
  const seen = ctx.seen.get(schema);
11332
11359
  if (seen) {
@@ -11374,7 +11401,7 @@ function process2(schema, ctx, _params = { path: [], schemaPath: [] }) {
11374
11401
  delete result.schema.default;
11375
11402
  }
11376
11403
  if (ctx.io === "input" && result.schema._prefault)
11377
- (_a20 = result.schema).default ?? (_a20.default = result.schema._prefault);
11404
+ (_a21 = result.schema).default ?? (_a21.default = result.schema._prefault);
11378
11405
  delete result.schema._prefault;
11379
11406
  const _result = ctx.seen.get(schema);
11380
11407
  return _result.schema;
@@ -18109,7 +18136,7 @@ var nullableType = ZodNullable2.create;
18109
18136
  var preprocessType = ZodEffects.createWithPreprocess;
18110
18137
  var pipelineType = ZodPipeline.create;
18111
18138
 
18112
- // ../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.10_zod@4.3.6/node_modules/@ai-sdk/provider-utils/dist/index.mjs
18139
+ // ../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.27_zod@4.3.6/node_modules/@ai-sdk/provider-utils/dist/index.mjs
18113
18140
  var { btoa: btoa2, atob: atob2 } = globalThis;
18114
18141
  var name14 = "AI_DownloadError";
18115
18142
  var marker15 = `vercel.ai.error.${name14}`;
@@ -18134,6 +18161,156 @@ var DownloadError = class extends (_b15 = AISDKError, _a16 = symbol16, _b15) {
18134
18161
  return AISDKError.hasMarker(error48, marker15);
18135
18162
  }
18136
18163
  };
18164
+ var DEFAULT_MAX_DOWNLOAD_SIZE = 2 * 1024 * 1024 * 1024;
18165
+ async function readResponseWithSizeLimit({
18166
+ response,
18167
+ url: url2,
18168
+ maxBytes = DEFAULT_MAX_DOWNLOAD_SIZE
18169
+ }) {
18170
+ const contentLength = response.headers.get("content-length");
18171
+ if (contentLength != null) {
18172
+ const length = parseInt(contentLength, 10);
18173
+ if (!isNaN(length) && length > maxBytes) {
18174
+ throw new DownloadError({
18175
+ url: url2,
18176
+ message: `Download of ${url2} exceeded maximum size of ${maxBytes} bytes (Content-Length: ${length}).`
18177
+ });
18178
+ }
18179
+ }
18180
+ const body = response.body;
18181
+ if (body == null) {
18182
+ return new Uint8Array(0);
18183
+ }
18184
+ const reader = body.getReader();
18185
+ const chunks = [];
18186
+ let totalBytes = 0;
18187
+ try {
18188
+ while (true) {
18189
+ const { done, value } = await reader.read();
18190
+ if (done) {
18191
+ break;
18192
+ }
18193
+ totalBytes += value.length;
18194
+ if (totalBytes > maxBytes) {
18195
+ throw new DownloadError({
18196
+ url: url2,
18197
+ message: `Download of ${url2} exceeded maximum size of ${maxBytes} bytes.`
18198
+ });
18199
+ }
18200
+ chunks.push(value);
18201
+ }
18202
+ } finally {
18203
+ try {
18204
+ await reader.cancel();
18205
+ } finally {
18206
+ reader.releaseLock();
18207
+ }
18208
+ }
18209
+ const result = new Uint8Array(totalBytes);
18210
+ let offset = 0;
18211
+ for (const chunk of chunks) {
18212
+ result.set(chunk, offset);
18213
+ offset += chunk.length;
18214
+ }
18215
+ return result;
18216
+ }
18217
+ function validateDownloadUrl(url2) {
18218
+ let parsed;
18219
+ try {
18220
+ parsed = new URL(url2);
18221
+ } catch (e) {
18222
+ throw new DownloadError({
18223
+ url: url2,
18224
+ message: `Invalid URL: ${url2}`
18225
+ });
18226
+ }
18227
+ if (parsed.protocol === "data:") {
18228
+ return;
18229
+ }
18230
+ if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
18231
+ throw new DownloadError({
18232
+ url: url2,
18233
+ message: `URL scheme must be http, https, or data, got ${parsed.protocol}`
18234
+ });
18235
+ }
18236
+ const hostname3 = parsed.hostname;
18237
+ if (!hostname3) {
18238
+ throw new DownloadError({
18239
+ url: url2,
18240
+ message: `URL must have a hostname`
18241
+ });
18242
+ }
18243
+ if (hostname3 === "localhost" || hostname3.endsWith(".local") || hostname3.endsWith(".localhost")) {
18244
+ throw new DownloadError({
18245
+ url: url2,
18246
+ message: `URL with hostname ${hostname3} is not allowed`
18247
+ });
18248
+ }
18249
+ if (hostname3.startsWith("[") && hostname3.endsWith("]")) {
18250
+ const ipv63 = hostname3.slice(1, -1);
18251
+ if (isPrivateIPv6(ipv63)) {
18252
+ throw new DownloadError({
18253
+ url: url2,
18254
+ message: `URL with IPv6 address ${hostname3} is not allowed`
18255
+ });
18256
+ }
18257
+ return;
18258
+ }
18259
+ if (isIPv4(hostname3)) {
18260
+ if (isPrivateIPv4(hostname3)) {
18261
+ throw new DownloadError({
18262
+ url: url2,
18263
+ message: `URL with IP address ${hostname3} is not allowed`
18264
+ });
18265
+ }
18266
+ return;
18267
+ }
18268
+ }
18269
+ function isIPv4(hostname3) {
18270
+ const parts = hostname3.split(".");
18271
+ if (parts.length !== 4) return false;
18272
+ return parts.every((part) => {
18273
+ const num = Number(part);
18274
+ return Number.isInteger(num) && num >= 0 && num <= 255 && String(num) === part;
18275
+ });
18276
+ }
18277
+ function isPrivateIPv4(ip) {
18278
+ const parts = ip.split(".").map(Number);
18279
+ const [a, b] = parts;
18280
+ if (a === 0) return true;
18281
+ if (a === 10) return true;
18282
+ if (a === 127) return true;
18283
+ if (a === 169 && b === 254) return true;
18284
+ if (a === 172 && b >= 16 && b <= 31) return true;
18285
+ if (a === 192 && b === 168) return true;
18286
+ return false;
18287
+ }
18288
+ function isPrivateIPv6(ip) {
18289
+ const normalized = ip.toLowerCase();
18290
+ if (normalized === "::1") return true;
18291
+ if (normalized === "::") return true;
18292
+ if (normalized.startsWith("::ffff:")) {
18293
+ const mappedPart = normalized.slice(7);
18294
+ if (isIPv4(mappedPart)) {
18295
+ return isPrivateIPv4(mappedPart);
18296
+ }
18297
+ const hexParts = mappedPart.split(":");
18298
+ if (hexParts.length === 2) {
18299
+ const high = parseInt(hexParts[0], 16);
18300
+ const low = parseInt(hexParts[1], 16);
18301
+ if (!isNaN(high) && !isNaN(low)) {
18302
+ const a = high >> 8 & 255;
18303
+ const b = high & 255;
18304
+ const c = low >> 8 & 255;
18305
+ const d = low & 255;
18306
+ return isPrivateIPv4(`${a}.${b}.${c}.${d}`);
18307
+ }
18308
+ }
18309
+ }
18310
+ if (normalized.startsWith("fc") || normalized.startsWith("fd")) return true;
18311
+ if (normalized.startsWith("fe80")) return true;
18312
+ return false;
18313
+ }
18137
18314
  var createIdGenerator = ({
18138
18315
  prefix,
18139
18316
  size = 16,
@@ -18172,8 +18349,54 @@ function getErrorMessage2(error48) {
18172
18349
  }
18173
18350
  return JSON.stringify(error48);
18174
18351
  }
18175
- var suspectProtoRx = /"__proto__"\s*:/;
18176
- var suspectConstructorRx = /"constructor"\s*:/;
18352
+ function getRuntimeEnvironmentUserAgent(globalThisAny = globalThis) {
18353
+ var _a23, _b22, _c;
18354
+ if (globalThisAny.window) {
18355
+ return `runtime/browser`;
18356
+ }
18357
+ if ((_a23 = globalThisAny.navigator) == null ? void 0 : _a23.userAgent) {
18358
+ return `runtime/${globalThisAny.navigator.userAgent.toLowerCase()}`;
18359
+ }
18360
+ if ((_c = (_b22 = globalThisAny.process) == null ? void 0 : _b22.versions) == null ? void 0 : _c.node) {
18361
+ return `runtime/node.js/${globalThisAny.process.version.substring(0)}`;
18362
+ }
18363
+ if (globalThisAny.EdgeRuntime) {
18364
+ return `runtime/vercel-edge`;
18365
+ }
18366
+ return "runtime/unknown";
18367
+ }
18368
+ function normalizeHeaders(headers) {
18369
+ if (headers == null) {
18370
+ return {};
18371
+ }
18372
+ const normalized = {};
18373
+ if (headers instanceof Headers) {
18374
+ headers.forEach((value, key) => {
18375
+ normalized[key.toLowerCase()] = value;
18376
+ });
18377
+ } else {
18378
+ if (!Array.isArray(headers)) {
18379
+ headers = Object.entries(headers);
18380
+ }
18381
+ for (const [key, value] of headers) {
18382
+ if (value != null) {
18383
+ normalized[key.toLowerCase()] = value;
18384
+ }
18385
+ }
18386
+ }
18387
+ return normalized;
18388
+ }
18389
+ function withUserAgentSuffix(headers, ...userAgentSuffixParts) {
18390
+ const normalizedHeaders = new Headers(normalizeHeaders(headers));
18391
+ const currentUserAgentHeader = normalizedHeaders.get("user-agent") || "";
18392
+ normalizedHeaders.set(
18393
+ "user-agent",
18394
+ [currentUserAgentHeader, ...userAgentSuffixParts].filter(Boolean).join(" ")
18395
+ );
18396
+ return Object.fromEntries(normalizedHeaders.entries());
18397
+ }
18398
+ var suspectProtoRx = /"(?:_|\\u005[Ff])(?:_|\\u005[Ff])(?:p|\\u0070)(?:r|\\u0072)(?:o|\\u006[Ff])(?:t|\\u0074)(?:o|\\u006[Ff])(?:_|\\u005[Ff])(?:_|\\u005[Ff])"\s*:/;
18399
+ var suspectConstructorRx = /"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/;
18177
18400
  function _parse2(text2) {
18178
18401
  const obj = JSON.parse(text2);
18179
18402
  if (obj === null || typeof obj !== "object") {
@@ -18193,7 +18416,7 @@ function filter(obj) {
18193
18416
  if (Object.prototype.hasOwnProperty.call(node, "__proto__")) {
18194
18417
  throw new SyntaxError("Object contains forbidden prototype property");
18195
18418
  }
18196
- if (Object.prototype.hasOwnProperty.call(node, "constructor") && Object.prototype.hasOwnProperty.call(node.constructor, "prototype")) {
18419
+ if (Object.prototype.hasOwnProperty.call(node, "constructor") && node.constructor !== null && typeof node.constructor === "object" && Object.prototype.hasOwnProperty.call(node.constructor, "prototype")) {
18197
18420
  throw new SyntaxError("Object contains forbidden prototype property");
18198
18421
  }
18199
18422
  for (const key in node) {
@@ -18253,7 +18476,7 @@ function visit(def) {
18253
18476
  if (typeof def === "boolean") return def;
18254
18477
  return addAdditionalPropertiesToJsonSchema(def);
18255
18478
  }
18256
- var ignoreOverride = Symbol(
18479
+ var ignoreOverride = /* @__PURE__ */ Symbol(
18257
18480
  "Let zodToJsonSchema decide on which parser to use"
18258
18481
  );
18259
18482
  var defaultOptions = {
@@ -19352,7 +19575,7 @@ var zod3ToJsonSchema = (schema, options) => {
19352
19575
  combined.$schema = "http://json-schema.org/draft-07/schema#";
19353
19576
  return combined;
19354
19577
  };
19355
- var schemaSymbol = Symbol.for("vercel.ai.schema");
19578
+ var schemaSymbol = /* @__PURE__ */ Symbol.for("vercel.ai.schema");
19356
19579
  function lazySchema(createSchema) {
19357
19580
  let schema;
19358
19581
  return () => {
@@ -19453,17 +19676,19 @@ function zodSchema(zodSchema2, options) {
19453
19676
  }
19454
19677
  async function validateTypes({
19455
19678
  value,
19456
- schema
19679
+ schema,
19680
+ context
19457
19681
  }) {
19458
- const result = await safeValidateTypes({ value, schema });
19682
+ const result = await safeValidateTypes({ value, schema, context });
19459
19683
  if (!result.success) {
19460
- throw TypeValidationError.wrap({ value, cause: result.error });
19684
+ throw TypeValidationError.wrap({ value, cause: result.error, context });
19461
19685
  }
19462
19686
  return result.value;
19463
19687
  }
19464
19688
  async function safeValidateTypes({
19465
19689
  value,
19466
- schema
19690
+ schema,
19691
+ context
19467
19692
  }) {
19468
19693
  const actualSchema = asSchema(schema);
19469
19694
  try {
@@ -19476,13 +19701,13 @@ async function safeValidateTypes({
19476
19701
  }
19477
19702
  return {
19478
19703
  success: false,
19479
- error: TypeValidationError.wrap({ value, cause: result.error }),
19704
+ error: TypeValidationError.wrap({ value, cause: result.error, context }),
19480
19705
  rawValue: value
19481
19706
  };
19482
19707
  } catch (error48) {
19483
19708
  return {
19484
19709
  success: false,
19485
- error: TypeValidationError.wrap({ value, cause: error48 }),
19710
+ error: TypeValidationError.wrap({ value, cause: error48, context }),
19486
19711
  rawValue: value
19487
19712
  };
19488
19713
  }
@@ -19512,11 +19737,11 @@ async function resolve(value) {
19512
19737
  return Promise.resolve(value);
19513
19738
  }
19514
19739
 
19515
- // ../../node_modules/.pnpm/ai@6.0.61_zod@4.3.6/node_modules/ai/dist/index.mjs
19740
+ // ../../node_modules/.pnpm/ai@6.0.197_zod@4.3.6/node_modules/ai/dist/index.mjs
19516
19741
  var __defProp = Object.defineProperty;
19517
19742
  var __export2 = (target, all) => {
19518
- for (var name20 in all)
19519
- __defProp(target, name20, { get: all[name20], enumerable: true });
19743
+ for (var name21 in all)
19744
+ __defProp(target, name21, { get: all[name21], enumerable: true });
19520
19745
  };
19521
19746
  var name15 = "AI_InvalidArgumentError";
19522
19747
  var marker16 = `vercel.ai.error.${name15}`;
@@ -19593,56 +19818,105 @@ var marker112 = `vercel.ai.error.${name112}`;
19593
19818
  var symbol112 = Symbol.for(marker112);
19594
19819
  var _a112;
19595
19820
  _a112 = symbol112;
19596
- var name122 = "AI_NoSuchToolError";
19821
+ var name122 = "AI_NoVideoGeneratedError";
19597
19822
  var marker122 = `vercel.ai.error.${name122}`;
19598
19823
  var symbol122 = Symbol.for(marker122);
19599
19824
  var _a122;
19600
19825
  _a122 = symbol122;
19601
- var name132 = "AI_ToolCallRepairError";
19826
+ var name132 = "AI_NoSuchToolError";
19602
19827
  var marker132 = `vercel.ai.error.${name132}`;
19603
19828
  var symbol132 = Symbol.for(marker132);
19604
19829
  var _a132;
19605
19830
  _a132 = symbol132;
19606
- var name142 = "AI_UIMessageStreamError";
19831
+ var name142 = "AI_ToolCallRepairError";
19607
19832
  var marker142 = `vercel.ai.error.${name142}`;
19608
19833
  var symbol142 = Symbol.for(marker142);
19609
19834
  var _a142;
19835
+ _a142 = symbol142;
19836
+ var name152 = "AI_UIMessageStreamError";
19837
+ var marker152 = `vercel.ai.error.${name152}`;
19838
+ var symbol152 = Symbol.for(marker152);
19839
+ var _a152;
19610
19840
  var UIMessageStreamError = class extends AISDKError {
19611
19841
  constructor({
19612
19842
  chunkType,
19613
19843
  chunkId,
19614
19844
  message
19615
19845
  }) {
19616
- super({ name: name142, message });
19617
- this[_a142] = true;
19846
+ super({ name: name152, message });
19847
+ this[_a152] = true;
19618
19848
  this.chunkType = chunkType;
19619
19849
  this.chunkId = chunkId;
19620
19850
  }
19621
19851
  static isInstance(error48) {
19622
- return AISDKError.hasMarker(error48, marker142);
19852
+ return AISDKError.hasMarker(error48, marker152);
19623
19853
  }
19624
19854
  };
19625
- _a142 = symbol142;
19626
- var name152 = "AI_InvalidDataContentError";
19627
- var marker152 = `vercel.ai.error.${name152}`;
19628
- var symbol152 = Symbol.for(marker152);
19629
- var _a152;
19630
19855
  _a152 = symbol152;
19631
- var name16 = "AI_InvalidMessageRoleError";
19856
+ var name16 = "AI_InvalidDataContentError";
19632
19857
  var marker162 = `vercel.ai.error.${name16}`;
19633
19858
  var symbol162 = Symbol.for(marker162);
19634
19859
  var _a162;
19635
19860
  _a162 = symbol162;
19636
- var name17 = "AI_MessageConversionError";
19861
+ var name17 = "AI_InvalidMessageRoleError";
19637
19862
  var marker17 = `vercel.ai.error.${name17}`;
19638
19863
  var symbol172 = Symbol.for(marker17);
19639
19864
  var _a172;
19640
19865
  _a172 = symbol172;
19641
- var name18 = "AI_RetryError";
19866
+ var name18 = "AI_MessageConversionError";
19642
19867
  var marker18 = `vercel.ai.error.${name18}`;
19643
19868
  var symbol18 = Symbol.for(marker18);
19644
19869
  var _a18;
19645
19870
  _a18 = symbol18;
19871
+ var name19 = "AI_RetryError";
19872
+ var marker19 = `vercel.ai.error.${name19}`;
19873
+ var symbol19 = Symbol.for(marker19);
19874
+ var _a19;
19875
+ _a19 = symbol19;
19876
+ var VERSION = true ? "6.0.197" : "0.0.0-test";
19877
+ var download = async ({
19878
+ url: url2,
19879
+ maxBytes,
19880
+ abortSignal
19881
+ }) => {
19882
+ var _a21;
19883
+ const urlText = url2.toString();
19884
+ validateDownloadUrl(urlText);
19885
+ try {
19886
+ const response = await fetch(urlText, {
19887
+ headers: withUserAgentSuffix(
19888
+ {},
19889
+ `ai-sdk/${VERSION}`,
19890
+ getRuntimeEnvironmentUserAgent()
19891
+ ),
19892
+ signal: abortSignal
19893
+ });
19894
+ if (response.redirected) {
19895
+ validateDownloadUrl(response.url);
19896
+ }
19897
+ if (!response.ok) {
19898
+ throw new DownloadError({
19899
+ url: urlText,
19900
+ statusCode: response.status,
19901
+ statusText: response.statusText
19902
+ });
19903
+ }
19904
+ const data = await readResponseWithSizeLimit({
19905
+ response,
19906
+ url: urlText,
19907
+ maxBytes: maxBytes != null ? maxBytes : DEFAULT_MAX_DOWNLOAD_SIZE
19908
+ });
19909
+ return {
19910
+ data,
19911
+ mediaType: (_a21 = response.headers.get("content-type")) != null ? _a21 : void 0
19912
+ };
19913
+ } catch (error48) {
19914
+ if (DownloadError.isInstance(error48)) {
19915
+ throw error48;
19916
+ }
19917
+ throw new DownloadError({ url: urlText, cause: error48 });
19918
+ }
19919
+ };
19646
19920
  var dataContentSchema = external_exports.union([
19647
19921
  external_exports.string(),
19648
19922
  external_exports.instanceof(Uint8Array),
@@ -19650,8 +19924,8 @@ var dataContentSchema = external_exports.union([
19650
19924
  external_exports.custom(
19651
19925
  // Buffer might not be available in some environments such as CloudFlare:
19652
19926
  (value) => {
19653
- var _a20, _b16;
19654
- return (_b16 = (_a20 = globalThis.Buffer) == null ? void 0 : _a20.isBuffer(value)) != null ? _b16 : false;
19927
+ var _a21, _b16;
19928
+ return (_b16 = (_a21 = globalThis.Buffer) == null ? void 0 : _a21.isBuffer(value)) != null ? _b16 : false;
19655
19929
  },
19656
19930
  { message: "Must be a Buffer" }
19657
19931
  )
@@ -19858,6 +20132,9 @@ function mergeObjects(base, overrides) {
19858
20132
  }
19859
20133
  const result = { ...base };
19860
20134
  for (const key in overrides) {
20135
+ if (key === "__proto__" || key === "constructor" || key === "prototype") {
20136
+ continue;
20137
+ }
19861
20138
  if (Object.prototype.hasOwnProperty.call(overrides, key)) {
19862
20139
  const overridesValue = overrides[key];
19863
20140
  if (overridesValue === void 0)
@@ -20230,7 +20507,7 @@ var text = () => ({
20230
20507
  });
20231
20508
  var object2 = ({
20232
20509
  schema: inputSchema,
20233
- name: name20,
20510
+ name: name21,
20234
20511
  description
20235
20512
  }) => {
20236
20513
  const schema = asSchema(inputSchema);
@@ -20239,7 +20516,7 @@ var object2 = ({
20239
20516
  responseFormat: resolve(schema.jsonSchema).then((jsonSchema2) => ({
20240
20517
  type: "json",
20241
20518
  schema: jsonSchema2,
20242
- ...name20 != null && { name: name20 },
20519
+ ...name21 != null && { name: name21 },
20243
20520
  ...description != null && { description }
20244
20521
  })),
20245
20522
  async parseCompleteOutput({ text: text2 }, context2) {
@@ -20293,7 +20570,7 @@ var object2 = ({
20293
20570
  };
20294
20571
  var array2 = ({
20295
20572
  element: inputElementSchema,
20296
- name: name20,
20573
+ name: name21,
20297
20574
  description
20298
20575
  }) => {
20299
20576
  const elementSchema = asSchema(inputElementSchema);
@@ -20313,7 +20590,7 @@ var array2 = ({
20313
20590
  required: ["elements"],
20314
20591
  additionalProperties: false
20315
20592
  },
20316
- ...name20 != null && { name: name20 },
20593
+ ...name21 != null && { name: name21 },
20317
20594
  ...description != null && { description }
20318
20595
  };
20319
20596
  }),
@@ -20405,7 +20682,7 @@ var array2 = ({
20405
20682
  };
20406
20683
  var choice = ({
20407
20684
  options: choiceOptions,
20408
- name: name20,
20685
+ name: name21,
20409
20686
  description
20410
20687
  }) => {
20411
20688
  return {
@@ -20422,7 +20699,7 @@ var choice = ({
20422
20699
  required: ["result"],
20423
20700
  additionalProperties: false
20424
20701
  },
20425
- ...name20 != null && { name: name20 },
20702
+ ...name21 != null && { name: name21 },
20426
20703
  ...description != null && { description }
20427
20704
  }),
20428
20705
  async parseCompleteOutput({ text: text2 }, context2) {
@@ -20483,14 +20760,14 @@ var choice = ({
20483
20760
  };
20484
20761
  };
20485
20762
  var json2 = ({
20486
- name: name20,
20763
+ name: name21,
20487
20764
  description
20488
20765
  } = {}) => {
20489
20766
  return {
20490
20767
  name: "json",
20491
20768
  responseFormat: Promise.resolve({
20492
20769
  type: "json",
20493
- ...name20 != null && { name: name20 },
20770
+ ...name21 != null && { name: name21 },
20494
20771
  ...description != null && { description }
20495
20772
  }),
20496
20773
  async parseCompleteOutput({ text: text2 }, context2) {
@@ -20579,6 +20856,10 @@ function createUIMessageStreamResponse({
20579
20856
  headers: prepareHeaders(headers, UI_MESSAGE_STREAM_HEADERS)
20580
20857
  });
20581
20858
  }
20859
+ var toolMetadataSchema = external_exports.record(
20860
+ external_exports.string(),
20861
+ jsonValueSchema.optional()
20862
+ );
20582
20863
  var uiMessageChunkSchema = lazySchema(
20583
20864
  () => zodSchema(
20584
20865
  external_exports.union([
@@ -20608,6 +20889,7 @@ var uiMessageChunkSchema = lazySchema(
20608
20889
  toolName: external_exports.string(),
20609
20890
  providerExecuted: external_exports.boolean().optional(),
20610
20891
  providerMetadata: providerMetadataSchema.optional(),
20892
+ toolMetadata: toolMetadataSchema.optional(),
20611
20893
  dynamic: external_exports.boolean().optional(),
20612
20894
  title: external_exports.string().optional()
20613
20895
  }),
@@ -20623,6 +20905,7 @@ var uiMessageChunkSchema = lazySchema(
20623
20905
  input: external_exports.unknown(),
20624
20906
  providerExecuted: external_exports.boolean().optional(),
20625
20907
  providerMetadata: providerMetadataSchema.optional(),
20908
+ toolMetadata: toolMetadataSchema.optional(),
20626
20909
  dynamic: external_exports.boolean().optional(),
20627
20910
  title: external_exports.string().optional()
20628
20911
  }),
@@ -20633,6 +20916,7 @@ var uiMessageChunkSchema = lazySchema(
20633
20916
  input: external_exports.unknown(),
20634
20917
  providerExecuted: external_exports.boolean().optional(),
20635
20918
  providerMetadata: providerMetadataSchema.optional(),
20919
+ toolMetadata: toolMetadataSchema.optional(),
20636
20920
  dynamic: external_exports.boolean().optional(),
20637
20921
  errorText: external_exports.string(),
20638
20922
  title: external_exports.string().optional()
@@ -20647,6 +20931,8 @@ var uiMessageChunkSchema = lazySchema(
20647
20931
  toolCallId: external_exports.string(),
20648
20932
  output: external_exports.unknown(),
20649
20933
  providerExecuted: external_exports.boolean().optional(),
20934
+ providerMetadata: providerMetadataSchema.optional(),
20935
+ toolMetadata: toolMetadataSchema.optional(),
20650
20936
  dynamic: external_exports.boolean().optional(),
20651
20937
  preliminary: external_exports.boolean().optional()
20652
20938
  }),
@@ -20655,6 +20941,8 @@ var uiMessageChunkSchema = lazySchema(
20655
20941
  toolCallId: external_exports.string(),
20656
20942
  errorText: external_exports.string(),
20657
20943
  providerExecuted: external_exports.boolean().optional(),
20944
+ providerMetadata: providerMetadataSchema.optional(),
20945
+ toolMetadata: toolMetadataSchema.optional(),
20658
20946
  dynamic: external_exports.boolean().optional()
20659
20947
  }),
20660
20948
  external_exports.strictObject({
@@ -20785,7 +21073,7 @@ function processUIMessageStream({
20785
21073
  new TransformStream({
20786
21074
  async transform(chunk, controller) {
20787
21075
  await runUpdateMessageJob(async ({ state, write }) => {
20788
- var _a20, _b16, _c, _d;
21076
+ var _a21, _b16, _c, _d;
20789
21077
  function getToolInvocation(toolCallId) {
20790
21078
  const toolInvocations = state.message.parts.filter(isToolUIPart);
20791
21079
  const toolInvocation = toolInvocations.find(
@@ -20801,7 +21089,7 @@ function processUIMessageStream({
20801
21089
  return toolInvocation;
20802
21090
  }
20803
21091
  function updateToolPart(options) {
20804
- var _a21;
21092
+ var _a222;
20805
21093
  const part = state.message.parts.find(
20806
21094
  (part2) => isStaticToolUIPart(part2) && part2.toolCallId === options.toolCallId
20807
21095
  );
@@ -20817,9 +21105,18 @@ function processUIMessageStream({
20817
21105
  if (options.title !== void 0) {
20818
21106
  anyPart.title = options.title;
20819
21107
  }
20820
- anyPart.providerExecuted = (_a21 = anyOptions.providerExecuted) != null ? _a21 : part.providerExecuted;
20821
- if (anyOptions.providerMetadata != null) {
20822
- part.callProviderMetadata = anyOptions.providerMetadata;
21108
+ if (options.toolMetadata !== void 0) {
21109
+ anyPart.toolMetadata = options.toolMetadata;
21110
+ }
21111
+ anyPart.providerExecuted = (_a222 = anyOptions.providerExecuted) != null ? _a222 : part.providerExecuted;
21112
+ const providerMetadata = anyOptions.providerMetadata;
21113
+ if (providerMetadata != null) {
21114
+ if (options.state === "output-available" || options.state === "output-error") {
21115
+ const resultPart = part;
21116
+ resultPart.resultProviderMetadata = providerMetadata;
21117
+ } else {
21118
+ part.callProviderMetadata = providerMetadata;
21119
+ }
20823
21120
  }
20824
21121
  } else {
20825
21122
  state.message.parts.push({
@@ -20827,18 +21124,20 @@ function processUIMessageStream({
20827
21124
  toolCallId: options.toolCallId,
20828
21125
  state: options.state,
20829
21126
  title: options.title,
21127
+ ...options.toolMetadata !== void 0 ? { toolMetadata: options.toolMetadata } : {},
20830
21128
  input: anyOptions.input,
20831
21129
  output: anyOptions.output,
20832
21130
  rawInput: anyOptions.rawInput,
20833
21131
  errorText: anyOptions.errorText,
20834
21132
  providerExecuted: anyOptions.providerExecuted,
20835
21133
  preliminary: anyOptions.preliminary,
20836
- ...anyOptions.providerMetadata != null ? { callProviderMetadata: anyOptions.providerMetadata } : {}
21134
+ ...anyOptions.providerMetadata != null && (options.state === "output-available" || options.state === "output-error") ? { resultProviderMetadata: anyOptions.providerMetadata } : {},
21135
+ ...anyOptions.providerMetadata != null && !(options.state === "output-available" || options.state === "output-error") ? { callProviderMetadata: anyOptions.providerMetadata } : {}
20837
21136
  });
20838
21137
  }
20839
21138
  }
20840
21139
  function updateDynamicToolPart(options) {
20841
- var _a21, _b22;
21140
+ var _a222, _b22;
20842
21141
  const part = state.message.parts.find(
20843
21142
  (part2) => part2.type === "dynamic-tool" && part2.toolCallId === options.toolCallId
20844
21143
  );
@@ -20850,14 +21149,23 @@ function processUIMessageStream({
20850
21149
  anyPart.input = anyOptions.input;
20851
21150
  anyPart.output = anyOptions.output;
20852
21151
  anyPart.errorText = anyOptions.errorText;
20853
- anyPart.rawInput = (_a21 = anyOptions.rawInput) != null ? _a21 : anyPart.rawInput;
21152
+ anyPart.rawInput = (_a222 = anyOptions.rawInput) != null ? _a222 : anyPart.rawInput;
20854
21153
  anyPart.preliminary = anyOptions.preliminary;
20855
21154
  if (options.title !== void 0) {
20856
21155
  anyPart.title = options.title;
20857
21156
  }
21157
+ if (options.toolMetadata !== void 0) {
21158
+ anyPart.toolMetadata = options.toolMetadata;
21159
+ }
20858
21160
  anyPart.providerExecuted = (_b22 = anyOptions.providerExecuted) != null ? _b22 : part.providerExecuted;
20859
- if (anyOptions.providerMetadata != null) {
20860
- part.callProviderMetadata = anyOptions.providerMetadata;
21161
+ const providerMetadata = anyOptions.providerMetadata;
21162
+ if (providerMetadata != null) {
21163
+ if (options.state === "output-available" || options.state === "output-error") {
21164
+ const resultPart = part;
21165
+ resultPart.resultProviderMetadata = providerMetadata;
21166
+ } else {
21167
+ part.callProviderMetadata = providerMetadata;
21168
+ }
20861
21169
  }
20862
21170
  } else {
20863
21171
  state.message.parts.push({
@@ -20871,7 +21179,9 @@ function processUIMessageStream({
20871
21179
  preliminary: anyOptions.preliminary,
20872
21180
  providerExecuted: anyOptions.providerExecuted,
20873
21181
  title: options.title,
20874
- ...anyOptions.providerMetadata != null ? { callProviderMetadata: anyOptions.providerMetadata } : {}
21182
+ ...options.toolMetadata !== void 0 ? { toolMetadata: options.toolMetadata } : {},
21183
+ ...anyOptions.providerMetadata != null && (options.state === "output-available" || options.state === "output-error") ? { resultProviderMetadata: anyOptions.providerMetadata } : {},
21184
+ ...anyOptions.providerMetadata != null && !(options.state === "output-available" || options.state === "output-error") ? { callProviderMetadata: anyOptions.providerMetadata } : {}
20875
21185
  });
20876
21186
  }
20877
21187
  }
@@ -20881,7 +21191,11 @@ function processUIMessageStream({
20881
21191
  if (messageMetadataSchema != null) {
20882
21192
  await validateTypes({
20883
21193
  value: mergedMetadata,
20884
- schema: messageMetadataSchema
21194
+ schema: messageMetadataSchema,
21195
+ context: {
21196
+ field: "message.metadata",
21197
+ entityId: state.message.id
21198
+ }
20885
21199
  });
20886
21200
  }
20887
21201
  state.message.metadata = mergedMetadata;
@@ -20910,7 +21224,7 @@ function processUIMessageStream({
20910
21224
  });
20911
21225
  }
20912
21226
  textPart.text += chunk.delta;
20913
- textPart.providerMetadata = (_a20 = chunk.providerMetadata) != null ? _a20 : textPart.providerMetadata;
21227
+ textPart.providerMetadata = (_a21 = chunk.providerMetadata) != null ? _a21 : textPart.providerMetadata;
20914
21228
  write();
20915
21229
  break;
20916
21230
  }
@@ -20974,7 +21288,8 @@ function processUIMessageStream({
20974
21288
  state.message.parts.push({
20975
21289
  type: "file",
20976
21290
  mediaType: chunk.mediaType,
20977
- url: chunk.url
21291
+ url: chunk.url,
21292
+ ...chunk.providerMetadata != null ? { providerMetadata: chunk.providerMetadata } : {}
20978
21293
  });
20979
21294
  write();
20980
21295
  break;
@@ -21009,7 +21324,8 @@ function processUIMessageStream({
21009
21324
  toolName: chunk.toolName,
21010
21325
  index: toolInvocations.length,
21011
21326
  dynamic: chunk.dynamic,
21012
- title: chunk.title
21327
+ title: chunk.title,
21328
+ toolMetadata: chunk.toolMetadata
21013
21329
  };
21014
21330
  if (chunk.dynamic) {
21015
21331
  updateDynamicToolPart({
@@ -21019,6 +21335,7 @@ function processUIMessageStream({
21019
21335
  input: void 0,
21020
21336
  providerExecuted: chunk.providerExecuted,
21021
21337
  title: chunk.title,
21338
+ toolMetadata: chunk.toolMetadata,
21022
21339
  providerMetadata: chunk.providerMetadata
21023
21340
  });
21024
21341
  } else {
@@ -21029,6 +21346,7 @@ function processUIMessageStream({
21029
21346
  input: void 0,
21030
21347
  providerExecuted: chunk.providerExecuted,
21031
21348
  title: chunk.title,
21349
+ toolMetadata: chunk.toolMetadata,
21032
21350
  providerMetadata: chunk.providerMetadata
21033
21351
  });
21034
21352
  }
@@ -21054,7 +21372,8 @@ function processUIMessageStream({
21054
21372
  toolName: partialToolCall.toolName,
21055
21373
  state: "input-streaming",
21056
21374
  input: partialArgs,
21057
- title: partialToolCall.title
21375
+ title: partialToolCall.title,
21376
+ toolMetadata: partialToolCall.toolMetadata
21058
21377
  });
21059
21378
  } else {
21060
21379
  updateToolPart({
@@ -21062,7 +21381,8 @@ function processUIMessageStream({
21062
21381
  toolName: partialToolCall.toolName,
21063
21382
  state: "input-streaming",
21064
21383
  input: partialArgs,
21065
- title: partialToolCall.title
21384
+ title: partialToolCall.title,
21385
+ toolMetadata: partialToolCall.toolMetadata
21066
21386
  });
21067
21387
  }
21068
21388
  write();
@@ -21077,7 +21397,8 @@ function processUIMessageStream({
21077
21397
  input: chunk.input,
21078
21398
  providerExecuted: chunk.providerExecuted,
21079
21399
  providerMetadata: chunk.providerMetadata,
21080
- title: chunk.title
21400
+ title: chunk.title,
21401
+ toolMetadata: chunk.toolMetadata
21081
21402
  });
21082
21403
  } else {
21083
21404
  updateToolPart({
@@ -21087,7 +21408,8 @@ function processUIMessageStream({
21087
21408
  input: chunk.input,
21088
21409
  providerExecuted: chunk.providerExecuted,
21089
21410
  providerMetadata: chunk.providerMetadata,
21090
- title: chunk.title
21411
+ title: chunk.title,
21412
+ toolMetadata: chunk.toolMetadata
21091
21413
  });
21092
21414
  }
21093
21415
  write();
@@ -21099,7 +21421,9 @@ function processUIMessageStream({
21099
21421
  break;
21100
21422
  }
21101
21423
  case "tool-input-error": {
21102
- if (chunk.dynamic) {
21424
+ const existingPart = state.message.parts.filter(isToolUIPart).find((p) => p.toolCallId === chunk.toolCallId);
21425
+ const isDynamic = existingPart != null ? existingPart.type === "dynamic-tool" : !!chunk.dynamic;
21426
+ if (isDynamic) {
21103
21427
  updateDynamicToolPart({
21104
21428
  toolCallId: chunk.toolCallId,
21105
21429
  toolName: chunk.toolName,
@@ -21107,7 +21431,8 @@ function processUIMessageStream({
21107
21431
  input: chunk.input,
21108
21432
  errorText: chunk.errorText,
21109
21433
  providerExecuted: chunk.providerExecuted,
21110
- providerMetadata: chunk.providerMetadata
21434
+ providerMetadata: chunk.providerMetadata,
21435
+ toolMetadata: chunk.toolMetadata
21111
21436
  });
21112
21437
  } else {
21113
21438
  updateToolPart({
@@ -21118,7 +21443,8 @@ function processUIMessageStream({
21118
21443
  rawInput: chunk.input,
21119
21444
  errorText: chunk.errorText,
21120
21445
  providerExecuted: chunk.providerExecuted,
21121
- providerMetadata: chunk.providerMetadata
21446
+ providerMetadata: chunk.providerMetadata,
21447
+ toolMetadata: chunk.toolMetadata
21122
21448
  });
21123
21449
  }
21124
21450
  write();
@@ -21148,7 +21474,9 @@ function processUIMessageStream({
21148
21474
  output: chunk.output,
21149
21475
  preliminary: chunk.preliminary,
21150
21476
  providerExecuted: chunk.providerExecuted,
21151
- title: toolInvocation.title
21477
+ providerMetadata: chunk.providerMetadata,
21478
+ title: toolInvocation.title,
21479
+ toolMetadata: toolInvocation.toolMetadata
21152
21480
  });
21153
21481
  } else {
21154
21482
  updateToolPart({
@@ -21159,7 +21487,9 @@ function processUIMessageStream({
21159
21487
  output: chunk.output,
21160
21488
  providerExecuted: chunk.providerExecuted,
21161
21489
  preliminary: chunk.preliminary,
21162
- title: toolInvocation.title
21490
+ providerMetadata: chunk.providerMetadata,
21491
+ title: toolInvocation.title,
21492
+ toolMetadata: toolInvocation.toolMetadata
21163
21493
  });
21164
21494
  }
21165
21495
  write();
@@ -21175,7 +21505,9 @@ function processUIMessageStream({
21175
21505
  input: toolInvocation.input,
21176
21506
  errorText: chunk.errorText,
21177
21507
  providerExecuted: chunk.providerExecuted,
21178
- title: toolInvocation.title
21508
+ providerMetadata: chunk.providerMetadata,
21509
+ title: toolInvocation.title,
21510
+ toolMetadata: toolInvocation.toolMetadata
21179
21511
  });
21180
21512
  } else {
21181
21513
  updateToolPart({
@@ -21186,7 +21518,9 @@ function processUIMessageStream({
21186
21518
  rawInput: toolInvocation.rawInput,
21187
21519
  errorText: chunk.errorText,
21188
21520
  providerExecuted: chunk.providerExecuted,
21189
- title: toolInvocation.title
21521
+ providerMetadata: chunk.providerMetadata,
21522
+ title: toolInvocation.title,
21523
+ toolMetadata: toolInvocation.toolMetadata
21190
21524
  });
21191
21525
  }
21192
21526
  write();
@@ -21235,9 +21569,18 @@ function processUIMessageStream({
21235
21569
  default: {
21236
21570
  if (isDataUIMessageChunk(chunk)) {
21237
21571
  if ((dataPartSchemas == null ? void 0 : dataPartSchemas[chunk.type]) != null) {
21572
+ const partIdx = state.message.parts.findIndex(
21573
+ (p) => "id" in p && "data" in p && p.id === chunk.id && p.type === chunk.type
21574
+ );
21575
+ const actualPartIdx = partIdx >= 0 ? partIdx : state.message.parts.length;
21238
21576
  await validateTypes({
21239
21577
  value: chunk.data,
21240
- schema: dataPartSchemas[chunk.type]
21578
+ schema: dataPartSchemas[chunk.type],
21579
+ context: {
21580
+ field: `message.parts[${actualPartIdx}].data`,
21581
+ entityName: chunk.type,
21582
+ entityId: chunk.id
21583
+ }
21241
21584
  });
21242
21585
  }
21243
21586
  const dataChunk = chunk;
@@ -21267,6 +21610,7 @@ function processUIMessageStream({
21267
21610
  function handleUIMessageStreamFinish({
21268
21611
  messageId,
21269
21612
  originalMessages = [],
21613
+ onStepFinish,
21270
21614
  onFinish,
21271
21615
  onError,
21272
21616
  stream
@@ -21294,7 +21638,7 @@ function handleUIMessageStreamFinish({
21294
21638
  }
21295
21639
  })
21296
21640
  );
21297
- if (onFinish == null) {
21641
+ if (onFinish == null && onStepFinish == null) {
21298
21642
  return idInjectedStream;
21299
21643
  }
21300
21644
  const state = createStreamingUIMessageState({
@@ -21324,13 +21668,34 @@ function handleUIMessageStreamFinish({
21324
21668
  finishReason: state.finishReason
21325
21669
  });
21326
21670
  };
21671
+ const callOnStepFinish = async () => {
21672
+ if (!onStepFinish) {
21673
+ return;
21674
+ }
21675
+ const isContinuation = state.message.id === (lastMessage == null ? void 0 : lastMessage.id);
21676
+ try {
21677
+ await onStepFinish({
21678
+ isContinuation,
21679
+ responseMessage: structuredClone(state.message),
21680
+ messages: [
21681
+ ...isContinuation ? originalMessages.slice(0, -1) : originalMessages,
21682
+ structuredClone(state.message)
21683
+ ]
21684
+ });
21685
+ } catch (error48) {
21686
+ onError(error48);
21687
+ }
21688
+ };
21327
21689
  return processUIMessageStream({
21328
21690
  stream: idInjectedStream,
21329
21691
  runUpdateMessageJob,
21330
21692
  onError
21331
21693
  }).pipeThrough(
21332
21694
  new TransformStream({
21333
- transform(chunk, controller) {
21695
+ async transform(chunk, controller) {
21696
+ if (chunk.type === "finish-step") {
21697
+ await callOnStepFinish();
21698
+ }
21334
21699
  controller.enqueue(chunk);
21335
21700
  },
21336
21701
  // @ts-expect-error cancel is still new and missing from types https://developer.mozilla.org/en-US/docs/Web/API/TransformStream#browser_compatibility
@@ -21351,6 +21716,7 @@ function createUIMessageStream({
21351
21716
  execute,
21352
21717
  onError = getErrorMessage2,
21353
21718
  originalMessages,
21719
+ onStepFinish,
21354
21720
  onFinish,
21355
21721
  generateId: generateId2 = generateId
21356
21722
  }) {
@@ -21426,10 +21792,15 @@ function createUIMessageStream({
21426
21792
  stream,
21427
21793
  messageId: generateId2(),
21428
21794
  originalMessages,
21795
+ onStepFinish,
21429
21796
  onFinish,
21430
21797
  onError
21431
21798
  });
21432
21799
  }
21800
+ var toolMetadataSchema2 = external_exports.record(
21801
+ external_exports.string(),
21802
+ jsonValueSchema.optional()
21803
+ );
21433
21804
  var uiMessagesSchema = lazySchema(
21434
21805
  () => zodSchema(
21435
21806
  external_exports.array(
@@ -21485,6 +21856,7 @@ var uiMessagesSchema = lazySchema(
21485
21856
  type: external_exports.literal("dynamic-tool"),
21486
21857
  toolName: external_exports.string(),
21487
21858
  toolCallId: external_exports.string(),
21859
+ toolMetadata: toolMetadataSchema2.optional(),
21488
21860
  state: external_exports.literal("input-streaming"),
21489
21861
  input: external_exports.unknown().optional(),
21490
21862
  providerExecuted: external_exports.boolean().optional(),
@@ -21497,6 +21869,7 @@ var uiMessagesSchema = lazySchema(
21497
21869
  type: external_exports.literal("dynamic-tool"),
21498
21870
  toolName: external_exports.string(),
21499
21871
  toolCallId: external_exports.string(),
21872
+ toolMetadata: toolMetadataSchema2.optional(),
21500
21873
  state: external_exports.literal("input-available"),
21501
21874
  input: external_exports.unknown(),
21502
21875
  providerExecuted: external_exports.boolean().optional(),
@@ -21509,6 +21882,7 @@ var uiMessagesSchema = lazySchema(
21509
21882
  type: external_exports.literal("dynamic-tool"),
21510
21883
  toolName: external_exports.string(),
21511
21884
  toolCallId: external_exports.string(),
21885
+ toolMetadata: toolMetadataSchema2.optional(),
21512
21886
  state: external_exports.literal("approval-requested"),
21513
21887
  input: external_exports.unknown(),
21514
21888
  providerExecuted: external_exports.boolean().optional(),
@@ -21525,6 +21899,7 @@ var uiMessagesSchema = lazySchema(
21525
21899
  type: external_exports.literal("dynamic-tool"),
21526
21900
  toolName: external_exports.string(),
21527
21901
  toolCallId: external_exports.string(),
21902
+ toolMetadata: toolMetadataSchema2.optional(),
21528
21903
  state: external_exports.literal("approval-responded"),
21529
21904
  input: external_exports.unknown(),
21530
21905
  providerExecuted: external_exports.boolean().optional(),
@@ -21541,12 +21916,14 @@ var uiMessagesSchema = lazySchema(
21541
21916
  type: external_exports.literal("dynamic-tool"),
21542
21917
  toolName: external_exports.string(),
21543
21918
  toolCallId: external_exports.string(),
21919
+ toolMetadata: toolMetadataSchema2.optional(),
21544
21920
  state: external_exports.literal("output-available"),
21545
21921
  input: external_exports.unknown(),
21546
21922
  providerExecuted: external_exports.boolean().optional(),
21547
21923
  output: external_exports.unknown(),
21548
21924
  errorText: external_exports.never().optional(),
21549
21925
  callProviderMetadata: providerMetadataSchema.optional(),
21926
+ resultProviderMetadata: providerMetadataSchema.optional(),
21550
21927
  preliminary: external_exports.boolean().optional(),
21551
21928
  approval: external_exports.object({
21552
21929
  id: external_exports.string(),
@@ -21558,13 +21935,15 @@ var uiMessagesSchema = lazySchema(
21558
21935
  type: external_exports.literal("dynamic-tool"),
21559
21936
  toolName: external_exports.string(),
21560
21937
  toolCallId: external_exports.string(),
21938
+ toolMetadata: toolMetadataSchema2.optional(),
21561
21939
  state: external_exports.literal("output-error"),
21562
- input: external_exports.unknown(),
21940
+ input: external_exports.unknown().optional(),
21563
21941
  rawInput: external_exports.unknown().optional(),
21564
21942
  providerExecuted: external_exports.boolean().optional(),
21565
21943
  output: external_exports.never().optional(),
21566
21944
  errorText: external_exports.string(),
21567
21945
  callProviderMetadata: providerMetadataSchema.optional(),
21946
+ resultProviderMetadata: providerMetadataSchema.optional(),
21568
21947
  approval: external_exports.object({
21569
21948
  id: external_exports.string(),
21570
21949
  approved: external_exports.literal(true),
@@ -21575,6 +21954,7 @@ var uiMessagesSchema = lazySchema(
21575
21954
  type: external_exports.literal("dynamic-tool"),
21576
21955
  toolName: external_exports.string(),
21577
21956
  toolCallId: external_exports.string(),
21957
+ toolMetadata: toolMetadataSchema2.optional(),
21578
21958
  state: external_exports.literal("output-denied"),
21579
21959
  input: external_exports.unknown(),
21580
21960
  providerExecuted: external_exports.boolean().optional(),
@@ -21590,6 +21970,7 @@ var uiMessagesSchema = lazySchema(
21590
21970
  external_exports.object({
21591
21971
  type: external_exports.string().startsWith("tool-"),
21592
21972
  toolCallId: external_exports.string(),
21973
+ toolMetadata: toolMetadataSchema2.optional(),
21593
21974
  state: external_exports.literal("input-streaming"),
21594
21975
  providerExecuted: external_exports.boolean().optional(),
21595
21976
  callProviderMetadata: providerMetadataSchema.optional(),
@@ -21601,6 +21982,7 @@ var uiMessagesSchema = lazySchema(
21601
21982
  external_exports.object({
21602
21983
  type: external_exports.string().startsWith("tool-"),
21603
21984
  toolCallId: external_exports.string(),
21985
+ toolMetadata: toolMetadataSchema2.optional(),
21604
21986
  state: external_exports.literal("input-available"),
21605
21987
  providerExecuted: external_exports.boolean().optional(),
21606
21988
  input: external_exports.unknown(),
@@ -21612,6 +21994,7 @@ var uiMessagesSchema = lazySchema(
21612
21994
  external_exports.object({
21613
21995
  type: external_exports.string().startsWith("tool-"),
21614
21996
  toolCallId: external_exports.string(),
21997
+ toolMetadata: toolMetadataSchema2.optional(),
21615
21998
  state: external_exports.literal("approval-requested"),
21616
21999
  input: external_exports.unknown(),
21617
22000
  providerExecuted: external_exports.boolean().optional(),
@@ -21627,6 +22010,7 @@ var uiMessagesSchema = lazySchema(
21627
22010
  external_exports.object({
21628
22011
  type: external_exports.string().startsWith("tool-"),
21629
22012
  toolCallId: external_exports.string(),
22013
+ toolMetadata: toolMetadataSchema2.optional(),
21630
22014
  state: external_exports.literal("approval-responded"),
21631
22015
  input: external_exports.unknown(),
21632
22016
  providerExecuted: external_exports.boolean().optional(),
@@ -21642,12 +22026,14 @@ var uiMessagesSchema = lazySchema(
21642
22026
  external_exports.object({
21643
22027
  type: external_exports.string().startsWith("tool-"),
21644
22028
  toolCallId: external_exports.string(),
22029
+ toolMetadata: toolMetadataSchema2.optional(),
21645
22030
  state: external_exports.literal("output-available"),
21646
22031
  providerExecuted: external_exports.boolean().optional(),
21647
22032
  input: external_exports.unknown(),
21648
22033
  output: external_exports.unknown(),
21649
22034
  errorText: external_exports.never().optional(),
21650
22035
  callProviderMetadata: providerMetadataSchema.optional(),
22036
+ resultProviderMetadata: providerMetadataSchema.optional(),
21651
22037
  preliminary: external_exports.boolean().optional(),
21652
22038
  approval: external_exports.object({
21653
22039
  id: external_exports.string(),
@@ -21658,13 +22044,15 @@ var uiMessagesSchema = lazySchema(
21658
22044
  external_exports.object({
21659
22045
  type: external_exports.string().startsWith("tool-"),
21660
22046
  toolCallId: external_exports.string(),
22047
+ toolMetadata: toolMetadataSchema2.optional(),
21661
22048
  state: external_exports.literal("output-error"),
21662
22049
  providerExecuted: external_exports.boolean().optional(),
21663
- input: external_exports.unknown(),
22050
+ input: external_exports.unknown().optional(),
21664
22051
  rawInput: external_exports.unknown().optional(),
21665
22052
  output: external_exports.never().optional(),
21666
22053
  errorText: external_exports.string(),
21667
22054
  callProviderMetadata: providerMetadataSchema.optional(),
22055
+ resultProviderMetadata: providerMetadataSchema.optional(),
21668
22056
  approval: external_exports.object({
21669
22057
  id: external_exports.string(),
21670
22058
  approved: external_exports.literal(true),
@@ -21674,6 +22062,7 @@ var uiMessagesSchema = lazySchema(
21674
22062
  external_exports.object({
21675
22063
  type: external_exports.string().startsWith("tool-"),
21676
22064
  toolCallId: external_exports.string(),
22065
+ toolMetadata: toolMetadataSchema2.optional(),
21677
22066
  state: external_exports.literal("output-denied"),
21678
22067
  providerExecuted: external_exports.boolean().optional(),
21679
22068
  input: external_exports.unknown(),
@@ -21693,12 +22082,17 @@ var uiMessagesSchema = lazySchema(
21693
22082
  )
21694
22083
  );
21695
22084
  var originalGenerateId3 = createIdGenerator({ prefix: "aiobj", size: 24 });
22085
+ function createDownload(options) {
22086
+ return ({ url: url2, abortSignal }) => download({ url: url2, maxBytes: options == null ? void 0 : options.maxBytes, abortSignal });
22087
+ }
21696
22088
  var originalGenerateId4 = createIdGenerator({ prefix: "aiobj", size: 24 });
21697
- var name19 = "AI_NoSuchProviderError";
21698
- var marker19 = `vercel.ai.error.${name19}`;
21699
- var symbol19 = Symbol.for(marker19);
21700
- var _a19;
21701
- _a19 = symbol19;
22089
+ var defaultDownload = createDownload();
22090
+ var name20 = "AI_NoSuchProviderError";
22091
+ var marker20 = `vercel.ai.error.${name20}`;
22092
+ var symbol20 = Symbol.for(marker20);
22093
+ var _a20;
22094
+ _a20 = symbol20;
22095
+ var defaultDownload2 = createDownload();
21702
22096
 
21703
22097
  // src/lib/cloud-api.ts
21704
22098
  init_react_import();
@@ -21739,16 +22133,16 @@ var processUserTool = async ({
21739
22133
  }
21740
22134
  const responses = [];
21741
22135
  for (let i = 0; i < requestTools.length; i++) {
21742
- const { name: name20, input } = requestTools[i];
21743
- const tool2 = tools?.[name20];
22136
+ const { name: name21, input } = requestTools[i];
22137
+ const tool2 = tools?.[name21];
21744
22138
  if (!tool2) {
21745
- throw new Error(`An unknown tool was called: ${name20}`);
22139
+ throw new Error(`An unknown tool was called: ${name21}`);
21746
22140
  }
21747
22141
  if (!input) {
21748
22142
  throw new Error(`Input was not present in tool call: ${toolCallId}`);
21749
22143
  }
21750
22144
  const output = await tool2.execute(input);
21751
- responses.push({ name: name20, input, output });
22145
+ responses.push({ name: name21, input, output });
21752
22146
  }
21753
22147
  const res = await fetch(`${host}/tool`, {
21754
22148
  headers: { "x-api-key": apiKey },
@@ -21788,10 +22182,13 @@ async function* iterateSSE(body) {
21788
22182
  }
21789
22183
 
21790
22184
  // src/lib/cloud-api.ts
21791
- var cloudApi = async (path, body, options = {}, onChunk) => {
22185
+ var DEFAULT_API_VERSION = "v2";
22186
+ var CLOUD_CLIENT_VERSION = true ? "0.8.0-canary.06341da7" : "unknown";
22187
+ var cloudApi = async (path, body, options = {}, onChunk, forwardHeaders) => {
21792
22188
  const {
21793
22189
  ai = {},
21794
22190
  apiKey = getApiKey(),
22191
+ apiVersion = DEFAULT_API_VERSION,
21795
22192
  host = "https://cloud.puckeditor.com/api"
21796
22193
  } = options;
21797
22194
  if (!apiKey) {
@@ -21799,14 +22196,22 @@ var cloudApi = async (path, body, options = {}, onChunk) => {
21799
22196
  "No Puck API key specified. Set the PUCK_API_KEY environment variable, or provide one to the function"
21800
22197
  );
21801
22198
  }
21802
- const { context, tools = {} } = ai;
22199
+ const { context, tools = {}, designMode } = ai;
21803
22200
  const res = await fetch(`${host}/${path}`, {
21804
- headers: { "x-api-key": apiKey },
22201
+ headers: {
22202
+ "x-api-key": apiKey,
22203
+ "puck-api-version": apiVersion,
22204
+ "x-puck-cloud-client-version": CLOUD_CLIENT_VERSION,
22205
+ ...forwardHeaders?.pluginAiVersion ? { "x-puck-plugin-ai-version": forwardHeaders.pluginAiVersion } : {}
22206
+ },
21805
22207
  method: "post",
21806
22208
  body: JSON.stringify({
21807
22209
  ...body,
21808
22210
  context,
21809
- tools: prepareUserTools(tools)
22211
+ tools: prepareUserTools(tools),
22212
+ ...designMode ? {
22213
+ designMode
22214
+ } : {}
21810
22215
  })
21811
22216
  });
21812
22217
  if (!res.body) {
@@ -21828,12 +22233,13 @@ var cloudApi = async (path, body, options = {}, onChunk) => {
21828
22233
  };
21829
22234
 
21830
22235
  // src/api/chat.ts
21831
- function chat({ chatId, messages, config: config2, pageData }, options = {}) {
22236
+ function chatPrivate({ chatId, messages, config: config2, pageData, mode }, options = {}, forwardHeaders) {
22237
+ const resolvedMode = mode ?? options?.ai?.mode;
21832
22238
  const stream = createUIMessageStream({
21833
22239
  execute: async ({ writer }) => {
21834
22240
  await cloudApi(
21835
22241
  "chat",
21836
- { chatId, config: config2, messages, pageData },
22242
+ { chatId, config: config2, messages, pageData, mode: resolvedMode },
21837
22243
  options,
21838
22244
  (chunk) => {
21839
22245
  if (chunk.type === "data-finish") {
@@ -21841,7 +22247,29 @@ function chat({ chatId, messages, config: config2, pageData }, options = {}) {
21841
22247
  } else {
21842
22248
  writer.write(chunk);
21843
22249
  }
21844
- }
22250
+ },
22251
+ forwardHeaders
22252
+ );
22253
+ }
22254
+ });
22255
+ return createUIMessageStreamResponse({ stream });
22256
+ }
22257
+ function chat({ chatId, messages, config: config2, pageData }, options = {}, forwardHeaders) {
22258
+ const resolvedMode = options?.ai?.mode;
22259
+ const stream = createUIMessageStream({
22260
+ execute: async ({ writer }) => {
22261
+ await cloudApi(
22262
+ "chat",
22263
+ { chatId, config: config2, messages, pageData, mode: resolvedMode },
22264
+ options,
22265
+ (chunk) => {
22266
+ if (chunk.type === "data-finish") {
22267
+ options.ai?.onFinish?.(chunk.data);
22268
+ } else {
22269
+ writer.write(chunk);
22270
+ }
22271
+ },
22272
+ forwardHeaders
21845
22273
  );
21846
22274
  }
21847
22275
  });
@@ -21959,6 +22387,31 @@ var deleteAttachment = async (context, options = {}) => {
21959
22387
  }
21960
22388
  };
21961
22389
 
22390
+ // src/api/client-tool.ts
22391
+ init_react_import();
22392
+ var DEFAULT_HOST2 = "https://cloud.puckeditor.com/api";
22393
+ var clientTool = async (context, options) => {
22394
+ const apiKey = options.apiKey ?? getApiKey();
22395
+ const host = (options.host ?? DEFAULT_HOST2).replace(/\/+$/, "");
22396
+ if (!apiKey) {
22397
+ throw new Error(
22398
+ "No Puck API key specified. Set the PUCK_API_KEY environment variable, or provide one to the function"
22399
+ );
22400
+ }
22401
+ const response = await fetch(`${host}/tool`, {
22402
+ method: "POST",
22403
+ headers: {
22404
+ "x-api-key": apiKey,
22405
+ "content-type": "application/json"
22406
+ },
22407
+ body: JSON.stringify(context.body)
22408
+ });
22409
+ return new Response(response.body, {
22410
+ status: response.status,
22411
+ headers: { "content-type": "application/json" }
22412
+ });
22413
+ };
22414
+
21962
22415
  // src/routes.ts
21963
22416
  var utf8Decoder = new TextDecoder("utf-8", { fatal: false });
21964
22417
  var safeDecode3 = (pathname) => pathname.replace(/(?:%[0-9a-fA-F]{2})+/g, (run) => {
@@ -21992,6 +22445,12 @@ var matchRoute = (pattern, pathname) => {
21992
22445
  return params;
21993
22446
  };
21994
22447
  var routeRegistry = [
22448
+ {
22449
+ pattern: "/api/puck/chat/tool",
22450
+ methods: {
22451
+ POST: clientTool
22452
+ }
22453
+ },
21995
22454
  {
21996
22455
  pattern: "/api/puck/chat/attachments/:attachmentId",
21997
22456
  methods: {
@@ -22008,7 +22467,9 @@ var routeRegistry = [
22008
22467
  {
22009
22468
  pattern: "/api/puck/chat",
22010
22469
  methods: {
22011
- POST: ({ body }, options) => chat(body, options)
22470
+ POST: ({ body, headers }, options) => chatPrivate(body, options, {
22471
+ pluginAiVersion: headers.get("x-puck-plugin-ai-version")
22472
+ })
22012
22473
  }
22013
22474
  }
22014
22475
  ];
@@ -22075,10 +22536,12 @@ var endpoints = ["chat"];
22075
22536
 
22076
22537
  export {
22077
22538
  getApiKey,
22539
+ chatPrivate,
22078
22540
  chat,
22079
22541
  createAttachments,
22080
22542
  getAttachment,
22081
22543
  deleteAttachment,
22544
+ clientTool,
22082
22545
  findRouteInRegistry,
22083
22546
  handlePuckRequest,
22084
22547
  puckHandler,