@sylphx/flow 0.2.2 → 0.2.4

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.
Files changed (104) hide show
  1. package/assets/agents/coder.md +1 -1
  2. package/assets/agents/orchestrator.md +1 -1
  3. package/assets/agents/reviewer.md +1 -1
  4. package/assets/agents/writer.md +13 -13
  5. package/dist/assets/agents/coder.md +32 -0
  6. package/dist/assets/agents/orchestrator.md +36 -0
  7. package/dist/assets/agents/reviewer.md +30 -0
  8. package/dist/assets/agents/writer.md +30 -0
  9. package/dist/assets/knowledge/data/sql.md +216 -0
  10. package/dist/assets/knowledge/guides/saas-template.md +85 -0
  11. package/dist/assets/knowledge/guides/system-prompt.md +344 -0
  12. package/dist/assets/knowledge/guides/tech-stack.md +92 -0
  13. package/dist/assets/knowledge/guides/ui-ux.md +44 -0
  14. package/dist/assets/knowledge/stacks/nextjs-app.md +165 -0
  15. package/dist/assets/knowledge/stacks/node-api.md +220 -0
  16. package/dist/assets/knowledge/stacks/react-app.md +232 -0
  17. package/dist/assets/knowledge/universal/deployment.md +109 -0
  18. package/dist/assets/knowledge/universal/performance.md +121 -0
  19. package/dist/assets/knowledge/universal/security.md +79 -0
  20. package/dist/assets/knowledge/universal/testing.md +111 -0
  21. package/dist/assets/output-styles/silent.md +23 -0
  22. package/dist/assets/rules/core.md +144 -0
  23. package/dist/assets/slash-commands/commit.md +23 -0
  24. package/dist/assets/slash-commands/context.md +112 -0
  25. package/dist/assets/slash-commands/explain.md +35 -0
  26. package/dist/assets/slash-commands/mep.md +63 -0
  27. package/dist/assets/slash-commands/review.md +39 -0
  28. package/dist/assets/slash-commands/test.md +30 -0
  29. package/dist/chunk-057m762a.js +4 -0
  30. package/dist/{chunk-xhm04nkk.js.map → chunk-057m762a.js.map} +2 -2
  31. package/dist/chunk-2j2gmjg5.js +107 -0
  32. package/dist/chunk-2j2gmjg5.js.map +25 -0
  33. package/dist/{chunk-mdc9ef4e.js → chunk-2nfq57ym.js} +2 -2
  34. package/dist/{chunk-mdc9ef4e.js.map → chunk-2nfq57ym.js.map} +2 -2
  35. package/dist/chunk-372bgp30.js +54 -0
  36. package/dist/chunk-372bgp30.js.map +53 -0
  37. package/dist/{chunk-q3dv05ma.js → chunk-51kpynby.js} +3 -3
  38. package/dist/{chunk-q3dv05ma.js.map → chunk-51kpynby.js.map} +1 -1
  39. package/dist/chunk-585jp0rg.js +4 -0
  40. package/dist/chunk-585jp0rg.js.map +10 -0
  41. package/dist/chunk-66qzap9m.js +3 -0
  42. package/dist/{chunk-yredmasr.js.map → chunk-66qzap9m.js.map} +2 -2
  43. package/dist/chunk-6eb5a8kv.js +7 -0
  44. package/dist/{chunk-qm7xz0bm.js.map → chunk-6eb5a8kv.js.map} +2 -2
  45. package/dist/chunk-7h737bp8.js +4 -0
  46. package/dist/chunk-7h737bp8.js.map +12 -0
  47. package/dist/chunk-8ep9gk6d.js +4 -0
  48. package/dist/{chunk-13awccns.js.map → chunk-8ep9gk6d.js.map} +2 -2
  49. package/dist/chunk-9qzv4trv.js +23 -0
  50. package/dist/chunk-9qzv4trv.js.map +11 -0
  51. package/dist/chunk-b0047ggx.js +3 -0
  52. package/dist/{chunk-9dbwckry.js.map → chunk-b0047ggx.js.map} +2 -2
  53. package/dist/{chunk-xwe9eaaf.js → chunk-ceyg2zjg.js} +6 -5
  54. package/dist/{chunk-xwe9eaaf.js.map → chunk-ceyg2zjg.js.map} +1 -1
  55. package/dist/chunk-cjy100rr.js +6 -0
  56. package/dist/chunk-cjy100rr.js.map +11 -0
  57. package/dist/chunk-cv1nhr27.js +2 -0
  58. package/dist/{chunk-99z4z52k.js.map → chunk-cv1nhr27.js.map} +1 -1
  59. package/dist/{chunk-tzar2j0k.js → chunk-d6k94684.js} +3 -3
  60. package/dist/{chunk-tzar2j0k.js.map → chunk-d6k94684.js.map} +1 -1
  61. package/dist/chunk-e74zv5ct.js +19 -0
  62. package/dist/chunk-e74zv5ct.js.map +10 -0
  63. package/dist/{chunk-z30mabwt.js → chunk-etqfkn4f.js} +9 -9
  64. package/dist/{chunk-z30mabwt.js.map → chunk-etqfkn4f.js.map} +2 -2
  65. package/dist/{chunk-yj831xk5.js → chunk-f676awyz.js} +3 -3
  66. package/dist/{chunk-yj831xk5.js.map → chunk-f676awyz.js.map} +1 -1
  67. package/dist/{chunk-99z4z52k.js → chunk-f9yb2zk3.js} +2 -2
  68. package/dist/chunk-f9yb2zk3.js.map +9 -0
  69. package/dist/{chunk-jth5s5rd.js → chunk-fyvtp08n.js} +2 -2
  70. package/dist/{chunk-jth5s5rd.js.map → chunk-fyvtp08n.js.map} +2 -2
  71. package/dist/chunk-gmmm7xpw.js +23 -0
  72. package/dist/chunk-gmmm7xpw.js.map +132 -0
  73. package/dist/chunk-mtrcdhzn.js +119 -0
  74. package/dist/{chunk-1qp4nx2f.js.map → chunk-mtrcdhzn.js.map} +7 -7
  75. package/dist/chunk-ny1s8fnh.js +3 -0
  76. package/dist/{chunk-689g5js2.js.map → chunk-ny1s8fnh.js.map} +2 -2
  77. package/dist/{chunk-5qb65n40.js → chunk-rsagxdqj.js} +71 -71
  78. package/dist/{chunk-5qb65n40.js.map → chunk-rsagxdqj.js.map} +3 -3
  79. package/dist/chunk-rvx8bgqk.js +4 -0
  80. package/dist/chunk-rvx8bgqk.js.map +10 -0
  81. package/dist/chunk-sgafqzer.js +25 -0
  82. package/dist/{chunk-tv05bzde.js.map → chunk-sgafqzer.js.map} +4 -9
  83. package/dist/chunk-vc4xy6dm.js +27 -0
  84. package/dist/{chunk-4dhthe08.js.map → chunk-vc4xy6dm.js.map} +4 -5
  85. package/dist/chunk-weshapwk.js +27 -0
  86. package/dist/chunk-weshapwk.js.map +23 -0
  87. package/dist/{chunk-vg15k2nk.js → chunk-z61qdct1.js} +2 -2
  88. package/dist/{chunk-vg15k2nk.js.map → chunk-z61qdct1.js.map} +1 -1
  89. package/dist/index.js +411 -430
  90. package/dist/index.js.map +41 -142
  91. package/package.json +3 -1
  92. package/dist/chunk-13awccns.js +0 -4
  93. package/dist/chunk-1qp4nx2f.js +0 -76
  94. package/dist/chunk-40c8zeb0.js +0 -4
  95. package/dist/chunk-40c8zeb0.js.map +0 -10
  96. package/dist/chunk-4dhthe08.js +0 -27
  97. package/dist/chunk-689g5js2.js +0 -3
  98. package/dist/chunk-9dbwckry.js +0 -3
  99. package/dist/chunk-9x8s5xdb.js +0 -16
  100. package/dist/chunk-9x8s5xdb.js.map +0 -10
  101. package/dist/chunk-qm7xz0bm.js +0 -7
  102. package/dist/chunk-tv05bzde.js +0 -107
  103. package/dist/chunk-xhm04nkk.js +0 -4
  104. package/dist/chunk-yredmasr.js +0 -3
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../node_modules/@vercel/oidc/dist/get-context.js", "../node_modules/@vercel/oidc/dist/get-vercel-oidc-token.js", "../node_modules/@vercel/oidc/dist/index.js", "../node_modules/@opentelemetry/api/build/src/platform/node/globalThis.js", "../node_modules/@opentelemetry/api/build/src/platform/node/index.js", "../node_modules/@opentelemetry/api/build/src/platform/index.js", "../node_modules/@opentelemetry/api/build/src/version.js", "../node_modules/@opentelemetry/api/build/src/internal/semver.js", "../node_modules/@opentelemetry/api/build/src/internal/global-utils.js", "../node_modules/@opentelemetry/api/build/src/diag/ComponentLogger.js", "../node_modules/@opentelemetry/api/build/src/diag/types.js", "../node_modules/@opentelemetry/api/build/src/diag/internal/logLevelLogger.js", "../node_modules/@opentelemetry/api/build/src/api/diag.js", "../node_modules/@opentelemetry/api/build/src/baggage/internal/baggage-impl.js", "../node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.js", "../node_modules/@opentelemetry/api/build/src/baggage/utils.js", "../node_modules/@opentelemetry/api/build/src/context/context.js", "../node_modules/@opentelemetry/api/build/src/diag/consoleLogger.js", "../node_modules/@opentelemetry/api/build/src/metrics/NoopMeter.js", "../node_modules/@opentelemetry/api/build/src/metrics/Metric.js", "../node_modules/@opentelemetry/api/build/src/propagation/TextMapPropagator.js", "../node_modules/@opentelemetry/api/build/src/context/NoopContextManager.js", "../node_modules/@opentelemetry/api/build/src/api/context.js", "../node_modules/@opentelemetry/api/build/src/trace/trace_flags.js", "../node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.js", "../node_modules/@opentelemetry/api/build/src/trace/NonRecordingSpan.js", "../node_modules/@opentelemetry/api/build/src/trace/context-utils.js", "../node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.js", "../node_modules/@opentelemetry/api/build/src/trace/NoopTracer.js", "../node_modules/@opentelemetry/api/build/src/trace/ProxyTracer.js", "../node_modules/@opentelemetry/api/build/src/trace/NoopTracerProvider.js", "../node_modules/@opentelemetry/api/build/src/trace/ProxyTracerProvider.js", "../node_modules/@opentelemetry/api/build/src/trace/SamplingResult.js", "../node_modules/@opentelemetry/api/build/src/trace/span_kind.js", "../node_modules/@opentelemetry/api/build/src/trace/status.js", "../node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-validators.js", "../node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-impl.js", "../node_modules/@opentelemetry/api/build/src/trace/internal/utils.js", "../node_modules/@opentelemetry/api/build/src/context-api.js", "../node_modules/@opentelemetry/api/build/src/diag-api.js", "../node_modules/@opentelemetry/api/build/src/metrics/NoopMeterProvider.js", "../node_modules/@opentelemetry/api/build/src/api/metrics.js", "../node_modules/@opentelemetry/api/build/src/metrics-api.js", "../node_modules/@opentelemetry/api/build/src/propagation/NoopTextMapPropagator.js", "../node_modules/@opentelemetry/api/build/src/baggage/context-helpers.js", "../node_modules/@opentelemetry/api/build/src/api/propagation.js", "../node_modules/@opentelemetry/api/build/src/propagation-api.js", "../node_modules/@opentelemetry/api/build/src/api/trace.js", "../node_modules/@opentelemetry/api/build/src/trace-api.js", "../node_modules/@opentelemetry/api/build/src/index.js", "../src/tools/filesystem.ts", "../node_modules/@ai-sdk/gateway/dist/index.mjs", "../node_modules/ai/dist/index.mjs", "../src/tools/shell.ts", "../src/tools/search.ts", "../src/tools/interaction.ts", "../src/tools/registry.ts"],
3
+ "sources": ["../node_modules/@vercel/oidc/dist/get-context.js", "../node_modules/@vercel/oidc/dist/get-vercel-oidc-token.js", "../node_modules/@vercel/oidc/dist/index.js", "../node_modules/@opentelemetry/api/build/src/platform/node/globalThis.js", "../node_modules/@opentelemetry/api/build/src/platform/node/index.js", "../node_modules/@opentelemetry/api/build/src/platform/index.js", "../node_modules/@opentelemetry/api/build/src/version.js", "../node_modules/@opentelemetry/api/build/src/internal/semver.js", "../node_modules/@opentelemetry/api/build/src/internal/global-utils.js", "../node_modules/@opentelemetry/api/build/src/diag/ComponentLogger.js", "../node_modules/@opentelemetry/api/build/src/diag/types.js", "../node_modules/@opentelemetry/api/build/src/diag/internal/logLevelLogger.js", "../node_modules/@opentelemetry/api/build/src/api/diag.js", "../node_modules/@opentelemetry/api/build/src/baggage/internal/baggage-impl.js", "../node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.js", "../node_modules/@opentelemetry/api/build/src/baggage/utils.js", "../node_modules/@opentelemetry/api/build/src/context/context.js", "../node_modules/@opentelemetry/api/build/src/diag/consoleLogger.js", "../node_modules/@opentelemetry/api/build/src/metrics/NoopMeter.js", "../node_modules/@opentelemetry/api/build/src/metrics/Metric.js", "../node_modules/@opentelemetry/api/build/src/propagation/TextMapPropagator.js", "../node_modules/@opentelemetry/api/build/src/context/NoopContextManager.js", "../node_modules/@opentelemetry/api/build/src/api/context.js", "../node_modules/@opentelemetry/api/build/src/trace/trace_flags.js", "../node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.js", "../node_modules/@opentelemetry/api/build/src/trace/NonRecordingSpan.js", "../node_modules/@opentelemetry/api/build/src/trace/context-utils.js", "../node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.js", "../node_modules/@opentelemetry/api/build/src/trace/NoopTracer.js", "../node_modules/@opentelemetry/api/build/src/trace/ProxyTracer.js", "../node_modules/@opentelemetry/api/build/src/trace/NoopTracerProvider.js", "../node_modules/@opentelemetry/api/build/src/trace/ProxyTracerProvider.js", "../node_modules/@opentelemetry/api/build/src/trace/SamplingResult.js", "../node_modules/@opentelemetry/api/build/src/trace/span_kind.js", "../node_modules/@opentelemetry/api/build/src/trace/status.js", "../node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-validators.js", "../node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-impl.js", "../node_modules/@opentelemetry/api/build/src/trace/internal/utils.js", "../node_modules/@opentelemetry/api/build/src/context-api.js", "../node_modules/@opentelemetry/api/build/src/diag-api.js", "../node_modules/@opentelemetry/api/build/src/metrics/NoopMeterProvider.js", "../node_modules/@opentelemetry/api/build/src/api/metrics.js", "../node_modules/@opentelemetry/api/build/src/metrics-api.js", "../node_modules/@opentelemetry/api/build/src/propagation/NoopTextMapPropagator.js", "../node_modules/@opentelemetry/api/build/src/baggage/context-helpers.js", "../node_modules/@opentelemetry/api/build/src/api/propagation.js", "../node_modules/@opentelemetry/api/build/src/propagation-api.js", "../node_modules/@opentelemetry/api/build/src/api/trace.js", "../node_modules/@opentelemetry/api/build/src/trace-api.js", "../node_modules/@opentelemetry/api/build/src/index.js", "../node_modules/@ai-sdk/gateway/dist/index.mjs", "../node_modules/ai/dist/index.mjs"],
4
4
  "sourcesContent": [
5
5
  "\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar get_context_exports = {};\n__export(get_context_exports, {\n SYMBOL_FOR_REQ_CONTEXT: () => SYMBOL_FOR_REQ_CONTEXT,\n getContext: () => getContext\n});\nmodule.exports = __toCommonJS(get_context_exports);\nconst SYMBOL_FOR_REQ_CONTEXT = Symbol.for(\"@vercel/request-context\");\nfunction getContext() {\n const fromSymbol = globalThis;\n return fromSymbol[SYMBOL_FOR_REQ_CONTEXT]?.get?.() ?? {};\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n SYMBOL_FOR_REQ_CONTEXT,\n getContext\n});\n",
6
6
  "\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar get_vercel_oidc_token_exports = {};\n__export(get_vercel_oidc_token_exports, {\n getVercelOidcToken: () => getVercelOidcToken,\n getVercelOidcTokenSync: () => getVercelOidcTokenSync\n});\nmodule.exports = __toCommonJS(get_vercel_oidc_token_exports);\nvar import_get_context = require(\"./get-context\");\nvar import_token_error = require(\"./token-error\");\nasync function getVercelOidcToken() {\n let token = \"\";\n let err;\n try {\n token = getVercelOidcTokenSync();\n } catch (error) {\n err = error;\n }\n try {\n const [{ getTokenPayload, isExpired }, { refreshToken }] = await Promise.all([\n await import(\"./token-util.js\"),\n await import(\"./token.js\")\n ]);\n if (!token || isExpired(getTokenPayload(token))) {\n await refreshToken();\n token = getVercelOidcTokenSync();\n }\n } catch (error) {\n if (err?.message && error instanceof Error) {\n error.message = `${err.message}\n${error.message}`;\n }\n throw new import_token_error.VercelOidcTokenError(`Failed to refresh OIDC token`, error);\n }\n return token;\n}\nfunction getVercelOidcTokenSync() {\n const token = (0, import_get_context.getContext)().headers?.[\"x-vercel-oidc-token\"] ?? process.env.VERCEL_OIDC_TOKEN;\n if (!token) {\n throw new Error(\n `The 'x-vercel-oidc-token' header is missing from the request. Do you have the OIDC option enabled in the Vercel project settings?`\n );\n }\n return token;\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n getVercelOidcToken,\n getVercelOidcTokenSync\n});\n",
@@ -52,15 +52,10 @@
52
52
  "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceAPI = void 0;\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst ProxyTracerProvider_1 = require(\"../trace/ProxyTracerProvider\");\nconst spancontext_utils_1 = require(\"../trace/spancontext-utils\");\nconst context_utils_1 = require(\"../trace/context-utils\");\nconst diag_1 = require(\"./diag\");\nconst API_NAME = 'trace';\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Tracing API\n */\nclass TraceAPI {\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n constructor() {\n this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider();\n this.wrapSpanContext = spancontext_utils_1.wrapSpanContext;\n this.isSpanContextValid = spancontext_utils_1.isSpanContextValid;\n this.deleteSpan = context_utils_1.deleteSpan;\n this.getSpan = context_utils_1.getSpan;\n this.getActiveSpan = context_utils_1.getActiveSpan;\n this.getSpanContext = context_utils_1.getSpanContext;\n this.setSpan = context_utils_1.setSpan;\n this.setSpanContext = context_utils_1.setSpanContext;\n }\n /** Get the singleton instance of the Trace API */\n static getInstance() {\n if (!this._instance) {\n this._instance = new TraceAPI();\n }\n return this._instance;\n }\n /**\n * Set the current global tracer.\n *\n * @returns true if the tracer provider was successfully registered, else false\n */\n setGlobalTracerProvider(provider) {\n const success = (0, global_utils_1.registerGlobal)(API_NAME, this._proxyTracerProvider, diag_1.DiagAPI.instance());\n if (success) {\n this._proxyTracerProvider.setDelegate(provider);\n }\n return success;\n }\n /**\n * Returns the global tracer provider.\n */\n getTracerProvider() {\n return (0, global_utils_1.getGlobal)(API_NAME) || this._proxyTracerProvider;\n }\n /**\n * Returns a tracer from the global tracer provider.\n */\n getTracer(name, version) {\n return this.getTracerProvider().getTracer(name, version);\n }\n /** Remove the global tracer provider */\n disable() {\n (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());\n this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider();\n }\n}\nexports.TraceAPI = TraceAPI;\n//# sourceMappingURL=trace.js.map",
53
53
  "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.trace = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst trace_1 = require(\"./api/trace\");\n/** Entrypoint for trace API */\nexports.trace = trace_1.TraceAPI.getInstance();\n//# sourceMappingURL=trace-api.js.map",
54
54
  "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.trace = exports.propagation = exports.metrics = exports.diag = exports.context = exports.INVALID_SPAN_CONTEXT = exports.INVALID_TRACEID = exports.INVALID_SPANID = exports.isValidSpanId = exports.isValidTraceId = exports.isSpanContextValid = exports.createTraceState = exports.TraceFlags = exports.SpanStatusCode = exports.SpanKind = exports.SamplingDecision = exports.ProxyTracerProvider = exports.ProxyTracer = exports.defaultTextMapSetter = exports.defaultTextMapGetter = exports.ValueType = exports.createNoopMeter = exports.DiagLogLevel = exports.DiagConsoleLogger = exports.ROOT_CONTEXT = exports.createContextKey = exports.baggageEntryMetadataFromString = void 0;\nvar utils_1 = require(\"./baggage/utils\");\nObject.defineProperty(exports, \"baggageEntryMetadataFromString\", { enumerable: true, get: function () { return utils_1.baggageEntryMetadataFromString; } });\n// Context APIs\nvar context_1 = require(\"./context/context\");\nObject.defineProperty(exports, \"createContextKey\", { enumerable: true, get: function () { return context_1.createContextKey; } });\nObject.defineProperty(exports, \"ROOT_CONTEXT\", { enumerable: true, get: function () { return context_1.ROOT_CONTEXT; } });\n// Diag APIs\nvar consoleLogger_1 = require(\"./diag/consoleLogger\");\nObject.defineProperty(exports, \"DiagConsoleLogger\", { enumerable: true, get: function () { return consoleLogger_1.DiagConsoleLogger; } });\nvar types_1 = require(\"./diag/types\");\nObject.defineProperty(exports, \"DiagLogLevel\", { enumerable: true, get: function () { return types_1.DiagLogLevel; } });\n// Metrics APIs\nvar NoopMeter_1 = require(\"./metrics/NoopMeter\");\nObject.defineProperty(exports, \"createNoopMeter\", { enumerable: true, get: function () { return NoopMeter_1.createNoopMeter; } });\nvar Metric_1 = require(\"./metrics/Metric\");\nObject.defineProperty(exports, \"ValueType\", { enumerable: true, get: function () { return Metric_1.ValueType; } });\n// Propagation APIs\nvar TextMapPropagator_1 = require(\"./propagation/TextMapPropagator\");\nObject.defineProperty(exports, \"defaultTextMapGetter\", { enumerable: true, get: function () { return TextMapPropagator_1.defaultTextMapGetter; } });\nObject.defineProperty(exports, \"defaultTextMapSetter\", { enumerable: true, get: function () { return TextMapPropagator_1.defaultTextMapSetter; } });\nvar ProxyTracer_1 = require(\"./trace/ProxyTracer\");\nObject.defineProperty(exports, \"ProxyTracer\", { enumerable: true, get: function () { return ProxyTracer_1.ProxyTracer; } });\nvar ProxyTracerProvider_1 = require(\"./trace/ProxyTracerProvider\");\nObject.defineProperty(exports, \"ProxyTracerProvider\", { enumerable: true, get: function () { return ProxyTracerProvider_1.ProxyTracerProvider; } });\nvar SamplingResult_1 = require(\"./trace/SamplingResult\");\nObject.defineProperty(exports, \"SamplingDecision\", { enumerable: true, get: function () { return SamplingResult_1.SamplingDecision; } });\nvar span_kind_1 = require(\"./trace/span_kind\");\nObject.defineProperty(exports, \"SpanKind\", { enumerable: true, get: function () { return span_kind_1.SpanKind; } });\nvar status_1 = require(\"./trace/status\");\nObject.defineProperty(exports, \"SpanStatusCode\", { enumerable: true, get: function () { return status_1.SpanStatusCode; } });\nvar trace_flags_1 = require(\"./trace/trace_flags\");\nObject.defineProperty(exports, \"TraceFlags\", { enumerable: true, get: function () { return trace_flags_1.TraceFlags; } });\nvar utils_2 = require(\"./trace/internal/utils\");\nObject.defineProperty(exports, \"createTraceState\", { enumerable: true, get: function () { return utils_2.createTraceState; } });\nvar spancontext_utils_1 = require(\"./trace/spancontext-utils\");\nObject.defineProperty(exports, \"isSpanContextValid\", { enumerable: true, get: function () { return spancontext_utils_1.isSpanContextValid; } });\nObject.defineProperty(exports, \"isValidTraceId\", { enumerable: true, get: function () { return spancontext_utils_1.isValidTraceId; } });\nObject.defineProperty(exports, \"isValidSpanId\", { enumerable: true, get: function () { return spancontext_utils_1.isValidSpanId; } });\nvar invalid_span_constants_1 = require(\"./trace/invalid-span-constants\");\nObject.defineProperty(exports, \"INVALID_SPANID\", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_SPANID; } });\nObject.defineProperty(exports, \"INVALID_TRACEID\", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_TRACEID; } });\nObject.defineProperty(exports, \"INVALID_SPAN_CONTEXT\", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_SPAN_CONTEXT; } });\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst context_api_1 = require(\"./context-api\");\nObject.defineProperty(exports, \"context\", { enumerable: true, get: function () { return context_api_1.context; } });\nconst diag_api_1 = require(\"./diag-api\");\nObject.defineProperty(exports, \"diag\", { enumerable: true, get: function () { return diag_api_1.diag; } });\nconst metrics_api_1 = require(\"./metrics-api\");\nObject.defineProperty(exports, \"metrics\", { enumerable: true, get: function () { return metrics_api_1.metrics; } });\nconst propagation_api_1 = require(\"./propagation-api\");\nObject.defineProperty(exports, \"propagation\", { enumerable: true, get: function () { return propagation_api_1.propagation; } });\nconst trace_api_1 = require(\"./trace-api\");\nObject.defineProperty(exports, \"trace\", { enumerable: true, get: function () { return trace_api_1.trace; } });\n// Default export.\nexports.default = {\n context: context_api_1.context,\n diag: diag_api_1.diag,\n metrics: metrics_api_1.metrics,\n propagation: propagation_api_1.propagation,\n trace: trace_api_1.trace,\n};\n//# sourceMappingURL=index.js.map",
55
- "/**\n * Filesystem Tools\n * Tools for reading and writing files\n */\n\nimport { readFile, writeFile, mkdir } from 'node:fs/promises';\nimport { dirname } from 'node:path';\nimport { tool } from 'ai';\nimport { z } from 'zod';\n\n/**\n * Read file tool\n */\nexport const readFileTool = tool({\n description: `Read contents of a file from the filesystem.\n\nUsage:\n- Read source code files\n- Read configuration files\n- Read documentation files\n\nThe file path must be absolute or relative to the current working directory.`,\n inputSchema: z.object({\n file_path: z.string().describe('Path to the file to read'),\n encoding: z\n .enum(['utf8', 'base64'])\n .default('utf8')\n .optional()\n .describe('File encoding (default: utf8)'),\n }),\n execute: async ({ file_path, encoding = 'utf8' }) => {\n const content = await readFile(file_path, encoding as BufferEncoding);\n return {\n path: file_path,\n content,\n encoding,\n };\n },\n});\n\n/**\n * Write file tool\n */\nexport const writeFileTool = tool({\n description: `Write content to a file. Creates parent directories if they don't exist.\n\nUsage:\n- Create new files\n- Overwrite existing files\n- Write generated code or data\n\nIMPORTANT: This will overwrite the file if it exists.`,\n inputSchema: z.object({\n file_path: z.string().describe('Path where the file should be written'),\n content: z.string().describe('Content to write to the file'),\n encoding: z\n .enum(['utf8', 'base64'])\n .default('utf8')\n .optional()\n .describe('File encoding (default: utf8)'),\n }),\n execute: async ({ file_path, content, encoding = 'utf8' }) => {\n // Create parent directories if they don't exist\n const dir = dirname(file_path);\n await mkdir(dir, { recursive: true });\n\n await writeFile(file_path, content, encoding as BufferEncoding);\n\n // Get file name and line preview\n const fileName = file_path.split('/').pop() || '';\n const lines = content.split('\\n');\n\n return {\n path: file_path,\n bytes: Buffer.byteLength(content, encoding as BufferEncoding),\n fileName,\n lineCount: lines.length,\n preview: lines.slice(0, 5), // First 5 lines for preview\n };\n },\n});\n\n/**\n * Edit file tool\n */\nexport const editFileTool = tool({\n description: `Performs exact string replacements in files.\n\nUsage:\n- Modify existing files\n- Replace specific code sections\n- Update configuration values\n\nIMPORTANT:\n- The edit will FAIL if old_string is not unique in the file\n- Provide more context in old_string to make it unique\n- Use replace_all to change every instance of old_string\n- You must use the exact string from the file (preserve indentation, whitespace)`,\n inputSchema: z.object({\n file_path: z.string().describe('Absolute path to the file to modify'),\n old_string: z.string().describe('The exact text to replace (must match exactly)'),\n new_string: z.string().describe('The text to replace it with (must be different from old_string)'),\n replace_all: z\n .boolean()\n .default(false)\n .optional()\n .describe('Replace all occurrences of old_string (default: false)'),\n }),\n execute: async ({ file_path, old_string, new_string, replace_all = false }) => {\n // Validate strings are different\n if (old_string === new_string) {\n throw new Error('old_string and new_string must be different');\n }\n\n // Read file\n const content = await readFile(file_path, 'utf8');\n\n // Check if old_string exists\n if (!content.includes(old_string)) {\n throw new Error(`old_string not found in file: ${file_path}`);\n }\n\n // Check for multiple occurrences if not replace_all\n if (!replace_all) {\n const firstIndex = content.indexOf(old_string);\n const lastIndex = content.lastIndexOf(old_string);\n if (firstIndex !== lastIndex) {\n throw new Error(\n 'old_string appears multiple times in the file. Either provide more context to make it unique or use replace_all=true'\n );\n }\n }\n\n // Find line number where replacement occurs\n const lines = content.split('\\n');\n const beforeContent = content.substring(0, content.indexOf(old_string));\n const lineNumber = beforeContent.split('\\n').length;\n\n // Get context lines (few lines before and after)\n const contextSize = 2;\n const startLine = Math.max(0, lineNumber - contextSize - 1);\n const endLine = Math.min(lines.length, lineNumber + contextSize);\n\n // Perform replacement\n const newContent = replace_all\n ? content.split(old_string).join(new_string)\n : content.replace(old_string, new_string);\n\n // Write back\n await writeFile(file_path, newContent, 'utf8');\n\n // Count replacements\n const occurrences = replace_all\n ? content.split(old_string).length - 1\n : 1;\n\n // Generate diff lines for display\n const contextLines = lines.slice(startLine, endLine);\n const diffLines: string[] = [];\n\n for (let i = 0; i < contextLines.length; i++) {\n const currentLineNum = startLine + i + 1;\n const line = contextLines[i];\n\n if (currentLineNum === lineNumber) {\n // This is the changed line\n const oldLines = old_string.split('\\n');\n const newLines = new_string.split('\\n');\n\n // Show removed lines\n oldLines.forEach((oldLine) => {\n diffLines.push(`${currentLineNum.toString().padStart(6)} - ${oldLine}`);\n });\n\n // Show added lines\n newLines.forEach((newLine) => {\n diffLines.push(`${currentLineNum.toString().padStart(6)} + ${newLine}`);\n });\n } else {\n // Context line\n diffLines.push(`${currentLineNum.toString().padStart(6)} ${line}`);\n }\n }\n\n return {\n path: file_path,\n replacements: occurrences,\n old_length: old_string.length,\n new_length: new_string.length,\n diff: diffLines,\n old_string,\n new_string,\n };\n },\n});\n\n/**\n * All filesystem tools\n */\nexport const filesystemTools = {\n read: readFileTool,\n write: writeFileTool,\n edit: editFileTool,\n};\n",
56
55
  "// src/gateway-provider.ts\nimport { NoSuchModelError } from \"@ai-sdk/provider\";\nimport {\n loadOptionalSetting,\n withoutTrailingSlash\n} from \"@ai-sdk/provider-utils\";\n\n// src/errors/as-gateway-error.ts\nimport { APICallError } from \"@ai-sdk/provider\";\n\n// src/errors/create-gateway-error.ts\nimport { z as z2 } from \"zod/v4\";\n\n// src/errors/gateway-error.ts\nvar marker = \"vercel.ai.gateway.error\";\nvar symbol = Symbol.for(marker);\nvar _a, _b;\nvar GatewayError = class _GatewayError extends (_b = Error, _a = symbol, _b) {\n constructor({\n message,\n statusCode = 500,\n cause\n }) {\n super(message);\n this[_a] = true;\n this.statusCode = statusCode;\n this.cause = cause;\n }\n /**\n * Checks if the given error is a Gateway Error.\n * @param {unknown} error - The error to check.\n * @returns {boolean} True if the error is a Gateway Error, false otherwise.\n */\n static isInstance(error) {\n return _GatewayError.hasMarker(error);\n }\n static hasMarker(error) {\n return typeof error === \"object\" && error !== null && symbol in error && error[symbol] === true;\n }\n};\n\n// src/errors/gateway-authentication-error.ts\nvar name = \"GatewayAuthenticationError\";\nvar marker2 = `vercel.ai.gateway.error.${name}`;\nvar symbol2 = Symbol.for(marker2);\nvar _a2, _b2;\nvar GatewayAuthenticationError = class _GatewayAuthenticationError extends (_b2 = GatewayError, _a2 = symbol2, _b2) {\n constructor({\n message = \"Authentication failed\",\n statusCode = 401,\n cause\n } = {}) {\n super({ message, statusCode, cause });\n this[_a2] = true;\n // used in isInstance\n this.name = name;\n this.type = \"authentication_error\";\n }\n static isInstance(error) {\n return GatewayError.hasMarker(error) && symbol2 in error;\n }\n /**\n * Creates a contextual error message when authentication fails\n */\n static createContextualError({\n apiKeyProvided,\n oidcTokenProvided,\n message = \"Authentication failed\",\n statusCode = 401,\n cause\n }) {\n let contextualMessage;\n if (apiKeyProvided) {\n contextualMessage = `AI Gateway authentication failed: Invalid API key.\n\nCreate a new API key: https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai%2Fapi-keys\n\nProvide via 'apiKey' option or 'AI_GATEWAY_API_KEY' environment variable.`;\n } else if (oidcTokenProvided) {\n contextualMessage = `AI Gateway authentication failed: Invalid OIDC token.\n\nRun 'npx vercel link' to link your project, then 'vc env pull' to fetch the token.\n\nAlternatively, use an API key: https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai%2Fapi-keys`;\n } else {\n contextualMessage = `AI Gateway authentication failed: No authentication provided.\n\nOption 1 - API key:\nCreate an API key: https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai%2Fapi-keys\nProvide via 'apiKey' option or 'AI_GATEWAY_API_KEY' environment variable.\n\nOption 2 - OIDC token:\nRun 'npx vercel link' to link your project, then 'vc env pull' to fetch the token.`;\n }\n return new _GatewayAuthenticationError({\n message: contextualMessage,\n statusCode,\n cause\n });\n }\n};\n\n// src/errors/gateway-invalid-request-error.ts\nvar name2 = \"GatewayInvalidRequestError\";\nvar marker3 = `vercel.ai.gateway.error.${name2}`;\nvar symbol3 = Symbol.for(marker3);\nvar _a3, _b3;\nvar GatewayInvalidRequestError = class extends (_b3 = GatewayError, _a3 = symbol3, _b3) {\n constructor({\n message = \"Invalid request\",\n statusCode = 400,\n cause\n } = {}) {\n super({ message, statusCode, cause });\n this[_a3] = true;\n // used in isInstance\n this.name = name2;\n this.type = \"invalid_request_error\";\n }\n static isInstance(error) {\n return GatewayError.hasMarker(error) && symbol3 in error;\n }\n};\n\n// src/errors/gateway-rate-limit-error.ts\nvar name3 = \"GatewayRateLimitError\";\nvar marker4 = `vercel.ai.gateway.error.${name3}`;\nvar symbol4 = Symbol.for(marker4);\nvar _a4, _b4;\nvar GatewayRateLimitError = class extends (_b4 = GatewayError, _a4 = symbol4, _b4) {\n constructor({\n message = \"Rate limit exceeded\",\n statusCode = 429,\n cause\n } = {}) {\n super({ message, statusCode, cause });\n this[_a4] = true;\n // used in isInstance\n this.name = name3;\n this.type = \"rate_limit_exceeded\";\n }\n static isInstance(error) {\n return GatewayError.hasMarker(error) && symbol4 in error;\n }\n};\n\n// src/errors/gateway-model-not-found-error.ts\nimport { z } from \"zod/v4\";\nimport { lazyValidator, zodSchema } from \"@ai-sdk/provider-utils\";\nvar name4 = \"GatewayModelNotFoundError\";\nvar marker5 = `vercel.ai.gateway.error.${name4}`;\nvar symbol5 = Symbol.for(marker5);\nvar modelNotFoundParamSchema = lazyValidator(\n () => zodSchema(\n z.object({\n modelId: z.string()\n })\n )\n);\nvar _a5, _b5;\nvar GatewayModelNotFoundError = class extends (_b5 = GatewayError, _a5 = symbol5, _b5) {\n constructor({\n message = \"Model not found\",\n statusCode = 404,\n modelId,\n cause\n } = {}) {\n super({ message, statusCode, cause });\n this[_a5] = true;\n // used in isInstance\n this.name = name4;\n this.type = \"model_not_found\";\n this.modelId = modelId;\n }\n static isInstance(error) {\n return GatewayError.hasMarker(error) && symbol5 in error;\n }\n};\n\n// src/errors/gateway-internal-server-error.ts\nvar name5 = \"GatewayInternalServerError\";\nvar marker6 = `vercel.ai.gateway.error.${name5}`;\nvar symbol6 = Symbol.for(marker6);\nvar _a6, _b6;\nvar GatewayInternalServerError = class extends (_b6 = GatewayError, _a6 = symbol6, _b6) {\n constructor({\n message = \"Internal server error\",\n statusCode = 500,\n cause\n } = {}) {\n super({ message, statusCode, cause });\n this[_a6] = true;\n // used in isInstance\n this.name = name5;\n this.type = \"internal_server_error\";\n }\n static isInstance(error) {\n return GatewayError.hasMarker(error) && symbol6 in error;\n }\n};\n\n// src/errors/gateway-response-error.ts\nvar name6 = \"GatewayResponseError\";\nvar marker7 = `vercel.ai.gateway.error.${name6}`;\nvar symbol7 = Symbol.for(marker7);\nvar _a7, _b7;\nvar GatewayResponseError = class extends (_b7 = GatewayError, _a7 = symbol7, _b7) {\n constructor({\n message = \"Invalid response from Gateway\",\n statusCode = 502,\n response,\n validationError,\n cause\n } = {}) {\n super({ message, statusCode, cause });\n this[_a7] = true;\n // used in isInstance\n this.name = name6;\n this.type = \"response_error\";\n this.response = response;\n this.validationError = validationError;\n }\n static isInstance(error) {\n return GatewayError.hasMarker(error) && symbol7 in error;\n }\n};\n\n// src/errors/create-gateway-error.ts\nimport {\n lazyValidator as lazyValidator2,\n safeValidateTypes,\n zodSchema as zodSchema2\n} from \"@ai-sdk/provider-utils\";\nasync function createGatewayErrorFromResponse({\n response,\n statusCode,\n defaultMessage = \"Gateway request failed\",\n cause,\n authMethod\n}) {\n const parseResult = await safeValidateTypes({\n value: response,\n schema: gatewayErrorResponseSchema\n });\n if (!parseResult.success) {\n return new GatewayResponseError({\n message: `Invalid error response format: ${defaultMessage}`,\n statusCode,\n response,\n validationError: parseResult.error,\n cause\n });\n }\n const validatedResponse = parseResult.value;\n const errorType = validatedResponse.error.type;\n const message = validatedResponse.error.message;\n switch (errorType) {\n case \"authentication_error\":\n return GatewayAuthenticationError.createContextualError({\n apiKeyProvided: authMethod === \"api-key\",\n oidcTokenProvided: authMethod === \"oidc\",\n statusCode,\n cause\n });\n case \"invalid_request_error\":\n return new GatewayInvalidRequestError({ message, statusCode, cause });\n case \"rate_limit_exceeded\":\n return new GatewayRateLimitError({ message, statusCode, cause });\n case \"model_not_found\": {\n const modelResult = await safeValidateTypes({\n value: validatedResponse.error.param,\n schema: modelNotFoundParamSchema\n });\n return new GatewayModelNotFoundError({\n message,\n statusCode,\n modelId: modelResult.success ? modelResult.value.modelId : void 0,\n cause\n });\n }\n case \"internal_server_error\":\n return new GatewayInternalServerError({ message, statusCode, cause });\n default:\n return new GatewayInternalServerError({ message, statusCode, cause });\n }\n}\nvar gatewayErrorResponseSchema = lazyValidator2(\n () => zodSchema2(\n z2.object({\n error: z2.object({\n message: z2.string(),\n type: z2.string().nullish(),\n param: z2.unknown().nullish(),\n code: z2.union([z2.string(), z2.number()]).nullish()\n })\n })\n )\n);\n\n// src/errors/as-gateway-error.ts\nfunction asGatewayError(error, authMethod) {\n var _a8;\n if (GatewayError.isInstance(error)) {\n return error;\n }\n if (APICallError.isInstance(error)) {\n return createGatewayErrorFromResponse({\n response: extractApiCallResponse(error),\n statusCode: (_a8 = error.statusCode) != null ? _a8 : 500,\n defaultMessage: \"Gateway request failed\",\n cause: error,\n authMethod\n });\n }\n return createGatewayErrorFromResponse({\n response: {},\n statusCode: 500,\n defaultMessage: error instanceof Error ? `Gateway request failed: ${error.message}` : \"Unknown Gateway error\",\n cause: error,\n authMethod\n });\n}\n\n// src/errors/extract-api-call-response.ts\nfunction extractApiCallResponse(error) {\n if (error.data !== void 0) {\n return error.data;\n }\n if (error.responseBody != null) {\n try {\n return JSON.parse(error.responseBody);\n } catch (e) {\n return error.responseBody;\n }\n }\n return {};\n}\n\n// src/errors/parse-auth-method.ts\nimport { z as z3 } from \"zod/v4\";\nimport {\n lazyValidator as lazyValidator3,\n safeValidateTypes as safeValidateTypes2,\n zodSchema as zodSchema3\n} from \"@ai-sdk/provider-utils\";\nvar GATEWAY_AUTH_METHOD_HEADER = \"ai-gateway-auth-method\";\nasync function parseAuthMethod(headers) {\n const result = await safeValidateTypes2({\n value: headers[GATEWAY_AUTH_METHOD_HEADER],\n schema: gatewayAuthMethodSchema\n });\n return result.success ? result.value : void 0;\n}\nvar gatewayAuthMethodSchema = lazyValidator3(\n () => zodSchema3(z3.union([z3.literal(\"api-key\"), z3.literal(\"oidc\")]))\n);\n\n// src/gateway-fetch-metadata.ts\nimport {\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n getFromApi,\n lazyValidator as lazyValidator4,\n resolve,\n zodSchema as zodSchema4\n} from \"@ai-sdk/provider-utils\";\nimport { z as z4 } from \"zod/v4\";\nvar GatewayFetchMetadata = class {\n constructor(config) {\n this.config = config;\n }\n async getAvailableModels() {\n try {\n const { value } = await getFromApi({\n url: `${this.config.baseURL}/config`,\n headers: await resolve(this.config.headers()),\n successfulResponseHandler: createJsonResponseHandler(\n gatewayAvailableModelsResponseSchema\n ),\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: z4.any(),\n errorToMessage: (data) => data\n }),\n fetch: this.config.fetch\n });\n return value;\n } catch (error) {\n throw await asGatewayError(error);\n }\n }\n async getCredits() {\n try {\n const baseUrl = new URL(this.config.baseURL);\n const { value } = await getFromApi({\n url: `${baseUrl.origin}/v1/credits`,\n headers: await resolve(this.config.headers()),\n successfulResponseHandler: createJsonResponseHandler(\n gatewayCreditsResponseSchema\n ),\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: z4.any(),\n errorToMessage: (data) => data\n }),\n fetch: this.config.fetch\n });\n return value;\n } catch (error) {\n throw await asGatewayError(error);\n }\n }\n};\nvar gatewayAvailableModelsResponseSchema = lazyValidator4(\n () => zodSchema4(\n z4.object({\n models: z4.array(\n z4.object({\n id: z4.string(),\n name: z4.string(),\n description: z4.string().nullish(),\n pricing: z4.object({\n input: z4.string(),\n output: z4.string(),\n input_cache_read: z4.string().nullish(),\n input_cache_write: z4.string().nullish()\n }).transform(\n ({ input, output, input_cache_read, input_cache_write }) => ({\n input,\n output,\n ...input_cache_read ? { cachedInputTokens: input_cache_read } : {},\n ...input_cache_write ? { cacheCreationInputTokens: input_cache_write } : {}\n })\n ).nullish(),\n specification: z4.object({\n specificationVersion: z4.literal(\"v2\"),\n provider: z4.string(),\n modelId: z4.string()\n }),\n modelType: z4.enum([\"language\", \"embedding\", \"image\"]).nullish()\n })\n )\n })\n )\n);\nvar gatewayCreditsResponseSchema = lazyValidator4(\n () => zodSchema4(\n z4.object({\n balance: z4.string(),\n total_used: z4.string()\n }).transform(({ balance, total_used }) => ({\n balance,\n totalUsed: total_used\n }))\n )\n);\n\n// src/gateway-language-model.ts\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonErrorResponseHandler as createJsonErrorResponseHandler2,\n createJsonResponseHandler as createJsonResponseHandler2,\n postJsonToApi,\n resolve as resolve2\n} from \"@ai-sdk/provider-utils\";\nimport { z as z5 } from \"zod/v4\";\nvar GatewayLanguageModel = class {\n constructor(modelId, config) {\n this.modelId = modelId;\n this.config = config;\n this.specificationVersion = \"v2\";\n this.supportedUrls = { \"*/*\": [/.*/] };\n }\n get provider() {\n return this.config.provider;\n }\n async getArgs(options) {\n const { abortSignal: _abortSignal, ...optionsWithoutSignal } = options;\n return {\n args: this.maybeEncodeFileParts(optionsWithoutSignal),\n warnings: []\n };\n }\n async doGenerate(options) {\n const { args, warnings } = await this.getArgs(options);\n const { abortSignal } = options;\n const resolvedHeaders = await resolve2(this.config.headers());\n try {\n const {\n responseHeaders,\n value: responseBody,\n rawValue: rawResponse\n } = await postJsonToApi({\n url: this.getUrl(),\n headers: combineHeaders(\n resolvedHeaders,\n options.headers,\n this.getModelConfigHeaders(this.modelId, false),\n await resolve2(this.config.o11yHeaders)\n ),\n body: args,\n successfulResponseHandler: createJsonResponseHandler2(z5.any()),\n failedResponseHandler: createJsonErrorResponseHandler2({\n errorSchema: z5.any(),\n errorToMessage: (data) => data\n }),\n ...abortSignal && { abortSignal },\n fetch: this.config.fetch\n });\n return {\n ...responseBody,\n request: { body: args },\n response: { headers: responseHeaders, body: rawResponse },\n warnings\n };\n } catch (error) {\n throw await asGatewayError(error, await parseAuthMethod(resolvedHeaders));\n }\n }\n async doStream(options) {\n const { args, warnings } = await this.getArgs(options);\n const { abortSignal } = options;\n const resolvedHeaders = await resolve2(this.config.headers());\n try {\n const { value: response, responseHeaders } = await postJsonToApi({\n url: this.getUrl(),\n headers: combineHeaders(\n resolvedHeaders,\n options.headers,\n this.getModelConfigHeaders(this.modelId, true),\n await resolve2(this.config.o11yHeaders)\n ),\n body: args,\n successfulResponseHandler: createEventSourceResponseHandler(z5.any()),\n failedResponseHandler: createJsonErrorResponseHandler2({\n errorSchema: z5.any(),\n errorToMessage: (data) => data\n }),\n ...abortSignal && { abortSignal },\n fetch: this.config.fetch\n });\n return {\n stream: response.pipeThrough(\n new TransformStream({\n start(controller) {\n if (warnings.length > 0) {\n controller.enqueue({ type: \"stream-start\", warnings });\n }\n },\n transform(chunk, controller) {\n if (chunk.success) {\n const streamPart = chunk.value;\n if (streamPart.type === \"raw\" && !options.includeRawChunks) {\n return;\n }\n if (streamPart.type === \"response-metadata\" && streamPart.timestamp && typeof streamPart.timestamp === \"string\") {\n streamPart.timestamp = new Date(streamPart.timestamp);\n }\n controller.enqueue(streamPart);\n } else {\n controller.error(\n chunk.error\n );\n }\n }\n })\n ),\n request: { body: args },\n response: { headers: responseHeaders }\n };\n } catch (error) {\n throw await asGatewayError(error, await parseAuthMethod(resolvedHeaders));\n }\n }\n isFilePart(part) {\n return part && typeof part === \"object\" && \"type\" in part && part.type === \"file\";\n }\n /**\n * Encodes file parts in the prompt to base64. Mutates the passed options\n * instance directly to avoid copying the file data.\n * @param options - The options to encode.\n * @returns The options with the file parts encoded.\n */\n maybeEncodeFileParts(options) {\n for (const message of options.prompt) {\n for (const part of message.content) {\n if (this.isFilePart(part)) {\n const filePart = part;\n if (filePart.data instanceof Uint8Array) {\n const buffer = Uint8Array.from(filePart.data);\n const base64Data = Buffer.from(buffer).toString(\"base64\");\n filePart.data = new URL(\n `data:${filePart.mediaType || \"application/octet-stream\"};base64,${base64Data}`\n );\n }\n }\n }\n }\n return options;\n }\n getUrl() {\n return `${this.config.baseURL}/language-model`;\n }\n getModelConfigHeaders(modelId, streaming) {\n return {\n \"ai-language-model-specification-version\": \"2\",\n \"ai-language-model-id\": modelId,\n \"ai-language-model-streaming\": String(streaming)\n };\n }\n};\n\n// src/gateway-embedding-model.ts\nimport {\n combineHeaders as combineHeaders2,\n createJsonErrorResponseHandler as createJsonErrorResponseHandler3,\n createJsonResponseHandler as createJsonResponseHandler3,\n lazyValidator as lazyValidator5,\n postJsonToApi as postJsonToApi2,\n resolve as resolve3,\n zodSchema as zodSchema5\n} from \"@ai-sdk/provider-utils\";\nimport { z as z6 } from \"zod/v4\";\nvar GatewayEmbeddingModel = class {\n constructor(modelId, config) {\n this.modelId = modelId;\n this.config = config;\n this.specificationVersion = \"v2\";\n this.maxEmbeddingsPerCall = 2048;\n this.supportsParallelCalls = true;\n }\n get provider() {\n return this.config.provider;\n }\n async doEmbed({\n values,\n headers,\n abortSignal,\n providerOptions\n }) {\n var _a8;\n const resolvedHeaders = await resolve3(this.config.headers());\n try {\n const {\n responseHeaders,\n value: responseBody,\n rawValue\n } = await postJsonToApi2({\n url: this.getUrl(),\n headers: combineHeaders2(\n resolvedHeaders,\n headers != null ? headers : {},\n this.getModelConfigHeaders(),\n await resolve3(this.config.o11yHeaders)\n ),\n body: {\n input: values.length === 1 ? values[0] : values,\n ...providerOptions ? { providerOptions } : {}\n },\n successfulResponseHandler: createJsonResponseHandler3(\n gatewayEmbeddingResponseSchema\n ),\n failedResponseHandler: createJsonErrorResponseHandler3({\n errorSchema: z6.any(),\n errorToMessage: (data) => data\n }),\n ...abortSignal && { abortSignal },\n fetch: this.config.fetch\n });\n return {\n embeddings: responseBody.embeddings,\n usage: (_a8 = responseBody.usage) != null ? _a8 : void 0,\n providerMetadata: responseBody.providerMetadata,\n response: { headers: responseHeaders, body: rawValue }\n };\n } catch (error) {\n throw await asGatewayError(error, await parseAuthMethod(resolvedHeaders));\n }\n }\n getUrl() {\n return `${this.config.baseURL}/embedding-model`;\n }\n getModelConfigHeaders() {\n return {\n \"ai-embedding-model-specification-version\": \"2\",\n \"ai-model-id\": this.modelId\n };\n }\n};\nvar gatewayEmbeddingResponseSchema = lazyValidator5(\n () => zodSchema5(\n z6.object({\n embeddings: z6.array(z6.array(z6.number())),\n usage: z6.object({ tokens: z6.number() }).nullish(),\n providerMetadata: z6.record(z6.string(), z6.record(z6.string(), z6.unknown())).optional()\n })\n )\n);\n\n// src/vercel-environment.ts\nimport { getContext } from \"@vercel/oidc\";\nimport { getVercelOidcToken } from \"@vercel/oidc\";\nasync function getVercelRequestId() {\n var _a8;\n return (_a8 = getContext().headers) == null ? void 0 : _a8[\"x-vercel-id\"];\n}\n\n// src/gateway-provider.ts\nimport { withUserAgentSuffix } from \"@ai-sdk/provider-utils\";\n\n// src/version.ts\nvar VERSION = true ? \"2.0.5\" : \"0.0.0-test\";\n\n// src/gateway-provider.ts\nvar AI_GATEWAY_PROTOCOL_VERSION = \"0.0.1\";\nfunction createGatewayProvider(options = {}) {\n var _a8, _b8;\n let pendingMetadata = null;\n let metadataCache = null;\n const cacheRefreshMillis = (_a8 = options.metadataCacheRefreshMillis) != null ? _a8 : 1e3 * 60 * 5;\n let lastFetchTime = 0;\n const baseURL = (_b8 = withoutTrailingSlash(options.baseURL)) != null ? _b8 : \"https://ai-gateway.vercel.sh/v1/ai\";\n const getHeaders = async () => {\n const auth = await getGatewayAuthToken(options);\n if (auth) {\n return withUserAgentSuffix(\n {\n Authorization: `Bearer ${auth.token}`,\n \"ai-gateway-protocol-version\": AI_GATEWAY_PROTOCOL_VERSION,\n [GATEWAY_AUTH_METHOD_HEADER]: auth.authMethod,\n ...options.headers\n },\n `ai-sdk/gateway/${VERSION}`\n );\n }\n throw GatewayAuthenticationError.createContextualError({\n apiKeyProvided: false,\n oidcTokenProvided: false,\n statusCode: 401\n });\n };\n const createO11yHeaders = () => {\n const deploymentId = loadOptionalSetting({\n settingValue: void 0,\n environmentVariableName: \"VERCEL_DEPLOYMENT_ID\"\n });\n const environment = loadOptionalSetting({\n settingValue: void 0,\n environmentVariableName: \"VERCEL_ENV\"\n });\n const region = loadOptionalSetting({\n settingValue: void 0,\n environmentVariableName: \"VERCEL_REGION\"\n });\n return async () => {\n const requestId = await getVercelRequestId();\n return {\n ...deploymentId && { \"ai-o11y-deployment-id\": deploymentId },\n ...environment && { \"ai-o11y-environment\": environment },\n ...region && { \"ai-o11y-region\": region },\n ...requestId && { \"ai-o11y-request-id\": requestId }\n };\n };\n };\n const createLanguageModel = (modelId) => {\n return new GatewayLanguageModel(modelId, {\n provider: \"gateway\",\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n o11yHeaders: createO11yHeaders()\n });\n };\n const getAvailableModels = async () => {\n var _a9, _b9, _c;\n const now = (_c = (_b9 = (_a9 = options._internal) == null ? void 0 : _a9.currentDate) == null ? void 0 : _b9.call(_a9).getTime()) != null ? _c : Date.now();\n if (!pendingMetadata || now - lastFetchTime > cacheRefreshMillis) {\n lastFetchTime = now;\n pendingMetadata = new GatewayFetchMetadata({\n baseURL,\n headers: getHeaders,\n fetch: options.fetch\n }).getAvailableModels().then((metadata) => {\n metadataCache = metadata;\n return metadata;\n }).catch(async (error) => {\n throw await asGatewayError(\n error,\n await parseAuthMethod(await getHeaders())\n );\n });\n }\n return metadataCache ? Promise.resolve(metadataCache) : pendingMetadata;\n };\n const getCredits = async () => {\n return new GatewayFetchMetadata({\n baseURL,\n headers: getHeaders,\n fetch: options.fetch\n }).getCredits().catch(async (error) => {\n throw await asGatewayError(\n error,\n await parseAuthMethod(await getHeaders())\n );\n });\n };\n const provider = function(modelId) {\n if (new.target) {\n throw new Error(\n \"The Gateway Provider model function cannot be called with the new keyword.\"\n );\n }\n return createLanguageModel(modelId);\n };\n provider.getAvailableModels = getAvailableModels;\n provider.getCredits = getCredits;\n provider.imageModel = (modelId) => {\n throw new NoSuchModelError({ modelId, modelType: \"imageModel\" });\n };\n provider.languageModel = createLanguageModel;\n provider.textEmbeddingModel = (modelId) => {\n return new GatewayEmbeddingModel(modelId, {\n provider: \"gateway\",\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n o11yHeaders: createO11yHeaders()\n });\n };\n return provider;\n}\nvar gateway = createGatewayProvider();\nasync function getGatewayAuthToken(options) {\n const apiKey = loadOptionalSetting({\n settingValue: options.apiKey,\n environmentVariableName: \"AI_GATEWAY_API_KEY\"\n });\n if (apiKey) {\n return {\n token: apiKey,\n authMethod: \"api-key\"\n };\n }\n try {\n const oidcToken = await getVercelOidcToken();\n return {\n token: oidcToken,\n authMethod: \"oidc\"\n };\n } catch (e) {\n return null;\n }\n}\nexport {\n GatewayAuthenticationError,\n GatewayError,\n GatewayInternalServerError,\n GatewayInvalidRequestError,\n GatewayModelNotFoundError,\n GatewayRateLimitError,\n GatewayResponseError,\n createGatewayProvider as createGateway,\n createGatewayProvider,\n gateway\n};\n//# sourceMappingURL=index.mjs.map",
57
- "var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name16 in all)\n __defProp(target, name16, { get: all[name16], enumerable: true });\n};\n\n// src/index.ts\nimport { gateway as gateway2, createGateway } from \"@ai-sdk/gateway\";\nimport {\n asSchema as asSchema5,\n createIdGenerator as createIdGenerator5,\n dynamicTool,\n generateId as generateId2,\n jsonSchema,\n parseJsonEventStream as parseJsonEventStream3,\n tool,\n zodSchema as zodSchema3\n} from \"@ai-sdk/provider-utils\";\n\n// src/generate-text/generate-text.ts\nimport {\n createIdGenerator,\n executeTool,\n getErrorMessage as getErrorMessage5,\n withUserAgentSuffix as withUserAgentSuffix2\n} from \"@ai-sdk/provider-utils\";\n\n// src/error/no-output-specified-error.ts\nimport { AISDKError } from \"@ai-sdk/provider\";\nvar name = \"AI_NoOutputSpecifiedError\";\nvar marker = `vercel.ai.error.${name}`;\nvar symbol = Symbol.for(marker);\nvar _a;\nvar NoOutputSpecifiedError = class extends AISDKError {\n // used in isInstance\n constructor({ message = \"No output specified.\" } = {}) {\n super({ name, message });\n this[_a] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker);\n }\n};\n_a = symbol;\n\n// src/logger/log-warnings.ts\nfunction formatWarning(warning) {\n const prefix = \"AI SDK Warning:\";\n switch (warning.type) {\n case \"unsupported-setting\": {\n let message = `${prefix} The \"${warning.setting}\" setting is not supported by this model`;\n if (warning.details) {\n message += ` - ${warning.details}`;\n }\n return message;\n }\n case \"unsupported-tool\": {\n const toolName = \"name\" in warning.tool ? warning.tool.name : \"unknown tool\";\n let message = `${prefix} The tool \"${toolName}\" is not supported by this model`;\n if (warning.details) {\n message += ` - ${warning.details}`;\n }\n return message;\n }\n case \"other\": {\n return `${prefix} ${warning.message}`;\n }\n default: {\n return `${prefix} ${JSON.stringify(warning, null, 2)}`;\n }\n }\n}\nvar FIRST_WARNING_INFO_MESSAGE = \"AI SDK Warning System: To turn off warning logging, set the AI_SDK_LOG_WARNINGS global to false.\";\nvar hasLoggedBefore = false;\nvar logWarnings = (warnings) => {\n if (warnings.length === 0) {\n return;\n }\n const logger = globalThis.AI_SDK_LOG_WARNINGS;\n if (logger === false) {\n return;\n }\n if (typeof logger === \"function\") {\n logger(warnings);\n return;\n }\n if (!hasLoggedBefore) {\n hasLoggedBefore = true;\n console.info(FIRST_WARNING_INFO_MESSAGE);\n }\n for (const warning of warnings) {\n console.warn(formatWarning(warning));\n }\n};\n\n// src/model/resolve-model.ts\nimport { gateway } from \"@ai-sdk/gateway\";\n\n// src/error/index.ts\nimport {\n AISDKError as AISDKError17,\n APICallError,\n EmptyResponseBodyError,\n InvalidPromptError,\n InvalidResponseDataError,\n JSONParseError,\n LoadAPIKeyError,\n LoadSettingError,\n NoContentGeneratedError,\n NoSuchModelError,\n TooManyEmbeddingValuesForCallError,\n TypeValidationError,\n UnsupportedFunctionalityError\n} from \"@ai-sdk/provider\";\n\n// src/error/invalid-argument-error.ts\nimport { AISDKError as AISDKError2 } from \"@ai-sdk/provider\";\nvar name2 = \"AI_InvalidArgumentError\";\nvar marker2 = `vercel.ai.error.${name2}`;\nvar symbol2 = Symbol.for(marker2);\nvar _a2;\nvar InvalidArgumentError = class extends AISDKError2 {\n constructor({\n parameter,\n value,\n message\n }) {\n super({\n name: name2,\n message: `Invalid argument for parameter ${parameter}: ${message}`\n });\n this[_a2] = true;\n this.parameter = parameter;\n this.value = value;\n }\n static isInstance(error) {\n return AISDKError2.hasMarker(error, marker2);\n }\n};\n_a2 = symbol2;\n\n// src/error/invalid-stream-part-error.ts\nimport { AISDKError as AISDKError3 } from \"@ai-sdk/provider\";\nvar name3 = \"AI_InvalidStreamPartError\";\nvar marker3 = `vercel.ai.error.${name3}`;\nvar symbol3 = Symbol.for(marker3);\nvar _a3;\nvar InvalidStreamPartError = class extends AISDKError3 {\n constructor({\n chunk,\n message\n }) {\n super({ name: name3, message });\n this[_a3] = true;\n this.chunk = chunk;\n }\n static isInstance(error) {\n return AISDKError3.hasMarker(error, marker3);\n }\n};\n_a3 = symbol3;\n\n// src/error/invalid-tool-input-error.ts\nimport { AISDKError as AISDKError4, getErrorMessage } from \"@ai-sdk/provider\";\nvar name4 = \"AI_InvalidToolInputError\";\nvar marker4 = `vercel.ai.error.${name4}`;\nvar symbol4 = Symbol.for(marker4);\nvar _a4;\nvar InvalidToolInputError = class extends AISDKError4 {\n constructor({\n toolInput,\n toolName,\n cause,\n message = `Invalid input for tool ${toolName}: ${getErrorMessage(cause)}`\n }) {\n super({ name: name4, message, cause });\n this[_a4] = true;\n this.toolInput = toolInput;\n this.toolName = toolName;\n }\n static isInstance(error) {\n return AISDKError4.hasMarker(error, marker4);\n }\n};\n_a4 = symbol4;\n\n// src/error/no-image-generated-error.ts\nimport { AISDKError as AISDKError5 } from \"@ai-sdk/provider\";\nvar name5 = \"AI_NoImageGeneratedError\";\nvar marker5 = `vercel.ai.error.${name5}`;\nvar symbol5 = Symbol.for(marker5);\nvar _a5;\nvar NoImageGeneratedError = class extends AISDKError5 {\n constructor({\n message = \"No image generated.\",\n cause,\n responses\n }) {\n super({ name: name5, message, cause });\n this[_a5] = true;\n this.responses = responses;\n }\n static isInstance(error) {\n return AISDKError5.hasMarker(error, marker5);\n }\n};\n_a5 = symbol5;\n\n// src/error/no-object-generated-error.ts\nimport { AISDKError as AISDKError6 } from \"@ai-sdk/provider\";\nvar name6 = \"AI_NoObjectGeneratedError\";\nvar marker6 = `vercel.ai.error.${name6}`;\nvar symbol6 = Symbol.for(marker6);\nvar _a6;\nvar NoObjectGeneratedError = class extends AISDKError6 {\n constructor({\n message = \"No object generated.\",\n cause,\n text: text2,\n response,\n usage,\n finishReason\n }) {\n super({ name: name6, message, cause });\n this[_a6] = true;\n this.text = text2;\n this.response = response;\n this.usage = usage;\n this.finishReason = finishReason;\n }\n static isInstance(error) {\n return AISDKError6.hasMarker(error, marker6);\n }\n};\n_a6 = symbol6;\n\n// src/error/no-output-generated-error.ts\nimport { AISDKError as AISDKError7 } from \"@ai-sdk/provider\";\nvar name7 = \"AI_NoOutputGeneratedError\";\nvar marker7 = `vercel.ai.error.${name7}`;\nvar symbol7 = Symbol.for(marker7);\nvar _a7;\nvar NoOutputGeneratedError = class extends AISDKError7 {\n // used in isInstance\n constructor({\n message = \"No output generated.\",\n cause\n } = {}) {\n super({ name: name7, message, cause });\n this[_a7] = true;\n }\n static isInstance(error) {\n return AISDKError7.hasMarker(error, marker7);\n }\n};\n_a7 = symbol7;\n\n// src/error/no-speech-generated-error.ts\nimport { AISDKError as AISDKError8 } from \"@ai-sdk/provider\";\nvar NoSpeechGeneratedError = class extends AISDKError8 {\n constructor(options) {\n super({\n name: \"AI_NoSpeechGeneratedError\",\n message: \"No speech audio generated.\"\n });\n this.responses = options.responses;\n }\n};\n\n// src/error/no-such-tool-error.ts\nimport { AISDKError as AISDKError9 } from \"@ai-sdk/provider\";\nvar name8 = \"AI_NoSuchToolError\";\nvar marker8 = `vercel.ai.error.${name8}`;\nvar symbol8 = Symbol.for(marker8);\nvar _a8;\nvar NoSuchToolError = class extends AISDKError9 {\n constructor({\n toolName,\n availableTools = void 0,\n message = `Model tried to call unavailable tool '${toolName}'. ${availableTools === void 0 ? \"No tools are available.\" : `Available tools: ${availableTools.join(\", \")}.`}`\n }) {\n super({ name: name8, message });\n this[_a8] = true;\n this.toolName = toolName;\n this.availableTools = availableTools;\n }\n static isInstance(error) {\n return AISDKError9.hasMarker(error, marker8);\n }\n};\n_a8 = symbol8;\n\n// src/error/tool-call-repair-error.ts\nimport { AISDKError as AISDKError10, getErrorMessage as getErrorMessage2 } from \"@ai-sdk/provider\";\nvar name9 = \"AI_ToolCallRepairError\";\nvar marker9 = `vercel.ai.error.${name9}`;\nvar symbol9 = Symbol.for(marker9);\nvar _a9;\nvar ToolCallRepairError = class extends AISDKError10 {\n constructor({\n cause,\n originalError,\n message = `Error repairing tool call: ${getErrorMessage2(cause)}`\n }) {\n super({ name: name9, message, cause });\n this[_a9] = true;\n this.originalError = originalError;\n }\n static isInstance(error) {\n return AISDKError10.hasMarker(error, marker9);\n }\n};\n_a9 = symbol9;\n\n// src/error/unsupported-model-version-error.ts\nimport { AISDKError as AISDKError11 } from \"@ai-sdk/provider\";\nvar UnsupportedModelVersionError = class extends AISDKError11 {\n constructor(options) {\n super({\n name: \"AI_UnsupportedModelVersionError\",\n message: `Unsupported model version ${options.version} for provider \"${options.provider}\" and model \"${options.modelId}\". AI SDK 5 only supports models that implement specification version \"v2\".`\n });\n this.version = options.version;\n this.provider = options.provider;\n this.modelId = options.modelId;\n }\n};\n\n// src/prompt/invalid-data-content-error.ts\nimport { AISDKError as AISDKError12 } from \"@ai-sdk/provider\";\nvar name10 = \"AI_InvalidDataContentError\";\nvar marker10 = `vercel.ai.error.${name10}`;\nvar symbol10 = Symbol.for(marker10);\nvar _a10;\nvar InvalidDataContentError = class extends AISDKError12 {\n constructor({\n content,\n cause,\n message = `Invalid data content. Expected a base64 string, Uint8Array, ArrayBuffer, or Buffer, but got ${typeof content}.`\n }) {\n super({ name: name10, message, cause });\n this[_a10] = true;\n this.content = content;\n }\n static isInstance(error) {\n return AISDKError12.hasMarker(error, marker10);\n }\n};\n_a10 = symbol10;\n\n// src/prompt/invalid-message-role-error.ts\nimport { AISDKError as AISDKError13 } from \"@ai-sdk/provider\";\nvar name11 = \"AI_InvalidMessageRoleError\";\nvar marker11 = `vercel.ai.error.${name11}`;\nvar symbol11 = Symbol.for(marker11);\nvar _a11;\nvar InvalidMessageRoleError = class extends AISDKError13 {\n constructor({\n role,\n message = `Invalid message role: '${role}'. Must be one of: \"system\", \"user\", \"assistant\", \"tool\".`\n }) {\n super({ name: name11, message });\n this[_a11] = true;\n this.role = role;\n }\n static isInstance(error) {\n return AISDKError13.hasMarker(error, marker11);\n }\n};\n_a11 = symbol11;\n\n// src/prompt/message-conversion-error.ts\nimport { AISDKError as AISDKError14 } from \"@ai-sdk/provider\";\nvar name12 = \"AI_MessageConversionError\";\nvar marker12 = `vercel.ai.error.${name12}`;\nvar symbol12 = Symbol.for(marker12);\nvar _a12;\nvar MessageConversionError = class extends AISDKError14 {\n constructor({\n originalMessage,\n message\n }) {\n super({ name: name12, message });\n this[_a12] = true;\n this.originalMessage = originalMessage;\n }\n static isInstance(error) {\n return AISDKError14.hasMarker(error, marker12);\n }\n};\n_a12 = symbol12;\n\n// src/util/download/download-error.ts\nimport { AISDKError as AISDKError15 } from \"@ai-sdk/provider\";\nvar name13 = \"AI_DownloadError\";\nvar marker13 = `vercel.ai.error.${name13}`;\nvar symbol13 = Symbol.for(marker13);\nvar _a13;\nvar DownloadError = class extends AISDKError15 {\n constructor({\n url,\n statusCode,\n statusText,\n cause,\n message = cause == null ? `Failed to download ${url}: ${statusCode} ${statusText}` : `Failed to download ${url}: ${cause}`\n }) {\n super({ name: name13, message, cause });\n this[_a13] = true;\n this.url = url;\n this.statusCode = statusCode;\n this.statusText = statusText;\n }\n static isInstance(error) {\n return AISDKError15.hasMarker(error, marker13);\n }\n};\n_a13 = symbol13;\n\n// src/util/retry-error.ts\nimport { AISDKError as AISDKError16 } from \"@ai-sdk/provider\";\nvar name14 = \"AI_RetryError\";\nvar marker14 = `vercel.ai.error.${name14}`;\nvar symbol14 = Symbol.for(marker14);\nvar _a14;\nvar RetryError = class extends AISDKError16 {\n constructor({\n message,\n reason,\n errors\n }) {\n super({ name: name14, message });\n this[_a14] = true;\n this.reason = reason;\n this.errors = errors;\n this.lastError = errors[errors.length - 1];\n }\n static isInstance(error) {\n return AISDKError16.hasMarker(error, marker14);\n }\n};\n_a14 = symbol14;\n\n// src/model/resolve-model.ts\nfunction resolveLanguageModel(model) {\n if (typeof model !== \"string\") {\n if (model.specificationVersion !== \"v2\") {\n throw new UnsupportedModelVersionError({\n version: model.specificationVersion,\n provider: model.provider,\n modelId: model.modelId\n });\n }\n return model;\n }\n return getGlobalProvider().languageModel(model);\n}\nfunction resolveEmbeddingModel(model) {\n if (typeof model !== \"string\") {\n if (model.specificationVersion !== \"v2\") {\n throw new UnsupportedModelVersionError({\n version: model.specificationVersion,\n provider: model.provider,\n modelId: model.modelId\n });\n }\n return model;\n }\n return getGlobalProvider().textEmbeddingModel(\n model\n );\n}\nfunction getGlobalProvider() {\n var _a16;\n return (_a16 = globalThis.AI_SDK_DEFAULT_PROVIDER) != null ? _a16 : gateway;\n}\n\n// src/prompt/convert-to-language-model-prompt.ts\nimport {\n isUrlSupported\n} from \"@ai-sdk/provider-utils\";\n\n// src/util/detect-media-type.ts\nimport { convertBase64ToUint8Array } from \"@ai-sdk/provider-utils\";\nvar imageMediaTypeSignatures = [\n {\n mediaType: \"image/gif\",\n bytesPrefix: [71, 73, 70]\n // GIF\n },\n {\n mediaType: \"image/png\",\n bytesPrefix: [137, 80, 78, 71]\n // PNG\n },\n {\n mediaType: \"image/jpeg\",\n bytesPrefix: [255, 216]\n // JPEG\n },\n {\n mediaType: \"image/webp\",\n bytesPrefix: [\n 82,\n 73,\n 70,\n 70,\n // \"RIFF\"\n null,\n null,\n null,\n null,\n // file size (variable)\n 87,\n 69,\n 66,\n 80\n // \"WEBP\"\n ]\n },\n {\n mediaType: \"image/bmp\",\n bytesPrefix: [66, 77]\n },\n {\n mediaType: \"image/tiff\",\n bytesPrefix: [73, 73, 42, 0]\n },\n {\n mediaType: \"image/tiff\",\n bytesPrefix: [77, 77, 0, 42]\n },\n {\n mediaType: \"image/avif\",\n bytesPrefix: [\n 0,\n 0,\n 0,\n 32,\n 102,\n 116,\n 121,\n 112,\n 97,\n 118,\n 105,\n 102\n ]\n },\n {\n mediaType: \"image/heic\",\n bytesPrefix: [\n 0,\n 0,\n 0,\n 32,\n 102,\n 116,\n 121,\n 112,\n 104,\n 101,\n 105,\n 99\n ]\n }\n];\nvar audioMediaTypeSignatures = [\n {\n mediaType: \"audio/mpeg\",\n bytesPrefix: [255, 251]\n },\n {\n mediaType: \"audio/mpeg\",\n bytesPrefix: [255, 250]\n },\n {\n mediaType: \"audio/mpeg\",\n bytesPrefix: [255, 243]\n },\n {\n mediaType: \"audio/mpeg\",\n bytesPrefix: [255, 242]\n },\n {\n mediaType: \"audio/mpeg\",\n bytesPrefix: [255, 227]\n },\n {\n mediaType: \"audio/mpeg\",\n bytesPrefix: [255, 226]\n },\n {\n mediaType: \"audio/wav\",\n bytesPrefix: [\n 82,\n // R\n 73,\n // I\n 70,\n // F\n 70,\n // F\n null,\n null,\n null,\n null,\n 87,\n // W\n 65,\n // A\n 86,\n // V\n 69\n // E\n ]\n },\n {\n mediaType: \"audio/ogg\",\n bytesPrefix: [79, 103, 103, 83]\n },\n {\n mediaType: \"audio/flac\",\n bytesPrefix: [102, 76, 97, 67]\n },\n {\n mediaType: \"audio/aac\",\n bytesPrefix: [64, 21, 0, 0]\n },\n {\n mediaType: \"audio/mp4\",\n bytesPrefix: [102, 116, 121, 112]\n },\n {\n mediaType: \"audio/webm\",\n bytesPrefix: [26, 69, 223, 163]\n }\n];\nvar stripID3 = (data) => {\n const bytes = typeof data === \"string\" ? convertBase64ToUint8Array(data) : data;\n const id3Size = (bytes[6] & 127) << 21 | (bytes[7] & 127) << 14 | (bytes[8] & 127) << 7 | bytes[9] & 127;\n return bytes.slice(id3Size + 10);\n};\nfunction stripID3TagsIfPresent(data) {\n const hasId3 = typeof data === \"string\" && data.startsWith(\"SUQz\") || typeof data !== \"string\" && data.length > 10 && data[0] === 73 && // 'I'\n data[1] === 68 && // 'D'\n data[2] === 51;\n return hasId3 ? stripID3(data) : data;\n}\nfunction detectMediaType({\n data,\n signatures\n}) {\n const processedData = stripID3TagsIfPresent(data);\n const bytes = typeof processedData === \"string\" ? convertBase64ToUint8Array(\n processedData.substring(0, Math.min(processedData.length, 24))\n ) : processedData;\n for (const signature of signatures) {\n if (bytes.length >= signature.bytesPrefix.length && signature.bytesPrefix.every(\n (byte, index) => byte === null || bytes[index] === byte\n )) {\n return signature.mediaType;\n }\n }\n return void 0;\n}\n\n// src/util/download/download.ts\nimport {\n withUserAgentSuffix,\n getRuntimeEnvironmentUserAgent\n} from \"@ai-sdk/provider-utils\";\n\n// src/version.ts\nvar VERSION = true ? \"5.0.86\" : \"0.0.0-test\";\n\n// src/util/download/download.ts\nvar download = async ({ url }) => {\n var _a16;\n const urlText = url.toString();\n try {\n const response = await fetch(urlText, {\n headers: withUserAgentSuffix(\n {},\n `ai-sdk/${VERSION}`,\n getRuntimeEnvironmentUserAgent()\n )\n });\n if (!response.ok) {\n throw new DownloadError({\n url: urlText,\n statusCode: response.status,\n statusText: response.statusText\n });\n }\n return {\n data: new Uint8Array(await response.arrayBuffer()),\n mediaType: (_a16 = response.headers.get(\"content-type\")) != null ? _a16 : void 0\n };\n } catch (error) {\n if (DownloadError.isInstance(error)) {\n throw error;\n }\n throw new DownloadError({ url: urlText, cause: error });\n }\n};\n\n// src/util/download/download-function.ts\nvar createDefaultDownloadFunction = (download2 = download) => (requestedDownloads) => Promise.all(\n requestedDownloads.map(\n async (requestedDownload) => requestedDownload.isUrlSupportedByModel ? null : download2(requestedDownload)\n )\n);\n\n// src/prompt/data-content.ts\nimport { AISDKError as AISDKError18 } from \"@ai-sdk/provider\";\nimport {\n convertBase64ToUint8Array as convertBase64ToUint8Array2,\n convertUint8ArrayToBase64\n} from \"@ai-sdk/provider-utils\";\nimport { z } from \"zod/v4\";\n\n// src/prompt/split-data-url.ts\nfunction splitDataUrl(dataUrl) {\n try {\n const [header, base64Content] = dataUrl.split(\",\");\n return {\n mediaType: header.split(\";\")[0].split(\":\")[1],\n base64Content\n };\n } catch (error) {\n return {\n mediaType: void 0,\n base64Content: void 0\n };\n }\n}\n\n// src/prompt/data-content.ts\nvar dataContentSchema = z.union([\n z.string(),\n z.instanceof(Uint8Array),\n z.instanceof(ArrayBuffer),\n z.custom(\n // Buffer might not be available in some environments such as CloudFlare:\n (value) => {\n var _a16, _b;\n return (_b = (_a16 = globalThis.Buffer) == null ? void 0 : _a16.isBuffer(value)) != null ? _b : false;\n },\n { message: \"Must be a Buffer\" }\n )\n]);\nfunction convertToLanguageModelV2DataContent(content) {\n if (content instanceof Uint8Array) {\n return { data: content, mediaType: void 0 };\n }\n if (content instanceof ArrayBuffer) {\n return { data: new Uint8Array(content), mediaType: void 0 };\n }\n if (typeof content === \"string\") {\n try {\n content = new URL(content);\n } catch (error) {\n }\n }\n if (content instanceof URL && content.protocol === \"data:\") {\n const { mediaType: dataUrlMediaType, base64Content } = splitDataUrl(\n content.toString()\n );\n if (dataUrlMediaType == null || base64Content == null) {\n throw new AISDKError18({\n name: \"InvalidDataContentError\",\n message: `Invalid data URL format in content ${content.toString()}`\n });\n }\n return { data: base64Content, mediaType: dataUrlMediaType };\n }\n return { data: content, mediaType: void 0 };\n}\nfunction convertDataContentToBase64String(content) {\n if (typeof content === \"string\") {\n return content;\n }\n if (content instanceof ArrayBuffer) {\n return convertUint8ArrayToBase64(new Uint8Array(content));\n }\n return convertUint8ArrayToBase64(content);\n}\nfunction convertDataContentToUint8Array(content) {\n if (content instanceof Uint8Array) {\n return content;\n }\n if (typeof content === \"string\") {\n try {\n return convertBase64ToUint8Array2(content);\n } catch (error) {\n throw new InvalidDataContentError({\n message: \"Invalid data content. Content string is not a base64-encoded media.\",\n content,\n cause: error\n });\n }\n }\n if (content instanceof ArrayBuffer) {\n return new Uint8Array(content);\n }\n throw new InvalidDataContentError({ content });\n}\n\n// src/prompt/convert-to-language-model-prompt.ts\nasync function convertToLanguageModelPrompt({\n prompt,\n supportedUrls,\n download: download2 = createDefaultDownloadFunction()\n}) {\n const downloadedAssets = await downloadAssets(\n prompt.messages,\n download2,\n supportedUrls\n );\n return [\n ...prompt.system != null ? [{ role: \"system\", content: prompt.system }] : [],\n ...prompt.messages.map(\n (message) => convertToLanguageModelMessage({ message, downloadedAssets })\n )\n ];\n}\nfunction convertToLanguageModelMessage({\n message,\n downloadedAssets\n}) {\n const role = message.role;\n switch (role) {\n case \"system\": {\n return {\n role: \"system\",\n content: message.content,\n providerOptions: message.providerOptions\n };\n }\n case \"user\": {\n if (typeof message.content === \"string\") {\n return {\n role: \"user\",\n content: [{ type: \"text\", text: message.content }],\n providerOptions: message.providerOptions\n };\n }\n return {\n role: \"user\",\n content: message.content.map((part) => convertPartToLanguageModelPart(part, downloadedAssets)).filter((part) => part.type !== \"text\" || part.text !== \"\"),\n providerOptions: message.providerOptions\n };\n }\n case \"assistant\": {\n if (typeof message.content === \"string\") {\n return {\n role: \"assistant\",\n content: [{ type: \"text\", text: message.content }],\n providerOptions: message.providerOptions\n };\n }\n return {\n role: \"assistant\",\n content: message.content.filter(\n // remove empty text parts (no text, and no provider options):\n (part) => part.type !== \"text\" || part.text !== \"\" || part.providerOptions != null\n ).map((part) => {\n const providerOptions = part.providerOptions;\n switch (part.type) {\n case \"file\": {\n const { data, mediaType } = convertToLanguageModelV2DataContent(\n part.data\n );\n return {\n type: \"file\",\n data,\n filename: part.filename,\n mediaType: mediaType != null ? mediaType : part.mediaType,\n providerOptions\n };\n }\n case \"reasoning\": {\n return {\n type: \"reasoning\",\n text: part.text,\n providerOptions\n };\n }\n case \"text\": {\n return {\n type: \"text\",\n text: part.text,\n providerOptions\n };\n }\n case \"tool-call\": {\n return {\n type: \"tool-call\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n input: part.input,\n providerExecuted: part.providerExecuted,\n providerOptions\n };\n }\n case \"tool-result\": {\n return {\n type: \"tool-result\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n output: part.output,\n providerOptions\n };\n }\n }\n }),\n providerOptions: message.providerOptions\n };\n }\n case \"tool\": {\n return {\n role: \"tool\",\n content: message.content.map((part) => ({\n type: \"tool-result\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n output: part.output,\n providerOptions: part.providerOptions\n })),\n providerOptions: message.providerOptions\n };\n }\n default: {\n const _exhaustiveCheck = role;\n throw new InvalidMessageRoleError({ role: _exhaustiveCheck });\n }\n }\n}\nasync function downloadAssets(messages, download2, supportedUrls) {\n const plannedDownloads = messages.filter((message) => message.role === \"user\").map((message) => message.content).filter(\n (content) => Array.isArray(content)\n ).flat().filter(\n (part) => part.type === \"image\" || part.type === \"file\"\n ).map((part) => {\n var _a16;\n const mediaType = (_a16 = part.mediaType) != null ? _a16 : part.type === \"image\" ? \"image/*\" : void 0;\n let data = part.type === \"image\" ? part.image : part.data;\n if (typeof data === \"string\") {\n try {\n data = new URL(data);\n } catch (ignored) {\n }\n }\n return { mediaType, data };\n }).filter(\n (part) => part.data instanceof URL\n ).map((part) => ({\n url: part.data,\n isUrlSupportedByModel: part.mediaType != null && isUrlSupported({\n url: part.data.toString(),\n mediaType: part.mediaType,\n supportedUrls\n })\n }));\n const downloadedFiles = await download2(plannedDownloads);\n return Object.fromEntries(\n downloadedFiles.map(\n (file, index) => file == null ? null : [\n plannedDownloads[index].url.toString(),\n { data: file.data, mediaType: file.mediaType }\n ]\n ).filter((file) => file != null)\n );\n}\nfunction convertPartToLanguageModelPart(part, downloadedAssets) {\n var _a16;\n if (part.type === \"text\") {\n return {\n type: \"text\",\n text: part.text,\n providerOptions: part.providerOptions\n };\n }\n let originalData;\n const type = part.type;\n switch (type) {\n case \"image\":\n originalData = part.image;\n break;\n case \"file\":\n originalData = part.data;\n break;\n default:\n throw new Error(`Unsupported part type: ${type}`);\n }\n const { data: convertedData, mediaType: convertedMediaType } = convertToLanguageModelV2DataContent(originalData);\n let mediaType = convertedMediaType != null ? convertedMediaType : part.mediaType;\n let data = convertedData;\n if (data instanceof URL) {\n const downloadedFile = downloadedAssets[data.toString()];\n if (downloadedFile) {\n data = downloadedFile.data;\n mediaType != null ? mediaType : mediaType = downloadedFile.mediaType;\n }\n }\n switch (type) {\n case \"image\": {\n if (data instanceof Uint8Array || typeof data === \"string\") {\n mediaType = (_a16 = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _a16 : mediaType;\n }\n return {\n type: \"file\",\n mediaType: mediaType != null ? mediaType : \"image/*\",\n // any image\n filename: void 0,\n data,\n providerOptions: part.providerOptions\n };\n }\n case \"file\": {\n if (mediaType == null) {\n throw new Error(`Media type is missing for file part`);\n }\n return {\n type: \"file\",\n mediaType,\n filename: part.filename,\n data,\n providerOptions: part.providerOptions\n };\n }\n }\n}\n\n// src/prompt/prepare-call-settings.ts\nfunction prepareCallSettings({\n maxOutputTokens,\n temperature,\n topP,\n topK,\n presencePenalty,\n frequencyPenalty,\n seed,\n stopSequences\n}) {\n if (maxOutputTokens != null) {\n if (!Number.isInteger(maxOutputTokens)) {\n throw new InvalidArgumentError({\n parameter: \"maxOutputTokens\",\n value: maxOutputTokens,\n message: \"maxOutputTokens must be an integer\"\n });\n }\n if (maxOutputTokens < 1) {\n throw new InvalidArgumentError({\n parameter: \"maxOutputTokens\",\n value: maxOutputTokens,\n message: \"maxOutputTokens must be >= 1\"\n });\n }\n }\n if (temperature != null) {\n if (typeof temperature !== \"number\") {\n throw new InvalidArgumentError({\n parameter: \"temperature\",\n value: temperature,\n message: \"temperature must be a number\"\n });\n }\n }\n if (topP != null) {\n if (typeof topP !== \"number\") {\n throw new InvalidArgumentError({\n parameter: \"topP\",\n value: topP,\n message: \"topP must be a number\"\n });\n }\n }\n if (topK != null) {\n if (typeof topK !== \"number\") {\n throw new InvalidArgumentError({\n parameter: \"topK\",\n value: topK,\n message: \"topK must be a number\"\n });\n }\n }\n if (presencePenalty != null) {\n if (typeof presencePenalty !== \"number\") {\n throw new InvalidArgumentError({\n parameter: \"presencePenalty\",\n value: presencePenalty,\n message: \"presencePenalty must be a number\"\n });\n }\n }\n if (frequencyPenalty != null) {\n if (typeof frequencyPenalty !== \"number\") {\n throw new InvalidArgumentError({\n parameter: \"frequencyPenalty\",\n value: frequencyPenalty,\n message: \"frequencyPenalty must be a number\"\n });\n }\n }\n if (seed != null) {\n if (!Number.isInteger(seed)) {\n throw new InvalidArgumentError({\n parameter: \"seed\",\n value: seed,\n message: \"seed must be an integer\"\n });\n }\n }\n return {\n maxOutputTokens,\n temperature,\n topP,\n topK,\n presencePenalty,\n frequencyPenalty,\n stopSequences,\n seed\n };\n}\n\n// src/prompt/prepare-tools-and-tool-choice.ts\nimport { asSchema } from \"@ai-sdk/provider-utils\";\n\n// src/util/is-non-empty-object.ts\nfunction isNonEmptyObject(object2) {\n return object2 != null && Object.keys(object2).length > 0;\n}\n\n// src/prompt/prepare-tools-and-tool-choice.ts\nfunction prepareToolsAndToolChoice({\n tools,\n toolChoice,\n activeTools\n}) {\n if (!isNonEmptyObject(tools)) {\n return {\n tools: void 0,\n toolChoice: void 0\n };\n }\n const filteredTools = activeTools != null ? Object.entries(tools).filter(\n ([name16]) => activeTools.includes(name16)\n ) : Object.entries(tools);\n return {\n tools: filteredTools.map(([name16, tool2]) => {\n const toolType = tool2.type;\n switch (toolType) {\n case void 0:\n case \"dynamic\":\n case \"function\":\n return {\n type: \"function\",\n name: name16,\n description: tool2.description,\n inputSchema: asSchema(tool2.inputSchema).jsonSchema,\n providerOptions: tool2.providerOptions\n };\n case \"provider-defined\":\n return {\n type: \"provider-defined\",\n name: name16,\n id: tool2.id,\n args: tool2.args\n };\n default: {\n const exhaustiveCheck = toolType;\n throw new Error(`Unsupported tool type: ${exhaustiveCheck}`);\n }\n }\n }),\n toolChoice: toolChoice == null ? { type: \"auto\" } : typeof toolChoice === \"string\" ? { type: toolChoice } : { type: \"tool\", toolName: toolChoice.toolName }\n };\n}\n\n// src/prompt/standardize-prompt.ts\nimport { InvalidPromptError as InvalidPromptError2 } from \"@ai-sdk/provider\";\nimport { safeValidateTypes } from \"@ai-sdk/provider-utils\";\nimport { z as z6 } from \"zod/v4\";\n\n// src/prompt/message.ts\nimport { z as z5 } from \"zod/v4\";\n\n// src/types/provider-metadata.ts\nimport { z as z3 } from \"zod/v4\";\n\n// src/types/json-value.ts\nimport { z as z2 } from \"zod/v4\";\nvar jsonValueSchema = z2.lazy(\n () => z2.union([\n z2.null(),\n z2.string(),\n z2.number(),\n z2.boolean(),\n z2.record(z2.string(), jsonValueSchema),\n z2.array(jsonValueSchema)\n ])\n);\n\n// src/types/provider-metadata.ts\nvar providerMetadataSchema = z3.record(\n z3.string(),\n z3.record(z3.string(), jsonValueSchema)\n);\n\n// src/prompt/content-part.ts\nimport { z as z4 } from \"zod/v4\";\nvar textPartSchema = z4.object({\n type: z4.literal(\"text\"),\n text: z4.string(),\n providerOptions: providerMetadataSchema.optional()\n});\nvar imagePartSchema = z4.object({\n type: z4.literal(\"image\"),\n image: z4.union([dataContentSchema, z4.instanceof(URL)]),\n mediaType: z4.string().optional(),\n providerOptions: providerMetadataSchema.optional()\n});\nvar filePartSchema = z4.object({\n type: z4.literal(\"file\"),\n data: z4.union([dataContentSchema, z4.instanceof(URL)]),\n filename: z4.string().optional(),\n mediaType: z4.string(),\n providerOptions: providerMetadataSchema.optional()\n});\nvar reasoningPartSchema = z4.object({\n type: z4.literal(\"reasoning\"),\n text: z4.string(),\n providerOptions: providerMetadataSchema.optional()\n});\nvar toolCallPartSchema = z4.object({\n type: z4.literal(\"tool-call\"),\n toolCallId: z4.string(),\n toolName: z4.string(),\n input: z4.unknown(),\n providerOptions: providerMetadataSchema.optional(),\n providerExecuted: z4.boolean().optional()\n});\nvar outputSchema = z4.discriminatedUnion(\"type\", [\n z4.object({\n type: z4.literal(\"text\"),\n value: z4.string()\n }),\n z4.object({\n type: z4.literal(\"json\"),\n value: jsonValueSchema\n }),\n z4.object({\n type: z4.literal(\"error-text\"),\n value: z4.string()\n }),\n z4.object({\n type: z4.literal(\"error-json\"),\n value: jsonValueSchema\n }),\n z4.object({\n type: z4.literal(\"content\"),\n value: z4.array(\n z4.union([\n z4.object({\n type: z4.literal(\"text\"),\n text: z4.string()\n }),\n z4.object({\n type: z4.literal(\"media\"),\n data: z4.string(),\n mediaType: z4.string()\n })\n ])\n )\n })\n]);\nvar toolResultPartSchema = z4.object({\n type: z4.literal(\"tool-result\"),\n toolCallId: z4.string(),\n toolName: z4.string(),\n output: outputSchema,\n providerOptions: providerMetadataSchema.optional()\n});\n\n// src/prompt/message.ts\nvar systemModelMessageSchema = z5.object(\n {\n role: z5.literal(\"system\"),\n content: z5.string(),\n providerOptions: providerMetadataSchema.optional()\n }\n);\nvar coreSystemMessageSchema = systemModelMessageSchema;\nvar userModelMessageSchema = z5.object({\n role: z5.literal(\"user\"),\n content: z5.union([\n z5.string(),\n z5.array(z5.union([textPartSchema, imagePartSchema, filePartSchema]))\n ]),\n providerOptions: providerMetadataSchema.optional()\n});\nvar coreUserMessageSchema = userModelMessageSchema;\nvar assistantModelMessageSchema = z5.object({\n role: z5.literal(\"assistant\"),\n content: z5.union([\n z5.string(),\n z5.array(\n z5.union([\n textPartSchema,\n filePartSchema,\n reasoningPartSchema,\n toolCallPartSchema,\n toolResultPartSchema\n ])\n )\n ]),\n providerOptions: providerMetadataSchema.optional()\n});\nvar coreAssistantMessageSchema = assistantModelMessageSchema;\nvar toolModelMessageSchema = z5.object({\n role: z5.literal(\"tool\"),\n content: z5.array(toolResultPartSchema),\n providerOptions: providerMetadataSchema.optional()\n});\nvar coreToolMessageSchema = toolModelMessageSchema;\nvar modelMessageSchema = z5.union([\n systemModelMessageSchema,\n userModelMessageSchema,\n assistantModelMessageSchema,\n toolModelMessageSchema\n]);\nvar coreMessageSchema = modelMessageSchema;\n\n// src/prompt/standardize-prompt.ts\nasync function standardizePrompt(prompt) {\n if (prompt.prompt == null && prompt.messages == null) {\n throw new InvalidPromptError2({\n prompt,\n message: \"prompt or messages must be defined\"\n });\n }\n if (prompt.prompt != null && prompt.messages != null) {\n throw new InvalidPromptError2({\n prompt,\n message: \"prompt and messages cannot be defined at the same time\"\n });\n }\n if (prompt.system != null && typeof prompt.system !== \"string\") {\n throw new InvalidPromptError2({\n prompt,\n message: \"system must be a string\"\n });\n }\n let messages;\n if (prompt.prompt != null && typeof prompt.prompt === \"string\") {\n messages = [{ role: \"user\", content: prompt.prompt }];\n } else if (prompt.prompt != null && Array.isArray(prompt.prompt)) {\n messages = prompt.prompt;\n } else if (prompt.messages != null) {\n messages = prompt.messages;\n } else {\n throw new InvalidPromptError2({\n prompt,\n message: \"prompt or messages must be defined\"\n });\n }\n if (messages.length === 0) {\n throw new InvalidPromptError2({\n prompt,\n message: \"messages must not be empty\"\n });\n }\n const validationResult = await safeValidateTypes({\n value: messages,\n schema: z6.array(modelMessageSchema)\n });\n if (!validationResult.success) {\n throw new InvalidPromptError2({\n prompt,\n message: \"The messages must be a ModelMessage[]. If you have passed a UIMessage[], you can use convertToModelMessages to convert them.\",\n cause: validationResult.error\n });\n }\n return {\n messages,\n system: prompt.system\n };\n}\n\n// src/prompt/wrap-gateway-error.ts\nimport {\n GatewayAuthenticationError,\n GatewayModelNotFoundError\n} from \"@ai-sdk/gateway\";\nimport { AISDKError as AISDKError19 } from \"@ai-sdk/provider\";\nfunction wrapGatewayError(error) {\n if (GatewayAuthenticationError.isInstance(error) || GatewayModelNotFoundError.isInstance(error)) {\n return new AISDKError19({\n name: \"GatewayError\",\n message: \"Vercel AI Gateway access failed. If you want to use AI SDK providers directly, use the providers, e.g. @ai-sdk/openai, or register a different global default provider.\",\n cause: error\n });\n }\n return error;\n}\n\n// src/telemetry/assemble-operation-name.ts\nfunction assembleOperationName({\n operationId,\n telemetry\n}) {\n return {\n // standardized operation and resource name:\n \"operation.name\": `${operationId}${(telemetry == null ? void 0 : telemetry.functionId) != null ? ` ${telemetry.functionId}` : \"\"}`,\n \"resource.name\": telemetry == null ? void 0 : telemetry.functionId,\n // detailed, AI SDK specific data:\n \"ai.operationId\": operationId,\n \"ai.telemetry.functionId\": telemetry == null ? void 0 : telemetry.functionId\n };\n}\n\n// src/telemetry/get-base-telemetry-attributes.ts\nfunction getBaseTelemetryAttributes({\n model,\n settings,\n telemetry,\n headers\n}) {\n var _a16;\n return {\n \"ai.model.provider\": model.provider,\n \"ai.model.id\": model.modelId,\n // settings:\n ...Object.entries(settings).reduce((attributes, [key, value]) => {\n attributes[`ai.settings.${key}`] = value;\n return attributes;\n }, {}),\n // add metadata as attributes:\n ...Object.entries((_a16 = telemetry == null ? void 0 : telemetry.metadata) != null ? _a16 : {}).reduce(\n (attributes, [key, value]) => {\n attributes[`ai.telemetry.metadata.${key}`] = value;\n return attributes;\n },\n {}\n ),\n // request headers\n ...Object.entries(headers != null ? headers : {}).reduce((attributes, [key, value]) => {\n if (value !== void 0) {\n attributes[`ai.request.headers.${key}`] = value;\n }\n return attributes;\n }, {})\n };\n}\n\n// src/telemetry/get-tracer.ts\nimport { trace } from \"@opentelemetry/api\";\n\n// src/telemetry/noop-tracer.ts\nvar noopTracer = {\n startSpan() {\n return noopSpan;\n },\n startActiveSpan(name16, arg1, arg2, arg3) {\n if (typeof arg1 === \"function\") {\n return arg1(noopSpan);\n }\n if (typeof arg2 === \"function\") {\n return arg2(noopSpan);\n }\n if (typeof arg3 === \"function\") {\n return arg3(noopSpan);\n }\n }\n};\nvar noopSpan = {\n spanContext() {\n return noopSpanContext;\n },\n setAttribute() {\n return this;\n },\n setAttributes() {\n return this;\n },\n addEvent() {\n return this;\n },\n addLink() {\n return this;\n },\n addLinks() {\n return this;\n },\n setStatus() {\n return this;\n },\n updateName() {\n return this;\n },\n end() {\n return this;\n },\n isRecording() {\n return false;\n },\n recordException() {\n return this;\n }\n};\nvar noopSpanContext = {\n traceId: \"\",\n spanId: \"\",\n traceFlags: 0\n};\n\n// src/telemetry/get-tracer.ts\nfunction getTracer({\n isEnabled = false,\n tracer\n} = {}) {\n if (!isEnabled) {\n return noopTracer;\n }\n if (tracer) {\n return tracer;\n }\n return trace.getTracer(\"ai\");\n}\n\n// src/telemetry/record-span.ts\nimport { SpanStatusCode } from \"@opentelemetry/api\";\nfunction recordSpan({\n name: name16,\n tracer,\n attributes,\n fn,\n endWhenDone = true\n}) {\n return tracer.startActiveSpan(name16, { attributes }, async (span) => {\n try {\n const result = await fn(span);\n if (endWhenDone) {\n span.end();\n }\n return result;\n } catch (error) {\n try {\n recordErrorOnSpan(span, error);\n } finally {\n span.end();\n }\n throw error;\n }\n });\n}\nfunction recordErrorOnSpan(span, error) {\n if (error instanceof Error) {\n span.recordException({\n name: error.name,\n message: error.message,\n stack: error.stack\n });\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message\n });\n } else {\n span.setStatus({ code: SpanStatusCode.ERROR });\n }\n}\n\n// src/telemetry/select-telemetry-attributes.ts\nfunction selectTelemetryAttributes({\n telemetry,\n attributes\n}) {\n if ((telemetry == null ? void 0 : telemetry.isEnabled) !== true) {\n return {};\n }\n return Object.entries(attributes).reduce((attributes2, [key, value]) => {\n if (value == null) {\n return attributes2;\n }\n if (typeof value === \"object\" && \"input\" in value && typeof value.input === \"function\") {\n if ((telemetry == null ? void 0 : telemetry.recordInputs) === false) {\n return attributes2;\n }\n const result = value.input();\n return result == null ? attributes2 : { ...attributes2, [key]: result };\n }\n if (typeof value === \"object\" && \"output\" in value && typeof value.output === \"function\") {\n if ((telemetry == null ? void 0 : telemetry.recordOutputs) === false) {\n return attributes2;\n }\n const result = value.output();\n return result == null ? attributes2 : { ...attributes2, [key]: result };\n }\n return { ...attributes2, [key]: value };\n }, {});\n}\n\n// src/telemetry/stringify-for-telemetry.ts\nfunction stringifyForTelemetry(prompt) {\n return JSON.stringify(\n prompt.map((message) => ({\n ...message,\n content: typeof message.content === \"string\" ? message.content : message.content.map(\n (part) => part.type === \"file\" ? {\n ...part,\n data: part.data instanceof Uint8Array ? convertDataContentToBase64String(part.data) : part.data\n } : part\n )\n }))\n );\n}\n\n// src/types/usage.ts\nfunction addLanguageModelUsage(usage1, usage2) {\n return {\n inputTokens: addTokenCounts(usage1.inputTokens, usage2.inputTokens),\n outputTokens: addTokenCounts(usage1.outputTokens, usage2.outputTokens),\n totalTokens: addTokenCounts(usage1.totalTokens, usage2.totalTokens),\n reasoningTokens: addTokenCounts(\n usage1.reasoningTokens,\n usage2.reasoningTokens\n ),\n cachedInputTokens: addTokenCounts(\n usage1.cachedInputTokens,\n usage2.cachedInputTokens\n )\n };\n}\nfunction addTokenCounts(tokenCount1, tokenCount2) {\n return tokenCount1 == null && tokenCount2 == null ? void 0 : (tokenCount1 != null ? tokenCount1 : 0) + (tokenCount2 != null ? tokenCount2 : 0);\n}\n\n// src/util/as-array.ts\nfunction asArray(value) {\n return value === void 0 ? [] : Array.isArray(value) ? value : [value];\n}\n\n// src/util/retry-with-exponential-backoff.ts\nimport { APICallError as APICallError2 } from \"@ai-sdk/provider\";\nimport { delay, getErrorMessage as getErrorMessage3, isAbortError } from \"@ai-sdk/provider-utils\";\nfunction getRetryDelayInMs({\n error,\n exponentialBackoffDelay\n}) {\n const headers = error.responseHeaders;\n if (!headers)\n return exponentialBackoffDelay;\n let ms;\n const retryAfterMs = headers[\"retry-after-ms\"];\n if (retryAfterMs) {\n const timeoutMs = parseFloat(retryAfterMs);\n if (!Number.isNaN(timeoutMs)) {\n ms = timeoutMs;\n }\n }\n const retryAfter = headers[\"retry-after\"];\n if (retryAfter && ms === void 0) {\n const timeoutSeconds = parseFloat(retryAfter);\n if (!Number.isNaN(timeoutSeconds)) {\n ms = timeoutSeconds * 1e3;\n } else {\n ms = Date.parse(retryAfter) - Date.now();\n }\n }\n if (ms != null && !Number.isNaN(ms) && 0 <= ms && (ms < 60 * 1e3 || ms < exponentialBackoffDelay)) {\n return ms;\n }\n return exponentialBackoffDelay;\n}\nvar retryWithExponentialBackoffRespectingRetryHeaders = ({\n maxRetries = 2,\n initialDelayInMs = 2e3,\n backoffFactor = 2,\n abortSignal\n} = {}) => async (f) => _retryWithExponentialBackoff(f, {\n maxRetries,\n delayInMs: initialDelayInMs,\n backoffFactor,\n abortSignal\n});\nasync function _retryWithExponentialBackoff(f, {\n maxRetries,\n delayInMs,\n backoffFactor,\n abortSignal\n}, errors = []) {\n try {\n return await f();\n } catch (error) {\n if (isAbortError(error)) {\n throw error;\n }\n if (maxRetries === 0) {\n throw error;\n }\n const errorMessage = getErrorMessage3(error);\n const newErrors = [...errors, error];\n const tryNumber = newErrors.length;\n if (tryNumber > maxRetries) {\n throw new RetryError({\n message: `Failed after ${tryNumber} attempts. Last error: ${errorMessage}`,\n reason: \"maxRetriesExceeded\",\n errors: newErrors\n });\n }\n if (error instanceof Error && APICallError2.isInstance(error) && error.isRetryable === true && tryNumber <= maxRetries) {\n await delay(\n getRetryDelayInMs({\n error,\n exponentialBackoffDelay: delayInMs\n }),\n { abortSignal }\n );\n return _retryWithExponentialBackoff(\n f,\n {\n maxRetries,\n delayInMs: backoffFactor * delayInMs,\n backoffFactor,\n abortSignal\n },\n newErrors\n );\n }\n if (tryNumber === 1) {\n throw error;\n }\n throw new RetryError({\n message: `Failed after ${tryNumber} attempts with non-retryable error: '${errorMessage}'`,\n reason: \"errorNotRetryable\",\n errors: newErrors\n });\n }\n}\n\n// src/util/prepare-retries.ts\nfunction prepareRetries({\n maxRetries,\n abortSignal\n}) {\n if (maxRetries != null) {\n if (!Number.isInteger(maxRetries)) {\n throw new InvalidArgumentError({\n parameter: \"maxRetries\",\n value: maxRetries,\n message: \"maxRetries must be an integer\"\n });\n }\n if (maxRetries < 0) {\n throw new InvalidArgumentError({\n parameter: \"maxRetries\",\n value: maxRetries,\n message: \"maxRetries must be >= 0\"\n });\n }\n }\n const maxRetriesResult = maxRetries != null ? maxRetries : 2;\n return {\n maxRetries: maxRetriesResult,\n retry: retryWithExponentialBackoffRespectingRetryHeaders({\n maxRetries: maxRetriesResult,\n abortSignal\n })\n };\n}\n\n// src/generate-text/extract-text-content.ts\nfunction extractTextContent(content) {\n const parts = content.filter(\n (content2) => content2.type === \"text\"\n );\n if (parts.length === 0) {\n return void 0;\n }\n return parts.map((content2) => content2.text).join(\"\");\n}\n\n// src/generate-text/generated-file.ts\nimport {\n convertBase64ToUint8Array as convertBase64ToUint8Array3,\n convertUint8ArrayToBase64 as convertUint8ArrayToBase642\n} from \"@ai-sdk/provider-utils\";\nvar DefaultGeneratedFile = class {\n constructor({\n data,\n mediaType\n }) {\n const isUint8Array = data instanceof Uint8Array;\n this.base64Data = isUint8Array ? void 0 : data;\n this.uint8ArrayData = isUint8Array ? data : void 0;\n this.mediaType = mediaType;\n }\n // lazy conversion with caching to avoid unnecessary conversion overhead:\n get base64() {\n if (this.base64Data == null) {\n this.base64Data = convertUint8ArrayToBase642(this.uint8ArrayData);\n }\n return this.base64Data;\n }\n // lazy conversion with caching to avoid unnecessary conversion overhead:\n get uint8Array() {\n if (this.uint8ArrayData == null) {\n this.uint8ArrayData = convertBase64ToUint8Array3(this.base64Data);\n }\n return this.uint8ArrayData;\n }\n};\nvar DefaultGeneratedFileWithType = class extends DefaultGeneratedFile {\n constructor(options) {\n super(options);\n this.type = \"file\";\n }\n};\n\n// src/generate-text/parse-tool-call.ts\nimport {\n asSchema as asSchema2,\n safeParseJSON,\n safeValidateTypes as safeValidateTypes2\n} from \"@ai-sdk/provider-utils\";\nasync function parseToolCall({\n toolCall,\n tools,\n repairToolCall,\n system,\n messages\n}) {\n try {\n if (tools == null) {\n throw new NoSuchToolError({ toolName: toolCall.toolName });\n }\n try {\n return await doParseToolCall({ toolCall, tools });\n } catch (error) {\n if (repairToolCall == null || !(NoSuchToolError.isInstance(error) || InvalidToolInputError.isInstance(error))) {\n throw error;\n }\n let repairedToolCall = null;\n try {\n repairedToolCall = await repairToolCall({\n toolCall,\n tools,\n inputSchema: ({ toolName }) => {\n const { inputSchema } = tools[toolName];\n return asSchema2(inputSchema).jsonSchema;\n },\n system,\n messages,\n error\n });\n } catch (repairError) {\n throw new ToolCallRepairError({\n cause: repairError,\n originalError: error\n });\n }\n if (repairedToolCall == null) {\n throw error;\n }\n return await doParseToolCall({ toolCall: repairedToolCall, tools });\n }\n } catch (error) {\n const parsedInput = await safeParseJSON({ text: toolCall.input });\n const input = parsedInput.success ? parsedInput.value : toolCall.input;\n return {\n type: \"tool-call\",\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input,\n dynamic: true,\n invalid: true,\n error\n };\n }\n}\nasync function doParseToolCall({\n toolCall,\n tools\n}) {\n const toolName = toolCall.toolName;\n const tool2 = tools[toolName];\n if (tool2 == null) {\n throw new NoSuchToolError({\n toolName: toolCall.toolName,\n availableTools: Object.keys(tools)\n });\n }\n const schema = asSchema2(tool2.inputSchema);\n const parseResult = toolCall.input.trim() === \"\" ? await safeValidateTypes2({ value: {}, schema }) : await safeParseJSON({ text: toolCall.input, schema });\n if (parseResult.success === false) {\n throw new InvalidToolInputError({\n toolName,\n toolInput: toolCall.input,\n cause: parseResult.error\n });\n }\n return tool2.type === \"dynamic\" ? {\n type: \"tool-call\",\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input: parseResult.value,\n providerExecuted: toolCall.providerExecuted,\n providerMetadata: toolCall.providerMetadata,\n dynamic: true\n } : {\n type: \"tool-call\",\n toolCallId: toolCall.toolCallId,\n toolName,\n input: parseResult.value,\n providerExecuted: toolCall.providerExecuted,\n providerMetadata: toolCall.providerMetadata\n };\n}\n\n// src/generate-text/step-result.ts\nvar DefaultStepResult = class {\n constructor({\n content,\n finishReason,\n usage,\n warnings,\n request,\n response,\n providerMetadata\n }) {\n this.content = content;\n this.finishReason = finishReason;\n this.usage = usage;\n this.warnings = warnings;\n this.request = request;\n this.response = response;\n this.providerMetadata = providerMetadata;\n }\n get text() {\n return this.content.filter((part) => part.type === \"text\").map((part) => part.text).join(\"\");\n }\n get reasoning() {\n return this.content.filter((part) => part.type === \"reasoning\");\n }\n get reasoningText() {\n return this.reasoning.length === 0 ? void 0 : this.reasoning.map((part) => part.text).join(\"\");\n }\n get files() {\n return this.content.filter((part) => part.type === \"file\").map((part) => part.file);\n }\n get sources() {\n return this.content.filter((part) => part.type === \"source\");\n }\n get toolCalls() {\n return this.content.filter((part) => part.type === \"tool-call\");\n }\n get staticToolCalls() {\n return this.toolCalls.filter(\n (toolCall) => toolCall.dynamic !== true\n );\n }\n get dynamicToolCalls() {\n return this.toolCalls.filter(\n (toolCall) => toolCall.dynamic === true\n );\n }\n get toolResults() {\n return this.content.filter((part) => part.type === \"tool-result\");\n }\n get staticToolResults() {\n return this.toolResults.filter(\n (toolResult) => toolResult.dynamic !== true\n );\n }\n get dynamicToolResults() {\n return this.toolResults.filter(\n (toolResult) => toolResult.dynamic === true\n );\n }\n};\n\n// src/generate-text/stop-condition.ts\nfunction stepCountIs(stepCount) {\n return ({ steps }) => steps.length === stepCount;\n}\nfunction hasToolCall(toolName) {\n return ({ steps }) => {\n var _a16, _b, _c;\n return (_c = (_b = (_a16 = steps[steps.length - 1]) == null ? void 0 : _a16.toolCalls) == null ? void 0 : _b.some(\n (toolCall) => toolCall.toolName === toolName\n )) != null ? _c : false;\n };\n}\nasync function isStopConditionMet({\n stopConditions,\n steps\n}) {\n return (await Promise.all(stopConditions.map((condition) => condition({ steps })))).some((result) => result);\n}\n\n// src/prompt/create-tool-model-output.ts\nimport {\n getErrorMessage as getErrorMessage4\n} from \"@ai-sdk/provider\";\nfunction createToolModelOutput({\n output,\n tool: tool2,\n errorMode\n}) {\n if (errorMode === \"text\") {\n return { type: \"error-text\", value: getErrorMessage4(output) };\n } else if (errorMode === \"json\") {\n return { type: \"error-json\", value: toJSONValue(output) };\n }\n if (tool2 == null ? void 0 : tool2.toModelOutput) {\n return tool2.toModelOutput(output);\n }\n return typeof output === \"string\" ? { type: \"text\", value: output } : { type: \"json\", value: toJSONValue(output) };\n}\nfunction toJSONValue(value) {\n return value === void 0 ? null : value;\n}\n\n// src/generate-text/to-response-messages.ts\nfunction toResponseMessages({\n content: inputContent,\n tools\n}) {\n const responseMessages = [];\n const content = inputContent.filter((part) => part.type !== \"source\").filter(\n (part) => (part.type !== \"tool-result\" || part.providerExecuted) && (part.type !== \"tool-error\" || part.providerExecuted)\n ).filter((part) => part.type !== \"text\" || part.text.length > 0).map((part) => {\n switch (part.type) {\n case \"text\":\n return {\n type: \"text\",\n text: part.text,\n providerOptions: part.providerMetadata\n };\n case \"reasoning\":\n return {\n type: \"reasoning\",\n text: part.text,\n providerOptions: part.providerMetadata\n };\n case \"file\":\n return {\n type: \"file\",\n data: part.file.base64,\n mediaType: part.file.mediaType,\n providerOptions: part.providerMetadata\n };\n case \"tool-call\":\n return {\n type: \"tool-call\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n input: part.input,\n providerExecuted: part.providerExecuted,\n providerOptions: part.providerMetadata\n };\n case \"tool-result\":\n return {\n type: \"tool-result\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n output: createToolModelOutput({\n tool: tools == null ? void 0 : tools[part.toolName],\n output: part.output,\n errorMode: \"none\"\n }),\n providerExecuted: true,\n providerOptions: part.providerMetadata\n };\n case \"tool-error\":\n return {\n type: \"tool-result\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n output: createToolModelOutput({\n tool: tools == null ? void 0 : tools[part.toolName],\n output: part.error,\n errorMode: \"json\"\n }),\n providerOptions: part.providerMetadata\n };\n }\n });\n if (content.length > 0) {\n responseMessages.push({\n role: \"assistant\",\n content\n });\n }\n const toolResultContent = inputContent.filter((part) => part.type === \"tool-result\" || part.type === \"tool-error\").filter((part) => !part.providerExecuted).map((toolResult) => ({\n type: \"tool-result\",\n toolCallId: toolResult.toolCallId,\n toolName: toolResult.toolName,\n output: createToolModelOutput({\n tool: tools == null ? void 0 : tools[toolResult.toolName],\n output: toolResult.type === \"tool-result\" ? toolResult.output : toolResult.error,\n errorMode: toolResult.type === \"tool-error\" ? \"text\" : \"none\"\n })\n }));\n if (toolResultContent.length > 0) {\n responseMessages.push({\n role: \"tool\",\n content: toolResultContent\n });\n }\n return responseMessages;\n}\n\n// src/generate-text/generate-text.ts\nvar originalGenerateId = createIdGenerator({\n prefix: \"aitxt\",\n size: 24\n});\nasync function generateText({\n model: modelArg,\n tools,\n toolChoice,\n system,\n prompt,\n messages,\n maxRetries: maxRetriesArg,\n abortSignal,\n headers,\n stopWhen = stepCountIs(1),\n experimental_output: output,\n experimental_telemetry: telemetry,\n providerOptions,\n experimental_activeTools,\n activeTools = experimental_activeTools,\n experimental_prepareStep,\n prepareStep = experimental_prepareStep,\n experimental_repairToolCall: repairToolCall,\n experimental_download: download2,\n experimental_context,\n _internal: {\n generateId: generateId3 = originalGenerateId,\n currentDate = () => /* @__PURE__ */ new Date()\n } = {},\n onStepFinish,\n ...settings\n}) {\n const model = resolveLanguageModel(modelArg);\n const stopConditions = asArray(stopWhen);\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const callSettings = prepareCallSettings(settings);\n const headersWithUserAgent = withUserAgentSuffix2(\n headers != null ? headers : {},\n `ai/${VERSION}`\n );\n const baseTelemetryAttributes = getBaseTelemetryAttributes({\n model,\n telemetry,\n headers: headersWithUserAgent,\n settings: { ...callSettings, maxRetries }\n });\n const initialPrompt = await standardizePrompt({\n system,\n prompt,\n messages\n });\n const tracer = getTracer(telemetry);\n try {\n return await recordSpan({\n name: \"ai.generateText\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.generateText\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n // model:\n \"ai.model.provider\": model.provider,\n \"ai.model.id\": model.modelId,\n // specific settings that only make sense on the outer level:\n \"ai.prompt\": {\n input: () => JSON.stringify({ system, prompt, messages })\n }\n }\n }),\n tracer,\n fn: async (span) => {\n var _a16, _b, _c, _d, _e, _f, _g;\n const callSettings2 = prepareCallSettings(settings);\n let currentModelResponse;\n let clientToolCalls = [];\n let clientToolOutputs = [];\n const responseMessages = [];\n const steps = [];\n do {\n const stepInputMessages = [\n ...initialPrompt.messages,\n ...responseMessages\n ];\n const prepareStepResult = await (prepareStep == null ? void 0 : prepareStep({\n model,\n steps,\n stepNumber: steps.length,\n messages: stepInputMessages\n }));\n const stepModel = resolveLanguageModel(\n (_a16 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a16 : model\n );\n const promptMessages = await convertToLanguageModelPrompt({\n prompt: {\n system: (_b = prepareStepResult == null ? void 0 : prepareStepResult.system) != null ? _b : initialPrompt.system,\n messages: (_c = prepareStepResult == null ? void 0 : prepareStepResult.messages) != null ? _c : stepInputMessages\n },\n supportedUrls: await stepModel.supportedUrls,\n download: download2\n });\n const { toolChoice: stepToolChoice, tools: stepTools } = prepareToolsAndToolChoice({\n tools,\n toolChoice: (_d = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _d : toolChoice,\n activeTools: (_e = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _e : activeTools\n });\n currentModelResponse = await retry(\n () => {\n var _a17;\n return recordSpan({\n name: \"ai.generateText.doGenerate\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.generateText.doGenerate\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n // model:\n \"ai.model.provider\": stepModel.provider,\n \"ai.model.id\": stepModel.modelId,\n // prompt:\n \"ai.prompt.messages\": {\n input: () => stringifyForTelemetry(promptMessages)\n },\n \"ai.prompt.tools\": {\n // convert the language model level tools:\n input: () => stepTools == null ? void 0 : stepTools.map((tool2) => JSON.stringify(tool2))\n },\n \"ai.prompt.toolChoice\": {\n input: () => stepToolChoice != null ? JSON.stringify(stepToolChoice) : void 0\n },\n // standardized gen-ai llm span attributes:\n \"gen_ai.system\": stepModel.provider,\n \"gen_ai.request.model\": stepModel.modelId,\n \"gen_ai.request.frequency_penalty\": settings.frequencyPenalty,\n \"gen_ai.request.max_tokens\": settings.maxOutputTokens,\n \"gen_ai.request.presence_penalty\": settings.presencePenalty,\n \"gen_ai.request.stop_sequences\": settings.stopSequences,\n \"gen_ai.request.temperature\": (_a17 = settings.temperature) != null ? _a17 : void 0,\n \"gen_ai.request.top_k\": settings.topK,\n \"gen_ai.request.top_p\": settings.topP\n }\n }),\n tracer,\n fn: async (span2) => {\n var _a18, _b2, _c2, _d2, _e2, _f2, _g2, _h;\n const result = await stepModel.doGenerate({\n ...callSettings2,\n tools: stepTools,\n toolChoice: stepToolChoice,\n responseFormat: output == null ? void 0 : output.responseFormat,\n prompt: promptMessages,\n providerOptions,\n abortSignal,\n headers: headersWithUserAgent\n });\n const responseData = {\n id: (_b2 = (_a18 = result.response) == null ? void 0 : _a18.id) != null ? _b2 : generateId3(),\n timestamp: (_d2 = (_c2 = result.response) == null ? void 0 : _c2.timestamp) != null ? _d2 : currentDate(),\n modelId: (_f2 = (_e2 = result.response) == null ? void 0 : _e2.modelId) != null ? _f2 : stepModel.modelId,\n headers: (_g2 = result.response) == null ? void 0 : _g2.headers,\n body: (_h = result.response) == null ? void 0 : _h.body\n };\n span2.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.response.finishReason\": result.finishReason,\n \"ai.response.text\": {\n output: () => extractTextContent(result.content)\n },\n \"ai.response.toolCalls\": {\n output: () => {\n const toolCalls = asToolCalls(result.content);\n return toolCalls == null ? void 0 : JSON.stringify(toolCalls);\n }\n },\n \"ai.response.id\": responseData.id,\n \"ai.response.model\": responseData.modelId,\n \"ai.response.timestamp\": responseData.timestamp.toISOString(),\n \"ai.response.providerMetadata\": JSON.stringify(\n result.providerMetadata\n ),\n // TODO rename telemetry attributes to inputTokens and outputTokens\n \"ai.usage.promptTokens\": result.usage.inputTokens,\n \"ai.usage.completionTokens\": result.usage.outputTokens,\n // standardized gen-ai llm span attributes:\n \"gen_ai.response.finish_reasons\": [result.finishReason],\n \"gen_ai.response.id\": responseData.id,\n \"gen_ai.response.model\": responseData.modelId,\n \"gen_ai.usage.input_tokens\": result.usage.inputTokens,\n \"gen_ai.usage.output_tokens\": result.usage.outputTokens\n }\n })\n );\n return { ...result, response: responseData };\n }\n });\n }\n );\n const stepToolCalls = await Promise.all(\n currentModelResponse.content.filter(\n (part) => part.type === \"tool-call\"\n ).map(\n (toolCall) => parseToolCall({\n toolCall,\n tools,\n repairToolCall,\n system,\n messages: stepInputMessages\n })\n )\n );\n for (const toolCall of stepToolCalls) {\n if (toolCall.invalid) {\n continue;\n }\n const tool2 = tools[toolCall.toolName];\n if ((tool2 == null ? void 0 : tool2.onInputAvailable) != null) {\n await tool2.onInputAvailable({\n input: toolCall.input,\n toolCallId: toolCall.toolCallId,\n messages: stepInputMessages,\n abortSignal,\n experimental_context\n });\n }\n }\n const invalidToolCalls = stepToolCalls.filter(\n (toolCall) => toolCall.invalid && toolCall.dynamic\n );\n clientToolOutputs = [];\n for (const toolCall of invalidToolCalls) {\n clientToolOutputs.push({\n type: \"tool-error\",\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input: toolCall.input,\n error: getErrorMessage5(toolCall.error),\n dynamic: true\n });\n }\n clientToolCalls = stepToolCalls.filter(\n (toolCall) => !toolCall.providerExecuted\n );\n if (tools != null) {\n clientToolOutputs.push(\n ...await executeTools({\n toolCalls: clientToolCalls.filter(\n (toolCall) => !toolCall.invalid\n ),\n tools,\n tracer,\n telemetry,\n messages: stepInputMessages,\n abortSignal,\n experimental_context\n })\n );\n }\n const stepContent = asContent({\n content: currentModelResponse.content,\n toolCalls: stepToolCalls,\n toolOutputs: clientToolOutputs\n });\n responseMessages.push(\n ...toResponseMessages({\n content: stepContent,\n tools\n })\n );\n const currentStepResult = new DefaultStepResult({\n content: stepContent,\n finishReason: currentModelResponse.finishReason,\n usage: currentModelResponse.usage,\n warnings: currentModelResponse.warnings,\n providerMetadata: currentModelResponse.providerMetadata,\n request: (_f = currentModelResponse.request) != null ? _f : {},\n response: {\n ...currentModelResponse.response,\n // deep clone msgs to avoid mutating past messages in multi-step:\n messages: structuredClone(responseMessages)\n }\n });\n logWarnings((_g = currentModelResponse.warnings) != null ? _g : []);\n steps.push(currentStepResult);\n await (onStepFinish == null ? void 0 : onStepFinish(currentStepResult));\n } while (\n // there are tool calls:\n clientToolCalls.length > 0 && // all current tool calls have outputs (incl. execution errors):\n clientToolOutputs.length === clientToolCalls.length && // continue until a stop condition is met:\n !await isStopConditionMet({ stopConditions, steps })\n );\n span.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.response.finishReason\": currentModelResponse.finishReason,\n \"ai.response.text\": {\n output: () => extractTextContent(currentModelResponse.content)\n },\n \"ai.response.toolCalls\": {\n output: () => {\n const toolCalls = asToolCalls(currentModelResponse.content);\n return toolCalls == null ? void 0 : JSON.stringify(toolCalls);\n }\n },\n \"ai.response.providerMetadata\": JSON.stringify(\n currentModelResponse.providerMetadata\n ),\n // TODO rename telemetry attributes to inputTokens and outputTokens\n \"ai.usage.promptTokens\": currentModelResponse.usage.inputTokens,\n \"ai.usage.completionTokens\": currentModelResponse.usage.outputTokens\n }\n })\n );\n const lastStep = steps[steps.length - 1];\n let resolvedOutput;\n if (lastStep.finishReason === \"stop\") {\n resolvedOutput = await (output == null ? void 0 : output.parseOutput(\n { text: lastStep.text },\n {\n response: lastStep.response,\n usage: lastStep.usage,\n finishReason: lastStep.finishReason\n }\n ));\n }\n return new DefaultGenerateTextResult({\n steps,\n resolvedOutput\n });\n }\n });\n } catch (error) {\n throw wrapGatewayError(error);\n }\n}\nasync function executeTools({\n toolCalls,\n tools,\n tracer,\n telemetry,\n messages,\n abortSignal,\n experimental_context\n}) {\n const toolOutputs = await Promise.all(\n toolCalls.map(async ({ toolCallId, toolName, input }) => {\n const tool2 = tools[toolName];\n if ((tool2 == null ? void 0 : tool2.execute) == null) {\n return void 0;\n }\n return recordSpan({\n name: \"ai.toolCall\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.toolCall\",\n telemetry\n }),\n \"ai.toolCall.name\": toolName,\n \"ai.toolCall.id\": toolCallId,\n \"ai.toolCall.args\": {\n output: () => JSON.stringify(input)\n }\n }\n }),\n tracer,\n fn: async (span) => {\n try {\n const stream = executeTool({\n execute: tool2.execute.bind(tool2),\n input,\n options: {\n toolCallId,\n messages,\n abortSignal,\n experimental_context\n }\n });\n let output;\n for await (const part of stream) {\n if (part.type === \"final\") {\n output = part.output;\n }\n }\n try {\n span.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.toolCall.result\": {\n output: () => JSON.stringify(output)\n }\n }\n })\n );\n } catch (ignored) {\n }\n return {\n type: \"tool-result\",\n toolCallId,\n toolName,\n input,\n output,\n dynamic: tool2.type === \"dynamic\"\n };\n } catch (error) {\n recordErrorOnSpan(span, error);\n return {\n type: \"tool-error\",\n toolCallId,\n toolName,\n input,\n error,\n dynamic: tool2.type === \"dynamic\"\n };\n }\n }\n });\n })\n );\n return toolOutputs.filter(\n (output) => output != null\n );\n}\nvar DefaultGenerateTextResult = class {\n constructor(options) {\n this.steps = options.steps;\n this.resolvedOutput = options.resolvedOutput;\n }\n get finalStep() {\n return this.steps[this.steps.length - 1];\n }\n get content() {\n return this.finalStep.content;\n }\n get text() {\n return this.finalStep.text;\n }\n get files() {\n return this.finalStep.files;\n }\n get reasoningText() {\n return this.finalStep.reasoningText;\n }\n get reasoning() {\n return this.finalStep.reasoning;\n }\n get toolCalls() {\n return this.finalStep.toolCalls;\n }\n get staticToolCalls() {\n return this.finalStep.staticToolCalls;\n }\n get dynamicToolCalls() {\n return this.finalStep.dynamicToolCalls;\n }\n get toolResults() {\n return this.finalStep.toolResults;\n }\n get staticToolResults() {\n return this.finalStep.staticToolResults;\n }\n get dynamicToolResults() {\n return this.finalStep.dynamicToolResults;\n }\n get sources() {\n return this.finalStep.sources;\n }\n get finishReason() {\n return this.finalStep.finishReason;\n }\n get warnings() {\n return this.finalStep.warnings;\n }\n get providerMetadata() {\n return this.finalStep.providerMetadata;\n }\n get response() {\n return this.finalStep.response;\n }\n get request() {\n return this.finalStep.request;\n }\n get usage() {\n return this.finalStep.usage;\n }\n get totalUsage() {\n return this.steps.reduce(\n (totalUsage, step) => {\n return addLanguageModelUsage(totalUsage, step.usage);\n },\n {\n inputTokens: void 0,\n outputTokens: void 0,\n totalTokens: void 0,\n reasoningTokens: void 0,\n cachedInputTokens: void 0\n }\n );\n }\n get experimental_output() {\n if (this.resolvedOutput == null) {\n throw new NoOutputSpecifiedError();\n }\n return this.resolvedOutput;\n }\n};\nfunction asToolCalls(content) {\n const parts = content.filter(\n (part) => part.type === \"tool-call\"\n );\n if (parts.length === 0) {\n return void 0;\n }\n return parts.map((toolCall) => ({\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input: toolCall.input\n }));\n}\nfunction asContent({\n content,\n toolCalls,\n toolOutputs\n}) {\n return [\n ...content.map((part) => {\n switch (part.type) {\n case \"text\":\n case \"reasoning\":\n case \"source\":\n return part;\n case \"file\": {\n return {\n type: \"file\",\n file: new DefaultGeneratedFile(part)\n };\n }\n case \"tool-call\": {\n return toolCalls.find(\n (toolCall) => toolCall.toolCallId === part.toolCallId\n );\n }\n case \"tool-result\": {\n const toolCall = toolCalls.find(\n (toolCall2) => toolCall2.toolCallId === part.toolCallId\n );\n if (toolCall == null) {\n throw new Error(`Tool call ${part.toolCallId} not found.`);\n }\n if (part.isError) {\n return {\n type: \"tool-error\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n input: toolCall.input,\n error: part.result,\n providerExecuted: true,\n dynamic: toolCall.dynamic\n };\n }\n return {\n type: \"tool-result\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n input: toolCall.input,\n output: part.result,\n providerExecuted: true,\n dynamic: toolCall.dynamic\n };\n }\n }\n }),\n ...toolOutputs\n ];\n}\n\n// src/generate-text/stream-text.ts\nimport {\n getErrorMessage as getErrorMessage7\n} from \"@ai-sdk/provider\";\nimport {\n createIdGenerator as createIdGenerator2,\n isAbortError as isAbortError2\n} from \"@ai-sdk/provider-utils\";\n\n// src/util/prepare-headers.ts\nfunction prepareHeaders(headers, defaultHeaders) {\n const responseHeaders = new Headers(headers != null ? headers : {});\n for (const [key, value] of Object.entries(defaultHeaders)) {\n if (!responseHeaders.has(key)) {\n responseHeaders.set(key, value);\n }\n }\n return responseHeaders;\n}\n\n// src/text-stream/create-text-stream-response.ts\nfunction createTextStreamResponse({\n status,\n statusText,\n headers,\n textStream\n}) {\n return new Response(textStream.pipeThrough(new TextEncoderStream()), {\n status: status != null ? status : 200,\n statusText,\n headers: prepareHeaders(headers, {\n \"content-type\": \"text/plain; charset=utf-8\"\n })\n });\n}\n\n// src/util/write-to-server-response.ts\nfunction writeToServerResponse({\n response,\n status,\n statusText,\n headers,\n stream\n}) {\n response.writeHead(status != null ? status : 200, statusText, headers);\n const reader = stream.getReader();\n const read = async () => {\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done)\n break;\n const canContinue = response.write(value);\n if (!canContinue) {\n await new Promise((resolve2) => {\n response.once(\"drain\", resolve2);\n });\n }\n }\n } catch (error) {\n throw error;\n } finally {\n response.end();\n }\n };\n read();\n}\n\n// src/text-stream/pipe-text-stream-to-response.ts\nfunction pipeTextStreamToResponse({\n response,\n status,\n statusText,\n headers,\n textStream\n}) {\n writeToServerResponse({\n response,\n status,\n statusText,\n headers: Object.fromEntries(\n prepareHeaders(headers, {\n \"content-type\": \"text/plain; charset=utf-8\"\n }).entries()\n ),\n stream: textStream.pipeThrough(new TextEncoderStream())\n });\n}\n\n// src/ui-message-stream/json-to-sse-transform-stream.ts\nvar JsonToSseTransformStream = class extends TransformStream {\n constructor() {\n super({\n transform(part, controller) {\n controller.enqueue(`data: ${JSON.stringify(part)}\n\n`);\n },\n flush(controller) {\n controller.enqueue(\"data: [DONE]\\n\\n\");\n }\n });\n }\n};\n\n// src/ui-message-stream/ui-message-stream-headers.ts\nvar UI_MESSAGE_STREAM_HEADERS = {\n \"content-type\": \"text/event-stream\",\n \"cache-control\": \"no-cache\",\n connection: \"keep-alive\",\n \"x-vercel-ai-ui-message-stream\": \"v1\",\n \"x-accel-buffering\": \"no\"\n // disable nginx buffering\n};\n\n// src/ui-message-stream/create-ui-message-stream-response.ts\nfunction createUIMessageStreamResponse({\n status,\n statusText,\n headers,\n stream,\n consumeSseStream\n}) {\n let sseStream = stream.pipeThrough(new JsonToSseTransformStream());\n if (consumeSseStream) {\n const [stream1, stream2] = sseStream.tee();\n sseStream = stream1;\n consumeSseStream({ stream: stream2 });\n }\n return new Response(sseStream.pipeThrough(new TextEncoderStream()), {\n status,\n statusText,\n headers: prepareHeaders(headers, UI_MESSAGE_STREAM_HEADERS)\n });\n}\n\n// src/ui-message-stream/get-response-ui-message-id.ts\nfunction getResponseUIMessageId({\n originalMessages,\n responseMessageId\n}) {\n if (originalMessages == null) {\n return void 0;\n }\n const lastMessage = originalMessages[originalMessages.length - 1];\n return (lastMessage == null ? void 0 : lastMessage.role) === \"assistant\" ? lastMessage.id : typeof responseMessageId === \"function\" ? responseMessageId() : responseMessageId;\n}\n\n// src/ui/process-ui-message-stream.ts\nimport {\n validateTypes\n} from \"@ai-sdk/provider-utils\";\n\n// src/ui-message-stream/ui-message-chunks.ts\nimport { z as z7 } from \"zod/v4\";\nimport { lazyValidator, zodSchema } from \"@ai-sdk/provider-utils\";\nvar uiMessageChunkSchema = lazyValidator(\n () => zodSchema(\n z7.union([\n z7.strictObject({\n type: z7.literal(\"text-start\"),\n id: z7.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.strictObject({\n type: z7.literal(\"text-delta\"),\n id: z7.string(),\n delta: z7.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.strictObject({\n type: z7.literal(\"text-end\"),\n id: z7.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.strictObject({\n type: z7.literal(\"error\"),\n errorText: z7.string()\n }),\n z7.strictObject({\n type: z7.literal(\"tool-input-start\"),\n toolCallId: z7.string(),\n toolName: z7.string(),\n providerExecuted: z7.boolean().optional(),\n dynamic: z7.boolean().optional()\n }),\n z7.strictObject({\n type: z7.literal(\"tool-input-delta\"),\n toolCallId: z7.string(),\n inputTextDelta: z7.string()\n }),\n z7.strictObject({\n type: z7.literal(\"tool-input-available\"),\n toolCallId: z7.string(),\n toolName: z7.string(),\n input: z7.unknown(),\n providerExecuted: z7.boolean().optional(),\n providerMetadata: providerMetadataSchema.optional(),\n dynamic: z7.boolean().optional()\n }),\n z7.strictObject({\n type: z7.literal(\"tool-input-error\"),\n toolCallId: z7.string(),\n toolName: z7.string(),\n input: z7.unknown(),\n providerExecuted: z7.boolean().optional(),\n providerMetadata: providerMetadataSchema.optional(),\n dynamic: z7.boolean().optional(),\n errorText: z7.string()\n }),\n z7.strictObject({\n type: z7.literal(\"tool-output-available\"),\n toolCallId: z7.string(),\n output: z7.unknown(),\n providerExecuted: z7.boolean().optional(),\n dynamic: z7.boolean().optional(),\n preliminary: z7.boolean().optional()\n }),\n z7.strictObject({\n type: z7.literal(\"tool-output-error\"),\n toolCallId: z7.string(),\n errorText: z7.string(),\n providerExecuted: z7.boolean().optional(),\n dynamic: z7.boolean().optional()\n }),\n z7.strictObject({\n type: z7.literal(\"reasoning-start\"),\n id: z7.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.strictObject({\n type: z7.literal(\"reasoning-delta\"),\n id: z7.string(),\n delta: z7.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.strictObject({\n type: z7.literal(\"reasoning-end\"),\n id: z7.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.strictObject({\n type: z7.literal(\"source-url\"),\n sourceId: z7.string(),\n url: z7.string(),\n title: z7.string().optional(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.strictObject({\n type: z7.literal(\"source-document\"),\n sourceId: z7.string(),\n mediaType: z7.string(),\n title: z7.string(),\n filename: z7.string().optional(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.strictObject({\n type: z7.literal(\"file\"),\n url: z7.string(),\n mediaType: z7.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.strictObject({\n type: z7.custom(\n (value) => typeof value === \"string\" && value.startsWith(\"data-\"),\n { message: 'Type must start with \"data-\"' }\n ),\n id: z7.string().optional(),\n data: z7.unknown(),\n transient: z7.boolean().optional()\n }),\n z7.strictObject({\n type: z7.literal(\"start-step\")\n }),\n z7.strictObject({\n type: z7.literal(\"finish-step\")\n }),\n z7.strictObject({\n type: z7.literal(\"start\"),\n messageId: z7.string().optional(),\n messageMetadata: z7.unknown().optional()\n }),\n z7.strictObject({\n type: z7.literal(\"finish\"),\n messageMetadata: z7.unknown().optional()\n }),\n z7.strictObject({\n type: z7.literal(\"abort\")\n }),\n z7.strictObject({\n type: z7.literal(\"message-metadata\"),\n messageMetadata: z7.unknown()\n })\n ])\n )\n);\nfunction isDataUIMessageChunk(chunk) {\n return chunk.type.startsWith(\"data-\");\n}\n\n// src/util/merge-objects.ts\nfunction mergeObjects(base, overrides) {\n if (base === void 0 && overrides === void 0) {\n return void 0;\n }\n if (base === void 0) {\n return overrides;\n }\n if (overrides === void 0) {\n return base;\n }\n const result = { ...base };\n for (const key in overrides) {\n if (Object.prototype.hasOwnProperty.call(overrides, key)) {\n const overridesValue = overrides[key];\n if (overridesValue === void 0)\n continue;\n const baseValue = key in base ? base[key] : void 0;\n const isSourceObject = overridesValue !== null && typeof overridesValue === \"object\" && !Array.isArray(overridesValue) && !(overridesValue instanceof Date) && !(overridesValue instanceof RegExp);\n const isTargetObject = baseValue !== null && baseValue !== void 0 && typeof baseValue === \"object\" && !Array.isArray(baseValue) && !(baseValue instanceof Date) && !(baseValue instanceof RegExp);\n if (isSourceObject && isTargetObject) {\n result[key] = mergeObjects(\n baseValue,\n overridesValue\n );\n } else {\n result[key] = overridesValue;\n }\n }\n }\n return result;\n}\n\n// src/util/parse-partial-json.ts\nimport { safeParseJSON as safeParseJSON2 } from \"@ai-sdk/provider-utils\";\n\n// src/util/fix-json.ts\nfunction fixJson(input) {\n const stack = [\"ROOT\"];\n let lastValidIndex = -1;\n let literalStart = null;\n function processValueStart(char, i, swapState) {\n {\n switch (char) {\n case '\"': {\n lastValidIndex = i;\n stack.pop();\n stack.push(swapState);\n stack.push(\"INSIDE_STRING\");\n break;\n }\n case \"f\":\n case \"t\":\n case \"n\": {\n lastValidIndex = i;\n literalStart = i;\n stack.pop();\n stack.push(swapState);\n stack.push(\"INSIDE_LITERAL\");\n break;\n }\n case \"-\": {\n stack.pop();\n stack.push(swapState);\n stack.push(\"INSIDE_NUMBER\");\n break;\n }\n case \"0\":\n case \"1\":\n case \"2\":\n case \"3\":\n case \"4\":\n case \"5\":\n case \"6\":\n case \"7\":\n case \"8\":\n case \"9\": {\n lastValidIndex = i;\n stack.pop();\n stack.push(swapState);\n stack.push(\"INSIDE_NUMBER\");\n break;\n }\n case \"{\": {\n lastValidIndex = i;\n stack.pop();\n stack.push(swapState);\n stack.push(\"INSIDE_OBJECT_START\");\n break;\n }\n case \"[\": {\n lastValidIndex = i;\n stack.pop();\n stack.push(swapState);\n stack.push(\"INSIDE_ARRAY_START\");\n break;\n }\n }\n }\n }\n function processAfterObjectValue(char, i) {\n switch (char) {\n case \",\": {\n stack.pop();\n stack.push(\"INSIDE_OBJECT_AFTER_COMMA\");\n break;\n }\n case \"}\": {\n lastValidIndex = i;\n stack.pop();\n break;\n }\n }\n }\n function processAfterArrayValue(char, i) {\n switch (char) {\n case \",\": {\n stack.pop();\n stack.push(\"INSIDE_ARRAY_AFTER_COMMA\");\n break;\n }\n case \"]\": {\n lastValidIndex = i;\n stack.pop();\n break;\n }\n }\n }\n for (let i = 0; i < input.length; i++) {\n const char = input[i];\n const currentState = stack[stack.length - 1];\n switch (currentState) {\n case \"ROOT\":\n processValueStart(char, i, \"FINISH\");\n break;\n case \"INSIDE_OBJECT_START\": {\n switch (char) {\n case '\"': {\n stack.pop();\n stack.push(\"INSIDE_OBJECT_KEY\");\n break;\n }\n case \"}\": {\n lastValidIndex = i;\n stack.pop();\n break;\n }\n }\n break;\n }\n case \"INSIDE_OBJECT_AFTER_COMMA\": {\n switch (char) {\n case '\"': {\n stack.pop();\n stack.push(\"INSIDE_OBJECT_KEY\");\n break;\n }\n }\n break;\n }\n case \"INSIDE_OBJECT_KEY\": {\n switch (char) {\n case '\"': {\n stack.pop();\n stack.push(\"INSIDE_OBJECT_AFTER_KEY\");\n break;\n }\n }\n break;\n }\n case \"INSIDE_OBJECT_AFTER_KEY\": {\n switch (char) {\n case \":\": {\n stack.pop();\n stack.push(\"INSIDE_OBJECT_BEFORE_VALUE\");\n break;\n }\n }\n break;\n }\n case \"INSIDE_OBJECT_BEFORE_VALUE\": {\n processValueStart(char, i, \"INSIDE_OBJECT_AFTER_VALUE\");\n break;\n }\n case \"INSIDE_OBJECT_AFTER_VALUE\": {\n processAfterObjectValue(char, i);\n break;\n }\n case \"INSIDE_STRING\": {\n switch (char) {\n case '\"': {\n stack.pop();\n lastValidIndex = i;\n break;\n }\n case \"\\\\\": {\n stack.push(\"INSIDE_STRING_ESCAPE\");\n break;\n }\n default: {\n lastValidIndex = i;\n }\n }\n break;\n }\n case \"INSIDE_ARRAY_START\": {\n switch (char) {\n case \"]\": {\n lastValidIndex = i;\n stack.pop();\n break;\n }\n default: {\n lastValidIndex = i;\n processValueStart(char, i, \"INSIDE_ARRAY_AFTER_VALUE\");\n break;\n }\n }\n break;\n }\n case \"INSIDE_ARRAY_AFTER_VALUE\": {\n switch (char) {\n case \",\": {\n stack.pop();\n stack.push(\"INSIDE_ARRAY_AFTER_COMMA\");\n break;\n }\n case \"]\": {\n lastValidIndex = i;\n stack.pop();\n break;\n }\n default: {\n lastValidIndex = i;\n break;\n }\n }\n break;\n }\n case \"INSIDE_ARRAY_AFTER_COMMA\": {\n processValueStart(char, i, \"INSIDE_ARRAY_AFTER_VALUE\");\n break;\n }\n case \"INSIDE_STRING_ESCAPE\": {\n stack.pop();\n lastValidIndex = i;\n break;\n }\n case \"INSIDE_NUMBER\": {\n switch (char) {\n case \"0\":\n case \"1\":\n case \"2\":\n case \"3\":\n case \"4\":\n case \"5\":\n case \"6\":\n case \"7\":\n case \"8\":\n case \"9\": {\n lastValidIndex = i;\n break;\n }\n case \"e\":\n case \"E\":\n case \"-\":\n case \".\": {\n break;\n }\n case \",\": {\n stack.pop();\n if (stack[stack.length - 1] === \"INSIDE_ARRAY_AFTER_VALUE\") {\n processAfterArrayValue(char, i);\n }\n if (stack[stack.length - 1] === \"INSIDE_OBJECT_AFTER_VALUE\") {\n processAfterObjectValue(char, i);\n }\n break;\n }\n case \"}\": {\n stack.pop();\n if (stack[stack.length - 1] === \"INSIDE_OBJECT_AFTER_VALUE\") {\n processAfterObjectValue(char, i);\n }\n break;\n }\n case \"]\": {\n stack.pop();\n if (stack[stack.length - 1] === \"INSIDE_ARRAY_AFTER_VALUE\") {\n processAfterArrayValue(char, i);\n }\n break;\n }\n default: {\n stack.pop();\n break;\n }\n }\n break;\n }\n case \"INSIDE_LITERAL\": {\n const partialLiteral = input.substring(literalStart, i + 1);\n if (!\"false\".startsWith(partialLiteral) && !\"true\".startsWith(partialLiteral) && !\"null\".startsWith(partialLiteral)) {\n stack.pop();\n if (stack[stack.length - 1] === \"INSIDE_OBJECT_AFTER_VALUE\") {\n processAfterObjectValue(char, i);\n } else if (stack[stack.length - 1] === \"INSIDE_ARRAY_AFTER_VALUE\") {\n processAfterArrayValue(char, i);\n }\n } else {\n lastValidIndex = i;\n }\n break;\n }\n }\n }\n let result = input.slice(0, lastValidIndex + 1);\n for (let i = stack.length - 1; i >= 0; i--) {\n const state = stack[i];\n switch (state) {\n case \"INSIDE_STRING\": {\n result += '\"';\n break;\n }\n case \"INSIDE_OBJECT_KEY\":\n case \"INSIDE_OBJECT_AFTER_KEY\":\n case \"INSIDE_OBJECT_AFTER_COMMA\":\n case \"INSIDE_OBJECT_START\":\n case \"INSIDE_OBJECT_BEFORE_VALUE\":\n case \"INSIDE_OBJECT_AFTER_VALUE\": {\n result += \"}\";\n break;\n }\n case \"INSIDE_ARRAY_START\":\n case \"INSIDE_ARRAY_AFTER_COMMA\":\n case \"INSIDE_ARRAY_AFTER_VALUE\": {\n result += \"]\";\n break;\n }\n case \"INSIDE_LITERAL\": {\n const partialLiteral = input.substring(literalStart, input.length);\n if (\"true\".startsWith(partialLiteral)) {\n result += \"true\".slice(partialLiteral.length);\n } else if (\"false\".startsWith(partialLiteral)) {\n result += \"false\".slice(partialLiteral.length);\n } else if (\"null\".startsWith(partialLiteral)) {\n result += \"null\".slice(partialLiteral.length);\n }\n }\n }\n }\n return result;\n}\n\n// src/util/parse-partial-json.ts\nasync function parsePartialJson(jsonText) {\n if (jsonText === void 0) {\n return { value: void 0, state: \"undefined-input\" };\n }\n let result = await safeParseJSON2({ text: jsonText });\n if (result.success) {\n return { value: result.value, state: \"successful-parse\" };\n }\n result = await safeParseJSON2({ text: fixJson(jsonText) });\n if (result.success) {\n return { value: result.value, state: \"repaired-parse\" };\n }\n return { value: void 0, state: \"failed-parse\" };\n}\n\n// src/ui/ui-messages.ts\nfunction isDataUIPart(part) {\n return part.type.startsWith(\"data-\");\n}\nfunction isTextUIPart(part) {\n return part.type === \"text\";\n}\nfunction isFileUIPart(part) {\n return part.type === \"file\";\n}\nfunction isReasoningUIPart(part) {\n return part.type === \"reasoning\";\n}\nfunction isToolUIPart(part) {\n return part.type.startsWith(\"tool-\");\n}\nfunction isDynamicToolUIPart(part) {\n return part.type === \"dynamic-tool\";\n}\nfunction isToolOrDynamicToolUIPart(part) {\n return isToolUIPart(part) || isDynamicToolUIPart(part);\n}\nfunction getToolName(part) {\n return part.type.split(\"-\").slice(1).join(\"-\");\n}\nfunction getToolOrDynamicToolName(part) {\n return isDynamicToolUIPart(part) ? part.toolName : getToolName(part);\n}\n\n// src/ui/process-ui-message-stream.ts\nfunction createStreamingUIMessageState({\n lastMessage,\n messageId\n}) {\n return {\n message: (lastMessage == null ? void 0 : lastMessage.role) === \"assistant\" ? lastMessage : {\n id: messageId,\n metadata: void 0,\n role: \"assistant\",\n parts: []\n },\n activeTextParts: {},\n activeReasoningParts: {},\n partialToolCalls: {}\n };\n}\nfunction processUIMessageStream({\n stream,\n messageMetadataSchema,\n dataPartSchemas,\n runUpdateMessageJob,\n onError,\n onToolCall,\n onData\n}) {\n return stream.pipeThrough(\n new TransformStream({\n async transform(chunk, controller) {\n await runUpdateMessageJob(async ({ state, write }) => {\n var _a16, _b, _c, _d;\n function getToolInvocation(toolCallId) {\n const toolInvocations = state.message.parts.filter(isToolUIPart);\n const toolInvocation = toolInvocations.find(\n (invocation) => invocation.toolCallId === toolCallId\n );\n if (toolInvocation == null) {\n throw new Error(\n \"tool-output-error must be preceded by a tool-input-available\"\n );\n }\n return toolInvocation;\n }\n function getDynamicToolInvocation(toolCallId) {\n const toolInvocations = state.message.parts.filter(\n (part) => part.type === \"dynamic-tool\"\n );\n const toolInvocation = toolInvocations.find(\n (invocation) => invocation.toolCallId === toolCallId\n );\n if (toolInvocation == null) {\n throw new Error(\n \"tool-output-error must be preceded by a tool-input-available\"\n );\n }\n return toolInvocation;\n }\n function updateToolPart(options) {\n var _a17;\n const part = state.message.parts.find(\n (part2) => isToolUIPart(part2) && part2.toolCallId === options.toolCallId\n );\n const anyOptions = options;\n const anyPart = part;\n if (part != null) {\n part.state = options.state;\n anyPart.input = anyOptions.input;\n anyPart.output = anyOptions.output;\n anyPart.errorText = anyOptions.errorText;\n anyPart.rawInput = anyOptions.rawInput;\n anyPart.preliminary = anyOptions.preliminary;\n anyPart.providerExecuted = (_a17 = anyOptions.providerExecuted) != null ? _a17 : part.providerExecuted;\n if (anyOptions.providerMetadata != null && part.state === \"input-available\") {\n part.callProviderMetadata = anyOptions.providerMetadata;\n }\n } else {\n state.message.parts.push({\n type: `tool-${options.toolName}`,\n toolCallId: options.toolCallId,\n state: options.state,\n input: anyOptions.input,\n output: anyOptions.output,\n rawInput: anyOptions.rawInput,\n errorText: anyOptions.errorText,\n providerExecuted: anyOptions.providerExecuted,\n preliminary: anyOptions.preliminary,\n ...anyOptions.providerMetadata != null ? { callProviderMetadata: anyOptions.providerMetadata } : {}\n });\n }\n }\n function updateDynamicToolPart(options) {\n var _a17, _b2;\n const part = state.message.parts.find(\n (part2) => part2.type === \"dynamic-tool\" && part2.toolCallId === options.toolCallId\n );\n const anyOptions = options;\n const anyPart = part;\n if (part != null) {\n part.state = options.state;\n anyPart.toolName = options.toolName;\n anyPart.input = anyOptions.input;\n anyPart.output = anyOptions.output;\n anyPart.errorText = anyOptions.errorText;\n anyPart.rawInput = (_a17 = anyOptions.rawInput) != null ? _a17 : anyPart.rawInput;\n anyPart.preliminary = anyOptions.preliminary;\n anyPart.providerExecuted = (_b2 = anyOptions.providerExecuted) != null ? _b2 : part.providerExecuted;\n if (anyOptions.providerMetadata != null && part.state === \"input-available\") {\n part.callProviderMetadata = anyOptions.providerMetadata;\n }\n } else {\n state.message.parts.push({\n type: \"dynamic-tool\",\n toolName: options.toolName,\n toolCallId: options.toolCallId,\n state: options.state,\n input: anyOptions.input,\n output: anyOptions.output,\n errorText: anyOptions.errorText,\n preliminary: anyOptions.preliminary,\n providerExecuted: anyOptions.providerExecuted,\n ...anyOptions.providerMetadata != null ? { callProviderMetadata: anyOptions.providerMetadata } : {}\n });\n }\n }\n async function updateMessageMetadata(metadata) {\n if (metadata != null) {\n const mergedMetadata = state.message.metadata != null ? mergeObjects(state.message.metadata, metadata) : metadata;\n if (messageMetadataSchema != null) {\n await validateTypes({\n value: mergedMetadata,\n schema: messageMetadataSchema\n });\n }\n state.message.metadata = mergedMetadata;\n }\n }\n switch (chunk.type) {\n case \"text-start\": {\n const textPart = {\n type: \"text\",\n text: \"\",\n providerMetadata: chunk.providerMetadata,\n state: \"streaming\"\n };\n state.activeTextParts[chunk.id] = textPart;\n state.message.parts.push(textPart);\n write();\n break;\n }\n case \"text-delta\": {\n const textPart = state.activeTextParts[chunk.id];\n textPart.text += chunk.delta;\n textPart.providerMetadata = (_a16 = chunk.providerMetadata) != null ? _a16 : textPart.providerMetadata;\n write();\n break;\n }\n case \"text-end\": {\n const textPart = state.activeTextParts[chunk.id];\n textPart.state = \"done\";\n textPart.providerMetadata = (_b = chunk.providerMetadata) != null ? _b : textPart.providerMetadata;\n delete state.activeTextParts[chunk.id];\n write();\n break;\n }\n case \"reasoning-start\": {\n const reasoningPart = {\n type: \"reasoning\",\n text: \"\",\n providerMetadata: chunk.providerMetadata,\n state: \"streaming\"\n };\n state.activeReasoningParts[chunk.id] = reasoningPart;\n state.message.parts.push(reasoningPart);\n write();\n break;\n }\n case \"reasoning-delta\": {\n const reasoningPart = state.activeReasoningParts[chunk.id];\n reasoningPart.text += chunk.delta;\n reasoningPart.providerMetadata = (_c = chunk.providerMetadata) != null ? _c : reasoningPart.providerMetadata;\n write();\n break;\n }\n case \"reasoning-end\": {\n const reasoningPart = state.activeReasoningParts[chunk.id];\n reasoningPart.providerMetadata = (_d = chunk.providerMetadata) != null ? _d : reasoningPart.providerMetadata;\n reasoningPart.state = \"done\";\n delete state.activeReasoningParts[chunk.id];\n write();\n break;\n }\n case \"file\": {\n state.message.parts.push({\n type: \"file\",\n mediaType: chunk.mediaType,\n url: chunk.url\n });\n write();\n break;\n }\n case \"source-url\": {\n state.message.parts.push({\n type: \"source-url\",\n sourceId: chunk.sourceId,\n url: chunk.url,\n title: chunk.title,\n providerMetadata: chunk.providerMetadata\n });\n write();\n break;\n }\n case \"source-document\": {\n state.message.parts.push({\n type: \"source-document\",\n sourceId: chunk.sourceId,\n mediaType: chunk.mediaType,\n title: chunk.title,\n filename: chunk.filename,\n providerMetadata: chunk.providerMetadata\n });\n write();\n break;\n }\n case \"tool-input-start\": {\n const toolInvocations = state.message.parts.filter(isToolUIPart);\n state.partialToolCalls[chunk.toolCallId] = {\n text: \"\",\n toolName: chunk.toolName,\n index: toolInvocations.length,\n dynamic: chunk.dynamic\n };\n if (chunk.dynamic) {\n updateDynamicToolPart({\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n state: \"input-streaming\",\n input: void 0,\n providerExecuted: chunk.providerExecuted\n });\n } else {\n updateToolPart({\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n state: \"input-streaming\",\n input: void 0,\n providerExecuted: chunk.providerExecuted\n });\n }\n write();\n break;\n }\n case \"tool-input-delta\": {\n const partialToolCall = state.partialToolCalls[chunk.toolCallId];\n partialToolCall.text += chunk.inputTextDelta;\n const { value: partialArgs } = await parsePartialJson(\n partialToolCall.text\n );\n if (partialToolCall.dynamic) {\n updateDynamicToolPart({\n toolCallId: chunk.toolCallId,\n toolName: partialToolCall.toolName,\n state: \"input-streaming\",\n input: partialArgs\n });\n } else {\n updateToolPart({\n toolCallId: chunk.toolCallId,\n toolName: partialToolCall.toolName,\n state: \"input-streaming\",\n input: partialArgs\n });\n }\n write();\n break;\n }\n case \"tool-input-available\": {\n if (chunk.dynamic) {\n updateDynamicToolPart({\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n state: \"input-available\",\n input: chunk.input,\n providerExecuted: chunk.providerExecuted,\n providerMetadata: chunk.providerMetadata\n });\n } else {\n updateToolPart({\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n state: \"input-available\",\n input: chunk.input,\n providerExecuted: chunk.providerExecuted,\n providerMetadata: chunk.providerMetadata\n });\n }\n write();\n if (onToolCall && !chunk.providerExecuted) {\n await onToolCall({\n toolCall: chunk\n });\n }\n break;\n }\n case \"tool-input-error\": {\n if (chunk.dynamic) {\n updateDynamicToolPart({\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n state: \"output-error\",\n input: chunk.input,\n errorText: chunk.errorText,\n providerExecuted: chunk.providerExecuted,\n providerMetadata: chunk.providerMetadata\n });\n } else {\n updateToolPart({\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n state: \"output-error\",\n input: void 0,\n rawInput: chunk.input,\n errorText: chunk.errorText,\n providerExecuted: chunk.providerExecuted,\n providerMetadata: chunk.providerMetadata\n });\n }\n write();\n break;\n }\n case \"tool-output-available\": {\n if (chunk.dynamic) {\n const toolInvocation = getDynamicToolInvocation(\n chunk.toolCallId\n );\n updateDynamicToolPart({\n toolCallId: chunk.toolCallId,\n toolName: toolInvocation.toolName,\n state: \"output-available\",\n input: toolInvocation.input,\n output: chunk.output,\n preliminary: chunk.preliminary\n });\n } else {\n const toolInvocation = getToolInvocation(chunk.toolCallId);\n updateToolPart({\n toolCallId: chunk.toolCallId,\n toolName: getToolName(toolInvocation),\n state: \"output-available\",\n input: toolInvocation.input,\n output: chunk.output,\n providerExecuted: chunk.providerExecuted,\n preliminary: chunk.preliminary\n });\n }\n write();\n break;\n }\n case \"tool-output-error\": {\n if (chunk.dynamic) {\n const toolInvocation = getDynamicToolInvocation(\n chunk.toolCallId\n );\n updateDynamicToolPart({\n toolCallId: chunk.toolCallId,\n toolName: toolInvocation.toolName,\n state: \"output-error\",\n input: toolInvocation.input,\n errorText: chunk.errorText,\n providerExecuted: chunk.providerExecuted\n });\n } else {\n const toolInvocation = getToolInvocation(chunk.toolCallId);\n updateToolPart({\n toolCallId: chunk.toolCallId,\n toolName: getToolName(toolInvocation),\n state: \"output-error\",\n input: toolInvocation.input,\n rawInput: toolInvocation.rawInput,\n errorText: chunk.errorText,\n providerExecuted: chunk.providerExecuted\n });\n }\n write();\n break;\n }\n case \"start-step\": {\n state.message.parts.push({ type: \"step-start\" });\n break;\n }\n case \"finish-step\": {\n state.activeTextParts = {};\n state.activeReasoningParts = {};\n break;\n }\n case \"start\": {\n if (chunk.messageId != null) {\n state.message.id = chunk.messageId;\n }\n await updateMessageMetadata(chunk.messageMetadata);\n if (chunk.messageId != null || chunk.messageMetadata != null) {\n write();\n }\n break;\n }\n case \"finish\": {\n await updateMessageMetadata(chunk.messageMetadata);\n if (chunk.messageMetadata != null) {\n write();\n }\n break;\n }\n case \"message-metadata\": {\n await updateMessageMetadata(chunk.messageMetadata);\n if (chunk.messageMetadata != null) {\n write();\n }\n break;\n }\n case \"error\": {\n onError == null ? void 0 : onError(new Error(chunk.errorText));\n break;\n }\n default: {\n if (isDataUIMessageChunk(chunk)) {\n if ((dataPartSchemas == null ? void 0 : dataPartSchemas[chunk.type]) != null) {\n await validateTypes({\n value: chunk.data,\n schema: dataPartSchemas[chunk.type]\n });\n }\n const dataChunk = chunk;\n if (dataChunk.transient) {\n onData == null ? void 0 : onData(dataChunk);\n break;\n }\n const existingUIPart = dataChunk.id != null ? state.message.parts.find(\n (chunkArg) => dataChunk.type === chunkArg.type && dataChunk.id === chunkArg.id\n ) : void 0;\n if (existingUIPart != null) {\n existingUIPart.data = dataChunk.data;\n } else {\n state.message.parts.push(dataChunk);\n }\n onData == null ? void 0 : onData(dataChunk);\n write();\n }\n }\n }\n controller.enqueue(chunk);\n });\n }\n })\n );\n}\n\n// src/ui-message-stream/handle-ui-message-stream-finish.ts\nfunction handleUIMessageStreamFinish({\n messageId,\n originalMessages = [],\n onFinish,\n onError,\n stream\n}) {\n let lastMessage = originalMessages == null ? void 0 : originalMessages[originalMessages.length - 1];\n if ((lastMessage == null ? void 0 : lastMessage.role) !== \"assistant\") {\n lastMessage = void 0;\n } else {\n messageId = lastMessage.id;\n }\n let isAborted = false;\n const idInjectedStream = stream.pipeThrough(\n new TransformStream({\n transform(chunk, controller) {\n if (chunk.type === \"start\") {\n const startChunk = chunk;\n if (startChunk.messageId == null && messageId != null) {\n startChunk.messageId = messageId;\n }\n }\n if (chunk.type === \"abort\") {\n isAborted = true;\n }\n controller.enqueue(chunk);\n }\n })\n );\n if (onFinish == null) {\n return idInjectedStream;\n }\n const state = createStreamingUIMessageState({\n lastMessage: lastMessage ? structuredClone(lastMessage) : void 0,\n messageId: messageId != null ? messageId : \"\"\n // will be overridden by the stream\n });\n const runUpdateMessageJob = async (job) => {\n await job({ state, write: () => {\n } });\n };\n let finishCalled = false;\n const callOnFinish = async () => {\n if (finishCalled || !onFinish) {\n return;\n }\n finishCalled = true;\n const isContinuation = state.message.id === (lastMessage == null ? void 0 : lastMessage.id);\n await onFinish({\n isAborted,\n isContinuation,\n responseMessage: state.message,\n messages: [\n ...isContinuation ? originalMessages.slice(0, -1) : originalMessages,\n state.message\n ]\n });\n };\n return processUIMessageStream({\n stream: idInjectedStream,\n runUpdateMessageJob,\n onError\n }).pipeThrough(\n new TransformStream({\n transform(chunk, controller) {\n controller.enqueue(chunk);\n },\n // @ts-expect-error cancel is still new and missing from types https://developer.mozilla.org/en-US/docs/Web/API/TransformStream#browser_compatibility\n async cancel() {\n await callOnFinish();\n },\n async flush() {\n await callOnFinish();\n }\n })\n );\n}\n\n// src/ui-message-stream/pipe-ui-message-stream-to-response.ts\nfunction pipeUIMessageStreamToResponse({\n response,\n status,\n statusText,\n headers,\n stream,\n consumeSseStream\n}) {\n let sseStream = stream.pipeThrough(new JsonToSseTransformStream());\n if (consumeSseStream) {\n const [stream1, stream2] = sseStream.tee();\n sseStream = stream1;\n consumeSseStream({ stream: stream2 });\n }\n writeToServerResponse({\n response,\n status,\n statusText,\n headers: Object.fromEntries(\n prepareHeaders(headers, UI_MESSAGE_STREAM_HEADERS).entries()\n ),\n stream: sseStream.pipeThrough(new TextEncoderStream())\n });\n}\n\n// src/util/async-iterable-stream.ts\nfunction createAsyncIterableStream(source) {\n const stream = source.pipeThrough(new TransformStream());\n stream[Symbol.asyncIterator] = function() {\n const reader = this.getReader();\n let finished = false;\n async function cleanup(cancelStream) {\n var _a16;\n finished = true;\n try {\n if (cancelStream) {\n await ((_a16 = reader.cancel) == null ? void 0 : _a16.call(reader));\n }\n } finally {\n try {\n reader.releaseLock();\n } catch (e) {\n }\n }\n }\n return {\n /**\n * Reads the next chunk from the stream.\n * @returns A promise resolving to the next IteratorResult.\n */\n async next() {\n if (finished) {\n return { done: true, value: void 0 };\n }\n const { done, value } = await reader.read();\n if (done) {\n await cleanup(true);\n return { done: true, value: void 0 };\n }\n return { done: false, value };\n },\n /**\n * Called on early exit (e.g., break from for-await).\n * Ensures the stream is cancelled and resources are released.\n * @returns A promise resolving to a completed IteratorResult.\n */\n async return() {\n await cleanup(true);\n return { done: true, value: void 0 };\n },\n /**\n * Called on early exit with error.\n * Ensures the stream is cancelled and resources are released, then rethrows the error.\n * @param err The error to throw.\n * @returns A promise that rejects with the provided error.\n */\n async throw(err) {\n await cleanup(true);\n throw err;\n }\n };\n };\n return stream;\n}\n\n// src/util/consume-stream.ts\nasync function consumeStream({\n stream,\n onError\n}) {\n const reader = stream.getReader();\n try {\n while (true) {\n const { done } = await reader.read();\n if (done)\n break;\n }\n } catch (error) {\n onError == null ? void 0 : onError(error);\n } finally {\n reader.releaseLock();\n }\n}\n\n// src/util/create-resolvable-promise.ts\nfunction createResolvablePromise() {\n let resolve2;\n let reject;\n const promise = new Promise((res, rej) => {\n resolve2 = res;\n reject = rej;\n });\n return {\n promise,\n resolve: resolve2,\n reject\n };\n}\n\n// src/util/create-stitchable-stream.ts\nfunction createStitchableStream() {\n let innerStreamReaders = [];\n let controller = null;\n let isClosed = false;\n let waitForNewStream = createResolvablePromise();\n const terminate = () => {\n isClosed = true;\n waitForNewStream.resolve();\n innerStreamReaders.forEach((reader) => reader.cancel());\n innerStreamReaders = [];\n controller == null ? void 0 : controller.close();\n };\n const processPull = async () => {\n if (isClosed && innerStreamReaders.length === 0) {\n controller == null ? void 0 : controller.close();\n return;\n }\n if (innerStreamReaders.length === 0) {\n waitForNewStream = createResolvablePromise();\n await waitForNewStream.promise;\n return processPull();\n }\n try {\n const { value, done } = await innerStreamReaders[0].read();\n if (done) {\n innerStreamReaders.shift();\n if (innerStreamReaders.length > 0) {\n await processPull();\n } else if (isClosed) {\n controller == null ? void 0 : controller.close();\n }\n } else {\n controller == null ? void 0 : controller.enqueue(value);\n }\n } catch (error) {\n controller == null ? void 0 : controller.error(error);\n innerStreamReaders.shift();\n terminate();\n }\n };\n return {\n stream: new ReadableStream({\n start(controllerParam) {\n controller = controllerParam;\n },\n pull: processPull,\n async cancel() {\n for (const reader of innerStreamReaders) {\n await reader.cancel();\n }\n innerStreamReaders = [];\n isClosed = true;\n }\n }),\n addStream: (innerStream) => {\n if (isClosed) {\n throw new Error(\"Cannot add inner stream: outer stream is closed\");\n }\n innerStreamReaders.push(innerStream.getReader());\n waitForNewStream.resolve();\n },\n /**\n * Gracefully close the outer stream. This will let the inner streams\n * finish processing and then close the outer stream.\n */\n close: () => {\n isClosed = true;\n waitForNewStream.resolve();\n if (innerStreamReaders.length === 0) {\n controller == null ? void 0 : controller.close();\n }\n },\n /**\n * Immediately close the outer stream. This will cancel all inner streams\n * and close the outer stream.\n */\n terminate\n };\n}\n\n// src/util/delayed-promise.ts\nvar DelayedPromise = class {\n constructor() {\n this.status = { type: \"pending\" };\n this._resolve = void 0;\n this._reject = void 0;\n }\n get promise() {\n if (this._promise) {\n return this._promise;\n }\n this._promise = new Promise((resolve2, reject) => {\n if (this.status.type === \"resolved\") {\n resolve2(this.status.value);\n } else if (this.status.type === \"rejected\") {\n reject(this.status.error);\n }\n this._resolve = resolve2;\n this._reject = reject;\n });\n return this._promise;\n }\n resolve(value) {\n var _a16;\n this.status = { type: \"resolved\", value };\n if (this._promise) {\n (_a16 = this._resolve) == null ? void 0 : _a16.call(this, value);\n }\n }\n reject(error) {\n var _a16;\n this.status = { type: \"rejected\", error };\n if (this._promise) {\n (_a16 = this._reject) == null ? void 0 : _a16.call(this, error);\n }\n }\n};\n\n// src/util/now.ts\nfunction now() {\n var _a16, _b;\n return (_b = (_a16 = globalThis == null ? void 0 : globalThis.performance) == null ? void 0 : _a16.now()) != null ? _b : Date.now();\n}\n\n// src/generate-text/run-tools-transformation.ts\nimport {\n executeTool as executeTool2,\n generateId,\n getErrorMessage as getErrorMessage6\n} from \"@ai-sdk/provider-utils\";\nfunction runToolsTransformation({\n tools,\n generatorStream,\n tracer,\n telemetry,\n system,\n messages,\n abortSignal,\n repairToolCall,\n experimental_context\n}) {\n let toolResultsStreamController = null;\n const toolResultsStream = new ReadableStream({\n start(controller) {\n toolResultsStreamController = controller;\n }\n });\n const outstandingToolResults = /* @__PURE__ */ new Set();\n const toolInputs = /* @__PURE__ */ new Map();\n let canClose = false;\n let finishChunk = void 0;\n function attemptClose() {\n if (canClose && outstandingToolResults.size === 0) {\n if (finishChunk != null) {\n toolResultsStreamController.enqueue(finishChunk);\n }\n toolResultsStreamController.close();\n }\n }\n const forwardStream = new TransformStream({\n async transform(chunk, controller) {\n const chunkType = chunk.type;\n switch (chunkType) {\n case \"stream-start\":\n case \"text-start\":\n case \"text-delta\":\n case \"text-end\":\n case \"reasoning-start\":\n case \"reasoning-delta\":\n case \"reasoning-end\":\n case \"tool-input-start\":\n case \"tool-input-delta\":\n case \"tool-input-end\":\n case \"source\":\n case \"response-metadata\":\n case \"error\":\n case \"raw\": {\n controller.enqueue(chunk);\n break;\n }\n case \"file\": {\n controller.enqueue({\n type: \"file\",\n file: new DefaultGeneratedFileWithType({\n data: chunk.data,\n mediaType: chunk.mediaType\n })\n });\n break;\n }\n case \"finish\": {\n finishChunk = {\n type: \"finish\",\n finishReason: chunk.finishReason,\n usage: chunk.usage,\n providerMetadata: chunk.providerMetadata\n };\n break;\n }\n case \"tool-call\": {\n try {\n const toolCall = await parseToolCall({\n toolCall: chunk,\n tools,\n repairToolCall,\n system,\n messages\n });\n controller.enqueue(toolCall);\n if (toolCall.invalid) {\n toolResultsStreamController.enqueue({\n type: \"tool-error\",\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input: toolCall.input,\n error: getErrorMessage6(toolCall.error),\n dynamic: true\n });\n break;\n }\n const tool2 = tools[toolCall.toolName];\n toolInputs.set(toolCall.toolCallId, toolCall.input);\n if (tool2.onInputAvailable != null) {\n await tool2.onInputAvailable({\n input: toolCall.input,\n toolCallId: toolCall.toolCallId,\n messages,\n abortSignal,\n experimental_context\n });\n }\n if (tool2.execute != null && toolCall.providerExecuted !== true) {\n const toolExecutionId = generateId();\n outstandingToolResults.add(toolExecutionId);\n recordSpan({\n name: \"ai.toolCall\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.toolCall\",\n telemetry\n }),\n \"ai.toolCall.name\": toolCall.toolName,\n \"ai.toolCall.id\": toolCall.toolCallId,\n \"ai.toolCall.args\": {\n output: () => JSON.stringify(toolCall.input)\n }\n }\n }),\n tracer,\n fn: async (span) => {\n let output;\n try {\n const stream = executeTool2({\n execute: tool2.execute.bind(tool2),\n input: toolCall.input,\n options: {\n toolCallId: toolCall.toolCallId,\n messages,\n abortSignal,\n experimental_context\n }\n });\n for await (const part of stream) {\n toolResultsStreamController.enqueue({\n ...toolCall,\n type: \"tool-result\",\n output: part.output,\n ...part.type === \"preliminary\" && {\n preliminary: true\n }\n });\n if (part.type === \"final\") {\n output = part.output;\n }\n }\n } catch (error) {\n recordErrorOnSpan(span, error);\n toolResultsStreamController.enqueue({\n ...toolCall,\n type: \"tool-error\",\n error\n });\n outstandingToolResults.delete(toolExecutionId);\n attemptClose();\n return;\n }\n outstandingToolResults.delete(toolExecutionId);\n attemptClose();\n try {\n span.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.toolCall.result\": {\n output: () => JSON.stringify(output)\n }\n }\n })\n );\n } catch (ignored) {\n }\n }\n });\n }\n } catch (error) {\n toolResultsStreamController.enqueue({ type: \"error\", error });\n }\n break;\n }\n case \"tool-result\": {\n const toolName = chunk.toolName;\n if (chunk.isError) {\n toolResultsStreamController.enqueue({\n type: \"tool-error\",\n toolCallId: chunk.toolCallId,\n toolName,\n input: toolInputs.get(chunk.toolCallId),\n providerExecuted: chunk.providerExecuted,\n error: chunk.result\n });\n } else {\n controller.enqueue({\n type: \"tool-result\",\n toolCallId: chunk.toolCallId,\n toolName,\n input: toolInputs.get(chunk.toolCallId),\n output: chunk.result,\n providerExecuted: chunk.providerExecuted\n });\n }\n break;\n }\n default: {\n const _exhaustiveCheck = chunkType;\n throw new Error(`Unhandled chunk type: ${_exhaustiveCheck}`);\n }\n }\n },\n flush() {\n canClose = true;\n attemptClose();\n }\n });\n return new ReadableStream({\n async start(controller) {\n return Promise.all([\n generatorStream.pipeThrough(forwardStream).pipeTo(\n new WritableStream({\n write(chunk) {\n controller.enqueue(chunk);\n },\n close() {\n }\n })\n ),\n toolResultsStream.pipeTo(\n new WritableStream({\n write(chunk) {\n controller.enqueue(chunk);\n },\n close() {\n controller.close();\n }\n })\n )\n ]);\n }\n });\n}\n\n// src/generate-text/stream-text.ts\nvar originalGenerateId2 = createIdGenerator2({\n prefix: \"aitxt\",\n size: 24\n});\nfunction streamText({\n model,\n tools,\n toolChoice,\n system,\n prompt,\n messages,\n maxRetries,\n abortSignal,\n headers,\n stopWhen = stepCountIs(1),\n experimental_output: output,\n experimental_telemetry: telemetry,\n prepareStep,\n providerOptions,\n experimental_activeTools,\n activeTools = experimental_activeTools,\n experimental_repairToolCall: repairToolCall,\n experimental_transform: transform,\n experimental_download: download2,\n includeRawChunks = false,\n onChunk,\n onError = ({ error }) => {\n console.error(error);\n },\n onFinish,\n onAbort,\n onStepFinish,\n experimental_context,\n _internal: {\n now: now2 = now,\n generateId: generateId3 = originalGenerateId2,\n currentDate = () => /* @__PURE__ */ new Date()\n } = {},\n ...settings\n}) {\n return new DefaultStreamTextResult({\n model: resolveLanguageModel(model),\n telemetry,\n headers,\n settings,\n maxRetries,\n abortSignal,\n system,\n prompt,\n messages,\n tools,\n toolChoice,\n transforms: asArray(transform),\n activeTools,\n repairToolCall,\n stopConditions: asArray(stopWhen),\n output,\n providerOptions,\n prepareStep,\n includeRawChunks,\n onChunk,\n onError,\n onFinish,\n onAbort,\n onStepFinish,\n now: now2,\n currentDate,\n generateId: generateId3,\n experimental_context,\n download: download2\n });\n}\nfunction createOutputTransformStream(output) {\n if (!output) {\n return new TransformStream({\n transform(chunk, controller) {\n controller.enqueue({ part: chunk, partialOutput: void 0 });\n }\n });\n }\n let firstTextChunkId = void 0;\n let text2 = \"\";\n let textChunk = \"\";\n let lastPublishedJson = \"\";\n function publishTextChunk({\n controller,\n partialOutput = void 0\n }) {\n controller.enqueue({\n part: {\n type: \"text-delta\",\n id: firstTextChunkId,\n text: textChunk\n },\n partialOutput\n });\n textChunk = \"\";\n }\n return new TransformStream({\n async transform(chunk, controller) {\n if (chunk.type === \"finish-step\" && textChunk.length > 0) {\n publishTextChunk({ controller });\n }\n if (chunk.type !== \"text-delta\" && chunk.type !== \"text-start\" && chunk.type !== \"text-end\") {\n controller.enqueue({ part: chunk, partialOutput: void 0 });\n return;\n }\n if (firstTextChunkId == null) {\n firstTextChunkId = chunk.id;\n } else if (chunk.id !== firstTextChunkId) {\n controller.enqueue({ part: chunk, partialOutput: void 0 });\n return;\n }\n if (chunk.type === \"text-start\") {\n controller.enqueue({ part: chunk, partialOutput: void 0 });\n return;\n }\n if (chunk.type === \"text-end\") {\n if (textChunk.length > 0) {\n publishTextChunk({ controller });\n }\n controller.enqueue({ part: chunk, partialOutput: void 0 });\n return;\n }\n text2 += chunk.text;\n textChunk += chunk.text;\n const result = await output.parsePartial({ text: text2 });\n if (result != null) {\n const currentJson = JSON.stringify(result.partial);\n if (currentJson !== lastPublishedJson) {\n publishTextChunk({ controller, partialOutput: result.partial });\n lastPublishedJson = currentJson;\n }\n }\n }\n });\n}\nvar DefaultStreamTextResult = class {\n constructor({\n model,\n telemetry,\n headers,\n settings,\n maxRetries: maxRetriesArg,\n abortSignal,\n system,\n prompt,\n messages,\n tools,\n toolChoice,\n transforms,\n activeTools,\n repairToolCall,\n stopConditions,\n output,\n providerOptions,\n prepareStep,\n includeRawChunks,\n now: now2,\n currentDate,\n generateId: generateId3,\n onChunk,\n onError,\n onFinish,\n onAbort,\n onStepFinish,\n experimental_context,\n download: download2\n }) {\n this._totalUsage = new DelayedPromise();\n this._finishReason = new DelayedPromise();\n this._steps = new DelayedPromise();\n this.output = output;\n this.includeRawChunks = includeRawChunks;\n this.tools = tools;\n let stepFinish;\n let recordedContent = [];\n const recordedResponseMessages = [];\n let recordedFinishReason = void 0;\n let recordedTotalUsage = void 0;\n let recordedRequest = {};\n let recordedWarnings = [];\n const recordedSteps = [];\n let rootSpan;\n let activeTextContent = {};\n let activeReasoningContent = {};\n const eventProcessor = new TransformStream({\n async transform(chunk, controller) {\n var _a16, _b, _c, _d;\n controller.enqueue(chunk);\n const { part } = chunk;\n if (part.type === \"text-delta\" || part.type === \"reasoning-delta\" || part.type === \"source\" || part.type === \"tool-call\" || part.type === \"tool-result\" || part.type === \"tool-input-start\" || part.type === \"tool-input-delta\" || part.type === \"raw\") {\n await (onChunk == null ? void 0 : onChunk({ chunk: part }));\n }\n if (part.type === \"error\") {\n await onError({ error: wrapGatewayError(part.error) });\n }\n if (part.type === \"text-start\") {\n activeTextContent[part.id] = {\n type: \"text\",\n text: \"\",\n providerMetadata: part.providerMetadata\n };\n recordedContent.push(activeTextContent[part.id]);\n }\n if (part.type === \"text-delta\") {\n const activeText = activeTextContent[part.id];\n if (activeText == null) {\n controller.enqueue({\n part: {\n type: \"error\",\n error: `text part ${part.id} not found`\n },\n partialOutput: void 0\n });\n return;\n }\n activeText.text += part.text;\n activeText.providerMetadata = (_a16 = part.providerMetadata) != null ? _a16 : activeText.providerMetadata;\n }\n if (part.type === \"text-end\") {\n const activeText = activeTextContent[part.id];\n if (activeText == null) {\n controller.enqueue({\n part: {\n type: \"error\",\n error: `text part ${part.id} not found`\n },\n partialOutput: void 0\n });\n return;\n }\n activeText.providerMetadata = (_b = part.providerMetadata) != null ? _b : activeText.providerMetadata;\n delete activeTextContent[part.id];\n }\n if (part.type === \"reasoning-start\") {\n activeReasoningContent[part.id] = {\n type: \"reasoning\",\n text: \"\",\n providerMetadata: part.providerMetadata\n };\n recordedContent.push(activeReasoningContent[part.id]);\n }\n if (part.type === \"reasoning-delta\") {\n const activeReasoning = activeReasoningContent[part.id];\n if (activeReasoning == null) {\n controller.enqueue({\n part: {\n type: \"error\",\n error: `reasoning part ${part.id} not found`\n },\n partialOutput: void 0\n });\n return;\n }\n activeReasoning.text += part.text;\n activeReasoning.providerMetadata = (_c = part.providerMetadata) != null ? _c : activeReasoning.providerMetadata;\n }\n if (part.type === \"reasoning-end\") {\n const activeReasoning = activeReasoningContent[part.id];\n if (activeReasoning == null) {\n controller.enqueue({\n part: {\n type: \"error\",\n error: `reasoning part ${part.id} not found`\n },\n partialOutput: void 0\n });\n return;\n }\n activeReasoning.providerMetadata = (_d = part.providerMetadata) != null ? _d : activeReasoning.providerMetadata;\n delete activeReasoningContent[part.id];\n }\n if (part.type === \"file\") {\n recordedContent.push({ type: \"file\", file: part.file });\n }\n if (part.type === \"source\") {\n recordedContent.push(part);\n }\n if (part.type === \"tool-call\") {\n recordedContent.push(part);\n }\n if (part.type === \"tool-result\" && !part.preliminary) {\n recordedContent.push(part);\n }\n if (part.type === \"tool-error\") {\n recordedContent.push(part);\n }\n if (part.type === \"start-step\") {\n recordedRequest = part.request;\n recordedWarnings = part.warnings;\n }\n if (part.type === \"finish-step\") {\n const stepMessages = toResponseMessages({\n content: recordedContent,\n tools\n });\n const currentStepResult = new DefaultStepResult({\n content: recordedContent,\n finishReason: part.finishReason,\n usage: part.usage,\n warnings: recordedWarnings,\n request: recordedRequest,\n response: {\n ...part.response,\n messages: [...recordedResponseMessages, ...stepMessages]\n },\n providerMetadata: part.providerMetadata\n });\n await (onStepFinish == null ? void 0 : onStepFinish(currentStepResult));\n logWarnings(recordedWarnings);\n recordedSteps.push(currentStepResult);\n recordedContent = [];\n activeReasoningContent = {};\n activeTextContent = {};\n recordedResponseMessages.push(...stepMessages);\n stepFinish.resolve();\n }\n if (part.type === \"finish\") {\n recordedTotalUsage = part.totalUsage;\n recordedFinishReason = part.finishReason;\n }\n },\n async flush(controller) {\n try {\n if (recordedSteps.length === 0) {\n const error = new NoOutputGeneratedError({\n message: \"No output generated. Check the stream for errors.\"\n });\n self._finishReason.reject(error);\n self._totalUsage.reject(error);\n self._steps.reject(error);\n return;\n }\n const finishReason = recordedFinishReason != null ? recordedFinishReason : \"unknown\";\n const totalUsage = recordedTotalUsage != null ? recordedTotalUsage : {\n inputTokens: void 0,\n outputTokens: void 0,\n totalTokens: void 0\n };\n self._finishReason.resolve(finishReason);\n self._totalUsage.resolve(totalUsage);\n self._steps.resolve(recordedSteps);\n const finalStep = recordedSteps[recordedSteps.length - 1];\n await (onFinish == null ? void 0 : onFinish({\n finishReason,\n totalUsage,\n usage: finalStep.usage,\n content: finalStep.content,\n text: finalStep.text,\n reasoningText: finalStep.reasoningText,\n reasoning: finalStep.reasoning,\n files: finalStep.files,\n sources: finalStep.sources,\n toolCalls: finalStep.toolCalls,\n staticToolCalls: finalStep.staticToolCalls,\n dynamicToolCalls: finalStep.dynamicToolCalls,\n toolResults: finalStep.toolResults,\n staticToolResults: finalStep.staticToolResults,\n dynamicToolResults: finalStep.dynamicToolResults,\n request: finalStep.request,\n response: finalStep.response,\n warnings: finalStep.warnings,\n providerMetadata: finalStep.providerMetadata,\n steps: recordedSteps\n }));\n rootSpan.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.response.finishReason\": finishReason,\n \"ai.response.text\": { output: () => finalStep.text },\n \"ai.response.toolCalls\": {\n output: () => {\n var _a16;\n return ((_a16 = finalStep.toolCalls) == null ? void 0 : _a16.length) ? JSON.stringify(finalStep.toolCalls) : void 0;\n }\n },\n \"ai.response.providerMetadata\": JSON.stringify(\n finalStep.providerMetadata\n ),\n \"ai.usage.inputTokens\": totalUsage.inputTokens,\n \"ai.usage.outputTokens\": totalUsage.outputTokens,\n \"ai.usage.totalTokens\": totalUsage.totalTokens,\n \"ai.usage.reasoningTokens\": totalUsage.reasoningTokens,\n \"ai.usage.cachedInputTokens\": totalUsage.cachedInputTokens\n }\n })\n );\n } catch (error) {\n controller.error(error);\n } finally {\n rootSpan.end();\n }\n }\n });\n const stitchableStream = createStitchableStream();\n this.addStream = stitchableStream.addStream;\n this.closeStream = stitchableStream.close;\n const reader = stitchableStream.stream.getReader();\n let stream = new ReadableStream({\n async start(controller) {\n controller.enqueue({ type: \"start\" });\n },\n async pull(controller) {\n function abort() {\n onAbort == null ? void 0 : onAbort({ steps: recordedSteps });\n controller.enqueue({ type: \"abort\" });\n controller.close();\n }\n try {\n const { done, value } = await reader.read();\n if (done) {\n controller.close();\n return;\n }\n if (abortSignal == null ? void 0 : abortSignal.aborted) {\n abort();\n return;\n }\n controller.enqueue(value);\n } catch (error) {\n if (isAbortError2(error) && (abortSignal == null ? void 0 : abortSignal.aborted)) {\n abort();\n } else {\n controller.error(error);\n }\n }\n },\n cancel(reason) {\n return stitchableStream.stream.cancel(reason);\n }\n });\n for (const transform of transforms) {\n stream = stream.pipeThrough(\n transform({\n tools,\n stopStream() {\n stitchableStream.terminate();\n }\n })\n );\n }\n this.baseStream = stream.pipeThrough(createOutputTransformStream(output)).pipeThrough(eventProcessor);\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const tracer = getTracer(telemetry);\n const callSettings = prepareCallSettings(settings);\n const baseTelemetryAttributes = getBaseTelemetryAttributes({\n model,\n telemetry,\n headers,\n settings: { ...callSettings, maxRetries }\n });\n const self = this;\n recordSpan({\n name: \"ai.streamText\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({ operationId: \"ai.streamText\", telemetry }),\n ...baseTelemetryAttributes,\n // specific settings that only make sense on the outer level:\n \"ai.prompt\": {\n input: () => JSON.stringify({ system, prompt, messages })\n }\n }\n }),\n tracer,\n endWhenDone: false,\n fn: async (rootSpanArg) => {\n rootSpan = rootSpanArg;\n async function streamStep({\n currentStep,\n responseMessages,\n usage\n }) {\n var _a16, _b, _c, _d, _e;\n const includeRawChunks2 = self.includeRawChunks;\n stepFinish = new DelayedPromise();\n const initialPrompt = await standardizePrompt({\n system,\n prompt,\n messages\n });\n const stepInputMessages = [\n ...initialPrompt.messages,\n ...responseMessages\n ];\n const prepareStepResult = await (prepareStep == null ? void 0 : prepareStep({\n model,\n steps: recordedSteps,\n stepNumber: recordedSteps.length,\n messages: stepInputMessages\n }));\n const stepModel = resolveLanguageModel(\n (_a16 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a16 : model\n );\n const promptMessages = await convertToLanguageModelPrompt({\n prompt: {\n system: (_b = prepareStepResult == null ? void 0 : prepareStepResult.system) != null ? _b : initialPrompt.system,\n messages: (_c = prepareStepResult == null ? void 0 : prepareStepResult.messages) != null ? _c : stepInputMessages\n },\n supportedUrls: await stepModel.supportedUrls,\n download: download2\n });\n const { toolChoice: stepToolChoice, tools: stepTools } = prepareToolsAndToolChoice({\n tools,\n toolChoice: (_d = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _d : toolChoice,\n activeTools: (_e = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _e : activeTools\n });\n const {\n result: { stream: stream2, response, request },\n doStreamSpan,\n startTimestampMs\n } = await retry(\n () => recordSpan({\n name: \"ai.streamText.doStream\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.streamText.doStream\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n // model:\n \"ai.model.provider\": stepModel.provider,\n \"ai.model.id\": stepModel.modelId,\n // prompt:\n \"ai.prompt.messages\": {\n input: () => stringifyForTelemetry(promptMessages)\n },\n \"ai.prompt.tools\": {\n // convert the language model level tools:\n input: () => stepTools == null ? void 0 : stepTools.map((tool2) => JSON.stringify(tool2))\n },\n \"ai.prompt.toolChoice\": {\n input: () => stepToolChoice != null ? JSON.stringify(stepToolChoice) : void 0\n },\n // standardized gen-ai llm span attributes:\n \"gen_ai.system\": stepModel.provider,\n \"gen_ai.request.model\": stepModel.modelId,\n \"gen_ai.request.frequency_penalty\": callSettings.frequencyPenalty,\n \"gen_ai.request.max_tokens\": callSettings.maxOutputTokens,\n \"gen_ai.request.presence_penalty\": callSettings.presencePenalty,\n \"gen_ai.request.stop_sequences\": callSettings.stopSequences,\n \"gen_ai.request.temperature\": callSettings.temperature,\n \"gen_ai.request.top_k\": callSettings.topK,\n \"gen_ai.request.top_p\": callSettings.topP\n }\n }),\n tracer,\n endWhenDone: false,\n fn: async (doStreamSpan2) => {\n return {\n startTimestampMs: now2(),\n // get before the call\n doStreamSpan: doStreamSpan2,\n result: await stepModel.doStream({\n ...callSettings,\n tools: stepTools,\n toolChoice: stepToolChoice,\n responseFormat: output == null ? void 0 : output.responseFormat,\n prompt: promptMessages,\n providerOptions,\n abortSignal,\n headers,\n includeRawChunks: includeRawChunks2\n })\n };\n }\n })\n );\n const streamWithToolResults = runToolsTransformation({\n tools,\n generatorStream: stream2,\n tracer,\n telemetry,\n system,\n messages: stepInputMessages,\n repairToolCall,\n abortSignal,\n experimental_context\n });\n const stepRequest = request != null ? request : {};\n const stepToolCalls = [];\n const stepToolOutputs = [];\n let warnings;\n const activeToolCallToolNames = {};\n let stepFinishReason = \"unknown\";\n let stepUsage = {\n inputTokens: void 0,\n outputTokens: void 0,\n totalTokens: void 0\n };\n let stepProviderMetadata;\n let stepFirstChunk = true;\n let stepResponse = {\n id: generateId3(),\n timestamp: currentDate(),\n modelId: model.modelId\n };\n let activeText = \"\";\n self.addStream(\n streamWithToolResults.pipeThrough(\n new TransformStream({\n async transform(chunk, controller) {\n var _a17, _b2, _c2, _d2;\n if (chunk.type === \"stream-start\") {\n warnings = chunk.warnings;\n return;\n }\n if (stepFirstChunk) {\n const msToFirstChunk = now2() - startTimestampMs;\n stepFirstChunk = false;\n doStreamSpan.addEvent(\"ai.stream.firstChunk\", {\n \"ai.response.msToFirstChunk\": msToFirstChunk\n });\n doStreamSpan.setAttributes({\n \"ai.response.msToFirstChunk\": msToFirstChunk\n });\n controller.enqueue({\n type: \"start-step\",\n request: stepRequest,\n warnings: warnings != null ? warnings : []\n });\n }\n const chunkType = chunk.type;\n switch (chunkType) {\n case \"text-start\":\n case \"text-end\": {\n controller.enqueue(chunk);\n break;\n }\n case \"text-delta\": {\n if (chunk.delta.length > 0) {\n controller.enqueue({\n type: \"text-delta\",\n id: chunk.id,\n text: chunk.delta,\n providerMetadata: chunk.providerMetadata\n });\n activeText += chunk.delta;\n }\n break;\n }\n case \"reasoning-start\":\n case \"reasoning-end\": {\n controller.enqueue(chunk);\n break;\n }\n case \"reasoning-delta\": {\n controller.enqueue({\n type: \"reasoning-delta\",\n id: chunk.id,\n text: chunk.delta,\n providerMetadata: chunk.providerMetadata\n });\n break;\n }\n case \"tool-call\": {\n controller.enqueue(chunk);\n stepToolCalls.push(chunk);\n break;\n }\n case \"tool-result\": {\n controller.enqueue(chunk);\n if (!chunk.preliminary) {\n stepToolOutputs.push(chunk);\n }\n break;\n }\n case \"tool-error\": {\n controller.enqueue(chunk);\n stepToolOutputs.push(chunk);\n break;\n }\n case \"response-metadata\": {\n stepResponse = {\n id: (_a17 = chunk.id) != null ? _a17 : stepResponse.id,\n timestamp: (_b2 = chunk.timestamp) != null ? _b2 : stepResponse.timestamp,\n modelId: (_c2 = chunk.modelId) != null ? _c2 : stepResponse.modelId\n };\n break;\n }\n case \"finish\": {\n stepUsage = chunk.usage;\n stepFinishReason = chunk.finishReason;\n stepProviderMetadata = chunk.providerMetadata;\n const msToFinish = now2() - startTimestampMs;\n doStreamSpan.addEvent(\"ai.stream.finish\");\n doStreamSpan.setAttributes({\n \"ai.response.msToFinish\": msToFinish,\n \"ai.response.avgOutputTokensPerSecond\": 1e3 * ((_d2 = stepUsage.outputTokens) != null ? _d2 : 0) / msToFinish\n });\n break;\n }\n case \"file\": {\n controller.enqueue(chunk);\n break;\n }\n case \"source\": {\n controller.enqueue(chunk);\n break;\n }\n case \"tool-input-start\": {\n activeToolCallToolNames[chunk.id] = chunk.toolName;\n const tool2 = tools == null ? void 0 : tools[chunk.toolName];\n if ((tool2 == null ? void 0 : tool2.onInputStart) != null) {\n await tool2.onInputStart({\n toolCallId: chunk.id,\n messages: stepInputMessages,\n abortSignal,\n experimental_context\n });\n }\n controller.enqueue({\n ...chunk,\n dynamic: (tool2 == null ? void 0 : tool2.type) === \"dynamic\"\n });\n break;\n }\n case \"tool-input-end\": {\n delete activeToolCallToolNames[chunk.id];\n controller.enqueue(chunk);\n break;\n }\n case \"tool-input-delta\": {\n const toolName = activeToolCallToolNames[chunk.id];\n const tool2 = tools == null ? void 0 : tools[toolName];\n if ((tool2 == null ? void 0 : tool2.onInputDelta) != null) {\n await tool2.onInputDelta({\n inputTextDelta: chunk.delta,\n toolCallId: chunk.id,\n messages: stepInputMessages,\n abortSignal,\n experimental_context\n });\n }\n controller.enqueue(chunk);\n break;\n }\n case \"error\": {\n controller.enqueue(chunk);\n stepFinishReason = \"error\";\n break;\n }\n case \"raw\": {\n if (includeRawChunks2) {\n controller.enqueue(chunk);\n }\n break;\n }\n default: {\n const exhaustiveCheck = chunkType;\n throw new Error(`Unknown chunk type: ${exhaustiveCheck}`);\n }\n }\n },\n // invoke onFinish callback and resolve toolResults promise when the stream is about to close:\n async flush(controller) {\n const stepToolCallsJson = stepToolCalls.length > 0 ? JSON.stringify(stepToolCalls) : void 0;\n try {\n doStreamSpan.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.response.finishReason\": stepFinishReason,\n \"ai.response.text\": {\n output: () => activeText\n },\n \"ai.response.toolCalls\": {\n output: () => stepToolCallsJson\n },\n \"ai.response.id\": stepResponse.id,\n \"ai.response.model\": stepResponse.modelId,\n \"ai.response.timestamp\": stepResponse.timestamp.toISOString(),\n \"ai.response.providerMetadata\": JSON.stringify(stepProviderMetadata),\n \"ai.usage.inputTokens\": stepUsage.inputTokens,\n \"ai.usage.outputTokens\": stepUsage.outputTokens,\n \"ai.usage.totalTokens\": stepUsage.totalTokens,\n \"ai.usage.reasoningTokens\": stepUsage.reasoningTokens,\n \"ai.usage.cachedInputTokens\": stepUsage.cachedInputTokens,\n // standardized gen-ai llm span attributes:\n \"gen_ai.response.finish_reasons\": [stepFinishReason],\n \"gen_ai.response.id\": stepResponse.id,\n \"gen_ai.response.model\": stepResponse.modelId,\n \"gen_ai.usage.input_tokens\": stepUsage.inputTokens,\n \"gen_ai.usage.output_tokens\": stepUsage.outputTokens\n }\n })\n );\n } catch (error) {\n } finally {\n doStreamSpan.end();\n }\n controller.enqueue({\n type: \"finish-step\",\n finishReason: stepFinishReason,\n usage: stepUsage,\n providerMetadata: stepProviderMetadata,\n response: {\n ...stepResponse,\n headers: response == null ? void 0 : response.headers\n }\n });\n const combinedUsage = addLanguageModelUsage(usage, stepUsage);\n await stepFinish.promise;\n const clientToolCalls = stepToolCalls.filter(\n (toolCall) => toolCall.providerExecuted !== true\n );\n const clientToolOutputs = stepToolOutputs.filter(\n (toolOutput) => toolOutput.providerExecuted !== true\n );\n if (clientToolCalls.length > 0 && // all current tool calls have outputs (incl. execution errors):\n clientToolOutputs.length === clientToolCalls.length && // continue until a stop condition is met:\n !await isStopConditionMet({\n stopConditions,\n steps: recordedSteps\n })) {\n responseMessages.push(\n ...toResponseMessages({\n content: (\n // use transformed content to create the messages for the next step:\n recordedSteps[recordedSteps.length - 1].content\n ),\n tools\n })\n );\n try {\n await streamStep({\n currentStep: currentStep + 1,\n responseMessages,\n usage: combinedUsage\n });\n } catch (error) {\n controller.enqueue({\n type: \"error\",\n error\n });\n self.closeStream();\n }\n } else {\n controller.enqueue({\n type: \"finish\",\n finishReason: stepFinishReason,\n totalUsage: combinedUsage\n });\n self.closeStream();\n }\n }\n })\n )\n );\n }\n await streamStep({\n currentStep: 0,\n responseMessages: [],\n usage: {\n inputTokens: void 0,\n outputTokens: void 0,\n totalTokens: void 0\n }\n });\n }\n }).catch((error) => {\n self.addStream(\n new ReadableStream({\n start(controller) {\n controller.enqueue({ type: \"error\", error });\n controller.close();\n }\n })\n );\n self.closeStream();\n });\n }\n get steps() {\n this.consumeStream();\n return this._steps.promise;\n }\n get finalStep() {\n return this.steps.then((steps) => steps[steps.length - 1]);\n }\n get content() {\n return this.finalStep.then((step) => step.content);\n }\n get warnings() {\n return this.finalStep.then((step) => step.warnings);\n }\n get providerMetadata() {\n return this.finalStep.then((step) => step.providerMetadata);\n }\n get text() {\n return this.finalStep.then((step) => step.text);\n }\n get reasoningText() {\n return this.finalStep.then((step) => step.reasoningText);\n }\n get reasoning() {\n return this.finalStep.then((step) => step.reasoning);\n }\n get sources() {\n return this.finalStep.then((step) => step.sources);\n }\n get files() {\n return this.finalStep.then((step) => step.files);\n }\n get toolCalls() {\n return this.finalStep.then((step) => step.toolCalls);\n }\n get staticToolCalls() {\n return this.finalStep.then((step) => step.staticToolCalls);\n }\n get dynamicToolCalls() {\n return this.finalStep.then((step) => step.dynamicToolCalls);\n }\n get toolResults() {\n return this.finalStep.then((step) => step.toolResults);\n }\n get staticToolResults() {\n return this.finalStep.then((step) => step.staticToolResults);\n }\n get dynamicToolResults() {\n return this.finalStep.then((step) => step.dynamicToolResults);\n }\n get usage() {\n return this.finalStep.then((step) => step.usage);\n }\n get request() {\n return this.finalStep.then((step) => step.request);\n }\n get response() {\n return this.finalStep.then((step) => step.response);\n }\n get totalUsage() {\n this.consumeStream();\n return this._totalUsage.promise;\n }\n get finishReason() {\n this.consumeStream();\n return this._finishReason.promise;\n }\n /**\n Split out a new stream from the original stream.\n The original stream is replaced to allow for further splitting,\n since we do not know how many times the stream will be split.\n \n Note: this leads to buffering the stream content on the server.\n However, the LLM results are expected to be small enough to not cause issues.\n */\n teeStream() {\n const [stream1, stream2] = this.baseStream.tee();\n this.baseStream = stream2;\n return stream1;\n }\n get textStream() {\n return createAsyncIterableStream(\n this.teeStream().pipeThrough(\n new TransformStream({\n transform({ part }, controller) {\n if (part.type === \"text-delta\") {\n controller.enqueue(part.text);\n }\n }\n })\n )\n );\n }\n get fullStream() {\n return createAsyncIterableStream(\n this.teeStream().pipeThrough(\n new TransformStream({\n transform({ part }, controller) {\n controller.enqueue(part);\n }\n })\n )\n );\n }\n async consumeStream(options) {\n var _a16;\n try {\n await consumeStream({\n stream: this.fullStream,\n onError: options == null ? void 0 : options.onError\n });\n } catch (error) {\n (_a16 = options == null ? void 0 : options.onError) == null ? void 0 : _a16.call(options, error);\n }\n }\n get experimental_partialOutputStream() {\n if (this.output == null) {\n throw new NoOutputSpecifiedError();\n }\n return createAsyncIterableStream(\n this.teeStream().pipeThrough(\n new TransformStream({\n transform({ partialOutput }, controller) {\n if (partialOutput != null) {\n controller.enqueue(partialOutput);\n }\n }\n })\n )\n );\n }\n toUIMessageStream({\n originalMessages,\n generateMessageId,\n onFinish,\n messageMetadata,\n sendReasoning = true,\n sendSources = false,\n sendStart = true,\n sendFinish = true,\n onError = getErrorMessage7\n } = {}) {\n const responseMessageId = generateMessageId != null ? getResponseUIMessageId({\n originalMessages,\n responseMessageId: generateMessageId\n }) : void 0;\n const toolNamesByCallId = {};\n const isDynamic = (toolCallId) => {\n var _a16, _b;\n const toolName = toolNamesByCallId[toolCallId];\n const dynamic = ((_b = (_a16 = this.tools) == null ? void 0 : _a16[toolName]) == null ? void 0 : _b.type) === \"dynamic\";\n return dynamic ? true : void 0;\n };\n const baseStream = this.fullStream.pipeThrough(\n new TransformStream({\n transform: async (part, controller) => {\n const messageMetadataValue = messageMetadata == null ? void 0 : messageMetadata({ part });\n const partType = part.type;\n switch (partType) {\n case \"text-start\": {\n controller.enqueue({\n type: \"text-start\",\n id: part.id,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n });\n break;\n }\n case \"text-delta\": {\n controller.enqueue({\n type: \"text-delta\",\n id: part.id,\n delta: part.text,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n });\n break;\n }\n case \"text-end\": {\n controller.enqueue({\n type: \"text-end\",\n id: part.id,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n });\n break;\n }\n case \"reasoning-start\": {\n controller.enqueue({\n type: \"reasoning-start\",\n id: part.id,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n });\n break;\n }\n case \"reasoning-delta\": {\n if (sendReasoning) {\n controller.enqueue({\n type: \"reasoning-delta\",\n id: part.id,\n delta: part.text,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n });\n }\n break;\n }\n case \"reasoning-end\": {\n controller.enqueue({\n type: \"reasoning-end\",\n id: part.id,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n });\n break;\n }\n case \"file\": {\n controller.enqueue({\n type: \"file\",\n mediaType: part.file.mediaType,\n url: `data:${part.file.mediaType};base64,${part.file.base64}`\n });\n break;\n }\n case \"source\": {\n if (sendSources && part.sourceType === \"url\") {\n controller.enqueue({\n type: \"source-url\",\n sourceId: part.id,\n url: part.url,\n title: part.title,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n });\n }\n if (sendSources && part.sourceType === \"document\") {\n controller.enqueue({\n type: \"source-document\",\n sourceId: part.id,\n mediaType: part.mediaType,\n title: part.title,\n filename: part.filename,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n });\n }\n break;\n }\n case \"tool-input-start\": {\n toolNamesByCallId[part.id] = part.toolName;\n const dynamic = isDynamic(part.id);\n controller.enqueue({\n type: \"tool-input-start\",\n toolCallId: part.id,\n toolName: part.toolName,\n ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},\n ...dynamic != null ? { dynamic } : {}\n });\n break;\n }\n case \"tool-input-delta\": {\n controller.enqueue({\n type: \"tool-input-delta\",\n toolCallId: part.id,\n inputTextDelta: part.delta\n });\n break;\n }\n case \"tool-call\": {\n toolNamesByCallId[part.toolCallId] = part.toolName;\n const dynamic = isDynamic(part.toolCallId);\n if (part.invalid) {\n controller.enqueue({\n type: \"tool-input-error\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n input: part.input,\n ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {},\n ...dynamic != null ? { dynamic } : {},\n errorText: onError(part.error)\n });\n } else {\n controller.enqueue({\n type: \"tool-input-available\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n input: part.input,\n ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {},\n ...dynamic != null ? { dynamic } : {}\n });\n }\n break;\n }\n case \"tool-result\": {\n const dynamic = isDynamic(part.toolCallId);\n controller.enqueue({\n type: \"tool-output-available\",\n toolCallId: part.toolCallId,\n output: part.output,\n ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},\n ...part.preliminary != null ? { preliminary: part.preliminary } : {},\n ...dynamic != null ? { dynamic } : {}\n });\n break;\n }\n case \"tool-error\": {\n const dynamic = isDynamic(part.toolCallId);\n controller.enqueue({\n type: \"tool-output-error\",\n toolCallId: part.toolCallId,\n errorText: onError(part.error),\n ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},\n ...dynamic != null ? { dynamic } : {}\n });\n break;\n }\n case \"error\": {\n controller.enqueue({\n type: \"error\",\n errorText: onError(part.error)\n });\n break;\n }\n case \"start-step\": {\n controller.enqueue({ type: \"start-step\" });\n break;\n }\n case \"finish-step\": {\n controller.enqueue({ type: \"finish-step\" });\n break;\n }\n case \"start\": {\n if (sendStart) {\n controller.enqueue({\n type: \"start\",\n ...messageMetadataValue != null ? { messageMetadata: messageMetadataValue } : {},\n ...responseMessageId != null ? { messageId: responseMessageId } : {}\n });\n }\n break;\n }\n case \"finish\": {\n if (sendFinish) {\n controller.enqueue({\n type: \"finish\",\n ...messageMetadataValue != null ? { messageMetadata: messageMetadataValue } : {}\n });\n }\n break;\n }\n case \"abort\": {\n controller.enqueue(part);\n break;\n }\n case \"tool-input-end\": {\n break;\n }\n case \"raw\": {\n break;\n }\n default: {\n const exhaustiveCheck = partType;\n throw new Error(`Unknown chunk type: ${exhaustiveCheck}`);\n }\n }\n if (messageMetadataValue != null && partType !== \"start\" && partType !== \"finish\") {\n controller.enqueue({\n type: \"message-metadata\",\n messageMetadata: messageMetadataValue\n });\n }\n }\n })\n );\n return createAsyncIterableStream(\n handleUIMessageStreamFinish({\n stream: baseStream,\n messageId: responseMessageId != null ? responseMessageId : generateMessageId == null ? void 0 : generateMessageId(),\n originalMessages,\n onFinish,\n onError\n })\n );\n }\n pipeUIMessageStreamToResponse(response, {\n originalMessages,\n generateMessageId,\n onFinish,\n messageMetadata,\n sendReasoning,\n sendSources,\n sendFinish,\n sendStart,\n onError,\n ...init\n } = {}) {\n pipeUIMessageStreamToResponse({\n response,\n stream: this.toUIMessageStream({\n originalMessages,\n generateMessageId,\n onFinish,\n messageMetadata,\n sendReasoning,\n sendSources,\n sendFinish,\n sendStart,\n onError\n }),\n ...init\n });\n }\n pipeTextStreamToResponse(response, init) {\n pipeTextStreamToResponse({\n response,\n textStream: this.textStream,\n ...init\n });\n }\n toUIMessageStreamResponse({\n originalMessages,\n generateMessageId,\n onFinish,\n messageMetadata,\n sendReasoning,\n sendSources,\n sendFinish,\n sendStart,\n onError,\n ...init\n } = {}) {\n return createUIMessageStreamResponse({\n stream: this.toUIMessageStream({\n originalMessages,\n generateMessageId,\n onFinish,\n messageMetadata,\n sendReasoning,\n sendSources,\n sendFinish,\n sendStart,\n onError\n }),\n ...init\n });\n }\n toTextStreamResponse(init) {\n return createTextStreamResponse({\n textStream: this.textStream,\n ...init\n });\n }\n};\n\n// src/ui/convert-to-model-messages.ts\nfunction convertToModelMessages(messages, options) {\n const modelMessages = [];\n if (options == null ? void 0 : options.ignoreIncompleteToolCalls) {\n messages = messages.map((message) => ({\n ...message,\n parts: message.parts.filter(\n (part) => !isToolOrDynamicToolUIPart(part) || part.state !== \"input-streaming\" && part.state !== \"input-available\"\n )\n }));\n }\n for (const message of messages) {\n switch (message.role) {\n case \"system\": {\n const textParts = message.parts.filter(\n (part) => part.type === \"text\"\n );\n const providerMetadata = textParts.reduce((acc, part) => {\n if (part.providerMetadata != null) {\n return { ...acc, ...part.providerMetadata };\n }\n return acc;\n }, {});\n modelMessages.push({\n role: \"system\",\n content: textParts.map((part) => part.text).join(\"\"),\n ...Object.keys(providerMetadata).length > 0 ? { providerOptions: providerMetadata } : {}\n });\n break;\n }\n case \"user\": {\n modelMessages.push({\n role: \"user\",\n content: message.parts.map((part) => {\n var _a16;\n if (isTextUIPart(part)) {\n return {\n type: \"text\",\n text: part.text,\n ...part.providerMetadata != null ? { providerOptions: part.providerMetadata } : {}\n };\n }\n if (isFileUIPart(part)) {\n return {\n type: \"file\",\n mediaType: part.mediaType,\n filename: part.filename,\n data: part.url,\n ...part.providerMetadata != null ? { providerOptions: part.providerMetadata } : {}\n };\n }\n if (isDataUIPart(part)) {\n return (_a16 = options == null ? void 0 : options.convertDataPart) == null ? void 0 : _a16.call(\n options,\n part\n );\n }\n }).filter((part) => part != null)\n });\n break;\n }\n case \"assistant\": {\n if (message.parts != null) {\n let processBlock2 = function() {\n var _a16, _b, _c;\n if (block.length === 0) {\n return;\n }\n const content = [];\n for (const part of block) {\n if (isTextUIPart(part)) {\n content.push({\n type: \"text\",\n text: part.text,\n ...part.providerMetadata != null ? { providerOptions: part.providerMetadata } : {}\n });\n } else if (isFileUIPart(part)) {\n content.push({\n type: \"file\",\n mediaType: part.mediaType,\n filename: part.filename,\n data: part.url\n });\n } else if (isReasoningUIPart(part)) {\n content.push({\n type: \"reasoning\",\n text: part.text,\n providerOptions: part.providerMetadata\n });\n } else if (isDynamicToolUIPart(part)) {\n const toolName = part.toolName;\n if (part.state !== \"input-streaming\") {\n content.push({\n type: \"tool-call\",\n toolCallId: part.toolCallId,\n toolName,\n input: part.input,\n ...part.callProviderMetadata != null ? { providerOptions: part.callProviderMetadata } : {}\n });\n }\n } else if (isToolUIPart(part)) {\n const toolName = getToolName(part);\n if (part.state !== \"input-streaming\") {\n content.push({\n type: \"tool-call\",\n toolCallId: part.toolCallId,\n toolName,\n input: part.state === \"output-error\" ? (_a16 = part.input) != null ? _a16 : part.rawInput : part.input,\n providerExecuted: part.providerExecuted,\n ...part.callProviderMetadata != null ? { providerOptions: part.callProviderMetadata } : {}\n });\n if (part.providerExecuted === true && (part.state === \"output-available\" || part.state === \"output-error\")) {\n content.push({\n type: \"tool-result\",\n toolCallId: part.toolCallId,\n toolName,\n output: createToolModelOutput({\n output: part.state === \"output-error\" ? part.errorText : part.output,\n tool: (_b = options == null ? void 0 : options.tools) == null ? void 0 : _b[toolName],\n errorMode: part.state === \"output-error\" ? \"json\" : \"none\"\n })\n });\n }\n }\n } else if (isDataUIPart(part)) {\n const dataPart = (_c = options == null ? void 0 : options.convertDataPart) == null ? void 0 : _c.call(\n options,\n part\n );\n if (dataPart != null) {\n content.push(dataPart);\n }\n } else {\n const _exhaustiveCheck = part;\n throw new Error(`Unsupported part: ${_exhaustiveCheck}`);\n }\n }\n modelMessages.push({\n role: \"assistant\",\n content\n });\n const toolParts = block.filter(\n (part) => isToolUIPart(part) && part.providerExecuted !== true || part.type === \"dynamic-tool\"\n );\n if (toolParts.length > 0) {\n modelMessages.push({\n role: \"tool\",\n content: toolParts.map((toolPart) => {\n var _a17;\n switch (toolPart.state) {\n case \"output-error\":\n case \"output-available\": {\n const toolName = getToolOrDynamicToolName(toolPart);\n return {\n type: \"tool-result\",\n toolCallId: toolPart.toolCallId,\n toolName,\n output: createToolModelOutput({\n output: toolPart.state === \"output-error\" ? toolPart.errorText : toolPart.output,\n tool: (_a17 = options == null ? void 0 : options.tools) == null ? void 0 : _a17[toolName],\n errorMode: toolPart.state === \"output-error\" ? \"text\" : \"none\"\n })\n };\n }\n default: {\n return null;\n }\n }\n }).filter(\n (output) => output != null\n )\n });\n }\n block = [];\n };\n var processBlock = processBlock2;\n let block = [];\n for (const part of message.parts) {\n if (isTextUIPart(part) || isReasoningUIPart(part) || isFileUIPart(part) || isToolOrDynamicToolUIPart(part) || isDataUIPart(part)) {\n block.push(part);\n } else if (part.type === \"step-start\") {\n processBlock2();\n }\n }\n processBlock2();\n break;\n }\n break;\n }\n default: {\n const _exhaustiveCheck = message.role;\n throw new MessageConversionError({\n originalMessage: message,\n message: `Unsupported role: ${_exhaustiveCheck}`\n });\n }\n }\n }\n return modelMessages;\n}\nvar convertToCoreMessages = convertToModelMessages;\n\n// src/agent/agent.ts\nvar Agent = class {\n constructor(settings) {\n this.settings = settings;\n }\n get tools() {\n return this.settings.tools;\n }\n async generate(options) {\n return generateText({ ...this.settings, ...options });\n }\n stream(options) {\n return streamText({ ...this.settings, ...options });\n }\n /**\n * Creates a response object that streams UI messages to the client.\n */\n respond(options) {\n return this.stream({\n prompt: convertToModelMessages(options.messages)\n }).toUIMessageStreamResponse();\n }\n};\n\n// src/embed/embed.ts\nimport { withUserAgentSuffix as withUserAgentSuffix3 } from \"@ai-sdk/provider-utils\";\nasync function embed({\n model: modelArg,\n value,\n providerOptions,\n maxRetries: maxRetriesArg,\n abortSignal,\n headers,\n experimental_telemetry: telemetry\n}) {\n const model = resolveEmbeddingModel(modelArg);\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const headersWithUserAgent = withUserAgentSuffix3(\n headers != null ? headers : {},\n `ai/${VERSION}`\n );\n const baseTelemetryAttributes = getBaseTelemetryAttributes({\n model,\n telemetry,\n headers: headersWithUserAgent,\n settings: { maxRetries }\n });\n const tracer = getTracer(telemetry);\n return recordSpan({\n name: \"ai.embed\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({ operationId: \"ai.embed\", telemetry }),\n ...baseTelemetryAttributes,\n \"ai.value\": { input: () => JSON.stringify(value) }\n }\n }),\n tracer,\n fn: async (span) => {\n const { embedding, usage, response, providerMetadata } = await retry(\n () => (\n // nested spans to align with the embedMany telemetry data:\n recordSpan({\n name: \"ai.embed.doEmbed\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.embed.doEmbed\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n // specific settings that only make sense on the outer level:\n \"ai.values\": { input: () => [JSON.stringify(value)] }\n }\n }),\n tracer,\n fn: async (doEmbedSpan) => {\n var _a16;\n const modelResponse = await model.doEmbed({\n values: [value],\n abortSignal,\n headers: headersWithUserAgent,\n providerOptions\n });\n const embedding2 = modelResponse.embeddings[0];\n const usage2 = (_a16 = modelResponse.usage) != null ? _a16 : { tokens: NaN };\n doEmbedSpan.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.embeddings\": {\n output: () => modelResponse.embeddings.map(\n (embedding3) => JSON.stringify(embedding3)\n )\n },\n \"ai.usage.tokens\": usage2.tokens\n }\n })\n );\n return {\n embedding: embedding2,\n usage: usage2,\n providerMetadata: modelResponse.providerMetadata,\n response: modelResponse.response\n };\n }\n })\n )\n );\n span.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.embedding\": { output: () => JSON.stringify(embedding) },\n \"ai.usage.tokens\": usage.tokens\n }\n })\n );\n return new DefaultEmbedResult({\n value,\n embedding,\n usage,\n providerMetadata,\n response\n });\n }\n });\n}\nvar DefaultEmbedResult = class {\n constructor(options) {\n this.value = options.value;\n this.embedding = options.embedding;\n this.usage = options.usage;\n this.providerMetadata = options.providerMetadata;\n this.response = options.response;\n }\n};\n\n// src/embed/embed-many.ts\nimport { withUserAgentSuffix as withUserAgentSuffix4 } from \"@ai-sdk/provider-utils\";\n\n// src/util/split-array.ts\nfunction splitArray(array, chunkSize) {\n if (chunkSize <= 0) {\n throw new Error(\"chunkSize must be greater than 0\");\n }\n const result = [];\n for (let i = 0; i < array.length; i += chunkSize) {\n result.push(array.slice(i, i + chunkSize));\n }\n return result;\n}\n\n// src/embed/embed-many.ts\nasync function embedMany({\n model: modelArg,\n values,\n maxParallelCalls = Infinity,\n maxRetries: maxRetriesArg,\n abortSignal,\n headers,\n providerOptions,\n experimental_telemetry: telemetry\n}) {\n const model = resolveEmbeddingModel(modelArg);\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const headersWithUserAgent = withUserAgentSuffix4(\n headers != null ? headers : {},\n `ai/${VERSION}`\n );\n const baseTelemetryAttributes = getBaseTelemetryAttributes({\n model,\n telemetry,\n headers: headersWithUserAgent,\n settings: { maxRetries }\n });\n const tracer = getTracer(telemetry);\n return recordSpan({\n name: \"ai.embedMany\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({ operationId: \"ai.embedMany\", telemetry }),\n ...baseTelemetryAttributes,\n // specific settings that only make sense on the outer level:\n \"ai.values\": {\n input: () => values.map((value) => JSON.stringify(value))\n }\n }\n }),\n tracer,\n fn: async (span) => {\n var _a16;\n const [maxEmbeddingsPerCall, supportsParallelCalls] = await Promise.all([\n model.maxEmbeddingsPerCall,\n model.supportsParallelCalls\n ]);\n if (maxEmbeddingsPerCall == null || maxEmbeddingsPerCall === Infinity) {\n const { embeddings: embeddings2, usage, response, providerMetadata: providerMetadata2 } = await retry(\n () => {\n return recordSpan({\n name: \"ai.embedMany.doEmbed\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.embedMany.doEmbed\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n // specific settings that only make sense on the outer level:\n \"ai.values\": {\n input: () => values.map((value) => JSON.stringify(value))\n }\n }\n }),\n tracer,\n fn: async (doEmbedSpan) => {\n var _a17;\n const modelResponse = await model.doEmbed({\n values,\n abortSignal,\n headers: headersWithUserAgent,\n providerOptions\n });\n const embeddings3 = modelResponse.embeddings;\n const usage2 = (_a17 = modelResponse.usage) != null ? _a17 : { tokens: NaN };\n doEmbedSpan.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.embeddings\": {\n output: () => embeddings3.map(\n (embedding) => JSON.stringify(embedding)\n )\n },\n \"ai.usage.tokens\": usage2.tokens\n }\n })\n );\n return {\n embeddings: embeddings3,\n usage: usage2,\n providerMetadata: modelResponse.providerMetadata,\n response: modelResponse.response\n };\n }\n });\n }\n );\n span.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.embeddings\": {\n output: () => embeddings2.map((embedding) => JSON.stringify(embedding))\n },\n \"ai.usage.tokens\": usage.tokens\n }\n })\n );\n return new DefaultEmbedManyResult({\n values,\n embeddings: embeddings2,\n usage,\n providerMetadata: providerMetadata2,\n responses: [response]\n });\n }\n const valueChunks = splitArray(values, maxEmbeddingsPerCall);\n const embeddings = [];\n const responses = [];\n let tokens = 0;\n let providerMetadata;\n const parallelChunks = splitArray(\n valueChunks,\n supportsParallelCalls ? maxParallelCalls : 1\n );\n for (const parallelChunk of parallelChunks) {\n const results = await Promise.all(\n parallelChunk.map((chunk) => {\n return retry(() => {\n return recordSpan({\n name: \"ai.embedMany.doEmbed\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.embedMany.doEmbed\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n // specific settings that only make sense on the outer level:\n \"ai.values\": {\n input: () => chunk.map((value) => JSON.stringify(value))\n }\n }\n }),\n tracer,\n fn: async (doEmbedSpan) => {\n var _a17;\n const modelResponse = await model.doEmbed({\n values: chunk,\n abortSignal,\n headers: headersWithUserAgent,\n providerOptions\n });\n const embeddings2 = modelResponse.embeddings;\n const usage = (_a17 = modelResponse.usage) != null ? _a17 : { tokens: NaN };\n doEmbedSpan.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.embeddings\": {\n output: () => embeddings2.map(\n (embedding) => JSON.stringify(embedding)\n )\n },\n \"ai.usage.tokens\": usage.tokens\n }\n })\n );\n return {\n embeddings: embeddings2,\n usage,\n providerMetadata: modelResponse.providerMetadata,\n response: modelResponse.response\n };\n }\n });\n });\n })\n );\n for (const result of results) {\n embeddings.push(...result.embeddings);\n responses.push(result.response);\n tokens += result.usage.tokens;\n if (result.providerMetadata) {\n if (!providerMetadata) {\n providerMetadata = { ...result.providerMetadata };\n } else {\n for (const [providerName, metadata] of Object.entries(\n result.providerMetadata\n )) {\n providerMetadata[providerName] = {\n ...(_a16 = providerMetadata[providerName]) != null ? _a16 : {},\n ...metadata\n };\n }\n }\n }\n }\n }\n span.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.embeddings\": {\n output: () => embeddings.map((embedding) => JSON.stringify(embedding))\n },\n \"ai.usage.tokens\": tokens\n }\n })\n );\n return new DefaultEmbedManyResult({\n values,\n embeddings,\n usage: { tokens },\n providerMetadata,\n responses\n });\n }\n });\n}\nvar DefaultEmbedManyResult = class {\n constructor(options) {\n this.values = options.values;\n this.embeddings = options.embeddings;\n this.usage = options.usage;\n this.providerMetadata = options.providerMetadata;\n this.responses = options.responses;\n }\n};\n\n// src/generate-image/generate-image.ts\nimport { withUserAgentSuffix as withUserAgentSuffix5 } from \"@ai-sdk/provider-utils\";\nasync function generateImage({\n model,\n prompt,\n n = 1,\n maxImagesPerCall,\n size,\n aspectRatio,\n seed,\n providerOptions,\n maxRetries: maxRetriesArg,\n abortSignal,\n headers\n}) {\n var _a16, _b;\n if (model.specificationVersion !== \"v2\") {\n throw new UnsupportedModelVersionError({\n version: model.specificationVersion,\n provider: model.provider,\n modelId: model.modelId\n });\n }\n const headersWithUserAgent = withUserAgentSuffix5(\n headers != null ? headers : {},\n `ai/${VERSION}`\n );\n const { retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const maxImagesPerCallWithDefault = (_a16 = maxImagesPerCall != null ? maxImagesPerCall : await invokeModelMaxImagesPerCall(model)) != null ? _a16 : 1;\n const callCount = Math.ceil(n / maxImagesPerCallWithDefault);\n const callImageCounts = Array.from({ length: callCount }, (_, i) => {\n if (i < callCount - 1) {\n return maxImagesPerCallWithDefault;\n }\n const remainder = n % maxImagesPerCallWithDefault;\n return remainder === 0 ? maxImagesPerCallWithDefault : remainder;\n });\n const results = await Promise.all(\n callImageCounts.map(\n async (callImageCount) => retry(\n () => model.doGenerate({\n prompt,\n n: callImageCount,\n abortSignal,\n headers: headersWithUserAgent,\n size,\n aspectRatio,\n seed,\n providerOptions: providerOptions != null ? providerOptions : {}\n })\n )\n )\n );\n const images = [];\n const warnings = [];\n const responses = [];\n const providerMetadata = {};\n for (const result of results) {\n images.push(\n ...result.images.map(\n (image) => {\n var _a17;\n return new DefaultGeneratedFile({\n data: image,\n mediaType: (_a17 = detectMediaType({\n data: image,\n signatures: imageMediaTypeSignatures\n })) != null ? _a17 : \"image/png\"\n });\n }\n )\n );\n warnings.push(...result.warnings);\n if (result.providerMetadata) {\n for (const [providerName, metadata] of Object.entries(result.providerMetadata)) {\n (_b = providerMetadata[providerName]) != null ? _b : providerMetadata[providerName] = { images: [] };\n providerMetadata[providerName].images.push(\n ...result.providerMetadata[providerName].images\n );\n }\n }\n responses.push(result.response);\n }\n logWarnings(warnings);\n if (!images.length) {\n throw new NoImageGeneratedError({ responses });\n }\n return new DefaultGenerateImageResult({\n images,\n warnings,\n responses,\n providerMetadata\n });\n}\nvar DefaultGenerateImageResult = class {\n constructor(options) {\n this.images = options.images;\n this.warnings = options.warnings;\n this.responses = options.responses;\n this.providerMetadata = options.providerMetadata;\n }\n get image() {\n return this.images[0];\n }\n};\nasync function invokeModelMaxImagesPerCall(model) {\n const isFunction = model.maxImagesPerCall instanceof Function;\n if (!isFunction) {\n return model.maxImagesPerCall;\n }\n return model.maxImagesPerCall({\n modelId: model.modelId\n });\n}\n\n// src/generate-object/generate-object.ts\nimport {\n createIdGenerator as createIdGenerator3,\n withUserAgentSuffix as withUserAgentSuffix6\n} from \"@ai-sdk/provider-utils\";\n\n// src/generate-text/extract-reasoning-content.ts\nfunction extractReasoningContent(content) {\n const parts = content.filter(\n (content2) => content2.type === \"reasoning\"\n );\n return parts.length === 0 ? void 0 : parts.map((content2) => content2.text).join(\"\\n\");\n}\n\n// src/generate-object/output-strategy.ts\nimport {\n isJSONArray,\n isJSONObject,\n TypeValidationError as TypeValidationError2,\n UnsupportedFunctionalityError as UnsupportedFunctionalityError2\n} from \"@ai-sdk/provider\";\nimport {\n asSchema as asSchema3,\n safeValidateTypes as safeValidateTypes3\n} from \"@ai-sdk/provider-utils\";\nvar noSchemaOutputStrategy = {\n type: \"no-schema\",\n jsonSchema: void 0,\n async validatePartialResult({ value, textDelta }) {\n return { success: true, value: { partial: value, textDelta } };\n },\n async validateFinalResult(value, context) {\n return value === void 0 ? {\n success: false,\n error: new NoObjectGeneratedError({\n message: \"No object generated: response did not match schema.\",\n text: context.text,\n response: context.response,\n usage: context.usage,\n finishReason: context.finishReason\n })\n } : { success: true, value };\n },\n createElementStream() {\n throw new UnsupportedFunctionalityError2({\n functionality: \"element streams in no-schema mode\"\n });\n }\n};\nvar objectOutputStrategy = (schema) => ({\n type: \"object\",\n jsonSchema: schema.jsonSchema,\n async validatePartialResult({ value, textDelta }) {\n return {\n success: true,\n value: {\n // Note: currently no validation of partial results:\n partial: value,\n textDelta\n }\n };\n },\n async validateFinalResult(value) {\n return safeValidateTypes3({ value, schema });\n },\n createElementStream() {\n throw new UnsupportedFunctionalityError2({\n functionality: \"element streams in object mode\"\n });\n }\n});\nvar arrayOutputStrategy = (schema) => {\n const { $schema, ...itemSchema } = schema.jsonSchema;\n return {\n type: \"array\",\n // wrap in object that contains array of elements, since most LLMs will not\n // be able to generate an array directly:\n // possible future optimization: use arrays directly when model supports grammar-guided generation\n jsonSchema: {\n $schema: \"http://json-schema.org/draft-07/schema#\",\n type: \"object\",\n properties: {\n elements: { type: \"array\", items: itemSchema }\n },\n required: [\"elements\"],\n additionalProperties: false\n },\n async validatePartialResult({\n value,\n latestObject,\n isFirstDelta,\n isFinalDelta\n }) {\n var _a16;\n if (!isJSONObject(value) || !isJSONArray(value.elements)) {\n return {\n success: false,\n error: new TypeValidationError2({\n value,\n cause: \"value must be an object that contains an array of elements\"\n })\n };\n }\n const inputArray = value.elements;\n const resultArray = [];\n for (let i = 0; i < inputArray.length; i++) {\n const element = inputArray[i];\n const result = await safeValidateTypes3({ value: element, schema });\n if (i === inputArray.length - 1 && !isFinalDelta) {\n continue;\n }\n if (!result.success) {\n return result;\n }\n resultArray.push(result.value);\n }\n const publishedElementCount = (_a16 = latestObject == null ? void 0 : latestObject.length) != null ? _a16 : 0;\n let textDelta = \"\";\n if (isFirstDelta) {\n textDelta += \"[\";\n }\n if (publishedElementCount > 0) {\n textDelta += \",\";\n }\n textDelta += resultArray.slice(publishedElementCount).map((element) => JSON.stringify(element)).join(\",\");\n if (isFinalDelta) {\n textDelta += \"]\";\n }\n return {\n success: true,\n value: {\n partial: resultArray,\n textDelta\n }\n };\n },\n async validateFinalResult(value) {\n if (!isJSONObject(value) || !isJSONArray(value.elements)) {\n return {\n success: false,\n error: new TypeValidationError2({\n value,\n cause: \"value must be an object that contains an array of elements\"\n })\n };\n }\n const inputArray = value.elements;\n for (const element of inputArray) {\n const result = await safeValidateTypes3({ value: element, schema });\n if (!result.success) {\n return result;\n }\n }\n return { success: true, value: inputArray };\n },\n createElementStream(originalStream) {\n let publishedElements = 0;\n return createAsyncIterableStream(\n originalStream.pipeThrough(\n new TransformStream({\n transform(chunk, controller) {\n switch (chunk.type) {\n case \"object\": {\n const array = chunk.object;\n for (; publishedElements < array.length; publishedElements++) {\n controller.enqueue(array[publishedElements]);\n }\n break;\n }\n case \"text-delta\":\n case \"finish\":\n case \"error\":\n break;\n default: {\n const _exhaustiveCheck = chunk;\n throw new Error(\n `Unsupported chunk type: ${_exhaustiveCheck}`\n );\n }\n }\n }\n })\n )\n );\n }\n };\n};\nvar enumOutputStrategy = (enumValues) => {\n return {\n type: \"enum\",\n // wrap in object that contains result, since most LLMs will not\n // be able to generate an enum value directly:\n // possible future optimization: use enums directly when model supports top-level enums\n jsonSchema: {\n $schema: \"http://json-schema.org/draft-07/schema#\",\n type: \"object\",\n properties: {\n result: { type: \"string\", enum: enumValues }\n },\n required: [\"result\"],\n additionalProperties: false\n },\n async validateFinalResult(value) {\n if (!isJSONObject(value) || typeof value.result !== \"string\") {\n return {\n success: false,\n error: new TypeValidationError2({\n value,\n cause: 'value must be an object that contains a string in the \"result\" property.'\n })\n };\n }\n const result = value.result;\n return enumValues.includes(result) ? { success: true, value: result } : {\n success: false,\n error: new TypeValidationError2({\n value,\n cause: \"value must be a string in the enum\"\n })\n };\n },\n async validatePartialResult({ value, textDelta }) {\n if (!isJSONObject(value) || typeof value.result !== \"string\") {\n return {\n success: false,\n error: new TypeValidationError2({\n value,\n cause: 'value must be an object that contains a string in the \"result\" property.'\n })\n };\n }\n const result = value.result;\n const possibleEnumValues = enumValues.filter(\n (enumValue) => enumValue.startsWith(result)\n );\n if (value.result.length === 0 || possibleEnumValues.length === 0) {\n return {\n success: false,\n error: new TypeValidationError2({\n value,\n cause: \"value must be a string in the enum\"\n })\n };\n }\n return {\n success: true,\n value: {\n partial: possibleEnumValues.length > 1 ? result : possibleEnumValues[0],\n textDelta\n }\n };\n },\n createElementStream() {\n throw new UnsupportedFunctionalityError2({\n functionality: \"element streams in enum mode\"\n });\n }\n };\n};\nfunction getOutputStrategy({\n output,\n schema,\n enumValues\n}) {\n switch (output) {\n case \"object\":\n return objectOutputStrategy(asSchema3(schema));\n case \"array\":\n return arrayOutputStrategy(asSchema3(schema));\n case \"enum\":\n return enumOutputStrategy(enumValues);\n case \"no-schema\":\n return noSchemaOutputStrategy;\n default: {\n const _exhaustiveCheck = output;\n throw new Error(`Unsupported output: ${_exhaustiveCheck}`);\n }\n }\n}\n\n// src/generate-object/parse-and-validate-object-result.ts\nimport { JSONParseError as JSONParseError2, TypeValidationError as TypeValidationError3 } from \"@ai-sdk/provider\";\nimport { safeParseJSON as safeParseJSON3 } from \"@ai-sdk/provider-utils\";\nasync function parseAndValidateObjectResult(result, outputStrategy, context) {\n const parseResult = await safeParseJSON3({ text: result });\n if (!parseResult.success) {\n throw new NoObjectGeneratedError({\n message: \"No object generated: could not parse the response.\",\n cause: parseResult.error,\n text: result,\n response: context.response,\n usage: context.usage,\n finishReason: context.finishReason\n });\n }\n const validationResult = await outputStrategy.validateFinalResult(\n parseResult.value,\n {\n text: result,\n response: context.response,\n usage: context.usage\n }\n );\n if (!validationResult.success) {\n throw new NoObjectGeneratedError({\n message: \"No object generated: response did not match schema.\",\n cause: validationResult.error,\n text: result,\n response: context.response,\n usage: context.usage,\n finishReason: context.finishReason\n });\n }\n return validationResult.value;\n}\nasync function parseAndValidateObjectResultWithRepair(result, outputStrategy, repairText, context) {\n try {\n return await parseAndValidateObjectResult(result, outputStrategy, context);\n } catch (error) {\n if (repairText != null && NoObjectGeneratedError.isInstance(error) && (JSONParseError2.isInstance(error.cause) || TypeValidationError3.isInstance(error.cause))) {\n const repairedText = await repairText({\n text: result,\n error: error.cause\n });\n if (repairedText === null) {\n throw error;\n }\n return await parseAndValidateObjectResult(\n repairedText,\n outputStrategy,\n context\n );\n }\n throw error;\n }\n}\n\n// src/generate-object/validate-object-generation-input.ts\nfunction validateObjectGenerationInput({\n output,\n schema,\n schemaName,\n schemaDescription,\n enumValues\n}) {\n if (output != null && output !== \"object\" && output !== \"array\" && output !== \"enum\" && output !== \"no-schema\") {\n throw new InvalidArgumentError({\n parameter: \"output\",\n value: output,\n message: \"Invalid output type.\"\n });\n }\n if (output === \"no-schema\") {\n if (schema != null) {\n throw new InvalidArgumentError({\n parameter: \"schema\",\n value: schema,\n message: \"Schema is not supported for no-schema output.\"\n });\n }\n if (schemaDescription != null) {\n throw new InvalidArgumentError({\n parameter: \"schemaDescription\",\n value: schemaDescription,\n message: \"Schema description is not supported for no-schema output.\"\n });\n }\n if (schemaName != null) {\n throw new InvalidArgumentError({\n parameter: \"schemaName\",\n value: schemaName,\n message: \"Schema name is not supported for no-schema output.\"\n });\n }\n if (enumValues != null) {\n throw new InvalidArgumentError({\n parameter: \"enumValues\",\n value: enumValues,\n message: \"Enum values are not supported for no-schema output.\"\n });\n }\n }\n if (output === \"object\") {\n if (schema == null) {\n throw new InvalidArgumentError({\n parameter: \"schema\",\n value: schema,\n message: \"Schema is required for object output.\"\n });\n }\n if (enumValues != null) {\n throw new InvalidArgumentError({\n parameter: \"enumValues\",\n value: enumValues,\n message: \"Enum values are not supported for object output.\"\n });\n }\n }\n if (output === \"array\") {\n if (schema == null) {\n throw new InvalidArgumentError({\n parameter: \"schema\",\n value: schema,\n message: \"Element schema is required for array output.\"\n });\n }\n if (enumValues != null) {\n throw new InvalidArgumentError({\n parameter: \"enumValues\",\n value: enumValues,\n message: \"Enum values are not supported for array output.\"\n });\n }\n }\n if (output === \"enum\") {\n if (schema != null) {\n throw new InvalidArgumentError({\n parameter: \"schema\",\n value: schema,\n message: \"Schema is not supported for enum output.\"\n });\n }\n if (schemaDescription != null) {\n throw new InvalidArgumentError({\n parameter: \"schemaDescription\",\n value: schemaDescription,\n message: \"Schema description is not supported for enum output.\"\n });\n }\n if (schemaName != null) {\n throw new InvalidArgumentError({\n parameter: \"schemaName\",\n value: schemaName,\n message: \"Schema name is not supported for enum output.\"\n });\n }\n if (enumValues == null) {\n throw new InvalidArgumentError({\n parameter: \"enumValues\",\n value: enumValues,\n message: \"Enum values are required for enum output.\"\n });\n }\n for (const value of enumValues) {\n if (typeof value !== \"string\") {\n throw new InvalidArgumentError({\n parameter: \"enumValues\",\n value,\n message: \"Enum values must be strings.\"\n });\n }\n }\n }\n}\n\n// src/generate-object/generate-object.ts\nvar originalGenerateId3 = createIdGenerator3({ prefix: \"aiobj\", size: 24 });\nasync function generateObject(options) {\n const {\n model: modelArg,\n output = \"object\",\n system,\n prompt,\n messages,\n maxRetries: maxRetriesArg,\n abortSignal,\n headers,\n experimental_repairText: repairText,\n experimental_telemetry: telemetry,\n experimental_download: download2,\n providerOptions,\n _internal: {\n generateId: generateId3 = originalGenerateId3,\n currentDate = () => /* @__PURE__ */ new Date()\n } = {},\n ...settings\n } = options;\n const model = resolveLanguageModel(modelArg);\n const enumValues = \"enum\" in options ? options.enum : void 0;\n const {\n schema: inputSchema,\n schemaDescription,\n schemaName\n } = \"schema\" in options ? options : {};\n validateObjectGenerationInput({\n output,\n schema: inputSchema,\n schemaName,\n schemaDescription,\n enumValues\n });\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const outputStrategy = getOutputStrategy({\n output,\n schema: inputSchema,\n enumValues\n });\n const callSettings = prepareCallSettings(settings);\n const headersWithUserAgent = withUserAgentSuffix6(\n headers != null ? headers : {},\n `ai/${VERSION}`\n );\n const baseTelemetryAttributes = getBaseTelemetryAttributes({\n model,\n telemetry,\n headers: headersWithUserAgent,\n settings: { ...callSettings, maxRetries }\n });\n const tracer = getTracer(telemetry);\n try {\n return await recordSpan({\n name: \"ai.generateObject\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.generateObject\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n // specific settings that only make sense on the outer level:\n \"ai.prompt\": {\n input: () => JSON.stringify({ system, prompt, messages })\n },\n \"ai.schema\": outputStrategy.jsonSchema != null ? { input: () => JSON.stringify(outputStrategy.jsonSchema) } : void 0,\n \"ai.schema.name\": schemaName,\n \"ai.schema.description\": schemaDescription,\n \"ai.settings.output\": outputStrategy.type\n }\n }),\n tracer,\n fn: async (span) => {\n var _a16;\n let result;\n let finishReason;\n let usage;\n let warnings;\n let response;\n let request;\n let resultProviderMetadata;\n let reasoning;\n const standardizedPrompt = await standardizePrompt({\n system,\n prompt,\n messages\n });\n const promptMessages = await convertToLanguageModelPrompt({\n prompt: standardizedPrompt,\n supportedUrls: await model.supportedUrls,\n download: download2\n });\n const generateResult = await retry(\n () => recordSpan({\n name: \"ai.generateObject.doGenerate\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.generateObject.doGenerate\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n \"ai.prompt.messages\": {\n input: () => stringifyForTelemetry(promptMessages)\n },\n // standardized gen-ai llm span attributes:\n \"gen_ai.system\": model.provider,\n \"gen_ai.request.model\": model.modelId,\n \"gen_ai.request.frequency_penalty\": callSettings.frequencyPenalty,\n \"gen_ai.request.max_tokens\": callSettings.maxOutputTokens,\n \"gen_ai.request.presence_penalty\": callSettings.presencePenalty,\n \"gen_ai.request.temperature\": callSettings.temperature,\n \"gen_ai.request.top_k\": callSettings.topK,\n \"gen_ai.request.top_p\": callSettings.topP\n }\n }),\n tracer,\n fn: async (span2) => {\n var _a17, _b, _c, _d, _e, _f, _g, _h;\n const result2 = await model.doGenerate({\n responseFormat: {\n type: \"json\",\n schema: outputStrategy.jsonSchema,\n name: schemaName,\n description: schemaDescription\n },\n ...prepareCallSettings(settings),\n prompt: promptMessages,\n providerOptions,\n abortSignal,\n headers: headersWithUserAgent\n });\n const responseData = {\n id: (_b = (_a17 = result2.response) == null ? void 0 : _a17.id) != null ? _b : generateId3(),\n timestamp: (_d = (_c = result2.response) == null ? void 0 : _c.timestamp) != null ? _d : currentDate(),\n modelId: (_f = (_e = result2.response) == null ? void 0 : _e.modelId) != null ? _f : model.modelId,\n headers: (_g = result2.response) == null ? void 0 : _g.headers,\n body: (_h = result2.response) == null ? void 0 : _h.body\n };\n const text2 = extractTextContent(result2.content);\n const reasoning2 = extractReasoningContent(result2.content);\n if (text2 === void 0) {\n throw new NoObjectGeneratedError({\n message: \"No object generated: the model did not return a response.\",\n response: responseData,\n usage: result2.usage,\n finishReason: result2.finishReason\n });\n }\n span2.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.response.finishReason\": result2.finishReason,\n \"ai.response.object\": { output: () => text2 },\n \"ai.response.id\": responseData.id,\n \"ai.response.model\": responseData.modelId,\n \"ai.response.timestamp\": responseData.timestamp.toISOString(),\n \"ai.response.providerMetadata\": JSON.stringify(\n result2.providerMetadata\n ),\n // TODO rename telemetry attributes to inputTokens and outputTokens\n \"ai.usage.promptTokens\": result2.usage.inputTokens,\n \"ai.usage.completionTokens\": result2.usage.outputTokens,\n // standardized gen-ai llm span attributes:\n \"gen_ai.response.finish_reasons\": [result2.finishReason],\n \"gen_ai.response.id\": responseData.id,\n \"gen_ai.response.model\": responseData.modelId,\n \"gen_ai.usage.input_tokens\": result2.usage.inputTokens,\n \"gen_ai.usage.output_tokens\": result2.usage.outputTokens\n }\n })\n );\n return {\n ...result2,\n objectText: text2,\n reasoning: reasoning2,\n responseData\n };\n }\n })\n );\n result = generateResult.objectText;\n finishReason = generateResult.finishReason;\n usage = generateResult.usage;\n warnings = generateResult.warnings;\n resultProviderMetadata = generateResult.providerMetadata;\n request = (_a16 = generateResult.request) != null ? _a16 : {};\n response = generateResult.responseData;\n reasoning = generateResult.reasoning;\n logWarnings(warnings);\n const object2 = await parseAndValidateObjectResultWithRepair(\n result,\n outputStrategy,\n repairText,\n {\n response,\n usage,\n finishReason\n }\n );\n span.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.response.finishReason\": finishReason,\n \"ai.response.object\": {\n output: () => JSON.stringify(object2)\n },\n \"ai.response.providerMetadata\": JSON.stringify(\n resultProviderMetadata\n ),\n // TODO rename telemetry attributes to inputTokens and outputTokens\n \"ai.usage.promptTokens\": usage.inputTokens,\n \"ai.usage.completionTokens\": usage.outputTokens\n }\n })\n );\n return new DefaultGenerateObjectResult({\n object: object2,\n reasoning,\n finishReason,\n usage,\n warnings,\n request,\n response,\n providerMetadata: resultProviderMetadata\n });\n }\n });\n } catch (error) {\n throw wrapGatewayError(error);\n }\n}\nvar DefaultGenerateObjectResult = class {\n constructor(options) {\n this.object = options.object;\n this.finishReason = options.finishReason;\n this.usage = options.usage;\n this.warnings = options.warnings;\n this.providerMetadata = options.providerMetadata;\n this.response = options.response;\n this.request = options.request;\n this.reasoning = options.reasoning;\n }\n toJsonResponse(init) {\n var _a16;\n return new Response(JSON.stringify(this.object), {\n status: (_a16 = init == null ? void 0 : init.status) != null ? _a16 : 200,\n headers: prepareHeaders(init == null ? void 0 : init.headers, {\n \"content-type\": \"application/json; charset=utf-8\"\n })\n });\n }\n};\n\n// src/generate-object/stream-object.ts\nimport {\n createIdGenerator as createIdGenerator4\n} from \"@ai-sdk/provider-utils\";\n\n// src/util/cosine-similarity.ts\nfunction cosineSimilarity(vector1, vector2) {\n if (vector1.length !== vector2.length) {\n throw new InvalidArgumentError({\n parameter: \"vector1,vector2\",\n value: { vector1Length: vector1.length, vector2Length: vector2.length },\n message: `Vectors must have the same length`\n });\n }\n const n = vector1.length;\n if (n === 0) {\n return 0;\n }\n let magnitudeSquared1 = 0;\n let magnitudeSquared2 = 0;\n let dotProduct = 0;\n for (let i = 0; i < n; i++) {\n const value1 = vector1[i];\n const value2 = vector2[i];\n magnitudeSquared1 += value1 * value1;\n magnitudeSquared2 += value2 * value2;\n dotProduct += value1 * value2;\n }\n return magnitudeSquared1 === 0 || magnitudeSquared2 === 0 ? 0 : dotProduct / (Math.sqrt(magnitudeSquared1) * Math.sqrt(magnitudeSquared2));\n}\n\n// src/util/data-url.ts\nfunction getTextFromDataUrl(dataUrl) {\n const [header, base64Content] = dataUrl.split(\",\");\n const mediaType = header.split(\";\")[0].split(\":\")[1];\n if (mediaType == null || base64Content == null) {\n throw new Error(\"Invalid data URL format\");\n }\n try {\n return window.atob(base64Content);\n } catch (error) {\n throw new Error(`Error decoding data URL`);\n }\n}\n\n// src/util/is-deep-equal-data.ts\nfunction isDeepEqualData(obj1, obj2) {\n if (obj1 === obj2)\n return true;\n if (obj1 == null || obj2 == null)\n return false;\n if (typeof obj1 !== \"object\" && typeof obj2 !== \"object\")\n return obj1 === obj2;\n if (obj1.constructor !== obj2.constructor)\n return false;\n if (obj1 instanceof Date && obj2 instanceof Date) {\n return obj1.getTime() === obj2.getTime();\n }\n if (Array.isArray(obj1)) {\n if (obj1.length !== obj2.length)\n return false;\n for (let i = 0; i < obj1.length; i++) {\n if (!isDeepEqualData(obj1[i], obj2[i]))\n return false;\n }\n return true;\n }\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n if (keys1.length !== keys2.length)\n return false;\n for (const key of keys1) {\n if (!keys2.includes(key))\n return false;\n if (!isDeepEqualData(obj1[key], obj2[key]))\n return false;\n }\n return true;\n}\n\n// src/util/serial-job-executor.ts\nvar SerialJobExecutor = class {\n constructor() {\n this.queue = [];\n this.isProcessing = false;\n }\n async processQueue() {\n if (this.isProcessing) {\n return;\n }\n this.isProcessing = true;\n while (this.queue.length > 0) {\n await this.queue[0]();\n this.queue.shift();\n }\n this.isProcessing = false;\n }\n async run(job) {\n return new Promise((resolve2, reject) => {\n this.queue.push(async () => {\n try {\n await job();\n resolve2();\n } catch (error) {\n reject(error);\n }\n });\n void this.processQueue();\n });\n }\n};\n\n// src/util/simulate-readable-stream.ts\nimport { delay as delayFunction } from \"@ai-sdk/provider-utils\";\nfunction simulateReadableStream({\n chunks,\n initialDelayInMs = 0,\n chunkDelayInMs = 0,\n _internal\n}) {\n var _a16;\n const delay2 = (_a16 = _internal == null ? void 0 : _internal.delay) != null ? _a16 : delayFunction;\n let index = 0;\n return new ReadableStream({\n async pull(controller) {\n if (index < chunks.length) {\n await delay2(index === 0 ? initialDelayInMs : chunkDelayInMs);\n controller.enqueue(chunks[index++]);\n } else {\n controller.close();\n }\n }\n });\n}\n\n// src/generate-object/stream-object.ts\nvar originalGenerateId4 = createIdGenerator4({ prefix: \"aiobj\", size: 24 });\nfunction streamObject(options) {\n const {\n model,\n output = \"object\",\n system,\n prompt,\n messages,\n maxRetries,\n abortSignal,\n headers,\n experimental_repairText: repairText,\n experimental_telemetry: telemetry,\n experimental_download: download2,\n providerOptions,\n onError = ({ error }) => {\n console.error(error);\n },\n onFinish,\n _internal: {\n generateId: generateId3 = originalGenerateId4,\n currentDate = () => /* @__PURE__ */ new Date(),\n now: now2 = now\n } = {},\n ...settings\n } = options;\n const enumValues = \"enum\" in options && options.enum ? options.enum : void 0;\n const {\n schema: inputSchema,\n schemaDescription,\n schemaName\n } = \"schema\" in options ? options : {};\n validateObjectGenerationInput({\n output,\n schema: inputSchema,\n schemaName,\n schemaDescription,\n enumValues\n });\n const outputStrategy = getOutputStrategy({\n output,\n schema: inputSchema,\n enumValues\n });\n return new DefaultStreamObjectResult({\n model,\n telemetry,\n headers,\n settings,\n maxRetries,\n abortSignal,\n outputStrategy,\n system,\n prompt,\n messages,\n schemaName,\n schemaDescription,\n providerOptions,\n repairText,\n onError,\n onFinish,\n download: download2,\n generateId: generateId3,\n currentDate,\n now: now2\n });\n}\nvar DefaultStreamObjectResult = class {\n constructor({\n model: modelArg,\n headers,\n telemetry,\n settings,\n maxRetries: maxRetriesArg,\n abortSignal,\n outputStrategy,\n system,\n prompt,\n messages,\n schemaName,\n schemaDescription,\n providerOptions,\n repairText,\n onError,\n onFinish,\n download: download2,\n generateId: generateId3,\n currentDate,\n now: now2\n }) {\n this._object = new DelayedPromise();\n this._usage = new DelayedPromise();\n this._providerMetadata = new DelayedPromise();\n this._warnings = new DelayedPromise();\n this._request = new DelayedPromise();\n this._response = new DelayedPromise();\n this._finishReason = new DelayedPromise();\n const model = resolveLanguageModel(modelArg);\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const callSettings = prepareCallSettings(settings);\n const baseTelemetryAttributes = getBaseTelemetryAttributes({\n model,\n telemetry,\n headers,\n settings: { ...callSettings, maxRetries }\n });\n const tracer = getTracer(telemetry);\n const self = this;\n const stitchableStream = createStitchableStream();\n const eventProcessor = new TransformStream({\n transform(chunk, controller) {\n controller.enqueue(chunk);\n if (chunk.type === \"error\") {\n onError({ error: wrapGatewayError(chunk.error) });\n }\n }\n });\n this.baseStream = stitchableStream.stream.pipeThrough(eventProcessor);\n recordSpan({\n name: \"ai.streamObject\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.streamObject\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n // specific settings that only make sense on the outer level:\n \"ai.prompt\": {\n input: () => JSON.stringify({ system, prompt, messages })\n },\n \"ai.schema\": outputStrategy.jsonSchema != null ? { input: () => JSON.stringify(outputStrategy.jsonSchema) } : void 0,\n \"ai.schema.name\": schemaName,\n \"ai.schema.description\": schemaDescription,\n \"ai.settings.output\": outputStrategy.type\n }\n }),\n tracer,\n endWhenDone: false,\n fn: async (rootSpan) => {\n const standardizedPrompt = await standardizePrompt({\n system,\n prompt,\n messages\n });\n const callOptions = {\n responseFormat: {\n type: \"json\",\n schema: outputStrategy.jsonSchema,\n name: schemaName,\n description: schemaDescription\n },\n ...prepareCallSettings(settings),\n prompt: await convertToLanguageModelPrompt({\n prompt: standardizedPrompt,\n supportedUrls: await model.supportedUrls,\n download: download2\n }),\n providerOptions,\n abortSignal,\n headers,\n includeRawChunks: false\n };\n const transformer = {\n transform: (chunk, controller) => {\n switch (chunk.type) {\n case \"text-delta\":\n controller.enqueue(chunk.delta);\n break;\n case \"response-metadata\":\n case \"finish\":\n case \"error\":\n case \"stream-start\":\n controller.enqueue(chunk);\n break;\n }\n }\n };\n const {\n result: { stream, response, request },\n doStreamSpan,\n startTimestampMs\n } = await retry(\n () => recordSpan({\n name: \"ai.streamObject.doStream\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.streamObject.doStream\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n \"ai.prompt.messages\": {\n input: () => stringifyForTelemetry(callOptions.prompt)\n },\n // standardized gen-ai llm span attributes:\n \"gen_ai.system\": model.provider,\n \"gen_ai.request.model\": model.modelId,\n \"gen_ai.request.frequency_penalty\": callSettings.frequencyPenalty,\n \"gen_ai.request.max_tokens\": callSettings.maxOutputTokens,\n \"gen_ai.request.presence_penalty\": callSettings.presencePenalty,\n \"gen_ai.request.temperature\": callSettings.temperature,\n \"gen_ai.request.top_k\": callSettings.topK,\n \"gen_ai.request.top_p\": callSettings.topP\n }\n }),\n tracer,\n endWhenDone: false,\n fn: async (doStreamSpan2) => ({\n startTimestampMs: now2(),\n doStreamSpan: doStreamSpan2,\n result: await model.doStream(callOptions)\n })\n })\n );\n self._request.resolve(request != null ? request : {});\n let warnings;\n let usage = {\n inputTokens: void 0,\n outputTokens: void 0,\n totalTokens: void 0\n };\n let finishReason;\n let providerMetadata;\n let object2;\n let error;\n let accumulatedText = \"\";\n let textDelta = \"\";\n let fullResponse = {\n id: generateId3(),\n timestamp: currentDate(),\n modelId: model.modelId\n };\n let latestObjectJson = void 0;\n let latestObject = void 0;\n let isFirstChunk = true;\n let isFirstDelta = true;\n const transformedStream = stream.pipeThrough(new TransformStream(transformer)).pipeThrough(\n new TransformStream({\n async transform(chunk, controller) {\n var _a16, _b, _c;\n if (typeof chunk === \"object\" && chunk.type === \"stream-start\") {\n warnings = chunk.warnings;\n return;\n }\n if (isFirstChunk) {\n const msToFirstChunk = now2() - startTimestampMs;\n isFirstChunk = false;\n doStreamSpan.addEvent(\"ai.stream.firstChunk\", {\n \"ai.stream.msToFirstChunk\": msToFirstChunk\n });\n doStreamSpan.setAttributes({\n \"ai.stream.msToFirstChunk\": msToFirstChunk\n });\n }\n if (typeof chunk === \"string\") {\n accumulatedText += chunk;\n textDelta += chunk;\n const { value: currentObjectJson, state: parseState } = await parsePartialJson(accumulatedText);\n if (currentObjectJson !== void 0 && !isDeepEqualData(latestObjectJson, currentObjectJson)) {\n const validationResult = await outputStrategy.validatePartialResult({\n value: currentObjectJson,\n textDelta,\n latestObject,\n isFirstDelta,\n isFinalDelta: parseState === \"successful-parse\"\n });\n if (validationResult.success && !isDeepEqualData(\n latestObject,\n validationResult.value.partial\n )) {\n latestObjectJson = currentObjectJson;\n latestObject = validationResult.value.partial;\n controller.enqueue({\n type: \"object\",\n object: latestObject\n });\n controller.enqueue({\n type: \"text-delta\",\n textDelta: validationResult.value.textDelta\n });\n textDelta = \"\";\n isFirstDelta = false;\n }\n }\n return;\n }\n switch (chunk.type) {\n case \"response-metadata\": {\n fullResponse = {\n id: (_a16 = chunk.id) != null ? _a16 : fullResponse.id,\n timestamp: (_b = chunk.timestamp) != null ? _b : fullResponse.timestamp,\n modelId: (_c = chunk.modelId) != null ? _c : fullResponse.modelId\n };\n break;\n }\n case \"finish\": {\n if (textDelta !== \"\") {\n controller.enqueue({ type: \"text-delta\", textDelta });\n }\n finishReason = chunk.finishReason;\n usage = chunk.usage;\n providerMetadata = chunk.providerMetadata;\n controller.enqueue({\n ...chunk,\n usage,\n response: fullResponse\n });\n logWarnings(warnings != null ? warnings : []);\n self._usage.resolve(usage);\n self._providerMetadata.resolve(providerMetadata);\n self._warnings.resolve(warnings);\n self._response.resolve({\n ...fullResponse,\n headers: response == null ? void 0 : response.headers\n });\n self._finishReason.resolve(finishReason != null ? finishReason : \"unknown\");\n try {\n object2 = await parseAndValidateObjectResultWithRepair(\n accumulatedText,\n outputStrategy,\n repairText,\n {\n response: fullResponse,\n usage,\n finishReason\n }\n );\n self._object.resolve(object2);\n } catch (e) {\n error = e;\n self._object.reject(e);\n }\n break;\n }\n default: {\n controller.enqueue(chunk);\n break;\n }\n }\n },\n // invoke onFinish callback and resolve toolResults promise when the stream is about to close:\n async flush(controller) {\n try {\n const finalUsage = usage != null ? usage : {\n promptTokens: NaN,\n completionTokens: NaN,\n totalTokens: NaN\n };\n doStreamSpan.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.response.finishReason\": finishReason,\n \"ai.response.object\": {\n output: () => JSON.stringify(object2)\n },\n \"ai.response.id\": fullResponse.id,\n \"ai.response.model\": fullResponse.modelId,\n \"ai.response.timestamp\": fullResponse.timestamp.toISOString(),\n \"ai.response.providerMetadata\": JSON.stringify(providerMetadata),\n \"ai.usage.inputTokens\": finalUsage.inputTokens,\n \"ai.usage.outputTokens\": finalUsage.outputTokens,\n \"ai.usage.totalTokens\": finalUsage.totalTokens,\n \"ai.usage.reasoningTokens\": finalUsage.reasoningTokens,\n \"ai.usage.cachedInputTokens\": finalUsage.cachedInputTokens,\n // standardized gen-ai llm span attributes:\n \"gen_ai.response.finish_reasons\": [finishReason],\n \"gen_ai.response.id\": fullResponse.id,\n \"gen_ai.response.model\": fullResponse.modelId,\n \"gen_ai.usage.input_tokens\": finalUsage.inputTokens,\n \"gen_ai.usage.output_tokens\": finalUsage.outputTokens\n }\n })\n );\n doStreamSpan.end();\n rootSpan.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.usage.inputTokens\": finalUsage.inputTokens,\n \"ai.usage.outputTokens\": finalUsage.outputTokens,\n \"ai.usage.totalTokens\": finalUsage.totalTokens,\n \"ai.usage.reasoningTokens\": finalUsage.reasoningTokens,\n \"ai.usage.cachedInputTokens\": finalUsage.cachedInputTokens,\n \"ai.response.object\": {\n output: () => JSON.stringify(object2)\n },\n \"ai.response.providerMetadata\": JSON.stringify(providerMetadata)\n }\n })\n );\n await (onFinish == null ? void 0 : onFinish({\n usage: finalUsage,\n object: object2,\n error,\n response: {\n ...fullResponse,\n headers: response == null ? void 0 : response.headers\n },\n warnings,\n providerMetadata\n }));\n } catch (error2) {\n controller.enqueue({ type: \"error\", error: error2 });\n } finally {\n rootSpan.end();\n }\n }\n })\n );\n stitchableStream.addStream(transformedStream);\n }\n }).catch((error) => {\n stitchableStream.addStream(\n new ReadableStream({\n start(controller) {\n controller.enqueue({ type: \"error\", error });\n controller.close();\n }\n })\n );\n }).finally(() => {\n stitchableStream.close();\n });\n this.outputStrategy = outputStrategy;\n }\n get object() {\n return this._object.promise;\n }\n get usage() {\n return this._usage.promise;\n }\n get providerMetadata() {\n return this._providerMetadata.promise;\n }\n get warnings() {\n return this._warnings.promise;\n }\n get request() {\n return this._request.promise;\n }\n get response() {\n return this._response.promise;\n }\n get finishReason() {\n return this._finishReason.promise;\n }\n get partialObjectStream() {\n return createAsyncIterableStream(\n this.baseStream.pipeThrough(\n new TransformStream({\n transform(chunk, controller) {\n switch (chunk.type) {\n case \"object\":\n controller.enqueue(chunk.object);\n break;\n case \"text-delta\":\n case \"finish\":\n case \"error\":\n break;\n default: {\n const _exhaustiveCheck = chunk;\n throw new Error(`Unsupported chunk type: ${_exhaustiveCheck}`);\n }\n }\n }\n })\n )\n );\n }\n get elementStream() {\n return this.outputStrategy.createElementStream(this.baseStream);\n }\n get textStream() {\n return createAsyncIterableStream(\n this.baseStream.pipeThrough(\n new TransformStream({\n transform(chunk, controller) {\n switch (chunk.type) {\n case \"text-delta\":\n controller.enqueue(chunk.textDelta);\n break;\n case \"object\":\n case \"finish\":\n case \"error\":\n break;\n default: {\n const _exhaustiveCheck = chunk;\n throw new Error(`Unsupported chunk type: ${_exhaustiveCheck}`);\n }\n }\n }\n })\n )\n );\n }\n get fullStream() {\n return createAsyncIterableStream(this.baseStream);\n }\n pipeTextStreamToResponse(response, init) {\n pipeTextStreamToResponse({\n response,\n textStream: this.textStream,\n ...init\n });\n }\n toTextStreamResponse(init) {\n return createTextStreamResponse({\n textStream: this.textStream,\n ...init\n });\n }\n};\n\n// src/generate-speech/generate-speech.ts\nimport { withUserAgentSuffix as withUserAgentSuffix7 } from \"@ai-sdk/provider-utils\";\n\n// src/generate-speech/generated-audio-file.ts\nvar DefaultGeneratedAudioFile = class extends DefaultGeneratedFile {\n constructor({\n data,\n mediaType\n }) {\n super({ data, mediaType });\n let format = \"mp3\";\n if (mediaType) {\n const mediaTypeParts = mediaType.split(\"/\");\n if (mediaTypeParts.length === 2) {\n if (mediaType !== \"audio/mpeg\") {\n format = mediaTypeParts[1];\n }\n }\n }\n if (!format) {\n throw new Error(\n \"Audio format must be provided or determinable from media type\"\n );\n }\n this.format = format;\n }\n};\n\n// src/generate-speech/generate-speech.ts\nasync function generateSpeech({\n model,\n text: text2,\n voice,\n outputFormat,\n instructions,\n speed,\n language,\n providerOptions = {},\n maxRetries: maxRetriesArg,\n abortSignal,\n headers\n}) {\n var _a16;\n if (model.specificationVersion !== \"v2\") {\n throw new UnsupportedModelVersionError({\n version: model.specificationVersion,\n provider: model.provider,\n modelId: model.modelId\n });\n }\n const headersWithUserAgent = withUserAgentSuffix7(\n headers != null ? headers : {},\n `ai/${VERSION}`\n );\n const { retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const result = await retry(\n () => model.doGenerate({\n text: text2,\n voice,\n outputFormat,\n instructions,\n speed,\n language,\n abortSignal,\n headers: headersWithUserAgent,\n providerOptions\n })\n );\n if (!result.audio || result.audio.length === 0) {\n throw new NoSpeechGeneratedError({ responses: [result.response] });\n }\n logWarnings(result.warnings);\n return new DefaultSpeechResult({\n audio: new DefaultGeneratedAudioFile({\n data: result.audio,\n mediaType: (_a16 = detectMediaType({\n data: result.audio,\n signatures: audioMediaTypeSignatures\n })) != null ? _a16 : \"audio/mp3\"\n }),\n warnings: result.warnings,\n responses: [result.response],\n providerMetadata: result.providerMetadata\n });\n}\nvar DefaultSpeechResult = class {\n constructor(options) {\n var _a16;\n this.audio = options.audio;\n this.warnings = options.warnings;\n this.responses = options.responses;\n this.providerMetadata = (_a16 = options.providerMetadata) != null ? _a16 : {};\n }\n};\n\n// src/generate-text/output.ts\nvar output_exports = {};\n__export(output_exports, {\n object: () => object,\n text: () => text\n});\nimport {\n asSchema as asSchema4,\n safeParseJSON as safeParseJSON4,\n safeValidateTypes as safeValidateTypes4\n} from \"@ai-sdk/provider-utils\";\nvar text = () => ({\n type: \"text\",\n responseFormat: { type: \"text\" },\n async parsePartial({ text: text2 }) {\n return { partial: text2 };\n },\n async parseOutput({ text: text2 }) {\n return text2;\n }\n});\nvar object = ({\n schema: inputSchema\n}) => {\n const schema = asSchema4(inputSchema);\n return {\n type: \"object\",\n responseFormat: {\n type: \"json\",\n schema: schema.jsonSchema\n },\n async parsePartial({ text: text2 }) {\n const result = await parsePartialJson(text2);\n switch (result.state) {\n case \"failed-parse\":\n case \"undefined-input\":\n return void 0;\n case \"repaired-parse\":\n case \"successful-parse\":\n return {\n // Note: currently no validation of partial results:\n partial: result.value\n };\n default: {\n const _exhaustiveCheck = result.state;\n throw new Error(`Unsupported parse state: ${_exhaustiveCheck}`);\n }\n }\n },\n async parseOutput({ text: text2 }, context) {\n const parseResult = await safeParseJSON4({ text: text2 });\n if (!parseResult.success) {\n throw new NoObjectGeneratedError({\n message: \"No object generated: could not parse the response.\",\n cause: parseResult.error,\n text: text2,\n response: context.response,\n usage: context.usage,\n finishReason: context.finishReason\n });\n }\n const validationResult = await safeValidateTypes4({\n value: parseResult.value,\n schema\n });\n if (!validationResult.success) {\n throw new NoObjectGeneratedError({\n message: \"No object generated: response did not match schema.\",\n cause: validationResult.error,\n text: text2,\n response: context.response,\n usage: context.usage,\n finishReason: context.finishReason\n });\n }\n return validationResult.value;\n }\n };\n};\n\n// src/generate-text/prune-messages.ts\nfunction pruneMessages({\n messages,\n reasoning = \"none\",\n toolCalls = [],\n emptyMessages = \"remove\"\n}) {\n if (reasoning === \"all\" || reasoning === \"before-last-message\") {\n messages = messages.map((message, messageIndex) => {\n if (message.role !== \"assistant\" || typeof message.content === \"string\" || reasoning === \"before-last-message\" && messageIndex === messages.length - 1) {\n return message;\n }\n return {\n ...message,\n content: message.content.filter((part) => part.type !== \"reasoning\")\n };\n });\n }\n if (toolCalls === \"none\") {\n toolCalls = [];\n } else if (toolCalls === \"all\") {\n toolCalls = [{ type: \"all\" }];\n } else if (toolCalls === \"before-last-message\") {\n toolCalls = [{ type: \"before-last-message\" }];\n } else if (typeof toolCalls === \"string\") {\n toolCalls = [{ type: toolCalls }];\n }\n for (const toolCall of toolCalls) {\n const keepLastMessagesCount = toolCall.type === \"all\" ? void 0 : toolCall.type === \"before-last-message\" ? 1 : Number(\n toolCall.type.slice(\"before-last-\".length).slice(0, -\"-messages\".length)\n );\n const keptToolCallIds = /* @__PURE__ */ new Set();\n const keptApprovalIds = /* @__PURE__ */ new Set();\n if (keepLastMessagesCount != null) {\n for (const message of messages.slice(0, -keepLastMessagesCount)) {\n if ((message.role === \"assistant\" || message.role === \"tool\") && typeof message.content !== \"string\") {\n for (const part of message.content) {\n if (part.type === \"tool-call\" || part.type === \"tool-result\") {\n keptToolCallIds.add(part.toolCallId);\n }\n }\n }\n }\n }\n messages = messages.map((message, messageIndex) => {\n if (message.role !== \"assistant\" && message.role !== \"tool\" || typeof message.content === \"string\" || keepLastMessagesCount && messageIndex >= messages.length - keepLastMessagesCount) {\n return message;\n }\n const toolCallIdToToolName = {};\n return {\n ...message,\n content: message.content.filter((part) => {\n if (part.type !== \"tool-call\" && part.type !== \"tool-result\") {\n return true;\n }\n if (part.type === \"tool-call\") {\n toolCallIdToToolName[part.toolCallId] = part.toolName;\n }\n if ((part.type === \"tool-call\" || part.type === \"tool-result\") && keptToolCallIds.has(part.toolCallId)) {\n return true;\n }\n return toolCall.tools != null && !toolCall.tools.includes(part.toolName);\n })\n };\n });\n }\n if (emptyMessages === \"remove\") {\n messages = messages.filter((message) => message.content.length > 0);\n }\n return messages;\n}\n\n// src/generate-text/smooth-stream.ts\nimport { delay as originalDelay } from \"@ai-sdk/provider-utils\";\nimport { InvalidArgumentError as InvalidArgumentError2 } from \"@ai-sdk/provider\";\nvar CHUNKING_REGEXPS = {\n word: /\\S+\\s+/m,\n line: /\\n+/m\n};\nfunction smoothStream({\n delayInMs = 10,\n chunking = \"word\",\n _internal: { delay: delay2 = originalDelay } = {}\n} = {}) {\n let detectChunk;\n if (typeof chunking === \"function\") {\n detectChunk = (buffer) => {\n const match = chunking(buffer);\n if (match == null) {\n return null;\n }\n if (!match.length) {\n throw new Error(`Chunking function must return a non-empty string.`);\n }\n if (!buffer.startsWith(match)) {\n throw new Error(\n `Chunking function must return a match that is a prefix of the buffer. Received: \"${match}\" expected to start with \"${buffer}\"`\n );\n }\n return match;\n };\n } else {\n const chunkingRegex = typeof chunking === \"string\" ? CHUNKING_REGEXPS[chunking] : chunking;\n if (chunkingRegex == null) {\n throw new InvalidArgumentError2({\n argument: \"chunking\",\n message: `Chunking must be \"word\" or \"line\" or a RegExp. Received: ${chunking}`\n });\n }\n detectChunk = (buffer) => {\n const match = chunkingRegex.exec(buffer);\n if (!match) {\n return null;\n }\n return buffer.slice(0, match.index) + (match == null ? void 0 : match[0]);\n };\n }\n return () => {\n let buffer = \"\";\n let id = \"\";\n return new TransformStream({\n async transform(chunk, controller) {\n if (chunk.type !== \"text-delta\") {\n if (buffer.length > 0) {\n controller.enqueue({ type: \"text-delta\", text: buffer, id });\n buffer = \"\";\n }\n controller.enqueue(chunk);\n return;\n }\n if (chunk.id !== id && buffer.length > 0) {\n controller.enqueue({ type: \"text-delta\", text: buffer, id });\n buffer = \"\";\n }\n buffer += chunk.text;\n id = chunk.id;\n let match;\n while ((match = detectChunk(buffer)) != null) {\n controller.enqueue({ type: \"text-delta\", text: match, id });\n buffer = buffer.slice(match.length);\n await delay2(delayInMs);\n }\n }\n });\n };\n}\n\n// src/middleware/default-settings-middleware.ts\nfunction defaultSettingsMiddleware({\n settings\n}) {\n return {\n middlewareVersion: \"v2\",\n transformParams: async ({ params }) => {\n return mergeObjects(settings, params);\n }\n };\n}\n\n// src/util/get-potential-start-index.ts\nfunction getPotentialStartIndex(text2, searchedText) {\n if (searchedText.length === 0) {\n return null;\n }\n const directIndex = text2.indexOf(searchedText);\n if (directIndex !== -1) {\n return directIndex;\n }\n for (let i = text2.length - 1; i >= 0; i--) {\n const suffix = text2.substring(i);\n if (searchedText.startsWith(suffix)) {\n return i;\n }\n }\n return null;\n}\n\n// src/middleware/extract-reasoning-middleware.ts\nfunction extractReasoningMiddleware({\n tagName,\n separator = \"\\n\",\n startWithReasoning = false\n}) {\n const openingTag = `<${tagName}>`;\n const closingTag = `</${tagName}>`;\n return {\n middlewareVersion: \"v2\",\n wrapGenerate: async ({ doGenerate }) => {\n const { content, ...rest } = await doGenerate();\n const transformedContent = [];\n for (const part of content) {\n if (part.type !== \"text\") {\n transformedContent.push(part);\n continue;\n }\n const text2 = startWithReasoning ? openingTag + part.text : part.text;\n const regexp = new RegExp(`${openingTag}(.*?)${closingTag}`, \"gs\");\n const matches = Array.from(text2.matchAll(regexp));\n if (!matches.length) {\n transformedContent.push(part);\n continue;\n }\n const reasoningText = matches.map((match) => match[1]).join(separator);\n let textWithoutReasoning = text2;\n for (let i = matches.length - 1; i >= 0; i--) {\n const match = matches[i];\n const beforeMatch = textWithoutReasoning.slice(0, match.index);\n const afterMatch = textWithoutReasoning.slice(\n match.index + match[0].length\n );\n textWithoutReasoning = beforeMatch + (beforeMatch.length > 0 && afterMatch.length > 0 ? separator : \"\") + afterMatch;\n }\n transformedContent.push({\n type: \"reasoning\",\n text: reasoningText\n });\n transformedContent.push({\n type: \"text\",\n text: textWithoutReasoning\n });\n }\n return { content: transformedContent, ...rest };\n },\n wrapStream: async ({ doStream }) => {\n const { stream, ...rest } = await doStream();\n const reasoningExtractions = {};\n let delayedTextStart;\n return {\n stream: stream.pipeThrough(\n new TransformStream({\n transform: (chunk, controller) => {\n if (chunk.type === \"text-start\") {\n delayedTextStart = chunk;\n return;\n }\n if (chunk.type === \"text-end\" && delayedTextStart) {\n controller.enqueue(delayedTextStart);\n delayedTextStart = void 0;\n }\n if (chunk.type !== \"text-delta\") {\n controller.enqueue(chunk);\n return;\n }\n if (reasoningExtractions[chunk.id] == null) {\n reasoningExtractions[chunk.id] = {\n isFirstReasoning: true,\n isFirstText: true,\n afterSwitch: false,\n isReasoning: startWithReasoning,\n buffer: \"\",\n idCounter: 0,\n textId: chunk.id\n };\n }\n const activeExtraction = reasoningExtractions[chunk.id];\n activeExtraction.buffer += chunk.delta;\n function publish(text2) {\n if (text2.length > 0) {\n const prefix = activeExtraction.afterSwitch && (activeExtraction.isReasoning ? !activeExtraction.isFirstReasoning : !activeExtraction.isFirstText) ? separator : \"\";\n if (activeExtraction.isReasoning && (activeExtraction.afterSwitch || activeExtraction.isFirstReasoning)) {\n controller.enqueue({\n type: \"reasoning-start\",\n id: `reasoning-${activeExtraction.idCounter}`\n });\n }\n if (activeExtraction.isReasoning) {\n controller.enqueue({\n type: \"reasoning-delta\",\n delta: prefix + text2,\n id: `reasoning-${activeExtraction.idCounter}`\n });\n } else {\n if (delayedTextStart) {\n controller.enqueue(delayedTextStart);\n delayedTextStart = void 0;\n }\n controller.enqueue({\n type: \"text-delta\",\n delta: prefix + text2,\n id: activeExtraction.textId\n });\n }\n activeExtraction.afterSwitch = false;\n if (activeExtraction.isReasoning) {\n activeExtraction.isFirstReasoning = false;\n } else {\n activeExtraction.isFirstText = false;\n }\n }\n }\n do {\n const nextTag = activeExtraction.isReasoning ? closingTag : openingTag;\n const startIndex = getPotentialStartIndex(\n activeExtraction.buffer,\n nextTag\n );\n if (startIndex == null) {\n publish(activeExtraction.buffer);\n activeExtraction.buffer = \"\";\n break;\n }\n publish(activeExtraction.buffer.slice(0, startIndex));\n const foundFullMatch = startIndex + nextTag.length <= activeExtraction.buffer.length;\n if (foundFullMatch) {\n activeExtraction.buffer = activeExtraction.buffer.slice(\n startIndex + nextTag.length\n );\n if (activeExtraction.isReasoning) {\n controller.enqueue({\n type: \"reasoning-end\",\n id: `reasoning-${activeExtraction.idCounter++}`\n });\n }\n activeExtraction.isReasoning = !activeExtraction.isReasoning;\n activeExtraction.afterSwitch = true;\n } else {\n activeExtraction.buffer = activeExtraction.buffer.slice(startIndex);\n break;\n }\n } while (true);\n }\n })\n ),\n ...rest\n };\n }\n };\n}\n\n// src/middleware/simulate-streaming-middleware.ts\nfunction simulateStreamingMiddleware() {\n return {\n middlewareVersion: \"v2\",\n wrapStream: async ({ doGenerate }) => {\n const result = await doGenerate();\n let id = 0;\n const simulatedStream = new ReadableStream({\n start(controller) {\n controller.enqueue({\n type: \"stream-start\",\n warnings: result.warnings\n });\n controller.enqueue({ type: \"response-metadata\", ...result.response });\n for (const part of result.content) {\n switch (part.type) {\n case \"text\": {\n if (part.text.length > 0) {\n controller.enqueue({ type: \"text-start\", id: String(id) });\n controller.enqueue({\n type: \"text-delta\",\n id: String(id),\n delta: part.text\n });\n controller.enqueue({ type: \"text-end\", id: String(id) });\n id++;\n }\n break;\n }\n case \"reasoning\": {\n controller.enqueue({\n type: \"reasoning-start\",\n id: String(id),\n providerMetadata: part.providerMetadata\n });\n controller.enqueue({\n type: \"reasoning-delta\",\n id: String(id),\n delta: part.text\n });\n controller.enqueue({ type: \"reasoning-end\", id: String(id) });\n id++;\n break;\n }\n default: {\n controller.enqueue(part);\n break;\n }\n }\n }\n controller.enqueue({\n type: \"finish\",\n finishReason: result.finishReason,\n usage: result.usage,\n providerMetadata: result.providerMetadata\n });\n controller.close();\n }\n });\n return {\n stream: simulatedStream,\n request: result.request,\n response: result.response\n };\n }\n };\n}\n\n// src/middleware/wrap-language-model.ts\nvar wrapLanguageModel = ({\n model,\n middleware: middlewareArg,\n modelId,\n providerId\n}) => {\n return [...asArray(middlewareArg)].reverse().reduce((wrappedModel, middleware) => {\n return doWrap({ model: wrappedModel, middleware, modelId, providerId });\n }, model);\n};\nvar doWrap = ({\n model,\n middleware: {\n transformParams,\n wrapGenerate,\n wrapStream,\n overrideProvider,\n overrideModelId,\n overrideSupportedUrls\n },\n modelId,\n providerId\n}) => {\n var _a16, _b, _c;\n async function doTransform({\n params,\n type\n }) {\n return transformParams ? await transformParams({ params, type, model }) : params;\n }\n return {\n specificationVersion: \"v2\",\n provider: (_a16 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a16 : model.provider,\n modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,\n supportedUrls: (_c = overrideSupportedUrls == null ? void 0 : overrideSupportedUrls({ model })) != null ? _c : model.supportedUrls,\n async doGenerate(params) {\n const transformedParams = await doTransform({ params, type: \"generate\" });\n const doGenerate = async () => model.doGenerate(transformedParams);\n const doStream = async () => model.doStream(transformedParams);\n return wrapGenerate ? wrapGenerate({\n doGenerate,\n doStream,\n params: transformedParams,\n model\n }) : doGenerate();\n },\n async doStream(params) {\n const transformedParams = await doTransform({ params, type: \"stream\" });\n const doGenerate = async () => model.doGenerate(transformedParams);\n const doStream = async () => model.doStream(transformedParams);\n return wrapStream ? wrapStream({ doGenerate, doStream, params: transformedParams, model }) : doStream();\n }\n };\n};\n\n// src/middleware/wrap-provider.ts\nfunction wrapProvider({\n provider,\n languageModelMiddleware\n}) {\n const wrappedProvider = {\n languageModel(modelId) {\n let model = provider.languageModel(modelId);\n model = wrapLanguageModel({\n model,\n middleware: languageModelMiddleware\n });\n return model;\n },\n textEmbeddingModel: provider.textEmbeddingModel,\n imageModel: provider.imageModel,\n transcriptionModel: provider.transcriptionModel,\n speechModel: provider.speechModel\n };\n return wrappedProvider;\n}\n\n// src/registry/custom-provider.ts\nimport {\n NoSuchModelError as NoSuchModelError2\n} from \"@ai-sdk/provider\";\nfunction customProvider({\n languageModels,\n textEmbeddingModels,\n imageModels,\n transcriptionModels,\n speechModels,\n fallbackProvider\n}) {\n return {\n languageModel(modelId) {\n if (languageModels != null && modelId in languageModels) {\n return languageModels[modelId];\n }\n if (fallbackProvider) {\n return fallbackProvider.languageModel(modelId);\n }\n throw new NoSuchModelError2({ modelId, modelType: \"languageModel\" });\n },\n textEmbeddingModel(modelId) {\n if (textEmbeddingModels != null && modelId in textEmbeddingModels) {\n return textEmbeddingModels[modelId];\n }\n if (fallbackProvider) {\n return fallbackProvider.textEmbeddingModel(modelId);\n }\n throw new NoSuchModelError2({ modelId, modelType: \"textEmbeddingModel\" });\n },\n imageModel(modelId) {\n if (imageModels != null && modelId in imageModels) {\n return imageModels[modelId];\n }\n if (fallbackProvider == null ? void 0 : fallbackProvider.imageModel) {\n return fallbackProvider.imageModel(modelId);\n }\n throw new NoSuchModelError2({ modelId, modelType: \"imageModel\" });\n },\n transcriptionModel(modelId) {\n if (transcriptionModels != null && modelId in transcriptionModels) {\n return transcriptionModels[modelId];\n }\n if (fallbackProvider == null ? void 0 : fallbackProvider.transcriptionModel) {\n return fallbackProvider.transcriptionModel(modelId);\n }\n throw new NoSuchModelError2({ modelId, modelType: \"transcriptionModel\" });\n },\n speechModel(modelId) {\n if (speechModels != null && modelId in speechModels) {\n return speechModels[modelId];\n }\n if (fallbackProvider == null ? void 0 : fallbackProvider.speechModel) {\n return fallbackProvider.speechModel(modelId);\n }\n throw new NoSuchModelError2({ modelId, modelType: \"speechModel\" });\n }\n };\n}\nvar experimental_customProvider = customProvider;\n\n// src/registry/no-such-provider-error.ts\nimport { AISDKError as AISDKError20, NoSuchModelError as NoSuchModelError3 } from \"@ai-sdk/provider\";\nvar name15 = \"AI_NoSuchProviderError\";\nvar marker15 = `vercel.ai.error.${name15}`;\nvar symbol15 = Symbol.for(marker15);\nvar _a15;\nvar NoSuchProviderError = class extends NoSuchModelError3 {\n constructor({\n modelId,\n modelType,\n providerId,\n availableProviders,\n message = `No such provider: ${providerId} (available providers: ${availableProviders.join()})`\n }) {\n super({ errorName: name15, modelId, modelType, message });\n this[_a15] = true;\n this.providerId = providerId;\n this.availableProviders = availableProviders;\n }\n static isInstance(error) {\n return AISDKError20.hasMarker(error, marker15);\n }\n};\n_a15 = symbol15;\n\n// src/registry/provider-registry.ts\nimport {\n NoSuchModelError as NoSuchModelError4\n} from \"@ai-sdk/provider\";\nfunction createProviderRegistry(providers, {\n separator = \":\",\n languageModelMiddleware\n} = {}) {\n const registry = new DefaultProviderRegistry({\n separator,\n languageModelMiddleware\n });\n for (const [id, provider] of Object.entries(providers)) {\n registry.registerProvider({ id, provider });\n }\n return registry;\n}\nvar experimental_createProviderRegistry = createProviderRegistry;\nvar DefaultProviderRegistry = class {\n constructor({\n separator,\n languageModelMiddleware\n }) {\n this.providers = {};\n this.separator = separator;\n this.languageModelMiddleware = languageModelMiddleware;\n }\n registerProvider({\n id,\n provider\n }) {\n this.providers[id] = provider;\n }\n getProvider(id, modelType) {\n const provider = this.providers[id];\n if (provider == null) {\n throw new NoSuchProviderError({\n modelId: id,\n modelType,\n providerId: id,\n availableProviders: Object.keys(this.providers)\n });\n }\n return provider;\n }\n splitId(id, modelType) {\n const index = id.indexOf(this.separator);\n if (index === -1) {\n throw new NoSuchModelError4({\n modelId: id,\n modelType,\n message: `Invalid ${modelType} id for registry: ${id} (must be in the format \"providerId${this.separator}modelId\")`\n });\n }\n return [id.slice(0, index), id.slice(index + this.separator.length)];\n }\n languageModel(id) {\n var _a16, _b;\n const [providerId, modelId] = this.splitId(id, \"languageModel\");\n let model = (_b = (_a16 = this.getProvider(providerId, \"languageModel\")).languageModel) == null ? void 0 : _b.call(\n _a16,\n modelId\n );\n if (model == null) {\n throw new NoSuchModelError4({ modelId: id, modelType: \"languageModel\" });\n }\n if (this.languageModelMiddleware != null) {\n model = wrapLanguageModel({\n model,\n middleware: this.languageModelMiddleware\n });\n }\n return model;\n }\n textEmbeddingModel(id) {\n var _a16;\n const [providerId, modelId] = this.splitId(id, \"textEmbeddingModel\");\n const provider = this.getProvider(providerId, \"textEmbeddingModel\");\n const model = (_a16 = provider.textEmbeddingModel) == null ? void 0 : _a16.call(provider, modelId);\n if (model == null) {\n throw new NoSuchModelError4({\n modelId: id,\n modelType: \"textEmbeddingModel\"\n });\n }\n return model;\n }\n imageModel(id) {\n var _a16;\n const [providerId, modelId] = this.splitId(id, \"imageModel\");\n const provider = this.getProvider(providerId, \"imageModel\");\n const model = (_a16 = provider.imageModel) == null ? void 0 : _a16.call(provider, modelId);\n if (model == null) {\n throw new NoSuchModelError4({ modelId: id, modelType: \"imageModel\" });\n }\n return model;\n }\n transcriptionModel(id) {\n var _a16;\n const [providerId, modelId] = this.splitId(id, \"transcriptionModel\");\n const provider = this.getProvider(providerId, \"transcriptionModel\");\n const model = (_a16 = provider.transcriptionModel) == null ? void 0 : _a16.call(provider, modelId);\n if (model == null) {\n throw new NoSuchModelError4({\n modelId: id,\n modelType: \"transcriptionModel\"\n });\n }\n return model;\n }\n speechModel(id) {\n var _a16;\n const [providerId, modelId] = this.splitId(id, \"speechModel\");\n const provider = this.getProvider(providerId, \"speechModel\");\n const model = (_a16 = provider.speechModel) == null ? void 0 : _a16.call(provider, modelId);\n if (model == null) {\n throw new NoSuchModelError4({ modelId: id, modelType: \"speechModel\" });\n }\n return model;\n }\n};\n\n// src/transcribe/transcribe.ts\nimport { withUserAgentSuffix as withUserAgentSuffix8 } from \"@ai-sdk/provider-utils\";\n\n// src/error/no-transcript-generated-error.ts\nimport { AISDKError as AISDKError21 } from \"@ai-sdk/provider\";\nvar NoTranscriptGeneratedError = class extends AISDKError21 {\n constructor(options) {\n super({\n name: \"AI_NoTranscriptGeneratedError\",\n message: \"No transcript generated.\"\n });\n this.responses = options.responses;\n }\n};\n\n// src/transcribe/transcribe.ts\nasync function transcribe({\n model,\n audio,\n providerOptions = {},\n maxRetries: maxRetriesArg,\n abortSignal,\n headers\n}) {\n if (model.specificationVersion !== \"v2\") {\n throw new UnsupportedModelVersionError({\n version: model.specificationVersion,\n provider: model.provider,\n modelId: model.modelId\n });\n }\n const { retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const headersWithUserAgent = withUserAgentSuffix8(\n headers != null ? headers : {},\n `ai/${VERSION}`\n );\n const audioData = audio instanceof URL ? (await download({ url: audio })).data : convertDataContentToUint8Array(audio);\n const result = await retry(\n () => {\n var _a16;\n return model.doGenerate({\n audio: audioData,\n abortSignal,\n headers: headersWithUserAgent,\n providerOptions,\n mediaType: (_a16 = detectMediaType({\n data: audioData,\n signatures: audioMediaTypeSignatures\n })) != null ? _a16 : \"audio/wav\"\n });\n }\n );\n logWarnings(result.warnings);\n if (!result.text) {\n throw new NoTranscriptGeneratedError({ responses: [result.response] });\n }\n return new DefaultTranscriptionResult({\n text: result.text,\n segments: result.segments,\n language: result.language,\n durationInSeconds: result.durationInSeconds,\n warnings: result.warnings,\n responses: [result.response],\n providerMetadata: result.providerMetadata\n });\n}\nvar DefaultTranscriptionResult = class {\n constructor(options) {\n var _a16;\n this.text = options.text;\n this.segments = options.segments;\n this.language = options.language;\n this.durationInSeconds = options.durationInSeconds;\n this.warnings = options.warnings;\n this.responses = options.responses;\n this.providerMetadata = (_a16 = options.providerMetadata) != null ? _a16 : {};\n }\n};\n\n// src/ui/call-completion-api.ts\nimport {\n parseJsonEventStream,\n withUserAgentSuffix as withUserAgentSuffix9,\n getRuntimeEnvironmentUserAgent as getRuntimeEnvironmentUserAgent2\n} from \"@ai-sdk/provider-utils\";\n\n// src/ui/process-text-stream.ts\nasync function processTextStream({\n stream,\n onTextPart\n}) {\n const reader = stream.pipeThrough(new TextDecoderStream()).getReader();\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n await onTextPart(value);\n }\n}\n\n// src/ui/call-completion-api.ts\nvar getOriginalFetch = () => fetch;\nasync function callCompletionApi({\n api,\n prompt,\n credentials,\n headers,\n body,\n streamProtocol = \"data\",\n setCompletion,\n setLoading,\n setError,\n setAbortController,\n onFinish,\n onError,\n fetch: fetch2 = getOriginalFetch()\n}) {\n var _a16;\n try {\n setLoading(true);\n setError(void 0);\n const abortController = new AbortController();\n setAbortController(abortController);\n setCompletion(\"\");\n const response = await fetch2(api, {\n method: \"POST\",\n body: JSON.stringify({\n prompt,\n ...body\n }),\n credentials,\n headers: withUserAgentSuffix9(\n {\n \"Content-Type\": \"application/json\",\n ...headers\n },\n `ai-sdk/${VERSION}`,\n getRuntimeEnvironmentUserAgent2()\n ),\n signal: abortController.signal\n }).catch((err) => {\n throw err;\n });\n if (!response.ok) {\n throw new Error(\n (_a16 = await response.text()) != null ? _a16 : \"Failed to fetch the chat response.\"\n );\n }\n if (!response.body) {\n throw new Error(\"The response body is empty.\");\n }\n let result = \"\";\n switch (streamProtocol) {\n case \"text\": {\n await processTextStream({\n stream: response.body,\n onTextPart: (chunk) => {\n result += chunk;\n setCompletion(result);\n }\n });\n break;\n }\n case \"data\": {\n await consumeStream({\n stream: parseJsonEventStream({\n stream: response.body,\n schema: uiMessageChunkSchema\n }).pipeThrough(\n new TransformStream({\n async transform(part) {\n if (!part.success) {\n throw part.error;\n }\n const streamPart = part.value;\n if (streamPart.type === \"text-delta\") {\n result += streamPart.delta;\n setCompletion(result);\n } else if (streamPart.type === \"error\") {\n throw new Error(streamPart.errorText);\n }\n }\n })\n ),\n onError: (error) => {\n throw error;\n }\n });\n break;\n }\n default: {\n const exhaustiveCheck = streamProtocol;\n throw new Error(`Unknown stream protocol: ${exhaustiveCheck}`);\n }\n }\n if (onFinish) {\n onFinish(prompt, result);\n }\n setAbortController(null);\n return result;\n } catch (err) {\n if (err.name === \"AbortError\") {\n setAbortController(null);\n return null;\n }\n if (err instanceof Error) {\n if (onError) {\n onError(err);\n }\n }\n setError(err);\n } finally {\n setLoading(false);\n }\n}\n\n// src/ui/chat.ts\nimport {\n generateId as generateIdFunc\n} from \"@ai-sdk/provider-utils\";\n\n// src/ui/convert-file-list-to-file-ui-parts.ts\nasync function convertFileListToFileUIParts(files) {\n if (files == null) {\n return [];\n }\n if (!globalThis.FileList || !(files instanceof globalThis.FileList)) {\n throw new Error(\"FileList is not supported in the current environment\");\n }\n return Promise.all(\n Array.from(files).map(async (file) => {\n const { name: name16, type } = file;\n const dataUrl = await new Promise((resolve2, reject) => {\n const reader = new FileReader();\n reader.onload = (readerEvent) => {\n var _a16;\n resolve2((_a16 = readerEvent.target) == null ? void 0 : _a16.result);\n };\n reader.onerror = (error) => reject(error);\n reader.readAsDataURL(file);\n });\n return {\n type: \"file\",\n mediaType: type,\n filename: name16,\n url: dataUrl\n };\n })\n );\n}\n\n// src/ui/default-chat-transport.ts\nimport { parseJsonEventStream as parseJsonEventStream2 } from \"@ai-sdk/provider-utils\";\n\n// src/ui/http-chat-transport.ts\nimport {\n normalizeHeaders,\n resolve,\n withUserAgentSuffix as withUserAgentSuffix10,\n getRuntimeEnvironmentUserAgent as getRuntimeEnvironmentUserAgent3\n} from \"@ai-sdk/provider-utils\";\nvar HttpChatTransport = class {\n constructor({\n api = \"/api/chat\",\n credentials,\n headers,\n body,\n fetch: fetch2,\n prepareSendMessagesRequest,\n prepareReconnectToStreamRequest\n }) {\n this.api = api;\n this.credentials = credentials;\n this.headers = headers;\n this.body = body;\n this.fetch = fetch2;\n this.prepareSendMessagesRequest = prepareSendMessagesRequest;\n this.prepareReconnectToStreamRequest = prepareReconnectToStreamRequest;\n }\n async sendMessages({\n abortSignal,\n ...options\n }) {\n var _a16, _b, _c, _d, _e;\n const resolvedBody = await resolve(this.body);\n const resolvedHeaders = await resolve(this.headers);\n const resolvedCredentials = await resolve(this.credentials);\n const baseHeaders = {\n ...normalizeHeaders(resolvedHeaders),\n ...normalizeHeaders(options.headers)\n };\n const preparedRequest = await ((_a16 = this.prepareSendMessagesRequest) == null ? void 0 : _a16.call(this, {\n api: this.api,\n id: options.chatId,\n messages: options.messages,\n body: { ...resolvedBody, ...options.body },\n headers: baseHeaders,\n credentials: resolvedCredentials,\n requestMetadata: options.metadata,\n trigger: options.trigger,\n messageId: options.messageId\n }));\n const api = (_b = preparedRequest == null ? void 0 : preparedRequest.api) != null ? _b : this.api;\n const headers = (preparedRequest == null ? void 0 : preparedRequest.headers) !== void 0 ? normalizeHeaders(preparedRequest.headers) : baseHeaders;\n const body = (preparedRequest == null ? void 0 : preparedRequest.body) !== void 0 ? preparedRequest.body : {\n ...resolvedBody,\n ...options.body,\n id: options.chatId,\n messages: options.messages,\n trigger: options.trigger,\n messageId: options.messageId\n };\n const credentials = (_c = preparedRequest == null ? void 0 : preparedRequest.credentials) != null ? _c : resolvedCredentials;\n const fetch2 = (_d = this.fetch) != null ? _d : globalThis.fetch;\n const response = await fetch2(api, {\n method: \"POST\",\n headers: withUserAgentSuffix10(\n {\n \"Content-Type\": \"application/json\",\n ...headers\n },\n `ai-sdk/${VERSION}`,\n getRuntimeEnvironmentUserAgent3()\n ),\n body: JSON.stringify(body),\n credentials,\n signal: abortSignal\n });\n if (!response.ok) {\n throw new Error(\n (_e = await response.text()) != null ? _e : \"Failed to fetch the chat response.\"\n );\n }\n if (!response.body) {\n throw new Error(\"The response body is empty.\");\n }\n return this.processResponseStream(response.body);\n }\n async reconnectToStream(options) {\n var _a16, _b, _c, _d, _e;\n const resolvedBody = await resolve(this.body);\n const resolvedHeaders = await resolve(this.headers);\n const resolvedCredentials = await resolve(this.credentials);\n const baseHeaders = {\n ...normalizeHeaders(resolvedHeaders),\n ...normalizeHeaders(options.headers)\n };\n const preparedRequest = await ((_a16 = this.prepareReconnectToStreamRequest) == null ? void 0 : _a16.call(this, {\n api: this.api,\n id: options.chatId,\n body: { ...resolvedBody, ...options.body },\n headers: baseHeaders,\n credentials: resolvedCredentials,\n requestMetadata: options.metadata\n }));\n const api = (_b = preparedRequest == null ? void 0 : preparedRequest.api) != null ? _b : `${this.api}/${options.chatId}/stream`;\n const headers = (preparedRequest == null ? void 0 : preparedRequest.headers) !== void 0 ? normalizeHeaders(preparedRequest.headers) : baseHeaders;\n const credentials = (_c = preparedRequest == null ? void 0 : preparedRequest.credentials) != null ? _c : resolvedCredentials;\n const fetch2 = (_d = this.fetch) != null ? _d : globalThis.fetch;\n const response = await fetch2(api, {\n method: \"GET\",\n headers: withUserAgentSuffix10(\n headers,\n `ai-sdk/${VERSION}`,\n getRuntimeEnvironmentUserAgent3()\n ),\n credentials\n });\n if (response.status === 204) {\n return null;\n }\n if (!response.ok) {\n throw new Error(\n (_e = await response.text()) != null ? _e : \"Failed to fetch the chat response.\"\n );\n }\n if (!response.body) {\n throw new Error(\"The response body is empty.\");\n }\n return this.processResponseStream(response.body);\n }\n};\n\n// src/ui/default-chat-transport.ts\nvar DefaultChatTransport = class extends HttpChatTransport {\n constructor(options = {}) {\n super(options);\n }\n processResponseStream(stream) {\n return parseJsonEventStream2({\n stream,\n schema: uiMessageChunkSchema\n }).pipeThrough(\n new TransformStream({\n async transform(chunk, controller) {\n if (!chunk.success) {\n throw chunk.error;\n }\n controller.enqueue(chunk.value);\n }\n })\n );\n }\n};\n\n// src/ui/chat.ts\nvar AbstractChat = class {\n constructor({\n generateId: generateId3 = generateIdFunc,\n id = generateId3(),\n transport = new DefaultChatTransport(),\n messageMetadataSchema,\n dataPartSchemas,\n state,\n onError,\n onToolCall,\n onFinish,\n onData,\n sendAutomaticallyWhen\n }) {\n this.activeResponse = void 0;\n this.jobExecutor = new SerialJobExecutor();\n /**\n * Appends or replaces a user message to the chat list. This triggers the API call to fetch\n * the assistant's response.\n *\n * If a messageId is provided, the message will be replaced.\n */\n this.sendMessage = async (message, options) => {\n var _a16, _b, _c, _d;\n if (message == null) {\n await this.makeRequest({\n trigger: \"submit-message\",\n messageId: (_a16 = this.lastMessage) == null ? void 0 : _a16.id,\n ...options\n });\n return;\n }\n let uiMessage;\n if (\"text\" in message || \"files\" in message) {\n const fileParts = Array.isArray(message.files) ? message.files : await convertFileListToFileUIParts(message.files);\n uiMessage = {\n parts: [\n ...fileParts,\n ...\"text\" in message && message.text != null ? [{ type: \"text\", text: message.text }] : []\n ]\n };\n } else {\n uiMessage = message;\n }\n if (message.messageId != null) {\n const messageIndex = this.state.messages.findIndex(\n (m) => m.id === message.messageId\n );\n if (messageIndex === -1) {\n throw new Error(`message with id ${message.messageId} not found`);\n }\n if (this.state.messages[messageIndex].role !== \"user\") {\n throw new Error(\n `message with id ${message.messageId} is not a user message`\n );\n }\n this.state.messages = this.state.messages.slice(0, messageIndex + 1);\n this.state.replaceMessage(messageIndex, {\n ...uiMessage,\n id: message.messageId,\n role: (_b = uiMessage.role) != null ? _b : \"user\",\n metadata: message.metadata\n });\n } else {\n this.state.pushMessage({\n ...uiMessage,\n id: (_c = uiMessage.id) != null ? _c : this.generateId(),\n role: (_d = uiMessage.role) != null ? _d : \"user\",\n metadata: message.metadata\n });\n }\n await this.makeRequest({\n trigger: \"submit-message\",\n messageId: message.messageId,\n ...options\n });\n };\n /**\n * Regenerate the assistant message with the provided message id.\n * If no message id is provided, the last assistant message will be regenerated.\n */\n this.regenerate = async ({\n messageId,\n ...options\n } = {}) => {\n const messageIndex = messageId == null ? this.state.messages.length - 1 : this.state.messages.findIndex((message) => message.id === messageId);\n if (messageIndex === -1) {\n throw new Error(`message ${messageId} not found`);\n }\n this.state.messages = this.state.messages.slice(\n 0,\n // if the message is a user message, we need to include it in the request:\n this.messages[messageIndex].role === \"assistant\" ? messageIndex : messageIndex + 1\n );\n await this.makeRequest({\n trigger: \"regenerate-message\",\n messageId,\n ...options\n });\n };\n /**\n * Attempt to resume an ongoing streaming response.\n */\n this.resumeStream = async (options = {}) => {\n await this.makeRequest({ trigger: \"resume-stream\", ...options });\n };\n /**\n * Clear the error state and set the status to ready if the chat is in an error state.\n */\n this.clearError = () => {\n if (this.status === \"error\") {\n this.state.error = void 0;\n this.setStatus({ status: \"ready\" });\n }\n };\n this.addToolResult = async ({\n state = \"output-available\",\n tool: tool2,\n toolCallId,\n output,\n errorText\n }) => this.jobExecutor.run(async () => {\n var _a16, _b;\n const messages = this.state.messages;\n const lastMessage = messages[messages.length - 1];\n this.state.replaceMessage(messages.length - 1, {\n ...lastMessage,\n parts: lastMessage.parts.map(\n (part) => isToolOrDynamicToolUIPart(part) && part.toolCallId === toolCallId ? { ...part, state, output, errorText } : part\n )\n });\n if (this.activeResponse) {\n this.activeResponse.state.message.parts = this.activeResponse.state.message.parts.map(\n (part) => isToolOrDynamicToolUIPart(part) && part.toolCallId === toolCallId ? {\n ...part,\n state,\n output,\n errorText\n } : part\n );\n }\n if (this.status !== \"streaming\" && this.status !== \"submitted\" && ((_a16 = this.sendAutomaticallyWhen) == null ? void 0 : _a16.call(this, { messages: this.state.messages }))) {\n this.makeRequest({\n trigger: \"submit-message\",\n messageId: (_b = this.lastMessage) == null ? void 0 : _b.id\n });\n }\n });\n /**\n * Abort the current request immediately, keep the generated tokens if any.\n */\n this.stop = async () => {\n var _a16;\n if (this.status !== \"streaming\" && this.status !== \"submitted\")\n return;\n if ((_a16 = this.activeResponse) == null ? void 0 : _a16.abortController) {\n this.activeResponse.abortController.abort();\n }\n };\n this.id = id;\n this.transport = transport;\n this.generateId = generateId3;\n this.messageMetadataSchema = messageMetadataSchema;\n this.dataPartSchemas = dataPartSchemas;\n this.state = state;\n this.onError = onError;\n this.onToolCall = onToolCall;\n this.onFinish = onFinish;\n this.onData = onData;\n this.sendAutomaticallyWhen = sendAutomaticallyWhen;\n }\n /**\n * Hook status:\n *\n * - `submitted`: The message has been sent to the API and we're awaiting the start of the response stream.\n * - `streaming`: The response is actively streaming in from the API, receiving chunks of data.\n * - `ready`: The full response has been received and processed; a new user message can be submitted.\n * - `error`: An error occurred during the API request, preventing successful completion.\n */\n get status() {\n return this.state.status;\n }\n setStatus({\n status,\n error\n }) {\n if (this.status === status)\n return;\n this.state.status = status;\n this.state.error = error;\n }\n get error() {\n return this.state.error;\n }\n get messages() {\n return this.state.messages;\n }\n get lastMessage() {\n return this.state.messages[this.state.messages.length - 1];\n }\n set messages(messages) {\n this.state.messages = messages;\n }\n async makeRequest({\n trigger,\n metadata,\n headers,\n body,\n messageId\n }) {\n var _a16, _b, _c;\n this.setStatus({ status: \"submitted\", error: void 0 });\n const lastMessage = this.lastMessage;\n let isAbort = false;\n let isDisconnect = false;\n let isError = false;\n try {\n const activeResponse = {\n state: createStreamingUIMessageState({\n lastMessage: this.state.snapshot(lastMessage),\n messageId: this.generateId()\n }),\n abortController: new AbortController()\n };\n activeResponse.abortController.signal.addEventListener(\"abort\", () => {\n isAbort = true;\n });\n this.activeResponse = activeResponse;\n let stream;\n if (trigger === \"resume-stream\") {\n const reconnect = await this.transport.reconnectToStream({\n chatId: this.id,\n metadata,\n headers,\n body\n });\n if (reconnect == null) {\n this.setStatus({ status: \"ready\" });\n return;\n }\n stream = reconnect;\n } else {\n stream = await this.transport.sendMessages({\n chatId: this.id,\n messages: this.state.messages,\n abortSignal: activeResponse.abortController.signal,\n metadata,\n headers,\n body,\n trigger,\n messageId\n });\n }\n const runUpdateMessageJob = (job) => (\n // serialize the job execution to avoid race conditions:\n this.jobExecutor.run(\n () => job({\n state: activeResponse.state,\n write: () => {\n var _a17;\n this.setStatus({ status: \"streaming\" });\n const replaceLastMessage = activeResponse.state.message.id === ((_a17 = this.lastMessage) == null ? void 0 : _a17.id);\n if (replaceLastMessage) {\n this.state.replaceMessage(\n this.state.messages.length - 1,\n activeResponse.state.message\n );\n } else {\n this.state.pushMessage(activeResponse.state.message);\n }\n }\n })\n )\n );\n await consumeStream({\n stream: processUIMessageStream({\n stream,\n onToolCall: this.onToolCall,\n onData: this.onData,\n messageMetadataSchema: this.messageMetadataSchema,\n dataPartSchemas: this.dataPartSchemas,\n runUpdateMessageJob,\n onError: (error) => {\n throw error;\n }\n }),\n onError: (error) => {\n throw error;\n }\n });\n this.setStatus({ status: \"ready\" });\n } catch (err) {\n if (isAbort || err.name === \"AbortError\") {\n isAbort = true;\n this.setStatus({ status: \"ready\" });\n return null;\n }\n isError = true;\n if (err instanceof TypeError && (err.message.toLowerCase().includes(\"fetch\") || err.message.toLowerCase().includes(\"network\"))) {\n isDisconnect = true;\n }\n if (this.onError && err instanceof Error) {\n this.onError(err);\n }\n this.setStatus({ status: \"error\", error: err });\n } finally {\n try {\n (_a16 = this.onFinish) == null ? void 0 : _a16.call(this, {\n message: this.activeResponse.state.message,\n messages: this.state.messages,\n isAbort,\n isDisconnect,\n isError\n });\n } catch (err) {\n console.error(err);\n }\n this.activeResponse = void 0;\n }\n if (((_b = this.sendAutomaticallyWhen) == null ? void 0 : _b.call(this, { messages: this.state.messages })) && !isError) {\n await this.makeRequest({\n trigger: \"submit-message\",\n messageId: (_c = this.lastMessage) == null ? void 0 : _c.id,\n metadata,\n headers,\n body\n });\n }\n }\n};\n\n// src/ui/last-assistant-message-is-complete-with-tool-calls.ts\nfunction lastAssistantMessageIsCompleteWithToolCalls({\n messages\n}) {\n const message = messages[messages.length - 1];\n if (!message) {\n return false;\n }\n if (message.role !== \"assistant\") {\n return false;\n }\n const lastStepStartIndex = message.parts.reduce((lastIndex, part, index) => {\n return part.type === \"step-start\" ? index : lastIndex;\n }, -1);\n const lastStepToolInvocations = message.parts.slice(lastStepStartIndex + 1).filter(isToolOrDynamicToolUIPart).filter((part) => !part.providerExecuted);\n return lastStepToolInvocations.length > 0 && lastStepToolInvocations.every(\n (part) => part.state === \"output-available\" || part.state === \"output-error\"\n );\n}\n\n// src/ui/transform-text-to-ui-message-stream.ts\nfunction transformTextToUiMessageStream({\n stream\n}) {\n return stream.pipeThrough(\n new TransformStream({\n start(controller) {\n controller.enqueue({ type: \"start\" });\n controller.enqueue({ type: \"start-step\" });\n controller.enqueue({ type: \"text-start\", id: \"text-1\" });\n },\n async transform(part, controller) {\n controller.enqueue({ type: \"text-delta\", id: \"text-1\", delta: part });\n },\n async flush(controller) {\n controller.enqueue({ type: \"text-end\", id: \"text-1\" });\n controller.enqueue({ type: \"finish-step\" });\n controller.enqueue({ type: \"finish\" });\n }\n })\n );\n}\n\n// src/ui/text-stream-chat-transport.ts\nvar TextStreamChatTransport = class extends HttpChatTransport {\n constructor(options = {}) {\n super(options);\n }\n processResponseStream(stream) {\n return transformTextToUiMessageStream({\n stream: stream.pipeThrough(new TextDecoderStream())\n });\n }\n};\n\n// src/ui/validate-ui-messages.ts\nimport { TypeValidationError as TypeValidationError4 } from \"@ai-sdk/provider\";\nimport {\n lazyValidator as lazyValidator2,\n validateTypes as validateTypes2,\n zodSchema as zodSchema2\n} from \"@ai-sdk/provider-utils\";\nimport { z as z8 } from \"zod/v4\";\nvar uiMessagesSchema = lazyValidator2(\n () => zodSchema2(\n z8.array(\n z8.object({\n id: z8.string(),\n role: z8.enum([\"system\", \"user\", \"assistant\"]),\n metadata: z8.unknown().optional(),\n parts: z8.array(\n z8.union([\n z8.object({\n type: z8.literal(\"text\"),\n text: z8.string(),\n state: z8.enum([\"streaming\", \"done\"]).optional(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z8.object({\n type: z8.literal(\"reasoning\"),\n text: z8.string(),\n state: z8.enum([\"streaming\", \"done\"]).optional(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z8.object({\n type: z8.literal(\"source-url\"),\n sourceId: z8.string(),\n url: z8.string(),\n title: z8.string().optional(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z8.object({\n type: z8.literal(\"source-document\"),\n sourceId: z8.string(),\n mediaType: z8.string(),\n title: z8.string(),\n filename: z8.string().optional(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z8.object({\n type: z8.literal(\"file\"),\n mediaType: z8.string(),\n filename: z8.string().optional(),\n url: z8.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z8.object({\n type: z8.literal(\"step-start\")\n }),\n z8.object({\n type: z8.string().startsWith(\"data-\"),\n id: z8.string().optional(),\n data: z8.unknown()\n }),\n z8.object({\n type: z8.literal(\"dynamic-tool\"),\n toolName: z8.string(),\n toolCallId: z8.string(),\n state: z8.literal(\"input-streaming\"),\n input: z8.unknown().optional(),\n providerExecuted: z8.boolean().optional(),\n output: z8.never().optional(),\n errorText: z8.never().optional()\n }),\n z8.object({\n type: z8.literal(\"dynamic-tool\"),\n toolName: z8.string(),\n toolCallId: z8.string(),\n state: z8.literal(\"input-available\"),\n input: z8.unknown(),\n providerExecuted: z8.boolean().optional(),\n output: z8.never().optional(),\n errorText: z8.never().optional(),\n callProviderMetadata: providerMetadataSchema.optional()\n }),\n z8.object({\n type: z8.literal(\"dynamic-tool\"),\n toolName: z8.string(),\n toolCallId: z8.string(),\n state: z8.literal(\"output-available\"),\n input: z8.unknown(),\n providerExecuted: z8.boolean().optional(),\n output: z8.unknown(),\n errorText: z8.never().optional(),\n callProviderMetadata: providerMetadataSchema.optional(),\n preliminary: z8.boolean().optional()\n }),\n z8.object({\n type: z8.literal(\"dynamic-tool\"),\n toolName: z8.string(),\n toolCallId: z8.string(),\n state: z8.literal(\"output-error\"),\n input: z8.unknown(),\n providerExecuted: z8.boolean().optional(),\n output: z8.never().optional(),\n errorText: z8.string(),\n callProviderMetadata: providerMetadataSchema.optional()\n }),\n z8.object({\n type: z8.string().startsWith(\"tool-\"),\n toolCallId: z8.string(),\n state: z8.literal(\"input-streaming\"),\n providerExecuted: z8.boolean().optional(),\n input: z8.unknown().optional(),\n output: z8.never().optional(),\n errorText: z8.never().optional(),\n approval: z8.never().optional()\n }),\n z8.object({\n type: z8.string().startsWith(\"tool-\"),\n toolCallId: z8.string(),\n state: z8.literal(\"input-available\"),\n providerExecuted: z8.boolean().optional(),\n input: z8.unknown(),\n output: z8.never().optional(),\n errorText: z8.never().optional(),\n callProviderMetadata: providerMetadataSchema.optional(),\n approval: z8.never().optional()\n }),\n z8.object({\n type: z8.string().startsWith(\"tool-\"),\n toolCallId: z8.string(),\n state: z8.literal(\"approval-requested\"),\n input: z8.unknown(),\n providerExecuted: z8.boolean().optional(),\n output: z8.never().optional(),\n errorText: z8.never().optional(),\n callProviderMetadata: providerMetadataSchema.optional(),\n approval: z8.object({\n id: z8.string(),\n approved: z8.never().optional(),\n reason: z8.never().optional()\n })\n }),\n z8.object({\n type: z8.string().startsWith(\"tool-\"),\n toolCallId: z8.string(),\n state: z8.literal(\"approval-responded\"),\n input: z8.unknown(),\n providerExecuted: z8.boolean().optional(),\n output: z8.never().optional(),\n errorText: z8.never().optional(),\n callProviderMetadata: providerMetadataSchema.optional(),\n approval: z8.object({\n id: z8.string(),\n approved: z8.boolean(),\n reason: z8.string().optional()\n })\n }),\n z8.object({\n type: z8.string().startsWith(\"tool-\"),\n toolCallId: z8.string(),\n state: z8.literal(\"output-available\"),\n providerExecuted: z8.boolean().optional(),\n input: z8.unknown(),\n output: z8.unknown(),\n errorText: z8.never().optional(),\n callProviderMetadata: providerMetadataSchema.optional(),\n preliminary: z8.boolean().optional(),\n approval: z8.object({\n id: z8.string(),\n approved: z8.literal(true),\n reason: z8.string().optional()\n }).optional()\n }),\n z8.object({\n type: z8.string().startsWith(\"tool-\"),\n toolCallId: z8.string(),\n state: z8.literal(\"output-error\"),\n providerExecuted: z8.boolean().optional(),\n input: z8.unknown(),\n output: z8.never().optional(),\n errorText: z8.string(),\n callProviderMetadata: providerMetadataSchema.optional(),\n approval: z8.object({\n id: z8.string(),\n approved: z8.literal(true),\n reason: z8.string().optional()\n }).optional()\n }),\n z8.object({\n type: z8.string().startsWith(\"tool-\"),\n toolCallId: z8.string(),\n state: z8.literal(\"output-denied\"),\n providerExecuted: z8.boolean().optional(),\n input: z8.unknown(),\n output: z8.never().optional(),\n errorText: z8.never().optional(),\n callProviderMetadata: providerMetadataSchema.optional(),\n approval: z8.object({\n id: z8.string(),\n approved: z8.literal(false),\n reason: z8.string().optional()\n })\n })\n ])\n )\n })\n )\n )\n);\nasync function safeValidateUIMessages({\n messages,\n metadataSchema,\n dataSchemas,\n tools\n}) {\n try {\n if (messages == null) {\n return {\n success: false,\n error: new InvalidArgumentError({\n parameter: \"messages\",\n value: messages,\n message: \"messages parameter must be provided\"\n })\n };\n }\n const validatedMessages = await validateTypes2({\n value: messages,\n schema: uiMessagesSchema\n });\n if (metadataSchema) {\n for (const message of validatedMessages) {\n await validateTypes2({\n value: message.metadata,\n schema: metadataSchema\n });\n }\n }\n if (dataSchemas) {\n for (const message of validatedMessages) {\n const dataParts = message.parts.filter(\n (part) => part.type.startsWith(\"data-\")\n );\n for (const dataPart of dataParts) {\n const dataName = dataPart.type.slice(5);\n const dataSchema = dataSchemas[dataName];\n if (!dataSchema) {\n return {\n success: false,\n error: new TypeValidationError4({\n value: dataPart.data,\n cause: `No data schema found for data part ${dataName}`\n })\n };\n }\n await validateTypes2({\n value: dataPart.data,\n schema: dataSchema\n });\n }\n }\n }\n if (tools) {\n for (const message of validatedMessages) {\n const toolParts = message.parts.filter(\n (part) => part.type.startsWith(\"tool-\")\n );\n for (const toolPart of toolParts) {\n const toolName = toolPart.type.slice(5);\n const tool2 = tools[toolName];\n if (!tool2) {\n return {\n success: false,\n error: new TypeValidationError4({\n value: toolPart.input,\n cause: `No tool schema found for tool part ${toolName}`\n })\n };\n }\n if (toolPart.state === \"input-available\" || toolPart.state === \"output-available\" || toolPart.state === \"output-error\") {\n await validateTypes2({\n value: toolPart.input,\n schema: tool2.inputSchema\n });\n }\n if (toolPart.state === \"output-available\" && tool2.outputSchema) {\n await validateTypes2({\n value: toolPart.output,\n schema: tool2.outputSchema\n });\n }\n }\n }\n }\n return {\n success: true,\n data: validatedMessages\n };\n } catch (error) {\n const err = error;\n return {\n success: false,\n error: err\n };\n }\n}\nasync function validateUIMessages({\n messages,\n metadataSchema,\n dataSchemas,\n tools\n}) {\n const response = await safeValidateUIMessages({\n messages,\n metadataSchema,\n dataSchemas,\n tools\n });\n if (!response.success)\n throw response.error;\n return response.data;\n}\n\n// src/ui-message-stream/create-ui-message-stream.ts\nimport {\n generateId as generateIdFunc2,\n getErrorMessage as getErrorMessage8\n} from \"@ai-sdk/provider-utils\";\nfunction createUIMessageStream({\n execute,\n onError = getErrorMessage8,\n originalMessages,\n onFinish,\n generateId: generateId3 = generateIdFunc2\n}) {\n let controller;\n const ongoingStreamPromises = [];\n const stream = new ReadableStream({\n start(controllerArg) {\n controller = controllerArg;\n }\n });\n function safeEnqueue(data) {\n try {\n controller.enqueue(data);\n } catch (error) {\n }\n }\n try {\n const result = execute({\n writer: {\n write(part) {\n safeEnqueue(part);\n },\n merge(streamArg) {\n ongoingStreamPromises.push(\n (async () => {\n const reader = streamArg.getReader();\n while (true) {\n const { done, value } = await reader.read();\n if (done)\n break;\n safeEnqueue(value);\n }\n })().catch((error) => {\n safeEnqueue({\n type: \"error\",\n errorText: onError(error)\n });\n })\n );\n },\n onError\n }\n });\n if (result) {\n ongoingStreamPromises.push(\n result.catch((error) => {\n safeEnqueue({\n type: \"error\",\n errorText: onError(error)\n });\n })\n );\n }\n } catch (error) {\n safeEnqueue({\n type: \"error\",\n errorText: onError(error)\n });\n }\n const waitForStreams = new Promise(async (resolve2) => {\n while (ongoingStreamPromises.length > 0) {\n await ongoingStreamPromises.shift();\n }\n resolve2();\n });\n waitForStreams.finally(() => {\n try {\n controller.close();\n } catch (error) {\n }\n });\n return handleUIMessageStreamFinish({\n stream,\n messageId: generateId3(),\n originalMessages,\n onFinish,\n onError\n });\n}\n\n// src/ui-message-stream/read-ui-message-stream.ts\nfunction readUIMessageStream({\n message,\n stream,\n onError,\n terminateOnError = false\n}) {\n var _a16;\n let controller;\n let hasErrored = false;\n const outputStream = new ReadableStream({\n start(controllerParam) {\n controller = controllerParam;\n }\n });\n const state = createStreamingUIMessageState({\n messageId: (_a16 = message == null ? void 0 : message.id) != null ? _a16 : \"\",\n lastMessage: message\n });\n const handleError = (error) => {\n onError == null ? void 0 : onError(error);\n if (!hasErrored && terminateOnError) {\n hasErrored = true;\n controller == null ? void 0 : controller.error(error);\n }\n };\n consumeStream({\n stream: processUIMessageStream({\n stream,\n runUpdateMessageJob(job) {\n return job({\n state,\n write: () => {\n controller == null ? void 0 : controller.enqueue(structuredClone(state.message));\n }\n });\n },\n onError: handleError\n }),\n onError: handleError\n }).finally(() => {\n if (!hasErrored) {\n controller == null ? void 0 : controller.close();\n }\n });\n return createAsyncIterableStream(outputStream);\n}\nexport {\n AISDKError17 as AISDKError,\n APICallError,\n AbstractChat,\n DefaultChatTransport,\n DownloadError,\n EmptyResponseBodyError,\n Agent as Experimental_Agent,\n HttpChatTransport,\n InvalidArgumentError,\n InvalidDataContentError,\n InvalidMessageRoleError,\n InvalidPromptError,\n InvalidResponseDataError,\n InvalidStreamPartError,\n InvalidToolInputError,\n JSONParseError,\n JsonToSseTransformStream,\n LoadAPIKeyError,\n LoadSettingError,\n MessageConversionError,\n NoContentGeneratedError,\n NoImageGeneratedError,\n NoObjectGeneratedError,\n NoOutputGeneratedError,\n NoOutputSpecifiedError,\n NoSpeechGeneratedError,\n NoSuchModelError,\n NoSuchProviderError,\n NoSuchToolError,\n output_exports as Output,\n RetryError,\n SerialJobExecutor,\n TextStreamChatTransport,\n TooManyEmbeddingValuesForCallError,\n ToolCallRepairError,\n TypeValidationError,\n UI_MESSAGE_STREAM_HEADERS,\n UnsupportedFunctionalityError,\n UnsupportedModelVersionError,\n asSchema5 as asSchema,\n assistantModelMessageSchema,\n callCompletionApi,\n consumeStream,\n convertFileListToFileUIParts,\n convertToCoreMessages,\n convertToModelMessages,\n coreAssistantMessageSchema,\n coreMessageSchema,\n coreSystemMessageSchema,\n coreToolMessageSchema,\n coreUserMessageSchema,\n cosineSimilarity,\n createGateway,\n createIdGenerator5 as createIdGenerator,\n createProviderRegistry,\n createTextStreamResponse,\n createUIMessageStream,\n createUIMessageStreamResponse,\n customProvider,\n defaultSettingsMiddleware,\n dynamicTool,\n embed,\n embedMany,\n experimental_createProviderRegistry,\n experimental_customProvider,\n generateImage as experimental_generateImage,\n generateSpeech as experimental_generateSpeech,\n transcribe as experimental_transcribe,\n extractReasoningMiddleware,\n gateway2 as gateway,\n generateId2 as generateId,\n generateObject,\n generateText,\n getTextFromDataUrl,\n getToolName,\n getToolOrDynamicToolName,\n hasToolCall,\n isDataUIPart,\n isDeepEqualData,\n isFileUIPart,\n isReasoningUIPart,\n isTextUIPart,\n isToolOrDynamicToolUIPart,\n isToolUIPart,\n jsonSchema,\n lastAssistantMessageIsCompleteWithToolCalls,\n modelMessageSchema,\n parseJsonEventStream3 as parseJsonEventStream,\n parsePartialJson,\n pipeTextStreamToResponse,\n pipeUIMessageStreamToResponse,\n pruneMessages,\n readUIMessageStream,\n safeValidateUIMessages,\n simulateReadableStream,\n simulateStreamingMiddleware,\n smoothStream,\n stepCountIs,\n streamObject,\n streamText,\n systemModelMessageSchema,\n tool,\n toolModelMessageSchema,\n uiMessageChunkSchema,\n userModelMessageSchema,\n validateUIMessages,\n wrapLanguageModel,\n wrapProvider,\n zodSchema3 as zodSchema\n};\n//# sourceMappingURL=index.mjs.map",
58
- "/**\n * Shell Tools\n * Tools for executing shell commands\n */\n\nimport { exec } from 'node:child_process';\nimport { promisify } from 'node:util';\nimport { tool } from 'ai';\nimport { z } from 'zod';\n\nconst execAsync = promisify(exec);\n\n/**\n * Execute bash command tool\n */\nexport const executeBashTool = tool({\n description: `Execute a bash command and return its output.\n\nUsage:\n- Run build commands (npm, bun, etc.)\n- Execute git commands\n- Run tests\n- List files (ls, find)\n- Search content (grep)\n- Any shell command\n\nIMPORTANT:\n- Commands are executed in the current working directory\n- Use absolute paths when necessary\n- Be careful with destructive commands\n- Long-running commands may timeout`,\n inputSchema: z.object({\n command: z.string().describe('The bash command to execute'),\n cwd: z.string().optional().describe('Working directory (defaults to current directory)'),\n timeout: z\n .number()\n .default(30000)\n .optional()\n .describe('Command timeout in milliseconds (default: 30000)'),\n }),\n execute: async ({ command, cwd, timeout = 30000 }) => {\n try {\n const { stdout, stderr } = await execAsync(command, {\n cwd: cwd || process.cwd(),\n timeout,\n maxBuffer: 10 * 1024 * 1024, // 10MB buffer\n });\n\n return {\n command,\n stdout: stdout.trim(),\n stderr: stderr.trim(),\n exitCode: 0,\n };\n } catch (error: any) {\n // exec throws error on non-zero exit code\n if (error.code !== undefined) {\n return {\n command,\n stdout: error.stdout?.trim() || '',\n stderr: error.stderr?.trim() || '',\n exitCode: error.code,\n };\n }\n\n throw new Error(`Command execution failed: ${error.message}`);\n }\n },\n});\n\n/**\n * All shell tools\n */\nexport const shellTools = {\n bash: executeBashTool,\n};\n",
59
- "/**\n * Search Tools\n * Tools for searching files and content\n */\n\nimport { readdir, readFile, stat } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { tool } from 'ai';\nimport { z } from 'zod';\n\n/**\n * Match a glob pattern\n */\nfunction matchGlob(pattern: string, path: string): boolean {\n // Simple glob matching - supports *, **, and ?\n const regexPattern = pattern\n .replace(/\\./g, '\\\\.')\n .replace(/\\*\\*/g, '.*')\n .replace(/\\*/g, '[^/]*')\n .replace(/\\?/g, '.');\n\n const regex = new RegExp(`^${regexPattern}$`);\n return regex.test(path);\n}\n\n/**\n * Recursively search files matching pattern\n */\nasync function searchFiles(\n dir: string,\n pattern: string,\n maxResults: number,\n results: string[] = []\n): Promise<string[]> {\n if (results.length >= maxResults) return results;\n\n try {\n const entries = await readdir(dir, { withFileTypes: true });\n\n for (const entry of entries) {\n if (results.length >= maxResults) break;\n\n const fullPath = join(dir, entry.name);\n\n // Skip common directories\n if (\n entry.isDirectory() &&\n ['node_modules', '.git', 'dist', 'build', '.next'].includes(entry.name)\n ) {\n continue;\n }\n\n if (entry.isDirectory()) {\n await searchFiles(fullPath, pattern, maxResults, results);\n } else if (matchGlob(pattern, fullPath) || matchGlob(pattern, entry.name)) {\n results.push(fullPath);\n }\n }\n\n return results;\n } catch (error) {\n // Skip directories we can't read\n return results;\n }\n}\n\n/**\n * Glob file search tool\n */\nexport const globTool = tool({\n description: `Search for files matching a glob pattern.\n\nUsage:\n- Find files by name pattern\n- Search for specific file types\n- Locate files in project\n\nPattern syntax:\n- * matches any characters except /\n- ** matches any characters including /\n- ? matches single character\n- Examples: \"*.ts\", \"src/**/*.tsx\", \"test?.js\"`,\n inputSchema: z.object({\n pattern: z.string().describe('Glob pattern to match files'),\n directory: z\n .string()\n .optional()\n .describe('Directory to search in (default: current directory)'),\n max_results: z\n .number()\n .default(100)\n .optional()\n .describe('Maximum number of results (default: 100)'),\n }),\n execute: async ({ pattern, directory, max_results = 100 }) => {\n const searchDir = directory || process.cwd();\n const results = await searchFiles(searchDir, pattern, max_results);\n\n return {\n pattern,\n directory: searchDir,\n files: results,\n count: results.length,\n };\n },\n});\n\n/**\n * Grep content search tool\n */\nexport const grepTool = tool({\n description: `Search for text content within files.\n\nUsage:\n- Find code patterns\n- Search for function names\n- Locate specific text across files\n\nReturns matching lines with line numbers and context.`,\n inputSchema: z.object({\n pattern: z.string().describe('Text or regex pattern to search for'),\n directory: z\n .string()\n .optional()\n .describe('Directory to search in (default: current directory)'),\n file_pattern: z\n .string()\n .optional()\n .describe('Glob pattern to filter files (e.g., \"*.ts\")'),\n max_results: z\n .number()\n .default(50)\n .optional()\n .describe('Maximum number of matches (default: 50)'),\n case_sensitive: z\n .boolean()\n .default(false)\n .optional()\n .describe('Case sensitive search (default: false)'),\n }),\n execute: async ({\n pattern,\n directory,\n file_pattern = '**/*',\n max_results = 50,\n case_sensitive = false,\n }) => {\n const searchDir = directory || process.cwd();\n const files = await searchFiles(searchDir, file_pattern, 1000);\n const matches: Array<{\n file: string;\n line: number;\n content: string;\n }> = [];\n\n const regex = new RegExp(pattern, case_sensitive ? 'g' : 'gi');\n\n for (const file of files) {\n if (matches.length >= max_results) break;\n\n try {\n const stats = await stat(file);\n // Skip large files and binary files\n if (stats.size > 1024 * 1024) continue; // Skip files > 1MB\n\n const content = await readFile(file, 'utf8');\n const lines = content.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n if (matches.length >= max_results) break;\n\n if (regex.test(lines[i])) {\n matches.push({\n file,\n line: i + 1,\n content: lines[i].trim(),\n });\n }\n }\n } catch {\n // Skip files we can't read\n continue;\n }\n }\n\n return {\n pattern,\n directory: searchDir,\n matches,\n count: matches.length,\n };\n },\n});\n\n/**\n * All search tools\n */\nexport const searchTools = {\n glob: globTool,\n grep: grepTool,\n};\n",
60
- "/**\n * User Interaction Tools\n * Tools for the AI to ask questions and get user input\n */\n\nimport { tool } from 'ai';\nimport { z } from 'zod';\nimport type { Question } from '../ui/commands/types.js';\n\nexport interface SelectOption {\n label: string;\n value?: string;\n}\n\n/**\n * User input request - matches WaitForInputOptions from command system\n * This allows the ask tool to use the same selection UI as commands\n */\nexport type UserInputRequest = {\n type: 'selection';\n questions: Question[];\n};\n\n/**\n * Global user input request handler\n * This will be set by the Chat component to handle user input requests\n * Returns: string for single question, Record<questionId, answer> for multiple questions\n */\nlet userInputHandler: ((request: UserInputRequest) => Promise<string | Record<string, string>>) | null = null;\n\n/**\n * Ask call queue\n */\ninterface AskCall {\n id: string;\n question: string;\n options: SelectOption[];\n resolve: (answer: string) => void;\n}\n\nlet askQueue: AskCall[] = [];\nlet isProcessingAsk = false;\nlet queueUpdateCallback: ((count: number) => void) | null = null;\n\n/**\n * Notify queue update\n */\nfunction notifyQueueUpdate() {\n if (queueUpdateCallback) {\n queueUpdateCallback(askQueue.length);\n }\n}\n\n/**\n * Set queue update callback\n * Called by Chat component to receive queue length updates\n */\nexport function setQueueUpdateCallback(callback: (count: number) => void) {\n queueUpdateCallback = callback;\n}\n\n/**\n * Get current queue length\n */\nexport function getQueueLength() {\n return askQueue.length;\n}\n\n/**\n * Set the user input handler\n * Called by the Chat component to register the handler\n */\nexport function setUserInputHandler(handler: (request: UserInputRequest) => Promise<string | Record<string, string>>) {\n userInputHandler = handler;\n}\n\n/**\n * Clear the user input handler\n */\nexport function clearUserInputHandler() {\n userInputHandler = null;\n askQueue = [];\n isProcessingAsk = false;\n queueUpdateCallback = null;\n}\n\n/**\n * Process next ask in queue\n */\nasync function processNextAsk() {\n // If already processing or queue empty, do nothing\n if (isProcessingAsk || askQueue.length === 0 || !userInputHandler) {\n return;\n }\n\n isProcessingAsk = true;\n const ask = askQueue.shift()!; // Take first from queue\n notifyQueueUpdate(); // Notify queue changed\n\n console.error('[processAsk] Processing:', {\n id: ask.id,\n question: ask.question.substring(0, 50),\n queueRemaining: askQueue.length,\n });\n\n try {\n // Show single question to user\n const result = await userInputHandler({\n type: 'selection',\n questions: [{\n id: ask.id,\n question: ask.question,\n options: ask.options,\n }],\n });\n\n // Extract answer\n const answer = typeof result === 'string' ? result : result[ask.id] || '';\n console.error('[processAsk] Got answer:', answer);\n\n // Resolve this ask's promise\n ask.resolve(answer);\n } catch (error) {\n console.error('[processAsk] Error:', error);\n ask.resolve(''); // Resolve with empty on error\n } finally {\n isProcessingAsk = false;\n\n // Process next ask in queue if any\n if (askQueue.length > 0) {\n console.error('[processAsk] Processing next in queue...');\n processNextAsk();\n }\n }\n}\n\n/**\n * Ask user a multiple choice question\n */\nexport const askUserSelectionTool = tool({\n description: `Ask the user a multiple choice question and wait for their selection.\n\nYou can call this tool multiple times in the same response to ask multiple questions at once - they will be presented together for better user experience.\n\nWhen to use:\n- You have specific options for the user to choose from\n- You need user to select between different approaches\n- You need to confirm which file/component/feature to work on\n- You want to gather multiple pieces of information\n\nHow to use:\n1. Call this tool (can call multiple times in same message)\n2. Wait for the user's answer (returned as a string)\n3. Continue your task with the gathered information\n\nExample - multiple questions in one response:\n- Call ask() for \"which file?\"\n- Call ask() for \"which function?\"\n- Call ask() for \"which approach?\"\n→ User sees all 3 questions together and answers them all at once\n\nNote: For free-form text questions, just respond normally in your message and wait for the user's next input. Only use this tool when you have specific options to present.`,\n inputSchema: z.object({\n question: z.string().describe('The question to ask the user'),\n options: z.array(z.object({\n label: z.string().describe('Display text for this option (what user sees)'),\n value: z.string().optional().describe('Optional value to return (defaults to label if not provided)'),\n })).min(2).max(10).describe('List of options for the user to choose from (2-10 options)'),\n }),\n execute: async ({ question, options }) => {\n if (!userInputHandler) {\n throw new Error('User input handler not available. This tool can only be used in interactive mode.');\n }\n\n // Create a promise that will be resolved when this ask is processed\n return new Promise<string>((resolve) => {\n const callId = `ask_${Date.now()}_${Math.random()}`;\n\n console.error('[ask execute] Adding to queue:', {\n id: callId,\n question: question.substring(0, 50),\n optionsCount: options?.length || 0,\n queueLength: askQueue.length,\n isProcessing: isProcessingAsk,\n });\n\n // Add to queue\n askQueue.push({\n id: callId,\n question,\n options,\n resolve,\n });\n\n // Notify queue changed\n notifyQueueUpdate();\n\n // Start processing if not already processing\n if (!isProcessingAsk) {\n console.error('[ask execute] Starting queue processing...');\n processNextAsk();\n } else {\n console.error('[ask execute] Already processing, will queue');\n }\n });\n },\n});\n\n/**\n * Export all interaction tools\n */\nexport const interactionTools = {\n ask: askUserSelectionTool,\n};\n",
61
- "/**\n * Tool Registry\n * Central registry for all AI SDK tools\n */\n\nimport { filesystemTools } from './filesystem.js';\nimport { shellTools } from './shell.js';\nimport { searchTools } from './search.js';\nimport { interactionTools } from './interaction.js';\n\n/**\n * Get all tools in AI SDK Tool format\n */\nexport function getAISDKTools() {\n return {\n ...filesystemTools,\n ...shellTools,\n ...searchTools,\n ...interactionTools,\n };\n}\n\n/**\n * Get tool names grouped by category\n */\nexport function getToolCategories() {\n return {\n filesystem: Object.keys(filesystemTools),\n shell: Object.keys(shellTools),\n search: Object.keys(searchTools),\n interaction: Object.keys(interactionTools),\n };\n}\n\n/**\n * Get all tool names\n */\nexport function getAllToolNames(): string[] {\n return Object.keys(getAISDKTools());\n}\n"
56
+ "var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name16 in all)\n __defProp(target, name16, { get: all[name16], enumerable: true });\n};\n\n// src/index.ts\nimport { gateway as gateway2, createGateway } from \"@ai-sdk/gateway\";\nimport {\n asSchema as asSchema5,\n createIdGenerator as createIdGenerator5,\n dynamicTool,\n generateId as generateId2,\n jsonSchema,\n parseJsonEventStream as parseJsonEventStream3,\n tool,\n zodSchema as zodSchema3\n} from \"@ai-sdk/provider-utils\";\n\n// src/generate-text/generate-text.ts\nimport {\n createIdGenerator,\n executeTool,\n getErrorMessage as getErrorMessage5,\n withUserAgentSuffix as withUserAgentSuffix2\n} from \"@ai-sdk/provider-utils\";\n\n// src/error/no-output-specified-error.ts\nimport { AISDKError } from \"@ai-sdk/provider\";\nvar name = \"AI_NoOutputSpecifiedError\";\nvar marker = `vercel.ai.error.${name}`;\nvar symbol = Symbol.for(marker);\nvar _a;\nvar NoOutputSpecifiedError = class extends AISDKError {\n // used in isInstance\n constructor({ message = \"No output specified.\" } = {}) {\n super({ name, message });\n this[_a] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker);\n }\n};\n_a = symbol;\n\n// src/logger/log-warnings.ts\nfunction formatWarning(warning) {\n const prefix = \"AI SDK Warning:\";\n switch (warning.type) {\n case \"unsupported-setting\": {\n let message = `${prefix} The \"${warning.setting}\" setting is not supported by this model`;\n if (warning.details) {\n message += ` - ${warning.details}`;\n }\n return message;\n }\n case \"unsupported-tool\": {\n const toolName = \"name\" in warning.tool ? warning.tool.name : \"unknown tool\";\n let message = `${prefix} The tool \"${toolName}\" is not supported by this model`;\n if (warning.details) {\n message += ` - ${warning.details}`;\n }\n return message;\n }\n case \"other\": {\n return `${prefix} ${warning.message}`;\n }\n default: {\n return `${prefix} ${JSON.stringify(warning, null, 2)}`;\n }\n }\n}\nvar FIRST_WARNING_INFO_MESSAGE = \"AI SDK Warning System: To turn off warning logging, set the AI_SDK_LOG_WARNINGS global to false.\";\nvar hasLoggedBefore = false;\nvar logWarnings = (warnings) => {\n if (warnings.length === 0) {\n return;\n }\n const logger = globalThis.AI_SDK_LOG_WARNINGS;\n if (logger === false) {\n return;\n }\n if (typeof logger === \"function\") {\n logger(warnings);\n return;\n }\n if (!hasLoggedBefore) {\n hasLoggedBefore = true;\n console.info(FIRST_WARNING_INFO_MESSAGE);\n }\n for (const warning of warnings) {\n console.warn(formatWarning(warning));\n }\n};\n\n// src/model/resolve-model.ts\nimport { gateway } from \"@ai-sdk/gateway\";\n\n// src/error/index.ts\nimport {\n AISDKError as AISDKError17,\n APICallError,\n EmptyResponseBodyError,\n InvalidPromptError,\n InvalidResponseDataError,\n JSONParseError,\n LoadAPIKeyError,\n LoadSettingError,\n NoContentGeneratedError,\n NoSuchModelError,\n TooManyEmbeddingValuesForCallError,\n TypeValidationError,\n UnsupportedFunctionalityError\n} from \"@ai-sdk/provider\";\n\n// src/error/invalid-argument-error.ts\nimport { AISDKError as AISDKError2 } from \"@ai-sdk/provider\";\nvar name2 = \"AI_InvalidArgumentError\";\nvar marker2 = `vercel.ai.error.${name2}`;\nvar symbol2 = Symbol.for(marker2);\nvar _a2;\nvar InvalidArgumentError = class extends AISDKError2 {\n constructor({\n parameter,\n value,\n message\n }) {\n super({\n name: name2,\n message: `Invalid argument for parameter ${parameter}: ${message}`\n });\n this[_a2] = true;\n this.parameter = parameter;\n this.value = value;\n }\n static isInstance(error) {\n return AISDKError2.hasMarker(error, marker2);\n }\n};\n_a2 = symbol2;\n\n// src/error/invalid-stream-part-error.ts\nimport { AISDKError as AISDKError3 } from \"@ai-sdk/provider\";\nvar name3 = \"AI_InvalidStreamPartError\";\nvar marker3 = `vercel.ai.error.${name3}`;\nvar symbol3 = Symbol.for(marker3);\nvar _a3;\nvar InvalidStreamPartError = class extends AISDKError3 {\n constructor({\n chunk,\n message\n }) {\n super({ name: name3, message });\n this[_a3] = true;\n this.chunk = chunk;\n }\n static isInstance(error) {\n return AISDKError3.hasMarker(error, marker3);\n }\n};\n_a3 = symbol3;\n\n// src/error/invalid-tool-input-error.ts\nimport { AISDKError as AISDKError4, getErrorMessage } from \"@ai-sdk/provider\";\nvar name4 = \"AI_InvalidToolInputError\";\nvar marker4 = `vercel.ai.error.${name4}`;\nvar symbol4 = Symbol.for(marker4);\nvar _a4;\nvar InvalidToolInputError = class extends AISDKError4 {\n constructor({\n toolInput,\n toolName,\n cause,\n message = `Invalid input for tool ${toolName}: ${getErrorMessage(cause)}`\n }) {\n super({ name: name4, message, cause });\n this[_a4] = true;\n this.toolInput = toolInput;\n this.toolName = toolName;\n }\n static isInstance(error) {\n return AISDKError4.hasMarker(error, marker4);\n }\n};\n_a4 = symbol4;\n\n// src/error/no-image-generated-error.ts\nimport { AISDKError as AISDKError5 } from \"@ai-sdk/provider\";\nvar name5 = \"AI_NoImageGeneratedError\";\nvar marker5 = `vercel.ai.error.${name5}`;\nvar symbol5 = Symbol.for(marker5);\nvar _a5;\nvar NoImageGeneratedError = class extends AISDKError5 {\n constructor({\n message = \"No image generated.\",\n cause,\n responses\n }) {\n super({ name: name5, message, cause });\n this[_a5] = true;\n this.responses = responses;\n }\n static isInstance(error) {\n return AISDKError5.hasMarker(error, marker5);\n }\n};\n_a5 = symbol5;\n\n// src/error/no-object-generated-error.ts\nimport { AISDKError as AISDKError6 } from \"@ai-sdk/provider\";\nvar name6 = \"AI_NoObjectGeneratedError\";\nvar marker6 = `vercel.ai.error.${name6}`;\nvar symbol6 = Symbol.for(marker6);\nvar _a6;\nvar NoObjectGeneratedError = class extends AISDKError6 {\n constructor({\n message = \"No object generated.\",\n cause,\n text: text2,\n response,\n usage,\n finishReason\n }) {\n super({ name: name6, message, cause });\n this[_a6] = true;\n this.text = text2;\n this.response = response;\n this.usage = usage;\n this.finishReason = finishReason;\n }\n static isInstance(error) {\n return AISDKError6.hasMarker(error, marker6);\n }\n};\n_a6 = symbol6;\n\n// src/error/no-output-generated-error.ts\nimport { AISDKError as AISDKError7 } from \"@ai-sdk/provider\";\nvar name7 = \"AI_NoOutputGeneratedError\";\nvar marker7 = `vercel.ai.error.${name7}`;\nvar symbol7 = Symbol.for(marker7);\nvar _a7;\nvar NoOutputGeneratedError = class extends AISDKError7 {\n // used in isInstance\n constructor({\n message = \"No output generated.\",\n cause\n } = {}) {\n super({ name: name7, message, cause });\n this[_a7] = true;\n }\n static isInstance(error) {\n return AISDKError7.hasMarker(error, marker7);\n }\n};\n_a7 = symbol7;\n\n// src/error/no-speech-generated-error.ts\nimport { AISDKError as AISDKError8 } from \"@ai-sdk/provider\";\nvar NoSpeechGeneratedError = class extends AISDKError8 {\n constructor(options) {\n super({\n name: \"AI_NoSpeechGeneratedError\",\n message: \"No speech audio generated.\"\n });\n this.responses = options.responses;\n }\n};\n\n// src/error/no-such-tool-error.ts\nimport { AISDKError as AISDKError9 } from \"@ai-sdk/provider\";\nvar name8 = \"AI_NoSuchToolError\";\nvar marker8 = `vercel.ai.error.${name8}`;\nvar symbol8 = Symbol.for(marker8);\nvar _a8;\nvar NoSuchToolError = class extends AISDKError9 {\n constructor({\n toolName,\n availableTools = void 0,\n message = `Model tried to call unavailable tool '${toolName}'. ${availableTools === void 0 ? \"No tools are available.\" : `Available tools: ${availableTools.join(\", \")}.`}`\n }) {\n super({ name: name8, message });\n this[_a8] = true;\n this.toolName = toolName;\n this.availableTools = availableTools;\n }\n static isInstance(error) {\n return AISDKError9.hasMarker(error, marker8);\n }\n};\n_a8 = symbol8;\n\n// src/error/tool-call-repair-error.ts\nimport { AISDKError as AISDKError10, getErrorMessage as getErrorMessage2 } from \"@ai-sdk/provider\";\nvar name9 = \"AI_ToolCallRepairError\";\nvar marker9 = `vercel.ai.error.${name9}`;\nvar symbol9 = Symbol.for(marker9);\nvar _a9;\nvar ToolCallRepairError = class extends AISDKError10 {\n constructor({\n cause,\n originalError,\n message = `Error repairing tool call: ${getErrorMessage2(cause)}`\n }) {\n super({ name: name9, message, cause });\n this[_a9] = true;\n this.originalError = originalError;\n }\n static isInstance(error) {\n return AISDKError10.hasMarker(error, marker9);\n }\n};\n_a9 = symbol9;\n\n// src/error/unsupported-model-version-error.ts\nimport { AISDKError as AISDKError11 } from \"@ai-sdk/provider\";\nvar UnsupportedModelVersionError = class extends AISDKError11 {\n constructor(options) {\n super({\n name: \"AI_UnsupportedModelVersionError\",\n message: `Unsupported model version ${options.version} for provider \"${options.provider}\" and model \"${options.modelId}\". AI SDK 5 only supports models that implement specification version \"v2\".`\n });\n this.version = options.version;\n this.provider = options.provider;\n this.modelId = options.modelId;\n }\n};\n\n// src/prompt/invalid-data-content-error.ts\nimport { AISDKError as AISDKError12 } from \"@ai-sdk/provider\";\nvar name10 = \"AI_InvalidDataContentError\";\nvar marker10 = `vercel.ai.error.${name10}`;\nvar symbol10 = Symbol.for(marker10);\nvar _a10;\nvar InvalidDataContentError = class extends AISDKError12 {\n constructor({\n content,\n cause,\n message = `Invalid data content. Expected a base64 string, Uint8Array, ArrayBuffer, or Buffer, but got ${typeof content}.`\n }) {\n super({ name: name10, message, cause });\n this[_a10] = true;\n this.content = content;\n }\n static isInstance(error) {\n return AISDKError12.hasMarker(error, marker10);\n }\n};\n_a10 = symbol10;\n\n// src/prompt/invalid-message-role-error.ts\nimport { AISDKError as AISDKError13 } from \"@ai-sdk/provider\";\nvar name11 = \"AI_InvalidMessageRoleError\";\nvar marker11 = `vercel.ai.error.${name11}`;\nvar symbol11 = Symbol.for(marker11);\nvar _a11;\nvar InvalidMessageRoleError = class extends AISDKError13 {\n constructor({\n role,\n message = `Invalid message role: '${role}'. Must be one of: \"system\", \"user\", \"assistant\", \"tool\".`\n }) {\n super({ name: name11, message });\n this[_a11] = true;\n this.role = role;\n }\n static isInstance(error) {\n return AISDKError13.hasMarker(error, marker11);\n }\n};\n_a11 = symbol11;\n\n// src/prompt/message-conversion-error.ts\nimport { AISDKError as AISDKError14 } from \"@ai-sdk/provider\";\nvar name12 = \"AI_MessageConversionError\";\nvar marker12 = `vercel.ai.error.${name12}`;\nvar symbol12 = Symbol.for(marker12);\nvar _a12;\nvar MessageConversionError = class extends AISDKError14 {\n constructor({\n originalMessage,\n message\n }) {\n super({ name: name12, message });\n this[_a12] = true;\n this.originalMessage = originalMessage;\n }\n static isInstance(error) {\n return AISDKError14.hasMarker(error, marker12);\n }\n};\n_a12 = symbol12;\n\n// src/util/download/download-error.ts\nimport { AISDKError as AISDKError15 } from \"@ai-sdk/provider\";\nvar name13 = \"AI_DownloadError\";\nvar marker13 = `vercel.ai.error.${name13}`;\nvar symbol13 = Symbol.for(marker13);\nvar _a13;\nvar DownloadError = class extends AISDKError15 {\n constructor({\n url,\n statusCode,\n statusText,\n cause,\n message = cause == null ? `Failed to download ${url}: ${statusCode} ${statusText}` : `Failed to download ${url}: ${cause}`\n }) {\n super({ name: name13, message, cause });\n this[_a13] = true;\n this.url = url;\n this.statusCode = statusCode;\n this.statusText = statusText;\n }\n static isInstance(error) {\n return AISDKError15.hasMarker(error, marker13);\n }\n};\n_a13 = symbol13;\n\n// src/util/retry-error.ts\nimport { AISDKError as AISDKError16 } from \"@ai-sdk/provider\";\nvar name14 = \"AI_RetryError\";\nvar marker14 = `vercel.ai.error.${name14}`;\nvar symbol14 = Symbol.for(marker14);\nvar _a14;\nvar RetryError = class extends AISDKError16 {\n constructor({\n message,\n reason,\n errors\n }) {\n super({ name: name14, message });\n this[_a14] = true;\n this.reason = reason;\n this.errors = errors;\n this.lastError = errors[errors.length - 1];\n }\n static isInstance(error) {\n return AISDKError16.hasMarker(error, marker14);\n }\n};\n_a14 = symbol14;\n\n// src/model/resolve-model.ts\nfunction resolveLanguageModel(model) {\n if (typeof model !== \"string\") {\n if (model.specificationVersion !== \"v2\") {\n throw new UnsupportedModelVersionError({\n version: model.specificationVersion,\n provider: model.provider,\n modelId: model.modelId\n });\n }\n return model;\n }\n return getGlobalProvider().languageModel(model);\n}\nfunction resolveEmbeddingModel(model) {\n if (typeof model !== \"string\") {\n if (model.specificationVersion !== \"v2\") {\n throw new UnsupportedModelVersionError({\n version: model.specificationVersion,\n provider: model.provider,\n modelId: model.modelId\n });\n }\n return model;\n }\n return getGlobalProvider().textEmbeddingModel(\n model\n );\n}\nfunction getGlobalProvider() {\n var _a16;\n return (_a16 = globalThis.AI_SDK_DEFAULT_PROVIDER) != null ? _a16 : gateway;\n}\n\n// src/prompt/convert-to-language-model-prompt.ts\nimport {\n isUrlSupported\n} from \"@ai-sdk/provider-utils\";\n\n// src/util/detect-media-type.ts\nimport { convertBase64ToUint8Array } from \"@ai-sdk/provider-utils\";\nvar imageMediaTypeSignatures = [\n {\n mediaType: \"image/gif\",\n bytesPrefix: [71, 73, 70]\n // GIF\n },\n {\n mediaType: \"image/png\",\n bytesPrefix: [137, 80, 78, 71]\n // PNG\n },\n {\n mediaType: \"image/jpeg\",\n bytesPrefix: [255, 216]\n // JPEG\n },\n {\n mediaType: \"image/webp\",\n bytesPrefix: [\n 82,\n 73,\n 70,\n 70,\n // \"RIFF\"\n null,\n null,\n null,\n null,\n // file size (variable)\n 87,\n 69,\n 66,\n 80\n // \"WEBP\"\n ]\n },\n {\n mediaType: \"image/bmp\",\n bytesPrefix: [66, 77]\n },\n {\n mediaType: \"image/tiff\",\n bytesPrefix: [73, 73, 42, 0]\n },\n {\n mediaType: \"image/tiff\",\n bytesPrefix: [77, 77, 0, 42]\n },\n {\n mediaType: \"image/avif\",\n bytesPrefix: [\n 0,\n 0,\n 0,\n 32,\n 102,\n 116,\n 121,\n 112,\n 97,\n 118,\n 105,\n 102\n ]\n },\n {\n mediaType: \"image/heic\",\n bytesPrefix: [\n 0,\n 0,\n 0,\n 32,\n 102,\n 116,\n 121,\n 112,\n 104,\n 101,\n 105,\n 99\n ]\n }\n];\nvar audioMediaTypeSignatures = [\n {\n mediaType: \"audio/mpeg\",\n bytesPrefix: [255, 251]\n },\n {\n mediaType: \"audio/mpeg\",\n bytesPrefix: [255, 250]\n },\n {\n mediaType: \"audio/mpeg\",\n bytesPrefix: [255, 243]\n },\n {\n mediaType: \"audio/mpeg\",\n bytesPrefix: [255, 242]\n },\n {\n mediaType: \"audio/mpeg\",\n bytesPrefix: [255, 227]\n },\n {\n mediaType: \"audio/mpeg\",\n bytesPrefix: [255, 226]\n },\n {\n mediaType: \"audio/wav\",\n bytesPrefix: [\n 82,\n // R\n 73,\n // I\n 70,\n // F\n 70,\n // F\n null,\n null,\n null,\n null,\n 87,\n // W\n 65,\n // A\n 86,\n // V\n 69\n // E\n ]\n },\n {\n mediaType: \"audio/ogg\",\n bytesPrefix: [79, 103, 103, 83]\n },\n {\n mediaType: \"audio/flac\",\n bytesPrefix: [102, 76, 97, 67]\n },\n {\n mediaType: \"audio/aac\",\n bytesPrefix: [64, 21, 0, 0]\n },\n {\n mediaType: \"audio/mp4\",\n bytesPrefix: [102, 116, 121, 112]\n },\n {\n mediaType: \"audio/webm\",\n bytesPrefix: [26, 69, 223, 163]\n }\n];\nvar stripID3 = (data) => {\n const bytes = typeof data === \"string\" ? convertBase64ToUint8Array(data) : data;\n const id3Size = (bytes[6] & 127) << 21 | (bytes[7] & 127) << 14 | (bytes[8] & 127) << 7 | bytes[9] & 127;\n return bytes.slice(id3Size + 10);\n};\nfunction stripID3TagsIfPresent(data) {\n const hasId3 = typeof data === \"string\" && data.startsWith(\"SUQz\") || typeof data !== \"string\" && data.length > 10 && data[0] === 73 && // 'I'\n data[1] === 68 && // 'D'\n data[2] === 51;\n return hasId3 ? stripID3(data) : data;\n}\nfunction detectMediaType({\n data,\n signatures\n}) {\n const processedData = stripID3TagsIfPresent(data);\n const bytes = typeof processedData === \"string\" ? convertBase64ToUint8Array(\n processedData.substring(0, Math.min(processedData.length, 24))\n ) : processedData;\n for (const signature of signatures) {\n if (bytes.length >= signature.bytesPrefix.length && signature.bytesPrefix.every(\n (byte, index) => byte === null || bytes[index] === byte\n )) {\n return signature.mediaType;\n }\n }\n return void 0;\n}\n\n// src/util/download/download.ts\nimport {\n withUserAgentSuffix,\n getRuntimeEnvironmentUserAgent\n} from \"@ai-sdk/provider-utils\";\n\n// src/version.ts\nvar VERSION = true ? \"5.0.86\" : \"0.0.0-test\";\n\n// src/util/download/download.ts\nvar download = async ({ url }) => {\n var _a16;\n const urlText = url.toString();\n try {\n const response = await fetch(urlText, {\n headers: withUserAgentSuffix(\n {},\n `ai-sdk/${VERSION}`,\n getRuntimeEnvironmentUserAgent()\n )\n });\n if (!response.ok) {\n throw new DownloadError({\n url: urlText,\n statusCode: response.status,\n statusText: response.statusText\n });\n }\n return {\n data: new Uint8Array(await response.arrayBuffer()),\n mediaType: (_a16 = response.headers.get(\"content-type\")) != null ? _a16 : void 0\n };\n } catch (error) {\n if (DownloadError.isInstance(error)) {\n throw error;\n }\n throw new DownloadError({ url: urlText, cause: error });\n }\n};\n\n// src/util/download/download-function.ts\nvar createDefaultDownloadFunction = (download2 = download) => (requestedDownloads) => Promise.all(\n requestedDownloads.map(\n async (requestedDownload) => requestedDownload.isUrlSupportedByModel ? null : download2(requestedDownload)\n )\n);\n\n// src/prompt/data-content.ts\nimport { AISDKError as AISDKError18 } from \"@ai-sdk/provider\";\nimport {\n convertBase64ToUint8Array as convertBase64ToUint8Array2,\n convertUint8ArrayToBase64\n} from \"@ai-sdk/provider-utils\";\nimport { z } from \"zod/v4\";\n\n// src/prompt/split-data-url.ts\nfunction splitDataUrl(dataUrl) {\n try {\n const [header, base64Content] = dataUrl.split(\",\");\n return {\n mediaType: header.split(\";\")[0].split(\":\")[1],\n base64Content\n };\n } catch (error) {\n return {\n mediaType: void 0,\n base64Content: void 0\n };\n }\n}\n\n// src/prompt/data-content.ts\nvar dataContentSchema = z.union([\n z.string(),\n z.instanceof(Uint8Array),\n z.instanceof(ArrayBuffer),\n z.custom(\n // Buffer might not be available in some environments such as CloudFlare:\n (value) => {\n var _a16, _b;\n return (_b = (_a16 = globalThis.Buffer) == null ? void 0 : _a16.isBuffer(value)) != null ? _b : false;\n },\n { message: \"Must be a Buffer\" }\n )\n]);\nfunction convertToLanguageModelV2DataContent(content) {\n if (content instanceof Uint8Array) {\n return { data: content, mediaType: void 0 };\n }\n if (content instanceof ArrayBuffer) {\n return { data: new Uint8Array(content), mediaType: void 0 };\n }\n if (typeof content === \"string\") {\n try {\n content = new URL(content);\n } catch (error) {\n }\n }\n if (content instanceof URL && content.protocol === \"data:\") {\n const { mediaType: dataUrlMediaType, base64Content } = splitDataUrl(\n content.toString()\n );\n if (dataUrlMediaType == null || base64Content == null) {\n throw new AISDKError18({\n name: \"InvalidDataContentError\",\n message: `Invalid data URL format in content ${content.toString()}`\n });\n }\n return { data: base64Content, mediaType: dataUrlMediaType };\n }\n return { data: content, mediaType: void 0 };\n}\nfunction convertDataContentToBase64String(content) {\n if (typeof content === \"string\") {\n return content;\n }\n if (content instanceof ArrayBuffer) {\n return convertUint8ArrayToBase64(new Uint8Array(content));\n }\n return convertUint8ArrayToBase64(content);\n}\nfunction convertDataContentToUint8Array(content) {\n if (content instanceof Uint8Array) {\n return content;\n }\n if (typeof content === \"string\") {\n try {\n return convertBase64ToUint8Array2(content);\n } catch (error) {\n throw new InvalidDataContentError({\n message: \"Invalid data content. Content string is not a base64-encoded media.\",\n content,\n cause: error\n });\n }\n }\n if (content instanceof ArrayBuffer) {\n return new Uint8Array(content);\n }\n throw new InvalidDataContentError({ content });\n}\n\n// src/prompt/convert-to-language-model-prompt.ts\nasync function convertToLanguageModelPrompt({\n prompt,\n supportedUrls,\n download: download2 = createDefaultDownloadFunction()\n}) {\n const downloadedAssets = await downloadAssets(\n prompt.messages,\n download2,\n supportedUrls\n );\n return [\n ...prompt.system != null ? [{ role: \"system\", content: prompt.system }] : [],\n ...prompt.messages.map(\n (message) => convertToLanguageModelMessage({ message, downloadedAssets })\n )\n ];\n}\nfunction convertToLanguageModelMessage({\n message,\n downloadedAssets\n}) {\n const role = message.role;\n switch (role) {\n case \"system\": {\n return {\n role: \"system\",\n content: message.content,\n providerOptions: message.providerOptions\n };\n }\n case \"user\": {\n if (typeof message.content === \"string\") {\n return {\n role: \"user\",\n content: [{ type: \"text\", text: message.content }],\n providerOptions: message.providerOptions\n };\n }\n return {\n role: \"user\",\n content: message.content.map((part) => convertPartToLanguageModelPart(part, downloadedAssets)).filter((part) => part.type !== \"text\" || part.text !== \"\"),\n providerOptions: message.providerOptions\n };\n }\n case \"assistant\": {\n if (typeof message.content === \"string\") {\n return {\n role: \"assistant\",\n content: [{ type: \"text\", text: message.content }],\n providerOptions: message.providerOptions\n };\n }\n return {\n role: \"assistant\",\n content: message.content.filter(\n // remove empty text parts (no text, and no provider options):\n (part) => part.type !== \"text\" || part.text !== \"\" || part.providerOptions != null\n ).map((part) => {\n const providerOptions = part.providerOptions;\n switch (part.type) {\n case \"file\": {\n const { data, mediaType } = convertToLanguageModelV2DataContent(\n part.data\n );\n return {\n type: \"file\",\n data,\n filename: part.filename,\n mediaType: mediaType != null ? mediaType : part.mediaType,\n providerOptions\n };\n }\n case \"reasoning\": {\n return {\n type: \"reasoning\",\n text: part.text,\n providerOptions\n };\n }\n case \"text\": {\n return {\n type: \"text\",\n text: part.text,\n providerOptions\n };\n }\n case \"tool-call\": {\n return {\n type: \"tool-call\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n input: part.input,\n providerExecuted: part.providerExecuted,\n providerOptions\n };\n }\n case \"tool-result\": {\n return {\n type: \"tool-result\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n output: part.output,\n providerOptions\n };\n }\n }\n }),\n providerOptions: message.providerOptions\n };\n }\n case \"tool\": {\n return {\n role: \"tool\",\n content: message.content.map((part) => ({\n type: \"tool-result\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n output: part.output,\n providerOptions: part.providerOptions\n })),\n providerOptions: message.providerOptions\n };\n }\n default: {\n const _exhaustiveCheck = role;\n throw new InvalidMessageRoleError({ role: _exhaustiveCheck });\n }\n }\n}\nasync function downloadAssets(messages, download2, supportedUrls) {\n const plannedDownloads = messages.filter((message) => message.role === \"user\").map((message) => message.content).filter(\n (content) => Array.isArray(content)\n ).flat().filter(\n (part) => part.type === \"image\" || part.type === \"file\"\n ).map((part) => {\n var _a16;\n const mediaType = (_a16 = part.mediaType) != null ? _a16 : part.type === \"image\" ? \"image/*\" : void 0;\n let data = part.type === \"image\" ? part.image : part.data;\n if (typeof data === \"string\") {\n try {\n data = new URL(data);\n } catch (ignored) {\n }\n }\n return { mediaType, data };\n }).filter(\n (part) => part.data instanceof URL\n ).map((part) => ({\n url: part.data,\n isUrlSupportedByModel: part.mediaType != null && isUrlSupported({\n url: part.data.toString(),\n mediaType: part.mediaType,\n supportedUrls\n })\n }));\n const downloadedFiles = await download2(plannedDownloads);\n return Object.fromEntries(\n downloadedFiles.map(\n (file, index) => file == null ? null : [\n plannedDownloads[index].url.toString(),\n { data: file.data, mediaType: file.mediaType }\n ]\n ).filter((file) => file != null)\n );\n}\nfunction convertPartToLanguageModelPart(part, downloadedAssets) {\n var _a16;\n if (part.type === \"text\") {\n return {\n type: \"text\",\n text: part.text,\n providerOptions: part.providerOptions\n };\n }\n let originalData;\n const type = part.type;\n switch (type) {\n case \"image\":\n originalData = part.image;\n break;\n case \"file\":\n originalData = part.data;\n break;\n default:\n throw new Error(`Unsupported part type: ${type}`);\n }\n const { data: convertedData, mediaType: convertedMediaType } = convertToLanguageModelV2DataContent(originalData);\n let mediaType = convertedMediaType != null ? convertedMediaType : part.mediaType;\n let data = convertedData;\n if (data instanceof URL) {\n const downloadedFile = downloadedAssets[data.toString()];\n if (downloadedFile) {\n data = downloadedFile.data;\n mediaType != null ? mediaType : mediaType = downloadedFile.mediaType;\n }\n }\n switch (type) {\n case \"image\": {\n if (data instanceof Uint8Array || typeof data === \"string\") {\n mediaType = (_a16 = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _a16 : mediaType;\n }\n return {\n type: \"file\",\n mediaType: mediaType != null ? mediaType : \"image/*\",\n // any image\n filename: void 0,\n data,\n providerOptions: part.providerOptions\n };\n }\n case \"file\": {\n if (mediaType == null) {\n throw new Error(`Media type is missing for file part`);\n }\n return {\n type: \"file\",\n mediaType,\n filename: part.filename,\n data,\n providerOptions: part.providerOptions\n };\n }\n }\n}\n\n// src/prompt/prepare-call-settings.ts\nfunction prepareCallSettings({\n maxOutputTokens,\n temperature,\n topP,\n topK,\n presencePenalty,\n frequencyPenalty,\n seed,\n stopSequences\n}) {\n if (maxOutputTokens != null) {\n if (!Number.isInteger(maxOutputTokens)) {\n throw new InvalidArgumentError({\n parameter: \"maxOutputTokens\",\n value: maxOutputTokens,\n message: \"maxOutputTokens must be an integer\"\n });\n }\n if (maxOutputTokens < 1) {\n throw new InvalidArgumentError({\n parameter: \"maxOutputTokens\",\n value: maxOutputTokens,\n message: \"maxOutputTokens must be >= 1\"\n });\n }\n }\n if (temperature != null) {\n if (typeof temperature !== \"number\") {\n throw new InvalidArgumentError({\n parameter: \"temperature\",\n value: temperature,\n message: \"temperature must be a number\"\n });\n }\n }\n if (topP != null) {\n if (typeof topP !== \"number\") {\n throw new InvalidArgumentError({\n parameter: \"topP\",\n value: topP,\n message: \"topP must be a number\"\n });\n }\n }\n if (topK != null) {\n if (typeof topK !== \"number\") {\n throw new InvalidArgumentError({\n parameter: \"topK\",\n value: topK,\n message: \"topK must be a number\"\n });\n }\n }\n if (presencePenalty != null) {\n if (typeof presencePenalty !== \"number\") {\n throw new InvalidArgumentError({\n parameter: \"presencePenalty\",\n value: presencePenalty,\n message: \"presencePenalty must be a number\"\n });\n }\n }\n if (frequencyPenalty != null) {\n if (typeof frequencyPenalty !== \"number\") {\n throw new InvalidArgumentError({\n parameter: \"frequencyPenalty\",\n value: frequencyPenalty,\n message: \"frequencyPenalty must be a number\"\n });\n }\n }\n if (seed != null) {\n if (!Number.isInteger(seed)) {\n throw new InvalidArgumentError({\n parameter: \"seed\",\n value: seed,\n message: \"seed must be an integer\"\n });\n }\n }\n return {\n maxOutputTokens,\n temperature,\n topP,\n topK,\n presencePenalty,\n frequencyPenalty,\n stopSequences,\n seed\n };\n}\n\n// src/prompt/prepare-tools-and-tool-choice.ts\nimport { asSchema } from \"@ai-sdk/provider-utils\";\n\n// src/util/is-non-empty-object.ts\nfunction isNonEmptyObject(object2) {\n return object2 != null && Object.keys(object2).length > 0;\n}\n\n// src/prompt/prepare-tools-and-tool-choice.ts\nfunction prepareToolsAndToolChoice({\n tools,\n toolChoice,\n activeTools\n}) {\n if (!isNonEmptyObject(tools)) {\n return {\n tools: void 0,\n toolChoice: void 0\n };\n }\n const filteredTools = activeTools != null ? Object.entries(tools).filter(\n ([name16]) => activeTools.includes(name16)\n ) : Object.entries(tools);\n return {\n tools: filteredTools.map(([name16, tool2]) => {\n const toolType = tool2.type;\n switch (toolType) {\n case void 0:\n case \"dynamic\":\n case \"function\":\n return {\n type: \"function\",\n name: name16,\n description: tool2.description,\n inputSchema: asSchema(tool2.inputSchema).jsonSchema,\n providerOptions: tool2.providerOptions\n };\n case \"provider-defined\":\n return {\n type: \"provider-defined\",\n name: name16,\n id: tool2.id,\n args: tool2.args\n };\n default: {\n const exhaustiveCheck = toolType;\n throw new Error(`Unsupported tool type: ${exhaustiveCheck}`);\n }\n }\n }),\n toolChoice: toolChoice == null ? { type: \"auto\" } : typeof toolChoice === \"string\" ? { type: toolChoice } : { type: \"tool\", toolName: toolChoice.toolName }\n };\n}\n\n// src/prompt/standardize-prompt.ts\nimport { InvalidPromptError as InvalidPromptError2 } from \"@ai-sdk/provider\";\nimport { safeValidateTypes } from \"@ai-sdk/provider-utils\";\nimport { z as z6 } from \"zod/v4\";\n\n// src/prompt/message.ts\nimport { z as z5 } from \"zod/v4\";\n\n// src/types/provider-metadata.ts\nimport { z as z3 } from \"zod/v4\";\n\n// src/types/json-value.ts\nimport { z as z2 } from \"zod/v4\";\nvar jsonValueSchema = z2.lazy(\n () => z2.union([\n z2.null(),\n z2.string(),\n z2.number(),\n z2.boolean(),\n z2.record(z2.string(), jsonValueSchema),\n z2.array(jsonValueSchema)\n ])\n);\n\n// src/types/provider-metadata.ts\nvar providerMetadataSchema = z3.record(\n z3.string(),\n z3.record(z3.string(), jsonValueSchema)\n);\n\n// src/prompt/content-part.ts\nimport { z as z4 } from \"zod/v4\";\nvar textPartSchema = z4.object({\n type: z4.literal(\"text\"),\n text: z4.string(),\n providerOptions: providerMetadataSchema.optional()\n});\nvar imagePartSchema = z4.object({\n type: z4.literal(\"image\"),\n image: z4.union([dataContentSchema, z4.instanceof(URL)]),\n mediaType: z4.string().optional(),\n providerOptions: providerMetadataSchema.optional()\n});\nvar filePartSchema = z4.object({\n type: z4.literal(\"file\"),\n data: z4.union([dataContentSchema, z4.instanceof(URL)]),\n filename: z4.string().optional(),\n mediaType: z4.string(),\n providerOptions: providerMetadataSchema.optional()\n});\nvar reasoningPartSchema = z4.object({\n type: z4.literal(\"reasoning\"),\n text: z4.string(),\n providerOptions: providerMetadataSchema.optional()\n});\nvar toolCallPartSchema = z4.object({\n type: z4.literal(\"tool-call\"),\n toolCallId: z4.string(),\n toolName: z4.string(),\n input: z4.unknown(),\n providerOptions: providerMetadataSchema.optional(),\n providerExecuted: z4.boolean().optional()\n});\nvar outputSchema = z4.discriminatedUnion(\"type\", [\n z4.object({\n type: z4.literal(\"text\"),\n value: z4.string()\n }),\n z4.object({\n type: z4.literal(\"json\"),\n value: jsonValueSchema\n }),\n z4.object({\n type: z4.literal(\"error-text\"),\n value: z4.string()\n }),\n z4.object({\n type: z4.literal(\"error-json\"),\n value: jsonValueSchema\n }),\n z4.object({\n type: z4.literal(\"content\"),\n value: z4.array(\n z4.union([\n z4.object({\n type: z4.literal(\"text\"),\n text: z4.string()\n }),\n z4.object({\n type: z4.literal(\"media\"),\n data: z4.string(),\n mediaType: z4.string()\n })\n ])\n )\n })\n]);\nvar toolResultPartSchema = z4.object({\n type: z4.literal(\"tool-result\"),\n toolCallId: z4.string(),\n toolName: z4.string(),\n output: outputSchema,\n providerOptions: providerMetadataSchema.optional()\n});\n\n// src/prompt/message.ts\nvar systemModelMessageSchema = z5.object(\n {\n role: z5.literal(\"system\"),\n content: z5.string(),\n providerOptions: providerMetadataSchema.optional()\n }\n);\nvar coreSystemMessageSchema = systemModelMessageSchema;\nvar userModelMessageSchema = z5.object({\n role: z5.literal(\"user\"),\n content: z5.union([\n z5.string(),\n z5.array(z5.union([textPartSchema, imagePartSchema, filePartSchema]))\n ]),\n providerOptions: providerMetadataSchema.optional()\n});\nvar coreUserMessageSchema = userModelMessageSchema;\nvar assistantModelMessageSchema = z5.object({\n role: z5.literal(\"assistant\"),\n content: z5.union([\n z5.string(),\n z5.array(\n z5.union([\n textPartSchema,\n filePartSchema,\n reasoningPartSchema,\n toolCallPartSchema,\n toolResultPartSchema\n ])\n )\n ]),\n providerOptions: providerMetadataSchema.optional()\n});\nvar coreAssistantMessageSchema = assistantModelMessageSchema;\nvar toolModelMessageSchema = z5.object({\n role: z5.literal(\"tool\"),\n content: z5.array(toolResultPartSchema),\n providerOptions: providerMetadataSchema.optional()\n});\nvar coreToolMessageSchema = toolModelMessageSchema;\nvar modelMessageSchema = z5.union([\n systemModelMessageSchema,\n userModelMessageSchema,\n assistantModelMessageSchema,\n toolModelMessageSchema\n]);\nvar coreMessageSchema = modelMessageSchema;\n\n// src/prompt/standardize-prompt.ts\nasync function standardizePrompt(prompt) {\n if (prompt.prompt == null && prompt.messages == null) {\n throw new InvalidPromptError2({\n prompt,\n message: \"prompt or messages must be defined\"\n });\n }\n if (prompt.prompt != null && prompt.messages != null) {\n throw new InvalidPromptError2({\n prompt,\n message: \"prompt and messages cannot be defined at the same time\"\n });\n }\n if (prompt.system != null && typeof prompt.system !== \"string\") {\n throw new InvalidPromptError2({\n prompt,\n message: \"system must be a string\"\n });\n }\n let messages;\n if (prompt.prompt != null && typeof prompt.prompt === \"string\") {\n messages = [{ role: \"user\", content: prompt.prompt }];\n } else if (prompt.prompt != null && Array.isArray(prompt.prompt)) {\n messages = prompt.prompt;\n } else if (prompt.messages != null) {\n messages = prompt.messages;\n } else {\n throw new InvalidPromptError2({\n prompt,\n message: \"prompt or messages must be defined\"\n });\n }\n if (messages.length === 0) {\n throw new InvalidPromptError2({\n prompt,\n message: \"messages must not be empty\"\n });\n }\n const validationResult = await safeValidateTypes({\n value: messages,\n schema: z6.array(modelMessageSchema)\n });\n if (!validationResult.success) {\n throw new InvalidPromptError2({\n prompt,\n message: \"The messages must be a ModelMessage[]. If you have passed a UIMessage[], you can use convertToModelMessages to convert them.\",\n cause: validationResult.error\n });\n }\n return {\n messages,\n system: prompt.system\n };\n}\n\n// src/prompt/wrap-gateway-error.ts\nimport {\n GatewayAuthenticationError,\n GatewayModelNotFoundError\n} from \"@ai-sdk/gateway\";\nimport { AISDKError as AISDKError19 } from \"@ai-sdk/provider\";\nfunction wrapGatewayError(error) {\n if (GatewayAuthenticationError.isInstance(error) || GatewayModelNotFoundError.isInstance(error)) {\n return new AISDKError19({\n name: \"GatewayError\",\n message: \"Vercel AI Gateway access failed. If you want to use AI SDK providers directly, use the providers, e.g. @ai-sdk/openai, or register a different global default provider.\",\n cause: error\n });\n }\n return error;\n}\n\n// src/telemetry/assemble-operation-name.ts\nfunction assembleOperationName({\n operationId,\n telemetry\n}) {\n return {\n // standardized operation and resource name:\n \"operation.name\": `${operationId}${(telemetry == null ? void 0 : telemetry.functionId) != null ? ` ${telemetry.functionId}` : \"\"}`,\n \"resource.name\": telemetry == null ? void 0 : telemetry.functionId,\n // detailed, AI SDK specific data:\n \"ai.operationId\": operationId,\n \"ai.telemetry.functionId\": telemetry == null ? void 0 : telemetry.functionId\n };\n}\n\n// src/telemetry/get-base-telemetry-attributes.ts\nfunction getBaseTelemetryAttributes({\n model,\n settings,\n telemetry,\n headers\n}) {\n var _a16;\n return {\n \"ai.model.provider\": model.provider,\n \"ai.model.id\": model.modelId,\n // settings:\n ...Object.entries(settings).reduce((attributes, [key, value]) => {\n attributes[`ai.settings.${key}`] = value;\n return attributes;\n }, {}),\n // add metadata as attributes:\n ...Object.entries((_a16 = telemetry == null ? void 0 : telemetry.metadata) != null ? _a16 : {}).reduce(\n (attributes, [key, value]) => {\n attributes[`ai.telemetry.metadata.${key}`] = value;\n return attributes;\n },\n {}\n ),\n // request headers\n ...Object.entries(headers != null ? headers : {}).reduce((attributes, [key, value]) => {\n if (value !== void 0) {\n attributes[`ai.request.headers.${key}`] = value;\n }\n return attributes;\n }, {})\n };\n}\n\n// src/telemetry/get-tracer.ts\nimport { trace } from \"@opentelemetry/api\";\n\n// src/telemetry/noop-tracer.ts\nvar noopTracer = {\n startSpan() {\n return noopSpan;\n },\n startActiveSpan(name16, arg1, arg2, arg3) {\n if (typeof arg1 === \"function\") {\n return arg1(noopSpan);\n }\n if (typeof arg2 === \"function\") {\n return arg2(noopSpan);\n }\n if (typeof arg3 === \"function\") {\n return arg3(noopSpan);\n }\n }\n};\nvar noopSpan = {\n spanContext() {\n return noopSpanContext;\n },\n setAttribute() {\n return this;\n },\n setAttributes() {\n return this;\n },\n addEvent() {\n return this;\n },\n addLink() {\n return this;\n },\n addLinks() {\n return this;\n },\n setStatus() {\n return this;\n },\n updateName() {\n return this;\n },\n end() {\n return this;\n },\n isRecording() {\n return false;\n },\n recordException() {\n return this;\n }\n};\nvar noopSpanContext = {\n traceId: \"\",\n spanId: \"\",\n traceFlags: 0\n};\n\n// src/telemetry/get-tracer.ts\nfunction getTracer({\n isEnabled = false,\n tracer\n} = {}) {\n if (!isEnabled) {\n return noopTracer;\n }\n if (tracer) {\n return tracer;\n }\n return trace.getTracer(\"ai\");\n}\n\n// src/telemetry/record-span.ts\nimport { SpanStatusCode } from \"@opentelemetry/api\";\nfunction recordSpan({\n name: name16,\n tracer,\n attributes,\n fn,\n endWhenDone = true\n}) {\n return tracer.startActiveSpan(name16, { attributes }, async (span) => {\n try {\n const result = await fn(span);\n if (endWhenDone) {\n span.end();\n }\n return result;\n } catch (error) {\n try {\n recordErrorOnSpan(span, error);\n } finally {\n span.end();\n }\n throw error;\n }\n });\n}\nfunction recordErrorOnSpan(span, error) {\n if (error instanceof Error) {\n span.recordException({\n name: error.name,\n message: error.message,\n stack: error.stack\n });\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message\n });\n } else {\n span.setStatus({ code: SpanStatusCode.ERROR });\n }\n}\n\n// src/telemetry/select-telemetry-attributes.ts\nfunction selectTelemetryAttributes({\n telemetry,\n attributes\n}) {\n if ((telemetry == null ? void 0 : telemetry.isEnabled) !== true) {\n return {};\n }\n return Object.entries(attributes).reduce((attributes2, [key, value]) => {\n if (value == null) {\n return attributes2;\n }\n if (typeof value === \"object\" && \"input\" in value && typeof value.input === \"function\") {\n if ((telemetry == null ? void 0 : telemetry.recordInputs) === false) {\n return attributes2;\n }\n const result = value.input();\n return result == null ? attributes2 : { ...attributes2, [key]: result };\n }\n if (typeof value === \"object\" && \"output\" in value && typeof value.output === \"function\") {\n if ((telemetry == null ? void 0 : telemetry.recordOutputs) === false) {\n return attributes2;\n }\n const result = value.output();\n return result == null ? attributes2 : { ...attributes2, [key]: result };\n }\n return { ...attributes2, [key]: value };\n }, {});\n}\n\n// src/telemetry/stringify-for-telemetry.ts\nfunction stringifyForTelemetry(prompt) {\n return JSON.stringify(\n prompt.map((message) => ({\n ...message,\n content: typeof message.content === \"string\" ? message.content : message.content.map(\n (part) => part.type === \"file\" ? {\n ...part,\n data: part.data instanceof Uint8Array ? convertDataContentToBase64String(part.data) : part.data\n } : part\n )\n }))\n );\n}\n\n// src/types/usage.ts\nfunction addLanguageModelUsage(usage1, usage2) {\n return {\n inputTokens: addTokenCounts(usage1.inputTokens, usage2.inputTokens),\n outputTokens: addTokenCounts(usage1.outputTokens, usage2.outputTokens),\n totalTokens: addTokenCounts(usage1.totalTokens, usage2.totalTokens),\n reasoningTokens: addTokenCounts(\n usage1.reasoningTokens,\n usage2.reasoningTokens\n ),\n cachedInputTokens: addTokenCounts(\n usage1.cachedInputTokens,\n usage2.cachedInputTokens\n )\n };\n}\nfunction addTokenCounts(tokenCount1, tokenCount2) {\n return tokenCount1 == null && tokenCount2 == null ? void 0 : (tokenCount1 != null ? tokenCount1 : 0) + (tokenCount2 != null ? tokenCount2 : 0);\n}\n\n// src/util/as-array.ts\nfunction asArray(value) {\n return value === void 0 ? [] : Array.isArray(value) ? value : [value];\n}\n\n// src/util/retry-with-exponential-backoff.ts\nimport { APICallError as APICallError2 } from \"@ai-sdk/provider\";\nimport { delay, getErrorMessage as getErrorMessage3, isAbortError } from \"@ai-sdk/provider-utils\";\nfunction getRetryDelayInMs({\n error,\n exponentialBackoffDelay\n}) {\n const headers = error.responseHeaders;\n if (!headers)\n return exponentialBackoffDelay;\n let ms;\n const retryAfterMs = headers[\"retry-after-ms\"];\n if (retryAfterMs) {\n const timeoutMs = parseFloat(retryAfterMs);\n if (!Number.isNaN(timeoutMs)) {\n ms = timeoutMs;\n }\n }\n const retryAfter = headers[\"retry-after\"];\n if (retryAfter && ms === void 0) {\n const timeoutSeconds = parseFloat(retryAfter);\n if (!Number.isNaN(timeoutSeconds)) {\n ms = timeoutSeconds * 1e3;\n } else {\n ms = Date.parse(retryAfter) - Date.now();\n }\n }\n if (ms != null && !Number.isNaN(ms) && 0 <= ms && (ms < 60 * 1e3 || ms < exponentialBackoffDelay)) {\n return ms;\n }\n return exponentialBackoffDelay;\n}\nvar retryWithExponentialBackoffRespectingRetryHeaders = ({\n maxRetries = 2,\n initialDelayInMs = 2e3,\n backoffFactor = 2,\n abortSignal\n} = {}) => async (f) => _retryWithExponentialBackoff(f, {\n maxRetries,\n delayInMs: initialDelayInMs,\n backoffFactor,\n abortSignal\n});\nasync function _retryWithExponentialBackoff(f, {\n maxRetries,\n delayInMs,\n backoffFactor,\n abortSignal\n}, errors = []) {\n try {\n return await f();\n } catch (error) {\n if (isAbortError(error)) {\n throw error;\n }\n if (maxRetries === 0) {\n throw error;\n }\n const errorMessage = getErrorMessage3(error);\n const newErrors = [...errors, error];\n const tryNumber = newErrors.length;\n if (tryNumber > maxRetries) {\n throw new RetryError({\n message: `Failed after ${tryNumber} attempts. Last error: ${errorMessage}`,\n reason: \"maxRetriesExceeded\",\n errors: newErrors\n });\n }\n if (error instanceof Error && APICallError2.isInstance(error) && error.isRetryable === true && tryNumber <= maxRetries) {\n await delay(\n getRetryDelayInMs({\n error,\n exponentialBackoffDelay: delayInMs\n }),\n { abortSignal }\n );\n return _retryWithExponentialBackoff(\n f,\n {\n maxRetries,\n delayInMs: backoffFactor * delayInMs,\n backoffFactor,\n abortSignal\n },\n newErrors\n );\n }\n if (tryNumber === 1) {\n throw error;\n }\n throw new RetryError({\n message: `Failed after ${tryNumber} attempts with non-retryable error: '${errorMessage}'`,\n reason: \"errorNotRetryable\",\n errors: newErrors\n });\n }\n}\n\n// src/util/prepare-retries.ts\nfunction prepareRetries({\n maxRetries,\n abortSignal\n}) {\n if (maxRetries != null) {\n if (!Number.isInteger(maxRetries)) {\n throw new InvalidArgumentError({\n parameter: \"maxRetries\",\n value: maxRetries,\n message: \"maxRetries must be an integer\"\n });\n }\n if (maxRetries < 0) {\n throw new InvalidArgumentError({\n parameter: \"maxRetries\",\n value: maxRetries,\n message: \"maxRetries must be >= 0\"\n });\n }\n }\n const maxRetriesResult = maxRetries != null ? maxRetries : 2;\n return {\n maxRetries: maxRetriesResult,\n retry: retryWithExponentialBackoffRespectingRetryHeaders({\n maxRetries: maxRetriesResult,\n abortSignal\n })\n };\n}\n\n// src/generate-text/extract-text-content.ts\nfunction extractTextContent(content) {\n const parts = content.filter(\n (content2) => content2.type === \"text\"\n );\n if (parts.length === 0) {\n return void 0;\n }\n return parts.map((content2) => content2.text).join(\"\");\n}\n\n// src/generate-text/generated-file.ts\nimport {\n convertBase64ToUint8Array as convertBase64ToUint8Array3,\n convertUint8ArrayToBase64 as convertUint8ArrayToBase642\n} from \"@ai-sdk/provider-utils\";\nvar DefaultGeneratedFile = class {\n constructor({\n data,\n mediaType\n }) {\n const isUint8Array = data instanceof Uint8Array;\n this.base64Data = isUint8Array ? void 0 : data;\n this.uint8ArrayData = isUint8Array ? data : void 0;\n this.mediaType = mediaType;\n }\n // lazy conversion with caching to avoid unnecessary conversion overhead:\n get base64() {\n if (this.base64Data == null) {\n this.base64Data = convertUint8ArrayToBase642(this.uint8ArrayData);\n }\n return this.base64Data;\n }\n // lazy conversion with caching to avoid unnecessary conversion overhead:\n get uint8Array() {\n if (this.uint8ArrayData == null) {\n this.uint8ArrayData = convertBase64ToUint8Array3(this.base64Data);\n }\n return this.uint8ArrayData;\n }\n};\nvar DefaultGeneratedFileWithType = class extends DefaultGeneratedFile {\n constructor(options) {\n super(options);\n this.type = \"file\";\n }\n};\n\n// src/generate-text/parse-tool-call.ts\nimport {\n asSchema as asSchema2,\n safeParseJSON,\n safeValidateTypes as safeValidateTypes2\n} from \"@ai-sdk/provider-utils\";\nasync function parseToolCall({\n toolCall,\n tools,\n repairToolCall,\n system,\n messages\n}) {\n try {\n if (tools == null) {\n throw new NoSuchToolError({ toolName: toolCall.toolName });\n }\n try {\n return await doParseToolCall({ toolCall, tools });\n } catch (error) {\n if (repairToolCall == null || !(NoSuchToolError.isInstance(error) || InvalidToolInputError.isInstance(error))) {\n throw error;\n }\n let repairedToolCall = null;\n try {\n repairedToolCall = await repairToolCall({\n toolCall,\n tools,\n inputSchema: ({ toolName }) => {\n const { inputSchema } = tools[toolName];\n return asSchema2(inputSchema).jsonSchema;\n },\n system,\n messages,\n error\n });\n } catch (repairError) {\n throw new ToolCallRepairError({\n cause: repairError,\n originalError: error\n });\n }\n if (repairedToolCall == null) {\n throw error;\n }\n return await doParseToolCall({ toolCall: repairedToolCall, tools });\n }\n } catch (error) {\n const parsedInput = await safeParseJSON({ text: toolCall.input });\n const input = parsedInput.success ? parsedInput.value : toolCall.input;\n return {\n type: \"tool-call\",\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input,\n dynamic: true,\n invalid: true,\n error\n };\n }\n}\nasync function doParseToolCall({\n toolCall,\n tools\n}) {\n const toolName = toolCall.toolName;\n const tool2 = tools[toolName];\n if (tool2 == null) {\n throw new NoSuchToolError({\n toolName: toolCall.toolName,\n availableTools: Object.keys(tools)\n });\n }\n const schema = asSchema2(tool2.inputSchema);\n const parseResult = toolCall.input.trim() === \"\" ? await safeValidateTypes2({ value: {}, schema }) : await safeParseJSON({ text: toolCall.input, schema });\n if (parseResult.success === false) {\n throw new InvalidToolInputError({\n toolName,\n toolInput: toolCall.input,\n cause: parseResult.error\n });\n }\n return tool2.type === \"dynamic\" ? {\n type: \"tool-call\",\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input: parseResult.value,\n providerExecuted: toolCall.providerExecuted,\n providerMetadata: toolCall.providerMetadata,\n dynamic: true\n } : {\n type: \"tool-call\",\n toolCallId: toolCall.toolCallId,\n toolName,\n input: parseResult.value,\n providerExecuted: toolCall.providerExecuted,\n providerMetadata: toolCall.providerMetadata\n };\n}\n\n// src/generate-text/step-result.ts\nvar DefaultStepResult = class {\n constructor({\n content,\n finishReason,\n usage,\n warnings,\n request,\n response,\n providerMetadata\n }) {\n this.content = content;\n this.finishReason = finishReason;\n this.usage = usage;\n this.warnings = warnings;\n this.request = request;\n this.response = response;\n this.providerMetadata = providerMetadata;\n }\n get text() {\n return this.content.filter((part) => part.type === \"text\").map((part) => part.text).join(\"\");\n }\n get reasoning() {\n return this.content.filter((part) => part.type === \"reasoning\");\n }\n get reasoningText() {\n return this.reasoning.length === 0 ? void 0 : this.reasoning.map((part) => part.text).join(\"\");\n }\n get files() {\n return this.content.filter((part) => part.type === \"file\").map((part) => part.file);\n }\n get sources() {\n return this.content.filter((part) => part.type === \"source\");\n }\n get toolCalls() {\n return this.content.filter((part) => part.type === \"tool-call\");\n }\n get staticToolCalls() {\n return this.toolCalls.filter(\n (toolCall) => toolCall.dynamic !== true\n );\n }\n get dynamicToolCalls() {\n return this.toolCalls.filter(\n (toolCall) => toolCall.dynamic === true\n );\n }\n get toolResults() {\n return this.content.filter((part) => part.type === \"tool-result\");\n }\n get staticToolResults() {\n return this.toolResults.filter(\n (toolResult) => toolResult.dynamic !== true\n );\n }\n get dynamicToolResults() {\n return this.toolResults.filter(\n (toolResult) => toolResult.dynamic === true\n );\n }\n};\n\n// src/generate-text/stop-condition.ts\nfunction stepCountIs(stepCount) {\n return ({ steps }) => steps.length === stepCount;\n}\nfunction hasToolCall(toolName) {\n return ({ steps }) => {\n var _a16, _b, _c;\n return (_c = (_b = (_a16 = steps[steps.length - 1]) == null ? void 0 : _a16.toolCalls) == null ? void 0 : _b.some(\n (toolCall) => toolCall.toolName === toolName\n )) != null ? _c : false;\n };\n}\nasync function isStopConditionMet({\n stopConditions,\n steps\n}) {\n return (await Promise.all(stopConditions.map((condition) => condition({ steps })))).some((result) => result);\n}\n\n// src/prompt/create-tool-model-output.ts\nimport {\n getErrorMessage as getErrorMessage4\n} from \"@ai-sdk/provider\";\nfunction createToolModelOutput({\n output,\n tool: tool2,\n errorMode\n}) {\n if (errorMode === \"text\") {\n return { type: \"error-text\", value: getErrorMessage4(output) };\n } else if (errorMode === \"json\") {\n return { type: \"error-json\", value: toJSONValue(output) };\n }\n if (tool2 == null ? void 0 : tool2.toModelOutput) {\n return tool2.toModelOutput(output);\n }\n return typeof output === \"string\" ? { type: \"text\", value: output } : { type: \"json\", value: toJSONValue(output) };\n}\nfunction toJSONValue(value) {\n return value === void 0 ? null : value;\n}\n\n// src/generate-text/to-response-messages.ts\nfunction toResponseMessages({\n content: inputContent,\n tools\n}) {\n const responseMessages = [];\n const content = inputContent.filter((part) => part.type !== \"source\").filter(\n (part) => (part.type !== \"tool-result\" || part.providerExecuted) && (part.type !== \"tool-error\" || part.providerExecuted)\n ).filter((part) => part.type !== \"text\" || part.text.length > 0).map((part) => {\n switch (part.type) {\n case \"text\":\n return {\n type: \"text\",\n text: part.text,\n providerOptions: part.providerMetadata\n };\n case \"reasoning\":\n return {\n type: \"reasoning\",\n text: part.text,\n providerOptions: part.providerMetadata\n };\n case \"file\":\n return {\n type: \"file\",\n data: part.file.base64,\n mediaType: part.file.mediaType,\n providerOptions: part.providerMetadata\n };\n case \"tool-call\":\n return {\n type: \"tool-call\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n input: part.input,\n providerExecuted: part.providerExecuted,\n providerOptions: part.providerMetadata\n };\n case \"tool-result\":\n return {\n type: \"tool-result\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n output: createToolModelOutput({\n tool: tools == null ? void 0 : tools[part.toolName],\n output: part.output,\n errorMode: \"none\"\n }),\n providerExecuted: true,\n providerOptions: part.providerMetadata\n };\n case \"tool-error\":\n return {\n type: \"tool-result\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n output: createToolModelOutput({\n tool: tools == null ? void 0 : tools[part.toolName],\n output: part.error,\n errorMode: \"json\"\n }),\n providerOptions: part.providerMetadata\n };\n }\n });\n if (content.length > 0) {\n responseMessages.push({\n role: \"assistant\",\n content\n });\n }\n const toolResultContent = inputContent.filter((part) => part.type === \"tool-result\" || part.type === \"tool-error\").filter((part) => !part.providerExecuted).map((toolResult) => ({\n type: \"tool-result\",\n toolCallId: toolResult.toolCallId,\n toolName: toolResult.toolName,\n output: createToolModelOutput({\n tool: tools == null ? void 0 : tools[toolResult.toolName],\n output: toolResult.type === \"tool-result\" ? toolResult.output : toolResult.error,\n errorMode: toolResult.type === \"tool-error\" ? \"text\" : \"none\"\n })\n }));\n if (toolResultContent.length > 0) {\n responseMessages.push({\n role: \"tool\",\n content: toolResultContent\n });\n }\n return responseMessages;\n}\n\n// src/generate-text/generate-text.ts\nvar originalGenerateId = createIdGenerator({\n prefix: \"aitxt\",\n size: 24\n});\nasync function generateText({\n model: modelArg,\n tools,\n toolChoice,\n system,\n prompt,\n messages,\n maxRetries: maxRetriesArg,\n abortSignal,\n headers,\n stopWhen = stepCountIs(1),\n experimental_output: output,\n experimental_telemetry: telemetry,\n providerOptions,\n experimental_activeTools,\n activeTools = experimental_activeTools,\n experimental_prepareStep,\n prepareStep = experimental_prepareStep,\n experimental_repairToolCall: repairToolCall,\n experimental_download: download2,\n experimental_context,\n _internal: {\n generateId: generateId3 = originalGenerateId,\n currentDate = () => /* @__PURE__ */ new Date()\n } = {},\n onStepFinish,\n ...settings\n}) {\n const model = resolveLanguageModel(modelArg);\n const stopConditions = asArray(stopWhen);\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const callSettings = prepareCallSettings(settings);\n const headersWithUserAgent = withUserAgentSuffix2(\n headers != null ? headers : {},\n `ai/${VERSION}`\n );\n const baseTelemetryAttributes = getBaseTelemetryAttributes({\n model,\n telemetry,\n headers: headersWithUserAgent,\n settings: { ...callSettings, maxRetries }\n });\n const initialPrompt = await standardizePrompt({\n system,\n prompt,\n messages\n });\n const tracer = getTracer(telemetry);\n try {\n return await recordSpan({\n name: \"ai.generateText\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.generateText\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n // model:\n \"ai.model.provider\": model.provider,\n \"ai.model.id\": model.modelId,\n // specific settings that only make sense on the outer level:\n \"ai.prompt\": {\n input: () => JSON.stringify({ system, prompt, messages })\n }\n }\n }),\n tracer,\n fn: async (span) => {\n var _a16, _b, _c, _d, _e, _f, _g;\n const callSettings2 = prepareCallSettings(settings);\n let currentModelResponse;\n let clientToolCalls = [];\n let clientToolOutputs = [];\n const responseMessages = [];\n const steps = [];\n do {\n const stepInputMessages = [\n ...initialPrompt.messages,\n ...responseMessages\n ];\n const prepareStepResult = await (prepareStep == null ? void 0 : prepareStep({\n model,\n steps,\n stepNumber: steps.length,\n messages: stepInputMessages\n }));\n const stepModel = resolveLanguageModel(\n (_a16 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a16 : model\n );\n const promptMessages = await convertToLanguageModelPrompt({\n prompt: {\n system: (_b = prepareStepResult == null ? void 0 : prepareStepResult.system) != null ? _b : initialPrompt.system,\n messages: (_c = prepareStepResult == null ? void 0 : prepareStepResult.messages) != null ? _c : stepInputMessages\n },\n supportedUrls: await stepModel.supportedUrls,\n download: download2\n });\n const { toolChoice: stepToolChoice, tools: stepTools } = prepareToolsAndToolChoice({\n tools,\n toolChoice: (_d = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _d : toolChoice,\n activeTools: (_e = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _e : activeTools\n });\n currentModelResponse = await retry(\n () => {\n var _a17;\n return recordSpan({\n name: \"ai.generateText.doGenerate\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.generateText.doGenerate\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n // model:\n \"ai.model.provider\": stepModel.provider,\n \"ai.model.id\": stepModel.modelId,\n // prompt:\n \"ai.prompt.messages\": {\n input: () => stringifyForTelemetry(promptMessages)\n },\n \"ai.prompt.tools\": {\n // convert the language model level tools:\n input: () => stepTools == null ? void 0 : stepTools.map((tool2) => JSON.stringify(tool2))\n },\n \"ai.prompt.toolChoice\": {\n input: () => stepToolChoice != null ? JSON.stringify(stepToolChoice) : void 0\n },\n // standardized gen-ai llm span attributes:\n \"gen_ai.system\": stepModel.provider,\n \"gen_ai.request.model\": stepModel.modelId,\n \"gen_ai.request.frequency_penalty\": settings.frequencyPenalty,\n \"gen_ai.request.max_tokens\": settings.maxOutputTokens,\n \"gen_ai.request.presence_penalty\": settings.presencePenalty,\n \"gen_ai.request.stop_sequences\": settings.stopSequences,\n \"gen_ai.request.temperature\": (_a17 = settings.temperature) != null ? _a17 : void 0,\n \"gen_ai.request.top_k\": settings.topK,\n \"gen_ai.request.top_p\": settings.topP\n }\n }),\n tracer,\n fn: async (span2) => {\n var _a18, _b2, _c2, _d2, _e2, _f2, _g2, _h;\n const result = await stepModel.doGenerate({\n ...callSettings2,\n tools: stepTools,\n toolChoice: stepToolChoice,\n responseFormat: output == null ? void 0 : output.responseFormat,\n prompt: promptMessages,\n providerOptions,\n abortSignal,\n headers: headersWithUserAgent\n });\n const responseData = {\n id: (_b2 = (_a18 = result.response) == null ? void 0 : _a18.id) != null ? _b2 : generateId3(),\n timestamp: (_d2 = (_c2 = result.response) == null ? void 0 : _c2.timestamp) != null ? _d2 : currentDate(),\n modelId: (_f2 = (_e2 = result.response) == null ? void 0 : _e2.modelId) != null ? _f2 : stepModel.modelId,\n headers: (_g2 = result.response) == null ? void 0 : _g2.headers,\n body: (_h = result.response) == null ? void 0 : _h.body\n };\n span2.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.response.finishReason\": result.finishReason,\n \"ai.response.text\": {\n output: () => extractTextContent(result.content)\n },\n \"ai.response.toolCalls\": {\n output: () => {\n const toolCalls = asToolCalls(result.content);\n return toolCalls == null ? void 0 : JSON.stringify(toolCalls);\n }\n },\n \"ai.response.id\": responseData.id,\n \"ai.response.model\": responseData.modelId,\n \"ai.response.timestamp\": responseData.timestamp.toISOString(),\n \"ai.response.providerMetadata\": JSON.stringify(\n result.providerMetadata\n ),\n // TODO rename telemetry attributes to inputTokens and outputTokens\n \"ai.usage.promptTokens\": result.usage.inputTokens,\n \"ai.usage.completionTokens\": result.usage.outputTokens,\n // standardized gen-ai llm span attributes:\n \"gen_ai.response.finish_reasons\": [result.finishReason],\n \"gen_ai.response.id\": responseData.id,\n \"gen_ai.response.model\": responseData.modelId,\n \"gen_ai.usage.input_tokens\": result.usage.inputTokens,\n \"gen_ai.usage.output_tokens\": result.usage.outputTokens\n }\n })\n );\n return { ...result, response: responseData };\n }\n });\n }\n );\n const stepToolCalls = await Promise.all(\n currentModelResponse.content.filter(\n (part) => part.type === \"tool-call\"\n ).map(\n (toolCall) => parseToolCall({\n toolCall,\n tools,\n repairToolCall,\n system,\n messages: stepInputMessages\n })\n )\n );\n for (const toolCall of stepToolCalls) {\n if (toolCall.invalid) {\n continue;\n }\n const tool2 = tools[toolCall.toolName];\n if ((tool2 == null ? void 0 : tool2.onInputAvailable) != null) {\n await tool2.onInputAvailable({\n input: toolCall.input,\n toolCallId: toolCall.toolCallId,\n messages: stepInputMessages,\n abortSignal,\n experimental_context\n });\n }\n }\n const invalidToolCalls = stepToolCalls.filter(\n (toolCall) => toolCall.invalid && toolCall.dynamic\n );\n clientToolOutputs = [];\n for (const toolCall of invalidToolCalls) {\n clientToolOutputs.push({\n type: \"tool-error\",\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input: toolCall.input,\n error: getErrorMessage5(toolCall.error),\n dynamic: true\n });\n }\n clientToolCalls = stepToolCalls.filter(\n (toolCall) => !toolCall.providerExecuted\n );\n if (tools != null) {\n clientToolOutputs.push(\n ...await executeTools({\n toolCalls: clientToolCalls.filter(\n (toolCall) => !toolCall.invalid\n ),\n tools,\n tracer,\n telemetry,\n messages: stepInputMessages,\n abortSignal,\n experimental_context\n })\n );\n }\n const stepContent = asContent({\n content: currentModelResponse.content,\n toolCalls: stepToolCalls,\n toolOutputs: clientToolOutputs\n });\n responseMessages.push(\n ...toResponseMessages({\n content: stepContent,\n tools\n })\n );\n const currentStepResult = new DefaultStepResult({\n content: stepContent,\n finishReason: currentModelResponse.finishReason,\n usage: currentModelResponse.usage,\n warnings: currentModelResponse.warnings,\n providerMetadata: currentModelResponse.providerMetadata,\n request: (_f = currentModelResponse.request) != null ? _f : {},\n response: {\n ...currentModelResponse.response,\n // deep clone msgs to avoid mutating past messages in multi-step:\n messages: structuredClone(responseMessages)\n }\n });\n logWarnings((_g = currentModelResponse.warnings) != null ? _g : []);\n steps.push(currentStepResult);\n await (onStepFinish == null ? void 0 : onStepFinish(currentStepResult));\n } while (\n // there are tool calls:\n clientToolCalls.length > 0 && // all current tool calls have outputs (incl. execution errors):\n clientToolOutputs.length === clientToolCalls.length && // continue until a stop condition is met:\n !await isStopConditionMet({ stopConditions, steps })\n );\n span.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.response.finishReason\": currentModelResponse.finishReason,\n \"ai.response.text\": {\n output: () => extractTextContent(currentModelResponse.content)\n },\n \"ai.response.toolCalls\": {\n output: () => {\n const toolCalls = asToolCalls(currentModelResponse.content);\n return toolCalls == null ? void 0 : JSON.stringify(toolCalls);\n }\n },\n \"ai.response.providerMetadata\": JSON.stringify(\n currentModelResponse.providerMetadata\n ),\n // TODO rename telemetry attributes to inputTokens and outputTokens\n \"ai.usage.promptTokens\": currentModelResponse.usage.inputTokens,\n \"ai.usage.completionTokens\": currentModelResponse.usage.outputTokens\n }\n })\n );\n const lastStep = steps[steps.length - 1];\n let resolvedOutput;\n if (lastStep.finishReason === \"stop\") {\n resolvedOutput = await (output == null ? void 0 : output.parseOutput(\n { text: lastStep.text },\n {\n response: lastStep.response,\n usage: lastStep.usage,\n finishReason: lastStep.finishReason\n }\n ));\n }\n return new DefaultGenerateTextResult({\n steps,\n resolvedOutput\n });\n }\n });\n } catch (error) {\n throw wrapGatewayError(error);\n }\n}\nasync function executeTools({\n toolCalls,\n tools,\n tracer,\n telemetry,\n messages,\n abortSignal,\n experimental_context\n}) {\n const toolOutputs = await Promise.all(\n toolCalls.map(async ({ toolCallId, toolName, input }) => {\n const tool2 = tools[toolName];\n if ((tool2 == null ? void 0 : tool2.execute) == null) {\n return void 0;\n }\n return recordSpan({\n name: \"ai.toolCall\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.toolCall\",\n telemetry\n }),\n \"ai.toolCall.name\": toolName,\n \"ai.toolCall.id\": toolCallId,\n \"ai.toolCall.args\": {\n output: () => JSON.stringify(input)\n }\n }\n }),\n tracer,\n fn: async (span) => {\n try {\n const stream = executeTool({\n execute: tool2.execute.bind(tool2),\n input,\n options: {\n toolCallId,\n messages,\n abortSignal,\n experimental_context\n }\n });\n let output;\n for await (const part of stream) {\n if (part.type === \"final\") {\n output = part.output;\n }\n }\n try {\n span.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.toolCall.result\": {\n output: () => JSON.stringify(output)\n }\n }\n })\n );\n } catch (ignored) {\n }\n return {\n type: \"tool-result\",\n toolCallId,\n toolName,\n input,\n output,\n dynamic: tool2.type === \"dynamic\"\n };\n } catch (error) {\n recordErrorOnSpan(span, error);\n return {\n type: \"tool-error\",\n toolCallId,\n toolName,\n input,\n error,\n dynamic: tool2.type === \"dynamic\"\n };\n }\n }\n });\n })\n );\n return toolOutputs.filter(\n (output) => output != null\n );\n}\nvar DefaultGenerateTextResult = class {\n constructor(options) {\n this.steps = options.steps;\n this.resolvedOutput = options.resolvedOutput;\n }\n get finalStep() {\n return this.steps[this.steps.length - 1];\n }\n get content() {\n return this.finalStep.content;\n }\n get text() {\n return this.finalStep.text;\n }\n get files() {\n return this.finalStep.files;\n }\n get reasoningText() {\n return this.finalStep.reasoningText;\n }\n get reasoning() {\n return this.finalStep.reasoning;\n }\n get toolCalls() {\n return this.finalStep.toolCalls;\n }\n get staticToolCalls() {\n return this.finalStep.staticToolCalls;\n }\n get dynamicToolCalls() {\n return this.finalStep.dynamicToolCalls;\n }\n get toolResults() {\n return this.finalStep.toolResults;\n }\n get staticToolResults() {\n return this.finalStep.staticToolResults;\n }\n get dynamicToolResults() {\n return this.finalStep.dynamicToolResults;\n }\n get sources() {\n return this.finalStep.sources;\n }\n get finishReason() {\n return this.finalStep.finishReason;\n }\n get warnings() {\n return this.finalStep.warnings;\n }\n get providerMetadata() {\n return this.finalStep.providerMetadata;\n }\n get response() {\n return this.finalStep.response;\n }\n get request() {\n return this.finalStep.request;\n }\n get usage() {\n return this.finalStep.usage;\n }\n get totalUsage() {\n return this.steps.reduce(\n (totalUsage, step) => {\n return addLanguageModelUsage(totalUsage, step.usage);\n },\n {\n inputTokens: void 0,\n outputTokens: void 0,\n totalTokens: void 0,\n reasoningTokens: void 0,\n cachedInputTokens: void 0\n }\n );\n }\n get experimental_output() {\n if (this.resolvedOutput == null) {\n throw new NoOutputSpecifiedError();\n }\n return this.resolvedOutput;\n }\n};\nfunction asToolCalls(content) {\n const parts = content.filter(\n (part) => part.type === \"tool-call\"\n );\n if (parts.length === 0) {\n return void 0;\n }\n return parts.map((toolCall) => ({\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input: toolCall.input\n }));\n}\nfunction asContent({\n content,\n toolCalls,\n toolOutputs\n}) {\n return [\n ...content.map((part) => {\n switch (part.type) {\n case \"text\":\n case \"reasoning\":\n case \"source\":\n return part;\n case \"file\": {\n return {\n type: \"file\",\n file: new DefaultGeneratedFile(part)\n };\n }\n case \"tool-call\": {\n return toolCalls.find(\n (toolCall) => toolCall.toolCallId === part.toolCallId\n );\n }\n case \"tool-result\": {\n const toolCall = toolCalls.find(\n (toolCall2) => toolCall2.toolCallId === part.toolCallId\n );\n if (toolCall == null) {\n throw new Error(`Tool call ${part.toolCallId} not found.`);\n }\n if (part.isError) {\n return {\n type: \"tool-error\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n input: toolCall.input,\n error: part.result,\n providerExecuted: true,\n dynamic: toolCall.dynamic\n };\n }\n return {\n type: \"tool-result\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n input: toolCall.input,\n output: part.result,\n providerExecuted: true,\n dynamic: toolCall.dynamic\n };\n }\n }\n }),\n ...toolOutputs\n ];\n}\n\n// src/generate-text/stream-text.ts\nimport {\n getErrorMessage as getErrorMessage7\n} from \"@ai-sdk/provider\";\nimport {\n createIdGenerator as createIdGenerator2,\n isAbortError as isAbortError2\n} from \"@ai-sdk/provider-utils\";\n\n// src/util/prepare-headers.ts\nfunction prepareHeaders(headers, defaultHeaders) {\n const responseHeaders = new Headers(headers != null ? headers : {});\n for (const [key, value] of Object.entries(defaultHeaders)) {\n if (!responseHeaders.has(key)) {\n responseHeaders.set(key, value);\n }\n }\n return responseHeaders;\n}\n\n// src/text-stream/create-text-stream-response.ts\nfunction createTextStreamResponse({\n status,\n statusText,\n headers,\n textStream\n}) {\n return new Response(textStream.pipeThrough(new TextEncoderStream()), {\n status: status != null ? status : 200,\n statusText,\n headers: prepareHeaders(headers, {\n \"content-type\": \"text/plain; charset=utf-8\"\n })\n });\n}\n\n// src/util/write-to-server-response.ts\nfunction writeToServerResponse({\n response,\n status,\n statusText,\n headers,\n stream\n}) {\n response.writeHead(status != null ? status : 200, statusText, headers);\n const reader = stream.getReader();\n const read = async () => {\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done)\n break;\n const canContinue = response.write(value);\n if (!canContinue) {\n await new Promise((resolve2) => {\n response.once(\"drain\", resolve2);\n });\n }\n }\n } catch (error) {\n throw error;\n } finally {\n response.end();\n }\n };\n read();\n}\n\n// src/text-stream/pipe-text-stream-to-response.ts\nfunction pipeTextStreamToResponse({\n response,\n status,\n statusText,\n headers,\n textStream\n}) {\n writeToServerResponse({\n response,\n status,\n statusText,\n headers: Object.fromEntries(\n prepareHeaders(headers, {\n \"content-type\": \"text/plain; charset=utf-8\"\n }).entries()\n ),\n stream: textStream.pipeThrough(new TextEncoderStream())\n });\n}\n\n// src/ui-message-stream/json-to-sse-transform-stream.ts\nvar JsonToSseTransformStream = class extends TransformStream {\n constructor() {\n super({\n transform(part, controller) {\n controller.enqueue(`data: ${JSON.stringify(part)}\n\n`);\n },\n flush(controller) {\n controller.enqueue(\"data: [DONE]\\n\\n\");\n }\n });\n }\n};\n\n// src/ui-message-stream/ui-message-stream-headers.ts\nvar UI_MESSAGE_STREAM_HEADERS = {\n \"content-type\": \"text/event-stream\",\n \"cache-control\": \"no-cache\",\n connection: \"keep-alive\",\n \"x-vercel-ai-ui-message-stream\": \"v1\",\n \"x-accel-buffering\": \"no\"\n // disable nginx buffering\n};\n\n// src/ui-message-stream/create-ui-message-stream-response.ts\nfunction createUIMessageStreamResponse({\n status,\n statusText,\n headers,\n stream,\n consumeSseStream\n}) {\n let sseStream = stream.pipeThrough(new JsonToSseTransformStream());\n if (consumeSseStream) {\n const [stream1, stream2] = sseStream.tee();\n sseStream = stream1;\n consumeSseStream({ stream: stream2 });\n }\n return new Response(sseStream.pipeThrough(new TextEncoderStream()), {\n status,\n statusText,\n headers: prepareHeaders(headers, UI_MESSAGE_STREAM_HEADERS)\n });\n}\n\n// src/ui-message-stream/get-response-ui-message-id.ts\nfunction getResponseUIMessageId({\n originalMessages,\n responseMessageId\n}) {\n if (originalMessages == null) {\n return void 0;\n }\n const lastMessage = originalMessages[originalMessages.length - 1];\n return (lastMessage == null ? void 0 : lastMessage.role) === \"assistant\" ? lastMessage.id : typeof responseMessageId === \"function\" ? responseMessageId() : responseMessageId;\n}\n\n// src/ui/process-ui-message-stream.ts\nimport {\n validateTypes\n} from \"@ai-sdk/provider-utils\";\n\n// src/ui-message-stream/ui-message-chunks.ts\nimport { z as z7 } from \"zod/v4\";\nimport { lazyValidator, zodSchema } from \"@ai-sdk/provider-utils\";\nvar uiMessageChunkSchema = lazyValidator(\n () => zodSchema(\n z7.union([\n z7.strictObject({\n type: z7.literal(\"text-start\"),\n id: z7.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.strictObject({\n type: z7.literal(\"text-delta\"),\n id: z7.string(),\n delta: z7.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.strictObject({\n type: z7.literal(\"text-end\"),\n id: z7.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.strictObject({\n type: z7.literal(\"error\"),\n errorText: z7.string()\n }),\n z7.strictObject({\n type: z7.literal(\"tool-input-start\"),\n toolCallId: z7.string(),\n toolName: z7.string(),\n providerExecuted: z7.boolean().optional(),\n dynamic: z7.boolean().optional()\n }),\n z7.strictObject({\n type: z7.literal(\"tool-input-delta\"),\n toolCallId: z7.string(),\n inputTextDelta: z7.string()\n }),\n z7.strictObject({\n type: z7.literal(\"tool-input-available\"),\n toolCallId: z7.string(),\n toolName: z7.string(),\n input: z7.unknown(),\n providerExecuted: z7.boolean().optional(),\n providerMetadata: providerMetadataSchema.optional(),\n dynamic: z7.boolean().optional()\n }),\n z7.strictObject({\n type: z7.literal(\"tool-input-error\"),\n toolCallId: z7.string(),\n toolName: z7.string(),\n input: z7.unknown(),\n providerExecuted: z7.boolean().optional(),\n providerMetadata: providerMetadataSchema.optional(),\n dynamic: z7.boolean().optional(),\n errorText: z7.string()\n }),\n z7.strictObject({\n type: z7.literal(\"tool-output-available\"),\n toolCallId: z7.string(),\n output: z7.unknown(),\n providerExecuted: z7.boolean().optional(),\n dynamic: z7.boolean().optional(),\n preliminary: z7.boolean().optional()\n }),\n z7.strictObject({\n type: z7.literal(\"tool-output-error\"),\n toolCallId: z7.string(),\n errorText: z7.string(),\n providerExecuted: z7.boolean().optional(),\n dynamic: z7.boolean().optional()\n }),\n z7.strictObject({\n type: z7.literal(\"reasoning-start\"),\n id: z7.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.strictObject({\n type: z7.literal(\"reasoning-delta\"),\n id: z7.string(),\n delta: z7.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.strictObject({\n type: z7.literal(\"reasoning-end\"),\n id: z7.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.strictObject({\n type: z7.literal(\"source-url\"),\n sourceId: z7.string(),\n url: z7.string(),\n title: z7.string().optional(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.strictObject({\n type: z7.literal(\"source-document\"),\n sourceId: z7.string(),\n mediaType: z7.string(),\n title: z7.string(),\n filename: z7.string().optional(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.strictObject({\n type: z7.literal(\"file\"),\n url: z7.string(),\n mediaType: z7.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.strictObject({\n type: z7.custom(\n (value) => typeof value === \"string\" && value.startsWith(\"data-\"),\n { message: 'Type must start with \"data-\"' }\n ),\n id: z7.string().optional(),\n data: z7.unknown(),\n transient: z7.boolean().optional()\n }),\n z7.strictObject({\n type: z7.literal(\"start-step\")\n }),\n z7.strictObject({\n type: z7.literal(\"finish-step\")\n }),\n z7.strictObject({\n type: z7.literal(\"start\"),\n messageId: z7.string().optional(),\n messageMetadata: z7.unknown().optional()\n }),\n z7.strictObject({\n type: z7.literal(\"finish\"),\n messageMetadata: z7.unknown().optional()\n }),\n z7.strictObject({\n type: z7.literal(\"abort\")\n }),\n z7.strictObject({\n type: z7.literal(\"message-metadata\"),\n messageMetadata: z7.unknown()\n })\n ])\n )\n);\nfunction isDataUIMessageChunk(chunk) {\n return chunk.type.startsWith(\"data-\");\n}\n\n// src/util/merge-objects.ts\nfunction mergeObjects(base, overrides) {\n if (base === void 0 && overrides === void 0) {\n return void 0;\n }\n if (base === void 0) {\n return overrides;\n }\n if (overrides === void 0) {\n return base;\n }\n const result = { ...base };\n for (const key in overrides) {\n if (Object.prototype.hasOwnProperty.call(overrides, key)) {\n const overridesValue = overrides[key];\n if (overridesValue === void 0)\n continue;\n const baseValue = key in base ? base[key] : void 0;\n const isSourceObject = overridesValue !== null && typeof overridesValue === \"object\" && !Array.isArray(overridesValue) && !(overridesValue instanceof Date) && !(overridesValue instanceof RegExp);\n const isTargetObject = baseValue !== null && baseValue !== void 0 && typeof baseValue === \"object\" && !Array.isArray(baseValue) && !(baseValue instanceof Date) && !(baseValue instanceof RegExp);\n if (isSourceObject && isTargetObject) {\n result[key] = mergeObjects(\n baseValue,\n overridesValue\n );\n } else {\n result[key] = overridesValue;\n }\n }\n }\n return result;\n}\n\n// src/util/parse-partial-json.ts\nimport { safeParseJSON as safeParseJSON2 } from \"@ai-sdk/provider-utils\";\n\n// src/util/fix-json.ts\nfunction fixJson(input) {\n const stack = [\"ROOT\"];\n let lastValidIndex = -1;\n let literalStart = null;\n function processValueStart(char, i, swapState) {\n {\n switch (char) {\n case '\"': {\n lastValidIndex = i;\n stack.pop();\n stack.push(swapState);\n stack.push(\"INSIDE_STRING\");\n break;\n }\n case \"f\":\n case \"t\":\n case \"n\": {\n lastValidIndex = i;\n literalStart = i;\n stack.pop();\n stack.push(swapState);\n stack.push(\"INSIDE_LITERAL\");\n break;\n }\n case \"-\": {\n stack.pop();\n stack.push(swapState);\n stack.push(\"INSIDE_NUMBER\");\n break;\n }\n case \"0\":\n case \"1\":\n case \"2\":\n case \"3\":\n case \"4\":\n case \"5\":\n case \"6\":\n case \"7\":\n case \"8\":\n case \"9\": {\n lastValidIndex = i;\n stack.pop();\n stack.push(swapState);\n stack.push(\"INSIDE_NUMBER\");\n break;\n }\n case \"{\": {\n lastValidIndex = i;\n stack.pop();\n stack.push(swapState);\n stack.push(\"INSIDE_OBJECT_START\");\n break;\n }\n case \"[\": {\n lastValidIndex = i;\n stack.pop();\n stack.push(swapState);\n stack.push(\"INSIDE_ARRAY_START\");\n break;\n }\n }\n }\n }\n function processAfterObjectValue(char, i) {\n switch (char) {\n case \",\": {\n stack.pop();\n stack.push(\"INSIDE_OBJECT_AFTER_COMMA\");\n break;\n }\n case \"}\": {\n lastValidIndex = i;\n stack.pop();\n break;\n }\n }\n }\n function processAfterArrayValue(char, i) {\n switch (char) {\n case \",\": {\n stack.pop();\n stack.push(\"INSIDE_ARRAY_AFTER_COMMA\");\n break;\n }\n case \"]\": {\n lastValidIndex = i;\n stack.pop();\n break;\n }\n }\n }\n for (let i = 0; i < input.length; i++) {\n const char = input[i];\n const currentState = stack[stack.length - 1];\n switch (currentState) {\n case \"ROOT\":\n processValueStart(char, i, \"FINISH\");\n break;\n case \"INSIDE_OBJECT_START\": {\n switch (char) {\n case '\"': {\n stack.pop();\n stack.push(\"INSIDE_OBJECT_KEY\");\n break;\n }\n case \"}\": {\n lastValidIndex = i;\n stack.pop();\n break;\n }\n }\n break;\n }\n case \"INSIDE_OBJECT_AFTER_COMMA\": {\n switch (char) {\n case '\"': {\n stack.pop();\n stack.push(\"INSIDE_OBJECT_KEY\");\n break;\n }\n }\n break;\n }\n case \"INSIDE_OBJECT_KEY\": {\n switch (char) {\n case '\"': {\n stack.pop();\n stack.push(\"INSIDE_OBJECT_AFTER_KEY\");\n break;\n }\n }\n break;\n }\n case \"INSIDE_OBJECT_AFTER_KEY\": {\n switch (char) {\n case \":\": {\n stack.pop();\n stack.push(\"INSIDE_OBJECT_BEFORE_VALUE\");\n break;\n }\n }\n break;\n }\n case \"INSIDE_OBJECT_BEFORE_VALUE\": {\n processValueStart(char, i, \"INSIDE_OBJECT_AFTER_VALUE\");\n break;\n }\n case \"INSIDE_OBJECT_AFTER_VALUE\": {\n processAfterObjectValue(char, i);\n break;\n }\n case \"INSIDE_STRING\": {\n switch (char) {\n case '\"': {\n stack.pop();\n lastValidIndex = i;\n break;\n }\n case \"\\\\\": {\n stack.push(\"INSIDE_STRING_ESCAPE\");\n break;\n }\n default: {\n lastValidIndex = i;\n }\n }\n break;\n }\n case \"INSIDE_ARRAY_START\": {\n switch (char) {\n case \"]\": {\n lastValidIndex = i;\n stack.pop();\n break;\n }\n default: {\n lastValidIndex = i;\n processValueStart(char, i, \"INSIDE_ARRAY_AFTER_VALUE\");\n break;\n }\n }\n break;\n }\n case \"INSIDE_ARRAY_AFTER_VALUE\": {\n switch (char) {\n case \",\": {\n stack.pop();\n stack.push(\"INSIDE_ARRAY_AFTER_COMMA\");\n break;\n }\n case \"]\": {\n lastValidIndex = i;\n stack.pop();\n break;\n }\n default: {\n lastValidIndex = i;\n break;\n }\n }\n break;\n }\n case \"INSIDE_ARRAY_AFTER_COMMA\": {\n processValueStart(char, i, \"INSIDE_ARRAY_AFTER_VALUE\");\n break;\n }\n case \"INSIDE_STRING_ESCAPE\": {\n stack.pop();\n lastValidIndex = i;\n break;\n }\n case \"INSIDE_NUMBER\": {\n switch (char) {\n case \"0\":\n case \"1\":\n case \"2\":\n case \"3\":\n case \"4\":\n case \"5\":\n case \"6\":\n case \"7\":\n case \"8\":\n case \"9\": {\n lastValidIndex = i;\n break;\n }\n case \"e\":\n case \"E\":\n case \"-\":\n case \".\": {\n break;\n }\n case \",\": {\n stack.pop();\n if (stack[stack.length - 1] === \"INSIDE_ARRAY_AFTER_VALUE\") {\n processAfterArrayValue(char, i);\n }\n if (stack[stack.length - 1] === \"INSIDE_OBJECT_AFTER_VALUE\") {\n processAfterObjectValue(char, i);\n }\n break;\n }\n case \"}\": {\n stack.pop();\n if (stack[stack.length - 1] === \"INSIDE_OBJECT_AFTER_VALUE\") {\n processAfterObjectValue(char, i);\n }\n break;\n }\n case \"]\": {\n stack.pop();\n if (stack[stack.length - 1] === \"INSIDE_ARRAY_AFTER_VALUE\") {\n processAfterArrayValue(char, i);\n }\n break;\n }\n default: {\n stack.pop();\n break;\n }\n }\n break;\n }\n case \"INSIDE_LITERAL\": {\n const partialLiteral = input.substring(literalStart, i + 1);\n if (!\"false\".startsWith(partialLiteral) && !\"true\".startsWith(partialLiteral) && !\"null\".startsWith(partialLiteral)) {\n stack.pop();\n if (stack[stack.length - 1] === \"INSIDE_OBJECT_AFTER_VALUE\") {\n processAfterObjectValue(char, i);\n } else if (stack[stack.length - 1] === \"INSIDE_ARRAY_AFTER_VALUE\") {\n processAfterArrayValue(char, i);\n }\n } else {\n lastValidIndex = i;\n }\n break;\n }\n }\n }\n let result = input.slice(0, lastValidIndex + 1);\n for (let i = stack.length - 1; i >= 0; i--) {\n const state = stack[i];\n switch (state) {\n case \"INSIDE_STRING\": {\n result += '\"';\n break;\n }\n case \"INSIDE_OBJECT_KEY\":\n case \"INSIDE_OBJECT_AFTER_KEY\":\n case \"INSIDE_OBJECT_AFTER_COMMA\":\n case \"INSIDE_OBJECT_START\":\n case \"INSIDE_OBJECT_BEFORE_VALUE\":\n case \"INSIDE_OBJECT_AFTER_VALUE\": {\n result += \"}\";\n break;\n }\n case \"INSIDE_ARRAY_START\":\n case \"INSIDE_ARRAY_AFTER_COMMA\":\n case \"INSIDE_ARRAY_AFTER_VALUE\": {\n result += \"]\";\n break;\n }\n case \"INSIDE_LITERAL\": {\n const partialLiteral = input.substring(literalStart, input.length);\n if (\"true\".startsWith(partialLiteral)) {\n result += \"true\".slice(partialLiteral.length);\n } else if (\"false\".startsWith(partialLiteral)) {\n result += \"false\".slice(partialLiteral.length);\n } else if (\"null\".startsWith(partialLiteral)) {\n result += \"null\".slice(partialLiteral.length);\n }\n }\n }\n }\n return result;\n}\n\n// src/util/parse-partial-json.ts\nasync function parsePartialJson(jsonText) {\n if (jsonText === void 0) {\n return { value: void 0, state: \"undefined-input\" };\n }\n let result = await safeParseJSON2({ text: jsonText });\n if (result.success) {\n return { value: result.value, state: \"successful-parse\" };\n }\n result = await safeParseJSON2({ text: fixJson(jsonText) });\n if (result.success) {\n return { value: result.value, state: \"repaired-parse\" };\n }\n return { value: void 0, state: \"failed-parse\" };\n}\n\n// src/ui/ui-messages.ts\nfunction isDataUIPart(part) {\n return part.type.startsWith(\"data-\");\n}\nfunction isTextUIPart(part) {\n return part.type === \"text\";\n}\nfunction isFileUIPart(part) {\n return part.type === \"file\";\n}\nfunction isReasoningUIPart(part) {\n return part.type === \"reasoning\";\n}\nfunction isToolUIPart(part) {\n return part.type.startsWith(\"tool-\");\n}\nfunction isDynamicToolUIPart(part) {\n return part.type === \"dynamic-tool\";\n}\nfunction isToolOrDynamicToolUIPart(part) {\n return isToolUIPart(part) || isDynamicToolUIPart(part);\n}\nfunction getToolName(part) {\n return part.type.split(\"-\").slice(1).join(\"-\");\n}\nfunction getToolOrDynamicToolName(part) {\n return isDynamicToolUIPart(part) ? part.toolName : getToolName(part);\n}\n\n// src/ui/process-ui-message-stream.ts\nfunction createStreamingUIMessageState({\n lastMessage,\n messageId\n}) {\n return {\n message: (lastMessage == null ? void 0 : lastMessage.role) === \"assistant\" ? lastMessage : {\n id: messageId,\n metadata: void 0,\n role: \"assistant\",\n parts: []\n },\n activeTextParts: {},\n activeReasoningParts: {},\n partialToolCalls: {}\n };\n}\nfunction processUIMessageStream({\n stream,\n messageMetadataSchema,\n dataPartSchemas,\n runUpdateMessageJob,\n onError,\n onToolCall,\n onData\n}) {\n return stream.pipeThrough(\n new TransformStream({\n async transform(chunk, controller) {\n await runUpdateMessageJob(async ({ state, write }) => {\n var _a16, _b, _c, _d;\n function getToolInvocation(toolCallId) {\n const toolInvocations = state.message.parts.filter(isToolUIPart);\n const toolInvocation = toolInvocations.find(\n (invocation) => invocation.toolCallId === toolCallId\n );\n if (toolInvocation == null) {\n throw new Error(\n \"tool-output-error must be preceded by a tool-input-available\"\n );\n }\n return toolInvocation;\n }\n function getDynamicToolInvocation(toolCallId) {\n const toolInvocations = state.message.parts.filter(\n (part) => part.type === \"dynamic-tool\"\n );\n const toolInvocation = toolInvocations.find(\n (invocation) => invocation.toolCallId === toolCallId\n );\n if (toolInvocation == null) {\n throw new Error(\n \"tool-output-error must be preceded by a tool-input-available\"\n );\n }\n return toolInvocation;\n }\n function updateToolPart(options) {\n var _a17;\n const part = state.message.parts.find(\n (part2) => isToolUIPart(part2) && part2.toolCallId === options.toolCallId\n );\n const anyOptions = options;\n const anyPart = part;\n if (part != null) {\n part.state = options.state;\n anyPart.input = anyOptions.input;\n anyPart.output = anyOptions.output;\n anyPart.errorText = anyOptions.errorText;\n anyPart.rawInput = anyOptions.rawInput;\n anyPart.preliminary = anyOptions.preliminary;\n anyPart.providerExecuted = (_a17 = anyOptions.providerExecuted) != null ? _a17 : part.providerExecuted;\n if (anyOptions.providerMetadata != null && part.state === \"input-available\") {\n part.callProviderMetadata = anyOptions.providerMetadata;\n }\n } else {\n state.message.parts.push({\n type: `tool-${options.toolName}`,\n toolCallId: options.toolCallId,\n state: options.state,\n input: anyOptions.input,\n output: anyOptions.output,\n rawInput: anyOptions.rawInput,\n errorText: anyOptions.errorText,\n providerExecuted: anyOptions.providerExecuted,\n preliminary: anyOptions.preliminary,\n ...anyOptions.providerMetadata != null ? { callProviderMetadata: anyOptions.providerMetadata } : {}\n });\n }\n }\n function updateDynamicToolPart(options) {\n var _a17, _b2;\n const part = state.message.parts.find(\n (part2) => part2.type === \"dynamic-tool\" && part2.toolCallId === options.toolCallId\n );\n const anyOptions = options;\n const anyPart = part;\n if (part != null) {\n part.state = options.state;\n anyPart.toolName = options.toolName;\n anyPart.input = anyOptions.input;\n anyPart.output = anyOptions.output;\n anyPart.errorText = anyOptions.errorText;\n anyPart.rawInput = (_a17 = anyOptions.rawInput) != null ? _a17 : anyPart.rawInput;\n anyPart.preliminary = anyOptions.preliminary;\n anyPart.providerExecuted = (_b2 = anyOptions.providerExecuted) != null ? _b2 : part.providerExecuted;\n if (anyOptions.providerMetadata != null && part.state === \"input-available\") {\n part.callProviderMetadata = anyOptions.providerMetadata;\n }\n } else {\n state.message.parts.push({\n type: \"dynamic-tool\",\n toolName: options.toolName,\n toolCallId: options.toolCallId,\n state: options.state,\n input: anyOptions.input,\n output: anyOptions.output,\n errorText: anyOptions.errorText,\n preliminary: anyOptions.preliminary,\n providerExecuted: anyOptions.providerExecuted,\n ...anyOptions.providerMetadata != null ? { callProviderMetadata: anyOptions.providerMetadata } : {}\n });\n }\n }\n async function updateMessageMetadata(metadata) {\n if (metadata != null) {\n const mergedMetadata = state.message.metadata != null ? mergeObjects(state.message.metadata, metadata) : metadata;\n if (messageMetadataSchema != null) {\n await validateTypes({\n value: mergedMetadata,\n schema: messageMetadataSchema\n });\n }\n state.message.metadata = mergedMetadata;\n }\n }\n switch (chunk.type) {\n case \"text-start\": {\n const textPart = {\n type: \"text\",\n text: \"\",\n providerMetadata: chunk.providerMetadata,\n state: \"streaming\"\n };\n state.activeTextParts[chunk.id] = textPart;\n state.message.parts.push(textPart);\n write();\n break;\n }\n case \"text-delta\": {\n const textPart = state.activeTextParts[chunk.id];\n textPart.text += chunk.delta;\n textPart.providerMetadata = (_a16 = chunk.providerMetadata) != null ? _a16 : textPart.providerMetadata;\n write();\n break;\n }\n case \"text-end\": {\n const textPart = state.activeTextParts[chunk.id];\n textPart.state = \"done\";\n textPart.providerMetadata = (_b = chunk.providerMetadata) != null ? _b : textPart.providerMetadata;\n delete state.activeTextParts[chunk.id];\n write();\n break;\n }\n case \"reasoning-start\": {\n const reasoningPart = {\n type: \"reasoning\",\n text: \"\",\n providerMetadata: chunk.providerMetadata,\n state: \"streaming\"\n };\n state.activeReasoningParts[chunk.id] = reasoningPart;\n state.message.parts.push(reasoningPart);\n write();\n break;\n }\n case \"reasoning-delta\": {\n const reasoningPart = state.activeReasoningParts[chunk.id];\n reasoningPart.text += chunk.delta;\n reasoningPart.providerMetadata = (_c = chunk.providerMetadata) != null ? _c : reasoningPart.providerMetadata;\n write();\n break;\n }\n case \"reasoning-end\": {\n const reasoningPart = state.activeReasoningParts[chunk.id];\n reasoningPart.providerMetadata = (_d = chunk.providerMetadata) != null ? _d : reasoningPart.providerMetadata;\n reasoningPart.state = \"done\";\n delete state.activeReasoningParts[chunk.id];\n write();\n break;\n }\n case \"file\": {\n state.message.parts.push({\n type: \"file\",\n mediaType: chunk.mediaType,\n url: chunk.url\n });\n write();\n break;\n }\n case \"source-url\": {\n state.message.parts.push({\n type: \"source-url\",\n sourceId: chunk.sourceId,\n url: chunk.url,\n title: chunk.title,\n providerMetadata: chunk.providerMetadata\n });\n write();\n break;\n }\n case \"source-document\": {\n state.message.parts.push({\n type: \"source-document\",\n sourceId: chunk.sourceId,\n mediaType: chunk.mediaType,\n title: chunk.title,\n filename: chunk.filename,\n providerMetadata: chunk.providerMetadata\n });\n write();\n break;\n }\n case \"tool-input-start\": {\n const toolInvocations = state.message.parts.filter(isToolUIPart);\n state.partialToolCalls[chunk.toolCallId] = {\n text: \"\",\n toolName: chunk.toolName,\n index: toolInvocations.length,\n dynamic: chunk.dynamic\n };\n if (chunk.dynamic) {\n updateDynamicToolPart({\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n state: \"input-streaming\",\n input: void 0,\n providerExecuted: chunk.providerExecuted\n });\n } else {\n updateToolPart({\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n state: \"input-streaming\",\n input: void 0,\n providerExecuted: chunk.providerExecuted\n });\n }\n write();\n break;\n }\n case \"tool-input-delta\": {\n const partialToolCall = state.partialToolCalls[chunk.toolCallId];\n partialToolCall.text += chunk.inputTextDelta;\n const { value: partialArgs } = await parsePartialJson(\n partialToolCall.text\n );\n if (partialToolCall.dynamic) {\n updateDynamicToolPart({\n toolCallId: chunk.toolCallId,\n toolName: partialToolCall.toolName,\n state: \"input-streaming\",\n input: partialArgs\n });\n } else {\n updateToolPart({\n toolCallId: chunk.toolCallId,\n toolName: partialToolCall.toolName,\n state: \"input-streaming\",\n input: partialArgs\n });\n }\n write();\n break;\n }\n case \"tool-input-available\": {\n if (chunk.dynamic) {\n updateDynamicToolPart({\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n state: \"input-available\",\n input: chunk.input,\n providerExecuted: chunk.providerExecuted,\n providerMetadata: chunk.providerMetadata\n });\n } else {\n updateToolPart({\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n state: \"input-available\",\n input: chunk.input,\n providerExecuted: chunk.providerExecuted,\n providerMetadata: chunk.providerMetadata\n });\n }\n write();\n if (onToolCall && !chunk.providerExecuted) {\n await onToolCall({\n toolCall: chunk\n });\n }\n break;\n }\n case \"tool-input-error\": {\n if (chunk.dynamic) {\n updateDynamicToolPart({\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n state: \"output-error\",\n input: chunk.input,\n errorText: chunk.errorText,\n providerExecuted: chunk.providerExecuted,\n providerMetadata: chunk.providerMetadata\n });\n } else {\n updateToolPart({\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n state: \"output-error\",\n input: void 0,\n rawInput: chunk.input,\n errorText: chunk.errorText,\n providerExecuted: chunk.providerExecuted,\n providerMetadata: chunk.providerMetadata\n });\n }\n write();\n break;\n }\n case \"tool-output-available\": {\n if (chunk.dynamic) {\n const toolInvocation = getDynamicToolInvocation(\n chunk.toolCallId\n );\n updateDynamicToolPart({\n toolCallId: chunk.toolCallId,\n toolName: toolInvocation.toolName,\n state: \"output-available\",\n input: toolInvocation.input,\n output: chunk.output,\n preliminary: chunk.preliminary\n });\n } else {\n const toolInvocation = getToolInvocation(chunk.toolCallId);\n updateToolPart({\n toolCallId: chunk.toolCallId,\n toolName: getToolName(toolInvocation),\n state: \"output-available\",\n input: toolInvocation.input,\n output: chunk.output,\n providerExecuted: chunk.providerExecuted,\n preliminary: chunk.preliminary\n });\n }\n write();\n break;\n }\n case \"tool-output-error\": {\n if (chunk.dynamic) {\n const toolInvocation = getDynamicToolInvocation(\n chunk.toolCallId\n );\n updateDynamicToolPart({\n toolCallId: chunk.toolCallId,\n toolName: toolInvocation.toolName,\n state: \"output-error\",\n input: toolInvocation.input,\n errorText: chunk.errorText,\n providerExecuted: chunk.providerExecuted\n });\n } else {\n const toolInvocation = getToolInvocation(chunk.toolCallId);\n updateToolPart({\n toolCallId: chunk.toolCallId,\n toolName: getToolName(toolInvocation),\n state: \"output-error\",\n input: toolInvocation.input,\n rawInput: toolInvocation.rawInput,\n errorText: chunk.errorText,\n providerExecuted: chunk.providerExecuted\n });\n }\n write();\n break;\n }\n case \"start-step\": {\n state.message.parts.push({ type: \"step-start\" });\n break;\n }\n case \"finish-step\": {\n state.activeTextParts = {};\n state.activeReasoningParts = {};\n break;\n }\n case \"start\": {\n if (chunk.messageId != null) {\n state.message.id = chunk.messageId;\n }\n await updateMessageMetadata(chunk.messageMetadata);\n if (chunk.messageId != null || chunk.messageMetadata != null) {\n write();\n }\n break;\n }\n case \"finish\": {\n await updateMessageMetadata(chunk.messageMetadata);\n if (chunk.messageMetadata != null) {\n write();\n }\n break;\n }\n case \"message-metadata\": {\n await updateMessageMetadata(chunk.messageMetadata);\n if (chunk.messageMetadata != null) {\n write();\n }\n break;\n }\n case \"error\": {\n onError == null ? void 0 : onError(new Error(chunk.errorText));\n break;\n }\n default: {\n if (isDataUIMessageChunk(chunk)) {\n if ((dataPartSchemas == null ? void 0 : dataPartSchemas[chunk.type]) != null) {\n await validateTypes({\n value: chunk.data,\n schema: dataPartSchemas[chunk.type]\n });\n }\n const dataChunk = chunk;\n if (dataChunk.transient) {\n onData == null ? void 0 : onData(dataChunk);\n break;\n }\n const existingUIPart = dataChunk.id != null ? state.message.parts.find(\n (chunkArg) => dataChunk.type === chunkArg.type && dataChunk.id === chunkArg.id\n ) : void 0;\n if (existingUIPart != null) {\n existingUIPart.data = dataChunk.data;\n } else {\n state.message.parts.push(dataChunk);\n }\n onData == null ? void 0 : onData(dataChunk);\n write();\n }\n }\n }\n controller.enqueue(chunk);\n });\n }\n })\n );\n}\n\n// src/ui-message-stream/handle-ui-message-stream-finish.ts\nfunction handleUIMessageStreamFinish({\n messageId,\n originalMessages = [],\n onFinish,\n onError,\n stream\n}) {\n let lastMessage = originalMessages == null ? void 0 : originalMessages[originalMessages.length - 1];\n if ((lastMessage == null ? void 0 : lastMessage.role) !== \"assistant\") {\n lastMessage = void 0;\n } else {\n messageId = lastMessage.id;\n }\n let isAborted = false;\n const idInjectedStream = stream.pipeThrough(\n new TransformStream({\n transform(chunk, controller) {\n if (chunk.type === \"start\") {\n const startChunk = chunk;\n if (startChunk.messageId == null && messageId != null) {\n startChunk.messageId = messageId;\n }\n }\n if (chunk.type === \"abort\") {\n isAborted = true;\n }\n controller.enqueue(chunk);\n }\n })\n );\n if (onFinish == null) {\n return idInjectedStream;\n }\n const state = createStreamingUIMessageState({\n lastMessage: lastMessage ? structuredClone(lastMessage) : void 0,\n messageId: messageId != null ? messageId : \"\"\n // will be overridden by the stream\n });\n const runUpdateMessageJob = async (job) => {\n await job({ state, write: () => {\n } });\n };\n let finishCalled = false;\n const callOnFinish = async () => {\n if (finishCalled || !onFinish) {\n return;\n }\n finishCalled = true;\n const isContinuation = state.message.id === (lastMessage == null ? void 0 : lastMessage.id);\n await onFinish({\n isAborted,\n isContinuation,\n responseMessage: state.message,\n messages: [\n ...isContinuation ? originalMessages.slice(0, -1) : originalMessages,\n state.message\n ]\n });\n };\n return processUIMessageStream({\n stream: idInjectedStream,\n runUpdateMessageJob,\n onError\n }).pipeThrough(\n new TransformStream({\n transform(chunk, controller) {\n controller.enqueue(chunk);\n },\n // @ts-expect-error cancel is still new and missing from types https://developer.mozilla.org/en-US/docs/Web/API/TransformStream#browser_compatibility\n async cancel() {\n await callOnFinish();\n },\n async flush() {\n await callOnFinish();\n }\n })\n );\n}\n\n// src/ui-message-stream/pipe-ui-message-stream-to-response.ts\nfunction pipeUIMessageStreamToResponse({\n response,\n status,\n statusText,\n headers,\n stream,\n consumeSseStream\n}) {\n let sseStream = stream.pipeThrough(new JsonToSseTransformStream());\n if (consumeSseStream) {\n const [stream1, stream2] = sseStream.tee();\n sseStream = stream1;\n consumeSseStream({ stream: stream2 });\n }\n writeToServerResponse({\n response,\n status,\n statusText,\n headers: Object.fromEntries(\n prepareHeaders(headers, UI_MESSAGE_STREAM_HEADERS).entries()\n ),\n stream: sseStream.pipeThrough(new TextEncoderStream())\n });\n}\n\n// src/util/async-iterable-stream.ts\nfunction createAsyncIterableStream(source) {\n const stream = source.pipeThrough(new TransformStream());\n stream[Symbol.asyncIterator] = function() {\n const reader = this.getReader();\n let finished = false;\n async function cleanup(cancelStream) {\n var _a16;\n finished = true;\n try {\n if (cancelStream) {\n await ((_a16 = reader.cancel) == null ? void 0 : _a16.call(reader));\n }\n } finally {\n try {\n reader.releaseLock();\n } catch (e) {\n }\n }\n }\n return {\n /**\n * Reads the next chunk from the stream.\n * @returns A promise resolving to the next IteratorResult.\n */\n async next() {\n if (finished) {\n return { done: true, value: void 0 };\n }\n const { done, value } = await reader.read();\n if (done) {\n await cleanup(true);\n return { done: true, value: void 0 };\n }\n return { done: false, value };\n },\n /**\n * Called on early exit (e.g., break from for-await).\n * Ensures the stream is cancelled and resources are released.\n * @returns A promise resolving to a completed IteratorResult.\n */\n async return() {\n await cleanup(true);\n return { done: true, value: void 0 };\n },\n /**\n * Called on early exit with error.\n * Ensures the stream is cancelled and resources are released, then rethrows the error.\n * @param err The error to throw.\n * @returns A promise that rejects with the provided error.\n */\n async throw(err) {\n await cleanup(true);\n throw err;\n }\n };\n };\n return stream;\n}\n\n// src/util/consume-stream.ts\nasync function consumeStream({\n stream,\n onError\n}) {\n const reader = stream.getReader();\n try {\n while (true) {\n const { done } = await reader.read();\n if (done)\n break;\n }\n } catch (error) {\n onError == null ? void 0 : onError(error);\n } finally {\n reader.releaseLock();\n }\n}\n\n// src/util/create-resolvable-promise.ts\nfunction createResolvablePromise() {\n let resolve2;\n let reject;\n const promise = new Promise((res, rej) => {\n resolve2 = res;\n reject = rej;\n });\n return {\n promise,\n resolve: resolve2,\n reject\n };\n}\n\n// src/util/create-stitchable-stream.ts\nfunction createStitchableStream() {\n let innerStreamReaders = [];\n let controller = null;\n let isClosed = false;\n let waitForNewStream = createResolvablePromise();\n const terminate = () => {\n isClosed = true;\n waitForNewStream.resolve();\n innerStreamReaders.forEach((reader) => reader.cancel());\n innerStreamReaders = [];\n controller == null ? void 0 : controller.close();\n };\n const processPull = async () => {\n if (isClosed && innerStreamReaders.length === 0) {\n controller == null ? void 0 : controller.close();\n return;\n }\n if (innerStreamReaders.length === 0) {\n waitForNewStream = createResolvablePromise();\n await waitForNewStream.promise;\n return processPull();\n }\n try {\n const { value, done } = await innerStreamReaders[0].read();\n if (done) {\n innerStreamReaders.shift();\n if (innerStreamReaders.length > 0) {\n await processPull();\n } else if (isClosed) {\n controller == null ? void 0 : controller.close();\n }\n } else {\n controller == null ? void 0 : controller.enqueue(value);\n }\n } catch (error) {\n controller == null ? void 0 : controller.error(error);\n innerStreamReaders.shift();\n terminate();\n }\n };\n return {\n stream: new ReadableStream({\n start(controllerParam) {\n controller = controllerParam;\n },\n pull: processPull,\n async cancel() {\n for (const reader of innerStreamReaders) {\n await reader.cancel();\n }\n innerStreamReaders = [];\n isClosed = true;\n }\n }),\n addStream: (innerStream) => {\n if (isClosed) {\n throw new Error(\"Cannot add inner stream: outer stream is closed\");\n }\n innerStreamReaders.push(innerStream.getReader());\n waitForNewStream.resolve();\n },\n /**\n * Gracefully close the outer stream. This will let the inner streams\n * finish processing and then close the outer stream.\n */\n close: () => {\n isClosed = true;\n waitForNewStream.resolve();\n if (innerStreamReaders.length === 0) {\n controller == null ? void 0 : controller.close();\n }\n },\n /**\n * Immediately close the outer stream. This will cancel all inner streams\n * and close the outer stream.\n */\n terminate\n };\n}\n\n// src/util/delayed-promise.ts\nvar DelayedPromise = class {\n constructor() {\n this.status = { type: \"pending\" };\n this._resolve = void 0;\n this._reject = void 0;\n }\n get promise() {\n if (this._promise) {\n return this._promise;\n }\n this._promise = new Promise((resolve2, reject) => {\n if (this.status.type === \"resolved\") {\n resolve2(this.status.value);\n } else if (this.status.type === \"rejected\") {\n reject(this.status.error);\n }\n this._resolve = resolve2;\n this._reject = reject;\n });\n return this._promise;\n }\n resolve(value) {\n var _a16;\n this.status = { type: \"resolved\", value };\n if (this._promise) {\n (_a16 = this._resolve) == null ? void 0 : _a16.call(this, value);\n }\n }\n reject(error) {\n var _a16;\n this.status = { type: \"rejected\", error };\n if (this._promise) {\n (_a16 = this._reject) == null ? void 0 : _a16.call(this, error);\n }\n }\n};\n\n// src/util/now.ts\nfunction now() {\n var _a16, _b;\n return (_b = (_a16 = globalThis == null ? void 0 : globalThis.performance) == null ? void 0 : _a16.now()) != null ? _b : Date.now();\n}\n\n// src/generate-text/run-tools-transformation.ts\nimport {\n executeTool as executeTool2,\n generateId,\n getErrorMessage as getErrorMessage6\n} from \"@ai-sdk/provider-utils\";\nfunction runToolsTransformation({\n tools,\n generatorStream,\n tracer,\n telemetry,\n system,\n messages,\n abortSignal,\n repairToolCall,\n experimental_context\n}) {\n let toolResultsStreamController = null;\n const toolResultsStream = new ReadableStream({\n start(controller) {\n toolResultsStreamController = controller;\n }\n });\n const outstandingToolResults = /* @__PURE__ */ new Set();\n const toolInputs = /* @__PURE__ */ new Map();\n let canClose = false;\n let finishChunk = void 0;\n function attemptClose() {\n if (canClose && outstandingToolResults.size === 0) {\n if (finishChunk != null) {\n toolResultsStreamController.enqueue(finishChunk);\n }\n toolResultsStreamController.close();\n }\n }\n const forwardStream = new TransformStream({\n async transform(chunk, controller) {\n const chunkType = chunk.type;\n switch (chunkType) {\n case \"stream-start\":\n case \"text-start\":\n case \"text-delta\":\n case \"text-end\":\n case \"reasoning-start\":\n case \"reasoning-delta\":\n case \"reasoning-end\":\n case \"tool-input-start\":\n case \"tool-input-delta\":\n case \"tool-input-end\":\n case \"source\":\n case \"response-metadata\":\n case \"error\":\n case \"raw\": {\n controller.enqueue(chunk);\n break;\n }\n case \"file\": {\n controller.enqueue({\n type: \"file\",\n file: new DefaultGeneratedFileWithType({\n data: chunk.data,\n mediaType: chunk.mediaType\n })\n });\n break;\n }\n case \"finish\": {\n finishChunk = {\n type: \"finish\",\n finishReason: chunk.finishReason,\n usage: chunk.usage,\n providerMetadata: chunk.providerMetadata\n };\n break;\n }\n case \"tool-call\": {\n try {\n const toolCall = await parseToolCall({\n toolCall: chunk,\n tools,\n repairToolCall,\n system,\n messages\n });\n controller.enqueue(toolCall);\n if (toolCall.invalid) {\n toolResultsStreamController.enqueue({\n type: \"tool-error\",\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input: toolCall.input,\n error: getErrorMessage6(toolCall.error),\n dynamic: true\n });\n break;\n }\n const tool2 = tools[toolCall.toolName];\n toolInputs.set(toolCall.toolCallId, toolCall.input);\n if (tool2.onInputAvailable != null) {\n await tool2.onInputAvailable({\n input: toolCall.input,\n toolCallId: toolCall.toolCallId,\n messages,\n abortSignal,\n experimental_context\n });\n }\n if (tool2.execute != null && toolCall.providerExecuted !== true) {\n const toolExecutionId = generateId();\n outstandingToolResults.add(toolExecutionId);\n recordSpan({\n name: \"ai.toolCall\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.toolCall\",\n telemetry\n }),\n \"ai.toolCall.name\": toolCall.toolName,\n \"ai.toolCall.id\": toolCall.toolCallId,\n \"ai.toolCall.args\": {\n output: () => JSON.stringify(toolCall.input)\n }\n }\n }),\n tracer,\n fn: async (span) => {\n let output;\n try {\n const stream = executeTool2({\n execute: tool2.execute.bind(tool2),\n input: toolCall.input,\n options: {\n toolCallId: toolCall.toolCallId,\n messages,\n abortSignal,\n experimental_context\n }\n });\n for await (const part of stream) {\n toolResultsStreamController.enqueue({\n ...toolCall,\n type: \"tool-result\",\n output: part.output,\n ...part.type === \"preliminary\" && {\n preliminary: true\n }\n });\n if (part.type === \"final\") {\n output = part.output;\n }\n }\n } catch (error) {\n recordErrorOnSpan(span, error);\n toolResultsStreamController.enqueue({\n ...toolCall,\n type: \"tool-error\",\n error\n });\n outstandingToolResults.delete(toolExecutionId);\n attemptClose();\n return;\n }\n outstandingToolResults.delete(toolExecutionId);\n attemptClose();\n try {\n span.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.toolCall.result\": {\n output: () => JSON.stringify(output)\n }\n }\n })\n );\n } catch (ignored) {\n }\n }\n });\n }\n } catch (error) {\n toolResultsStreamController.enqueue({ type: \"error\", error });\n }\n break;\n }\n case \"tool-result\": {\n const toolName = chunk.toolName;\n if (chunk.isError) {\n toolResultsStreamController.enqueue({\n type: \"tool-error\",\n toolCallId: chunk.toolCallId,\n toolName,\n input: toolInputs.get(chunk.toolCallId),\n providerExecuted: chunk.providerExecuted,\n error: chunk.result\n });\n } else {\n controller.enqueue({\n type: \"tool-result\",\n toolCallId: chunk.toolCallId,\n toolName,\n input: toolInputs.get(chunk.toolCallId),\n output: chunk.result,\n providerExecuted: chunk.providerExecuted\n });\n }\n break;\n }\n default: {\n const _exhaustiveCheck = chunkType;\n throw new Error(`Unhandled chunk type: ${_exhaustiveCheck}`);\n }\n }\n },\n flush() {\n canClose = true;\n attemptClose();\n }\n });\n return new ReadableStream({\n async start(controller) {\n return Promise.all([\n generatorStream.pipeThrough(forwardStream).pipeTo(\n new WritableStream({\n write(chunk) {\n controller.enqueue(chunk);\n },\n close() {\n }\n })\n ),\n toolResultsStream.pipeTo(\n new WritableStream({\n write(chunk) {\n controller.enqueue(chunk);\n },\n close() {\n controller.close();\n }\n })\n )\n ]);\n }\n });\n}\n\n// src/generate-text/stream-text.ts\nvar originalGenerateId2 = createIdGenerator2({\n prefix: \"aitxt\",\n size: 24\n});\nfunction streamText({\n model,\n tools,\n toolChoice,\n system,\n prompt,\n messages,\n maxRetries,\n abortSignal,\n headers,\n stopWhen = stepCountIs(1),\n experimental_output: output,\n experimental_telemetry: telemetry,\n prepareStep,\n providerOptions,\n experimental_activeTools,\n activeTools = experimental_activeTools,\n experimental_repairToolCall: repairToolCall,\n experimental_transform: transform,\n experimental_download: download2,\n includeRawChunks = false,\n onChunk,\n onError = ({ error }) => {\n console.error(error);\n },\n onFinish,\n onAbort,\n onStepFinish,\n experimental_context,\n _internal: {\n now: now2 = now,\n generateId: generateId3 = originalGenerateId2,\n currentDate = () => /* @__PURE__ */ new Date()\n } = {},\n ...settings\n}) {\n return new DefaultStreamTextResult({\n model: resolveLanguageModel(model),\n telemetry,\n headers,\n settings,\n maxRetries,\n abortSignal,\n system,\n prompt,\n messages,\n tools,\n toolChoice,\n transforms: asArray(transform),\n activeTools,\n repairToolCall,\n stopConditions: asArray(stopWhen),\n output,\n providerOptions,\n prepareStep,\n includeRawChunks,\n onChunk,\n onError,\n onFinish,\n onAbort,\n onStepFinish,\n now: now2,\n currentDate,\n generateId: generateId3,\n experimental_context,\n download: download2\n });\n}\nfunction createOutputTransformStream(output) {\n if (!output) {\n return new TransformStream({\n transform(chunk, controller) {\n controller.enqueue({ part: chunk, partialOutput: void 0 });\n }\n });\n }\n let firstTextChunkId = void 0;\n let text2 = \"\";\n let textChunk = \"\";\n let lastPublishedJson = \"\";\n function publishTextChunk({\n controller,\n partialOutput = void 0\n }) {\n controller.enqueue({\n part: {\n type: \"text-delta\",\n id: firstTextChunkId,\n text: textChunk\n },\n partialOutput\n });\n textChunk = \"\";\n }\n return new TransformStream({\n async transform(chunk, controller) {\n if (chunk.type === \"finish-step\" && textChunk.length > 0) {\n publishTextChunk({ controller });\n }\n if (chunk.type !== \"text-delta\" && chunk.type !== \"text-start\" && chunk.type !== \"text-end\") {\n controller.enqueue({ part: chunk, partialOutput: void 0 });\n return;\n }\n if (firstTextChunkId == null) {\n firstTextChunkId = chunk.id;\n } else if (chunk.id !== firstTextChunkId) {\n controller.enqueue({ part: chunk, partialOutput: void 0 });\n return;\n }\n if (chunk.type === \"text-start\") {\n controller.enqueue({ part: chunk, partialOutput: void 0 });\n return;\n }\n if (chunk.type === \"text-end\") {\n if (textChunk.length > 0) {\n publishTextChunk({ controller });\n }\n controller.enqueue({ part: chunk, partialOutput: void 0 });\n return;\n }\n text2 += chunk.text;\n textChunk += chunk.text;\n const result = await output.parsePartial({ text: text2 });\n if (result != null) {\n const currentJson = JSON.stringify(result.partial);\n if (currentJson !== lastPublishedJson) {\n publishTextChunk({ controller, partialOutput: result.partial });\n lastPublishedJson = currentJson;\n }\n }\n }\n });\n}\nvar DefaultStreamTextResult = class {\n constructor({\n model,\n telemetry,\n headers,\n settings,\n maxRetries: maxRetriesArg,\n abortSignal,\n system,\n prompt,\n messages,\n tools,\n toolChoice,\n transforms,\n activeTools,\n repairToolCall,\n stopConditions,\n output,\n providerOptions,\n prepareStep,\n includeRawChunks,\n now: now2,\n currentDate,\n generateId: generateId3,\n onChunk,\n onError,\n onFinish,\n onAbort,\n onStepFinish,\n experimental_context,\n download: download2\n }) {\n this._totalUsage = new DelayedPromise();\n this._finishReason = new DelayedPromise();\n this._steps = new DelayedPromise();\n this.output = output;\n this.includeRawChunks = includeRawChunks;\n this.tools = tools;\n let stepFinish;\n let recordedContent = [];\n const recordedResponseMessages = [];\n let recordedFinishReason = void 0;\n let recordedTotalUsage = void 0;\n let recordedRequest = {};\n let recordedWarnings = [];\n const recordedSteps = [];\n let rootSpan;\n let activeTextContent = {};\n let activeReasoningContent = {};\n const eventProcessor = new TransformStream({\n async transform(chunk, controller) {\n var _a16, _b, _c, _d;\n controller.enqueue(chunk);\n const { part } = chunk;\n if (part.type === \"text-delta\" || part.type === \"reasoning-delta\" || part.type === \"source\" || part.type === \"tool-call\" || part.type === \"tool-result\" || part.type === \"tool-input-start\" || part.type === \"tool-input-delta\" || part.type === \"raw\") {\n await (onChunk == null ? void 0 : onChunk({ chunk: part }));\n }\n if (part.type === \"error\") {\n await onError({ error: wrapGatewayError(part.error) });\n }\n if (part.type === \"text-start\") {\n activeTextContent[part.id] = {\n type: \"text\",\n text: \"\",\n providerMetadata: part.providerMetadata\n };\n recordedContent.push(activeTextContent[part.id]);\n }\n if (part.type === \"text-delta\") {\n const activeText = activeTextContent[part.id];\n if (activeText == null) {\n controller.enqueue({\n part: {\n type: \"error\",\n error: `text part ${part.id} not found`\n },\n partialOutput: void 0\n });\n return;\n }\n activeText.text += part.text;\n activeText.providerMetadata = (_a16 = part.providerMetadata) != null ? _a16 : activeText.providerMetadata;\n }\n if (part.type === \"text-end\") {\n const activeText = activeTextContent[part.id];\n if (activeText == null) {\n controller.enqueue({\n part: {\n type: \"error\",\n error: `text part ${part.id} not found`\n },\n partialOutput: void 0\n });\n return;\n }\n activeText.providerMetadata = (_b = part.providerMetadata) != null ? _b : activeText.providerMetadata;\n delete activeTextContent[part.id];\n }\n if (part.type === \"reasoning-start\") {\n activeReasoningContent[part.id] = {\n type: \"reasoning\",\n text: \"\",\n providerMetadata: part.providerMetadata\n };\n recordedContent.push(activeReasoningContent[part.id]);\n }\n if (part.type === \"reasoning-delta\") {\n const activeReasoning = activeReasoningContent[part.id];\n if (activeReasoning == null) {\n controller.enqueue({\n part: {\n type: \"error\",\n error: `reasoning part ${part.id} not found`\n },\n partialOutput: void 0\n });\n return;\n }\n activeReasoning.text += part.text;\n activeReasoning.providerMetadata = (_c = part.providerMetadata) != null ? _c : activeReasoning.providerMetadata;\n }\n if (part.type === \"reasoning-end\") {\n const activeReasoning = activeReasoningContent[part.id];\n if (activeReasoning == null) {\n controller.enqueue({\n part: {\n type: \"error\",\n error: `reasoning part ${part.id} not found`\n },\n partialOutput: void 0\n });\n return;\n }\n activeReasoning.providerMetadata = (_d = part.providerMetadata) != null ? _d : activeReasoning.providerMetadata;\n delete activeReasoningContent[part.id];\n }\n if (part.type === \"file\") {\n recordedContent.push({ type: \"file\", file: part.file });\n }\n if (part.type === \"source\") {\n recordedContent.push(part);\n }\n if (part.type === \"tool-call\") {\n recordedContent.push(part);\n }\n if (part.type === \"tool-result\" && !part.preliminary) {\n recordedContent.push(part);\n }\n if (part.type === \"tool-error\") {\n recordedContent.push(part);\n }\n if (part.type === \"start-step\") {\n recordedRequest = part.request;\n recordedWarnings = part.warnings;\n }\n if (part.type === \"finish-step\") {\n const stepMessages = toResponseMessages({\n content: recordedContent,\n tools\n });\n const currentStepResult = new DefaultStepResult({\n content: recordedContent,\n finishReason: part.finishReason,\n usage: part.usage,\n warnings: recordedWarnings,\n request: recordedRequest,\n response: {\n ...part.response,\n messages: [...recordedResponseMessages, ...stepMessages]\n },\n providerMetadata: part.providerMetadata\n });\n await (onStepFinish == null ? void 0 : onStepFinish(currentStepResult));\n logWarnings(recordedWarnings);\n recordedSteps.push(currentStepResult);\n recordedContent = [];\n activeReasoningContent = {};\n activeTextContent = {};\n recordedResponseMessages.push(...stepMessages);\n stepFinish.resolve();\n }\n if (part.type === \"finish\") {\n recordedTotalUsage = part.totalUsage;\n recordedFinishReason = part.finishReason;\n }\n },\n async flush(controller) {\n try {\n if (recordedSteps.length === 0) {\n const error = new NoOutputGeneratedError({\n message: \"No output generated. Check the stream for errors.\"\n });\n self._finishReason.reject(error);\n self._totalUsage.reject(error);\n self._steps.reject(error);\n return;\n }\n const finishReason = recordedFinishReason != null ? recordedFinishReason : \"unknown\";\n const totalUsage = recordedTotalUsage != null ? recordedTotalUsage : {\n inputTokens: void 0,\n outputTokens: void 0,\n totalTokens: void 0\n };\n self._finishReason.resolve(finishReason);\n self._totalUsage.resolve(totalUsage);\n self._steps.resolve(recordedSteps);\n const finalStep = recordedSteps[recordedSteps.length - 1];\n await (onFinish == null ? void 0 : onFinish({\n finishReason,\n totalUsage,\n usage: finalStep.usage,\n content: finalStep.content,\n text: finalStep.text,\n reasoningText: finalStep.reasoningText,\n reasoning: finalStep.reasoning,\n files: finalStep.files,\n sources: finalStep.sources,\n toolCalls: finalStep.toolCalls,\n staticToolCalls: finalStep.staticToolCalls,\n dynamicToolCalls: finalStep.dynamicToolCalls,\n toolResults: finalStep.toolResults,\n staticToolResults: finalStep.staticToolResults,\n dynamicToolResults: finalStep.dynamicToolResults,\n request: finalStep.request,\n response: finalStep.response,\n warnings: finalStep.warnings,\n providerMetadata: finalStep.providerMetadata,\n steps: recordedSteps\n }));\n rootSpan.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.response.finishReason\": finishReason,\n \"ai.response.text\": { output: () => finalStep.text },\n \"ai.response.toolCalls\": {\n output: () => {\n var _a16;\n return ((_a16 = finalStep.toolCalls) == null ? void 0 : _a16.length) ? JSON.stringify(finalStep.toolCalls) : void 0;\n }\n },\n \"ai.response.providerMetadata\": JSON.stringify(\n finalStep.providerMetadata\n ),\n \"ai.usage.inputTokens\": totalUsage.inputTokens,\n \"ai.usage.outputTokens\": totalUsage.outputTokens,\n \"ai.usage.totalTokens\": totalUsage.totalTokens,\n \"ai.usage.reasoningTokens\": totalUsage.reasoningTokens,\n \"ai.usage.cachedInputTokens\": totalUsage.cachedInputTokens\n }\n })\n );\n } catch (error) {\n controller.error(error);\n } finally {\n rootSpan.end();\n }\n }\n });\n const stitchableStream = createStitchableStream();\n this.addStream = stitchableStream.addStream;\n this.closeStream = stitchableStream.close;\n const reader = stitchableStream.stream.getReader();\n let stream = new ReadableStream({\n async start(controller) {\n controller.enqueue({ type: \"start\" });\n },\n async pull(controller) {\n function abort() {\n onAbort == null ? void 0 : onAbort({ steps: recordedSteps });\n controller.enqueue({ type: \"abort\" });\n controller.close();\n }\n try {\n const { done, value } = await reader.read();\n if (done) {\n controller.close();\n return;\n }\n if (abortSignal == null ? void 0 : abortSignal.aborted) {\n abort();\n return;\n }\n controller.enqueue(value);\n } catch (error) {\n if (isAbortError2(error) && (abortSignal == null ? void 0 : abortSignal.aborted)) {\n abort();\n } else {\n controller.error(error);\n }\n }\n },\n cancel(reason) {\n return stitchableStream.stream.cancel(reason);\n }\n });\n for (const transform of transforms) {\n stream = stream.pipeThrough(\n transform({\n tools,\n stopStream() {\n stitchableStream.terminate();\n }\n })\n );\n }\n this.baseStream = stream.pipeThrough(createOutputTransformStream(output)).pipeThrough(eventProcessor);\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const tracer = getTracer(telemetry);\n const callSettings = prepareCallSettings(settings);\n const baseTelemetryAttributes = getBaseTelemetryAttributes({\n model,\n telemetry,\n headers,\n settings: { ...callSettings, maxRetries }\n });\n const self = this;\n recordSpan({\n name: \"ai.streamText\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({ operationId: \"ai.streamText\", telemetry }),\n ...baseTelemetryAttributes,\n // specific settings that only make sense on the outer level:\n \"ai.prompt\": {\n input: () => JSON.stringify({ system, prompt, messages })\n }\n }\n }),\n tracer,\n endWhenDone: false,\n fn: async (rootSpanArg) => {\n rootSpan = rootSpanArg;\n async function streamStep({\n currentStep,\n responseMessages,\n usage\n }) {\n var _a16, _b, _c, _d, _e;\n const includeRawChunks2 = self.includeRawChunks;\n stepFinish = new DelayedPromise();\n const initialPrompt = await standardizePrompt({\n system,\n prompt,\n messages\n });\n const stepInputMessages = [\n ...initialPrompt.messages,\n ...responseMessages\n ];\n const prepareStepResult = await (prepareStep == null ? void 0 : prepareStep({\n model,\n steps: recordedSteps,\n stepNumber: recordedSteps.length,\n messages: stepInputMessages\n }));\n const stepModel = resolveLanguageModel(\n (_a16 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a16 : model\n );\n const promptMessages = await convertToLanguageModelPrompt({\n prompt: {\n system: (_b = prepareStepResult == null ? void 0 : prepareStepResult.system) != null ? _b : initialPrompt.system,\n messages: (_c = prepareStepResult == null ? void 0 : prepareStepResult.messages) != null ? _c : stepInputMessages\n },\n supportedUrls: await stepModel.supportedUrls,\n download: download2\n });\n const { toolChoice: stepToolChoice, tools: stepTools } = prepareToolsAndToolChoice({\n tools,\n toolChoice: (_d = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _d : toolChoice,\n activeTools: (_e = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _e : activeTools\n });\n const {\n result: { stream: stream2, response, request },\n doStreamSpan,\n startTimestampMs\n } = await retry(\n () => recordSpan({\n name: \"ai.streamText.doStream\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.streamText.doStream\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n // model:\n \"ai.model.provider\": stepModel.provider,\n \"ai.model.id\": stepModel.modelId,\n // prompt:\n \"ai.prompt.messages\": {\n input: () => stringifyForTelemetry(promptMessages)\n },\n \"ai.prompt.tools\": {\n // convert the language model level tools:\n input: () => stepTools == null ? void 0 : stepTools.map((tool2) => JSON.stringify(tool2))\n },\n \"ai.prompt.toolChoice\": {\n input: () => stepToolChoice != null ? JSON.stringify(stepToolChoice) : void 0\n },\n // standardized gen-ai llm span attributes:\n \"gen_ai.system\": stepModel.provider,\n \"gen_ai.request.model\": stepModel.modelId,\n \"gen_ai.request.frequency_penalty\": callSettings.frequencyPenalty,\n \"gen_ai.request.max_tokens\": callSettings.maxOutputTokens,\n \"gen_ai.request.presence_penalty\": callSettings.presencePenalty,\n \"gen_ai.request.stop_sequences\": callSettings.stopSequences,\n \"gen_ai.request.temperature\": callSettings.temperature,\n \"gen_ai.request.top_k\": callSettings.topK,\n \"gen_ai.request.top_p\": callSettings.topP\n }\n }),\n tracer,\n endWhenDone: false,\n fn: async (doStreamSpan2) => {\n return {\n startTimestampMs: now2(),\n // get before the call\n doStreamSpan: doStreamSpan2,\n result: await stepModel.doStream({\n ...callSettings,\n tools: stepTools,\n toolChoice: stepToolChoice,\n responseFormat: output == null ? void 0 : output.responseFormat,\n prompt: promptMessages,\n providerOptions,\n abortSignal,\n headers,\n includeRawChunks: includeRawChunks2\n })\n };\n }\n })\n );\n const streamWithToolResults = runToolsTransformation({\n tools,\n generatorStream: stream2,\n tracer,\n telemetry,\n system,\n messages: stepInputMessages,\n repairToolCall,\n abortSignal,\n experimental_context\n });\n const stepRequest = request != null ? request : {};\n const stepToolCalls = [];\n const stepToolOutputs = [];\n let warnings;\n const activeToolCallToolNames = {};\n let stepFinishReason = \"unknown\";\n let stepUsage = {\n inputTokens: void 0,\n outputTokens: void 0,\n totalTokens: void 0\n };\n let stepProviderMetadata;\n let stepFirstChunk = true;\n let stepResponse = {\n id: generateId3(),\n timestamp: currentDate(),\n modelId: model.modelId\n };\n let activeText = \"\";\n self.addStream(\n streamWithToolResults.pipeThrough(\n new TransformStream({\n async transform(chunk, controller) {\n var _a17, _b2, _c2, _d2;\n if (chunk.type === \"stream-start\") {\n warnings = chunk.warnings;\n return;\n }\n if (stepFirstChunk) {\n const msToFirstChunk = now2() - startTimestampMs;\n stepFirstChunk = false;\n doStreamSpan.addEvent(\"ai.stream.firstChunk\", {\n \"ai.response.msToFirstChunk\": msToFirstChunk\n });\n doStreamSpan.setAttributes({\n \"ai.response.msToFirstChunk\": msToFirstChunk\n });\n controller.enqueue({\n type: \"start-step\",\n request: stepRequest,\n warnings: warnings != null ? warnings : []\n });\n }\n const chunkType = chunk.type;\n switch (chunkType) {\n case \"text-start\":\n case \"text-end\": {\n controller.enqueue(chunk);\n break;\n }\n case \"text-delta\": {\n if (chunk.delta.length > 0) {\n controller.enqueue({\n type: \"text-delta\",\n id: chunk.id,\n text: chunk.delta,\n providerMetadata: chunk.providerMetadata\n });\n activeText += chunk.delta;\n }\n break;\n }\n case \"reasoning-start\":\n case \"reasoning-end\": {\n controller.enqueue(chunk);\n break;\n }\n case \"reasoning-delta\": {\n controller.enqueue({\n type: \"reasoning-delta\",\n id: chunk.id,\n text: chunk.delta,\n providerMetadata: chunk.providerMetadata\n });\n break;\n }\n case \"tool-call\": {\n controller.enqueue(chunk);\n stepToolCalls.push(chunk);\n break;\n }\n case \"tool-result\": {\n controller.enqueue(chunk);\n if (!chunk.preliminary) {\n stepToolOutputs.push(chunk);\n }\n break;\n }\n case \"tool-error\": {\n controller.enqueue(chunk);\n stepToolOutputs.push(chunk);\n break;\n }\n case \"response-metadata\": {\n stepResponse = {\n id: (_a17 = chunk.id) != null ? _a17 : stepResponse.id,\n timestamp: (_b2 = chunk.timestamp) != null ? _b2 : stepResponse.timestamp,\n modelId: (_c2 = chunk.modelId) != null ? _c2 : stepResponse.modelId\n };\n break;\n }\n case \"finish\": {\n stepUsage = chunk.usage;\n stepFinishReason = chunk.finishReason;\n stepProviderMetadata = chunk.providerMetadata;\n const msToFinish = now2() - startTimestampMs;\n doStreamSpan.addEvent(\"ai.stream.finish\");\n doStreamSpan.setAttributes({\n \"ai.response.msToFinish\": msToFinish,\n \"ai.response.avgOutputTokensPerSecond\": 1e3 * ((_d2 = stepUsage.outputTokens) != null ? _d2 : 0) / msToFinish\n });\n break;\n }\n case \"file\": {\n controller.enqueue(chunk);\n break;\n }\n case \"source\": {\n controller.enqueue(chunk);\n break;\n }\n case \"tool-input-start\": {\n activeToolCallToolNames[chunk.id] = chunk.toolName;\n const tool2 = tools == null ? void 0 : tools[chunk.toolName];\n if ((tool2 == null ? void 0 : tool2.onInputStart) != null) {\n await tool2.onInputStart({\n toolCallId: chunk.id,\n messages: stepInputMessages,\n abortSignal,\n experimental_context\n });\n }\n controller.enqueue({\n ...chunk,\n dynamic: (tool2 == null ? void 0 : tool2.type) === \"dynamic\"\n });\n break;\n }\n case \"tool-input-end\": {\n delete activeToolCallToolNames[chunk.id];\n controller.enqueue(chunk);\n break;\n }\n case \"tool-input-delta\": {\n const toolName = activeToolCallToolNames[chunk.id];\n const tool2 = tools == null ? void 0 : tools[toolName];\n if ((tool2 == null ? void 0 : tool2.onInputDelta) != null) {\n await tool2.onInputDelta({\n inputTextDelta: chunk.delta,\n toolCallId: chunk.id,\n messages: stepInputMessages,\n abortSignal,\n experimental_context\n });\n }\n controller.enqueue(chunk);\n break;\n }\n case \"error\": {\n controller.enqueue(chunk);\n stepFinishReason = \"error\";\n break;\n }\n case \"raw\": {\n if (includeRawChunks2) {\n controller.enqueue(chunk);\n }\n break;\n }\n default: {\n const exhaustiveCheck = chunkType;\n throw new Error(`Unknown chunk type: ${exhaustiveCheck}`);\n }\n }\n },\n // invoke onFinish callback and resolve toolResults promise when the stream is about to close:\n async flush(controller) {\n const stepToolCallsJson = stepToolCalls.length > 0 ? JSON.stringify(stepToolCalls) : void 0;\n try {\n doStreamSpan.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.response.finishReason\": stepFinishReason,\n \"ai.response.text\": {\n output: () => activeText\n },\n \"ai.response.toolCalls\": {\n output: () => stepToolCallsJson\n },\n \"ai.response.id\": stepResponse.id,\n \"ai.response.model\": stepResponse.modelId,\n \"ai.response.timestamp\": stepResponse.timestamp.toISOString(),\n \"ai.response.providerMetadata\": JSON.stringify(stepProviderMetadata),\n \"ai.usage.inputTokens\": stepUsage.inputTokens,\n \"ai.usage.outputTokens\": stepUsage.outputTokens,\n \"ai.usage.totalTokens\": stepUsage.totalTokens,\n \"ai.usage.reasoningTokens\": stepUsage.reasoningTokens,\n \"ai.usage.cachedInputTokens\": stepUsage.cachedInputTokens,\n // standardized gen-ai llm span attributes:\n \"gen_ai.response.finish_reasons\": [stepFinishReason],\n \"gen_ai.response.id\": stepResponse.id,\n \"gen_ai.response.model\": stepResponse.modelId,\n \"gen_ai.usage.input_tokens\": stepUsage.inputTokens,\n \"gen_ai.usage.output_tokens\": stepUsage.outputTokens\n }\n })\n );\n } catch (error) {\n } finally {\n doStreamSpan.end();\n }\n controller.enqueue({\n type: \"finish-step\",\n finishReason: stepFinishReason,\n usage: stepUsage,\n providerMetadata: stepProviderMetadata,\n response: {\n ...stepResponse,\n headers: response == null ? void 0 : response.headers\n }\n });\n const combinedUsage = addLanguageModelUsage(usage, stepUsage);\n await stepFinish.promise;\n const clientToolCalls = stepToolCalls.filter(\n (toolCall) => toolCall.providerExecuted !== true\n );\n const clientToolOutputs = stepToolOutputs.filter(\n (toolOutput) => toolOutput.providerExecuted !== true\n );\n if (clientToolCalls.length > 0 && // all current tool calls have outputs (incl. execution errors):\n clientToolOutputs.length === clientToolCalls.length && // continue until a stop condition is met:\n !await isStopConditionMet({\n stopConditions,\n steps: recordedSteps\n })) {\n responseMessages.push(\n ...toResponseMessages({\n content: (\n // use transformed content to create the messages for the next step:\n recordedSteps[recordedSteps.length - 1].content\n ),\n tools\n })\n );\n try {\n await streamStep({\n currentStep: currentStep + 1,\n responseMessages,\n usage: combinedUsage\n });\n } catch (error) {\n controller.enqueue({\n type: \"error\",\n error\n });\n self.closeStream();\n }\n } else {\n controller.enqueue({\n type: \"finish\",\n finishReason: stepFinishReason,\n totalUsage: combinedUsage\n });\n self.closeStream();\n }\n }\n })\n )\n );\n }\n await streamStep({\n currentStep: 0,\n responseMessages: [],\n usage: {\n inputTokens: void 0,\n outputTokens: void 0,\n totalTokens: void 0\n }\n });\n }\n }).catch((error) => {\n self.addStream(\n new ReadableStream({\n start(controller) {\n controller.enqueue({ type: \"error\", error });\n controller.close();\n }\n })\n );\n self.closeStream();\n });\n }\n get steps() {\n this.consumeStream();\n return this._steps.promise;\n }\n get finalStep() {\n return this.steps.then((steps) => steps[steps.length - 1]);\n }\n get content() {\n return this.finalStep.then((step) => step.content);\n }\n get warnings() {\n return this.finalStep.then((step) => step.warnings);\n }\n get providerMetadata() {\n return this.finalStep.then((step) => step.providerMetadata);\n }\n get text() {\n return this.finalStep.then((step) => step.text);\n }\n get reasoningText() {\n return this.finalStep.then((step) => step.reasoningText);\n }\n get reasoning() {\n return this.finalStep.then((step) => step.reasoning);\n }\n get sources() {\n return this.finalStep.then((step) => step.sources);\n }\n get files() {\n return this.finalStep.then((step) => step.files);\n }\n get toolCalls() {\n return this.finalStep.then((step) => step.toolCalls);\n }\n get staticToolCalls() {\n return this.finalStep.then((step) => step.staticToolCalls);\n }\n get dynamicToolCalls() {\n return this.finalStep.then((step) => step.dynamicToolCalls);\n }\n get toolResults() {\n return this.finalStep.then((step) => step.toolResults);\n }\n get staticToolResults() {\n return this.finalStep.then((step) => step.staticToolResults);\n }\n get dynamicToolResults() {\n return this.finalStep.then((step) => step.dynamicToolResults);\n }\n get usage() {\n return this.finalStep.then((step) => step.usage);\n }\n get request() {\n return this.finalStep.then((step) => step.request);\n }\n get response() {\n return this.finalStep.then((step) => step.response);\n }\n get totalUsage() {\n this.consumeStream();\n return this._totalUsage.promise;\n }\n get finishReason() {\n this.consumeStream();\n return this._finishReason.promise;\n }\n /**\n Split out a new stream from the original stream.\n The original stream is replaced to allow for further splitting,\n since we do not know how many times the stream will be split.\n \n Note: this leads to buffering the stream content on the server.\n However, the LLM results are expected to be small enough to not cause issues.\n */\n teeStream() {\n const [stream1, stream2] = this.baseStream.tee();\n this.baseStream = stream2;\n return stream1;\n }\n get textStream() {\n return createAsyncIterableStream(\n this.teeStream().pipeThrough(\n new TransformStream({\n transform({ part }, controller) {\n if (part.type === \"text-delta\") {\n controller.enqueue(part.text);\n }\n }\n })\n )\n );\n }\n get fullStream() {\n return createAsyncIterableStream(\n this.teeStream().pipeThrough(\n new TransformStream({\n transform({ part }, controller) {\n controller.enqueue(part);\n }\n })\n )\n );\n }\n async consumeStream(options) {\n var _a16;\n try {\n await consumeStream({\n stream: this.fullStream,\n onError: options == null ? void 0 : options.onError\n });\n } catch (error) {\n (_a16 = options == null ? void 0 : options.onError) == null ? void 0 : _a16.call(options, error);\n }\n }\n get experimental_partialOutputStream() {\n if (this.output == null) {\n throw new NoOutputSpecifiedError();\n }\n return createAsyncIterableStream(\n this.teeStream().pipeThrough(\n new TransformStream({\n transform({ partialOutput }, controller) {\n if (partialOutput != null) {\n controller.enqueue(partialOutput);\n }\n }\n })\n )\n );\n }\n toUIMessageStream({\n originalMessages,\n generateMessageId,\n onFinish,\n messageMetadata,\n sendReasoning = true,\n sendSources = false,\n sendStart = true,\n sendFinish = true,\n onError = getErrorMessage7\n } = {}) {\n const responseMessageId = generateMessageId != null ? getResponseUIMessageId({\n originalMessages,\n responseMessageId: generateMessageId\n }) : void 0;\n const toolNamesByCallId = {};\n const isDynamic = (toolCallId) => {\n var _a16, _b;\n const toolName = toolNamesByCallId[toolCallId];\n const dynamic = ((_b = (_a16 = this.tools) == null ? void 0 : _a16[toolName]) == null ? void 0 : _b.type) === \"dynamic\";\n return dynamic ? true : void 0;\n };\n const baseStream = this.fullStream.pipeThrough(\n new TransformStream({\n transform: async (part, controller) => {\n const messageMetadataValue = messageMetadata == null ? void 0 : messageMetadata({ part });\n const partType = part.type;\n switch (partType) {\n case \"text-start\": {\n controller.enqueue({\n type: \"text-start\",\n id: part.id,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n });\n break;\n }\n case \"text-delta\": {\n controller.enqueue({\n type: \"text-delta\",\n id: part.id,\n delta: part.text,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n });\n break;\n }\n case \"text-end\": {\n controller.enqueue({\n type: \"text-end\",\n id: part.id,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n });\n break;\n }\n case \"reasoning-start\": {\n controller.enqueue({\n type: \"reasoning-start\",\n id: part.id,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n });\n break;\n }\n case \"reasoning-delta\": {\n if (sendReasoning) {\n controller.enqueue({\n type: \"reasoning-delta\",\n id: part.id,\n delta: part.text,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n });\n }\n break;\n }\n case \"reasoning-end\": {\n controller.enqueue({\n type: \"reasoning-end\",\n id: part.id,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n });\n break;\n }\n case \"file\": {\n controller.enqueue({\n type: \"file\",\n mediaType: part.file.mediaType,\n url: `data:${part.file.mediaType};base64,${part.file.base64}`\n });\n break;\n }\n case \"source\": {\n if (sendSources && part.sourceType === \"url\") {\n controller.enqueue({\n type: \"source-url\",\n sourceId: part.id,\n url: part.url,\n title: part.title,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n });\n }\n if (sendSources && part.sourceType === \"document\") {\n controller.enqueue({\n type: \"source-document\",\n sourceId: part.id,\n mediaType: part.mediaType,\n title: part.title,\n filename: part.filename,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n });\n }\n break;\n }\n case \"tool-input-start\": {\n toolNamesByCallId[part.id] = part.toolName;\n const dynamic = isDynamic(part.id);\n controller.enqueue({\n type: \"tool-input-start\",\n toolCallId: part.id,\n toolName: part.toolName,\n ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},\n ...dynamic != null ? { dynamic } : {}\n });\n break;\n }\n case \"tool-input-delta\": {\n controller.enqueue({\n type: \"tool-input-delta\",\n toolCallId: part.id,\n inputTextDelta: part.delta\n });\n break;\n }\n case \"tool-call\": {\n toolNamesByCallId[part.toolCallId] = part.toolName;\n const dynamic = isDynamic(part.toolCallId);\n if (part.invalid) {\n controller.enqueue({\n type: \"tool-input-error\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n input: part.input,\n ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {},\n ...dynamic != null ? { dynamic } : {},\n errorText: onError(part.error)\n });\n } else {\n controller.enqueue({\n type: \"tool-input-available\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n input: part.input,\n ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {},\n ...dynamic != null ? { dynamic } : {}\n });\n }\n break;\n }\n case \"tool-result\": {\n const dynamic = isDynamic(part.toolCallId);\n controller.enqueue({\n type: \"tool-output-available\",\n toolCallId: part.toolCallId,\n output: part.output,\n ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},\n ...part.preliminary != null ? { preliminary: part.preliminary } : {},\n ...dynamic != null ? { dynamic } : {}\n });\n break;\n }\n case \"tool-error\": {\n const dynamic = isDynamic(part.toolCallId);\n controller.enqueue({\n type: \"tool-output-error\",\n toolCallId: part.toolCallId,\n errorText: onError(part.error),\n ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},\n ...dynamic != null ? { dynamic } : {}\n });\n break;\n }\n case \"error\": {\n controller.enqueue({\n type: \"error\",\n errorText: onError(part.error)\n });\n break;\n }\n case \"start-step\": {\n controller.enqueue({ type: \"start-step\" });\n break;\n }\n case \"finish-step\": {\n controller.enqueue({ type: \"finish-step\" });\n break;\n }\n case \"start\": {\n if (sendStart) {\n controller.enqueue({\n type: \"start\",\n ...messageMetadataValue != null ? { messageMetadata: messageMetadataValue } : {},\n ...responseMessageId != null ? { messageId: responseMessageId } : {}\n });\n }\n break;\n }\n case \"finish\": {\n if (sendFinish) {\n controller.enqueue({\n type: \"finish\",\n ...messageMetadataValue != null ? { messageMetadata: messageMetadataValue } : {}\n });\n }\n break;\n }\n case \"abort\": {\n controller.enqueue(part);\n break;\n }\n case \"tool-input-end\": {\n break;\n }\n case \"raw\": {\n break;\n }\n default: {\n const exhaustiveCheck = partType;\n throw new Error(`Unknown chunk type: ${exhaustiveCheck}`);\n }\n }\n if (messageMetadataValue != null && partType !== \"start\" && partType !== \"finish\") {\n controller.enqueue({\n type: \"message-metadata\",\n messageMetadata: messageMetadataValue\n });\n }\n }\n })\n );\n return createAsyncIterableStream(\n handleUIMessageStreamFinish({\n stream: baseStream,\n messageId: responseMessageId != null ? responseMessageId : generateMessageId == null ? void 0 : generateMessageId(),\n originalMessages,\n onFinish,\n onError\n })\n );\n }\n pipeUIMessageStreamToResponse(response, {\n originalMessages,\n generateMessageId,\n onFinish,\n messageMetadata,\n sendReasoning,\n sendSources,\n sendFinish,\n sendStart,\n onError,\n ...init\n } = {}) {\n pipeUIMessageStreamToResponse({\n response,\n stream: this.toUIMessageStream({\n originalMessages,\n generateMessageId,\n onFinish,\n messageMetadata,\n sendReasoning,\n sendSources,\n sendFinish,\n sendStart,\n onError\n }),\n ...init\n });\n }\n pipeTextStreamToResponse(response, init) {\n pipeTextStreamToResponse({\n response,\n textStream: this.textStream,\n ...init\n });\n }\n toUIMessageStreamResponse({\n originalMessages,\n generateMessageId,\n onFinish,\n messageMetadata,\n sendReasoning,\n sendSources,\n sendFinish,\n sendStart,\n onError,\n ...init\n } = {}) {\n return createUIMessageStreamResponse({\n stream: this.toUIMessageStream({\n originalMessages,\n generateMessageId,\n onFinish,\n messageMetadata,\n sendReasoning,\n sendSources,\n sendFinish,\n sendStart,\n onError\n }),\n ...init\n });\n }\n toTextStreamResponse(init) {\n return createTextStreamResponse({\n textStream: this.textStream,\n ...init\n });\n }\n};\n\n// src/ui/convert-to-model-messages.ts\nfunction convertToModelMessages(messages, options) {\n const modelMessages = [];\n if (options == null ? void 0 : options.ignoreIncompleteToolCalls) {\n messages = messages.map((message) => ({\n ...message,\n parts: message.parts.filter(\n (part) => !isToolOrDynamicToolUIPart(part) || part.state !== \"input-streaming\" && part.state !== \"input-available\"\n )\n }));\n }\n for (const message of messages) {\n switch (message.role) {\n case \"system\": {\n const textParts = message.parts.filter(\n (part) => part.type === \"text\"\n );\n const providerMetadata = textParts.reduce((acc, part) => {\n if (part.providerMetadata != null) {\n return { ...acc, ...part.providerMetadata };\n }\n return acc;\n }, {});\n modelMessages.push({\n role: \"system\",\n content: textParts.map((part) => part.text).join(\"\"),\n ...Object.keys(providerMetadata).length > 0 ? { providerOptions: providerMetadata } : {}\n });\n break;\n }\n case \"user\": {\n modelMessages.push({\n role: \"user\",\n content: message.parts.map((part) => {\n var _a16;\n if (isTextUIPart(part)) {\n return {\n type: \"text\",\n text: part.text,\n ...part.providerMetadata != null ? { providerOptions: part.providerMetadata } : {}\n };\n }\n if (isFileUIPart(part)) {\n return {\n type: \"file\",\n mediaType: part.mediaType,\n filename: part.filename,\n data: part.url,\n ...part.providerMetadata != null ? { providerOptions: part.providerMetadata } : {}\n };\n }\n if (isDataUIPart(part)) {\n return (_a16 = options == null ? void 0 : options.convertDataPart) == null ? void 0 : _a16.call(\n options,\n part\n );\n }\n }).filter((part) => part != null)\n });\n break;\n }\n case \"assistant\": {\n if (message.parts != null) {\n let processBlock2 = function() {\n var _a16, _b, _c;\n if (block.length === 0) {\n return;\n }\n const content = [];\n for (const part of block) {\n if (isTextUIPart(part)) {\n content.push({\n type: \"text\",\n text: part.text,\n ...part.providerMetadata != null ? { providerOptions: part.providerMetadata } : {}\n });\n } else if (isFileUIPart(part)) {\n content.push({\n type: \"file\",\n mediaType: part.mediaType,\n filename: part.filename,\n data: part.url\n });\n } else if (isReasoningUIPart(part)) {\n content.push({\n type: \"reasoning\",\n text: part.text,\n providerOptions: part.providerMetadata\n });\n } else if (isDynamicToolUIPart(part)) {\n const toolName = part.toolName;\n if (part.state !== \"input-streaming\") {\n content.push({\n type: \"tool-call\",\n toolCallId: part.toolCallId,\n toolName,\n input: part.input,\n ...part.callProviderMetadata != null ? { providerOptions: part.callProviderMetadata } : {}\n });\n }\n } else if (isToolUIPart(part)) {\n const toolName = getToolName(part);\n if (part.state !== \"input-streaming\") {\n content.push({\n type: \"tool-call\",\n toolCallId: part.toolCallId,\n toolName,\n input: part.state === \"output-error\" ? (_a16 = part.input) != null ? _a16 : part.rawInput : part.input,\n providerExecuted: part.providerExecuted,\n ...part.callProviderMetadata != null ? { providerOptions: part.callProviderMetadata } : {}\n });\n if (part.providerExecuted === true && (part.state === \"output-available\" || part.state === \"output-error\")) {\n content.push({\n type: \"tool-result\",\n toolCallId: part.toolCallId,\n toolName,\n output: createToolModelOutput({\n output: part.state === \"output-error\" ? part.errorText : part.output,\n tool: (_b = options == null ? void 0 : options.tools) == null ? void 0 : _b[toolName],\n errorMode: part.state === \"output-error\" ? \"json\" : \"none\"\n })\n });\n }\n }\n } else if (isDataUIPart(part)) {\n const dataPart = (_c = options == null ? void 0 : options.convertDataPart) == null ? void 0 : _c.call(\n options,\n part\n );\n if (dataPart != null) {\n content.push(dataPart);\n }\n } else {\n const _exhaustiveCheck = part;\n throw new Error(`Unsupported part: ${_exhaustiveCheck}`);\n }\n }\n modelMessages.push({\n role: \"assistant\",\n content\n });\n const toolParts = block.filter(\n (part) => isToolUIPart(part) && part.providerExecuted !== true || part.type === \"dynamic-tool\"\n );\n if (toolParts.length > 0) {\n modelMessages.push({\n role: \"tool\",\n content: toolParts.map((toolPart) => {\n var _a17;\n switch (toolPart.state) {\n case \"output-error\":\n case \"output-available\": {\n const toolName = getToolOrDynamicToolName(toolPart);\n return {\n type: \"tool-result\",\n toolCallId: toolPart.toolCallId,\n toolName,\n output: createToolModelOutput({\n output: toolPart.state === \"output-error\" ? toolPart.errorText : toolPart.output,\n tool: (_a17 = options == null ? void 0 : options.tools) == null ? void 0 : _a17[toolName],\n errorMode: toolPart.state === \"output-error\" ? \"text\" : \"none\"\n })\n };\n }\n default: {\n return null;\n }\n }\n }).filter(\n (output) => output != null\n )\n });\n }\n block = [];\n };\n var processBlock = processBlock2;\n let block = [];\n for (const part of message.parts) {\n if (isTextUIPart(part) || isReasoningUIPart(part) || isFileUIPart(part) || isToolOrDynamicToolUIPart(part) || isDataUIPart(part)) {\n block.push(part);\n } else if (part.type === \"step-start\") {\n processBlock2();\n }\n }\n processBlock2();\n break;\n }\n break;\n }\n default: {\n const _exhaustiveCheck = message.role;\n throw new MessageConversionError({\n originalMessage: message,\n message: `Unsupported role: ${_exhaustiveCheck}`\n });\n }\n }\n }\n return modelMessages;\n}\nvar convertToCoreMessages = convertToModelMessages;\n\n// src/agent/agent.ts\nvar Agent = class {\n constructor(settings) {\n this.settings = settings;\n }\n get tools() {\n return this.settings.tools;\n }\n async generate(options) {\n return generateText({ ...this.settings, ...options });\n }\n stream(options) {\n return streamText({ ...this.settings, ...options });\n }\n /**\n * Creates a response object that streams UI messages to the client.\n */\n respond(options) {\n return this.stream({\n prompt: convertToModelMessages(options.messages)\n }).toUIMessageStreamResponse();\n }\n};\n\n// src/embed/embed.ts\nimport { withUserAgentSuffix as withUserAgentSuffix3 } from \"@ai-sdk/provider-utils\";\nasync function embed({\n model: modelArg,\n value,\n providerOptions,\n maxRetries: maxRetriesArg,\n abortSignal,\n headers,\n experimental_telemetry: telemetry\n}) {\n const model = resolveEmbeddingModel(modelArg);\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const headersWithUserAgent = withUserAgentSuffix3(\n headers != null ? headers : {},\n `ai/${VERSION}`\n );\n const baseTelemetryAttributes = getBaseTelemetryAttributes({\n model,\n telemetry,\n headers: headersWithUserAgent,\n settings: { maxRetries }\n });\n const tracer = getTracer(telemetry);\n return recordSpan({\n name: \"ai.embed\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({ operationId: \"ai.embed\", telemetry }),\n ...baseTelemetryAttributes,\n \"ai.value\": { input: () => JSON.stringify(value) }\n }\n }),\n tracer,\n fn: async (span) => {\n const { embedding, usage, response, providerMetadata } = await retry(\n () => (\n // nested spans to align with the embedMany telemetry data:\n recordSpan({\n name: \"ai.embed.doEmbed\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.embed.doEmbed\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n // specific settings that only make sense on the outer level:\n \"ai.values\": { input: () => [JSON.stringify(value)] }\n }\n }),\n tracer,\n fn: async (doEmbedSpan) => {\n var _a16;\n const modelResponse = await model.doEmbed({\n values: [value],\n abortSignal,\n headers: headersWithUserAgent,\n providerOptions\n });\n const embedding2 = modelResponse.embeddings[0];\n const usage2 = (_a16 = modelResponse.usage) != null ? _a16 : { tokens: NaN };\n doEmbedSpan.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.embeddings\": {\n output: () => modelResponse.embeddings.map(\n (embedding3) => JSON.stringify(embedding3)\n )\n },\n \"ai.usage.tokens\": usage2.tokens\n }\n })\n );\n return {\n embedding: embedding2,\n usage: usage2,\n providerMetadata: modelResponse.providerMetadata,\n response: modelResponse.response\n };\n }\n })\n )\n );\n span.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.embedding\": { output: () => JSON.stringify(embedding) },\n \"ai.usage.tokens\": usage.tokens\n }\n })\n );\n return new DefaultEmbedResult({\n value,\n embedding,\n usage,\n providerMetadata,\n response\n });\n }\n });\n}\nvar DefaultEmbedResult = class {\n constructor(options) {\n this.value = options.value;\n this.embedding = options.embedding;\n this.usage = options.usage;\n this.providerMetadata = options.providerMetadata;\n this.response = options.response;\n }\n};\n\n// src/embed/embed-many.ts\nimport { withUserAgentSuffix as withUserAgentSuffix4 } from \"@ai-sdk/provider-utils\";\n\n// src/util/split-array.ts\nfunction splitArray(array, chunkSize) {\n if (chunkSize <= 0) {\n throw new Error(\"chunkSize must be greater than 0\");\n }\n const result = [];\n for (let i = 0; i < array.length; i += chunkSize) {\n result.push(array.slice(i, i + chunkSize));\n }\n return result;\n}\n\n// src/embed/embed-many.ts\nasync function embedMany({\n model: modelArg,\n values,\n maxParallelCalls = Infinity,\n maxRetries: maxRetriesArg,\n abortSignal,\n headers,\n providerOptions,\n experimental_telemetry: telemetry\n}) {\n const model = resolveEmbeddingModel(modelArg);\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const headersWithUserAgent = withUserAgentSuffix4(\n headers != null ? headers : {},\n `ai/${VERSION}`\n );\n const baseTelemetryAttributes = getBaseTelemetryAttributes({\n model,\n telemetry,\n headers: headersWithUserAgent,\n settings: { maxRetries }\n });\n const tracer = getTracer(telemetry);\n return recordSpan({\n name: \"ai.embedMany\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({ operationId: \"ai.embedMany\", telemetry }),\n ...baseTelemetryAttributes,\n // specific settings that only make sense on the outer level:\n \"ai.values\": {\n input: () => values.map((value) => JSON.stringify(value))\n }\n }\n }),\n tracer,\n fn: async (span) => {\n var _a16;\n const [maxEmbeddingsPerCall, supportsParallelCalls] = await Promise.all([\n model.maxEmbeddingsPerCall,\n model.supportsParallelCalls\n ]);\n if (maxEmbeddingsPerCall == null || maxEmbeddingsPerCall === Infinity) {\n const { embeddings: embeddings2, usage, response, providerMetadata: providerMetadata2 } = await retry(\n () => {\n return recordSpan({\n name: \"ai.embedMany.doEmbed\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.embedMany.doEmbed\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n // specific settings that only make sense on the outer level:\n \"ai.values\": {\n input: () => values.map((value) => JSON.stringify(value))\n }\n }\n }),\n tracer,\n fn: async (doEmbedSpan) => {\n var _a17;\n const modelResponse = await model.doEmbed({\n values,\n abortSignal,\n headers: headersWithUserAgent,\n providerOptions\n });\n const embeddings3 = modelResponse.embeddings;\n const usage2 = (_a17 = modelResponse.usage) != null ? _a17 : { tokens: NaN };\n doEmbedSpan.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.embeddings\": {\n output: () => embeddings3.map(\n (embedding) => JSON.stringify(embedding)\n )\n },\n \"ai.usage.tokens\": usage2.tokens\n }\n })\n );\n return {\n embeddings: embeddings3,\n usage: usage2,\n providerMetadata: modelResponse.providerMetadata,\n response: modelResponse.response\n };\n }\n });\n }\n );\n span.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.embeddings\": {\n output: () => embeddings2.map((embedding) => JSON.stringify(embedding))\n },\n \"ai.usage.tokens\": usage.tokens\n }\n })\n );\n return new DefaultEmbedManyResult({\n values,\n embeddings: embeddings2,\n usage,\n providerMetadata: providerMetadata2,\n responses: [response]\n });\n }\n const valueChunks = splitArray(values, maxEmbeddingsPerCall);\n const embeddings = [];\n const responses = [];\n let tokens = 0;\n let providerMetadata;\n const parallelChunks = splitArray(\n valueChunks,\n supportsParallelCalls ? maxParallelCalls : 1\n );\n for (const parallelChunk of parallelChunks) {\n const results = await Promise.all(\n parallelChunk.map((chunk) => {\n return retry(() => {\n return recordSpan({\n name: \"ai.embedMany.doEmbed\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.embedMany.doEmbed\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n // specific settings that only make sense on the outer level:\n \"ai.values\": {\n input: () => chunk.map((value) => JSON.stringify(value))\n }\n }\n }),\n tracer,\n fn: async (doEmbedSpan) => {\n var _a17;\n const modelResponse = await model.doEmbed({\n values: chunk,\n abortSignal,\n headers: headersWithUserAgent,\n providerOptions\n });\n const embeddings2 = modelResponse.embeddings;\n const usage = (_a17 = modelResponse.usage) != null ? _a17 : { tokens: NaN };\n doEmbedSpan.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.embeddings\": {\n output: () => embeddings2.map(\n (embedding) => JSON.stringify(embedding)\n )\n },\n \"ai.usage.tokens\": usage.tokens\n }\n })\n );\n return {\n embeddings: embeddings2,\n usage,\n providerMetadata: modelResponse.providerMetadata,\n response: modelResponse.response\n };\n }\n });\n });\n })\n );\n for (const result of results) {\n embeddings.push(...result.embeddings);\n responses.push(result.response);\n tokens += result.usage.tokens;\n if (result.providerMetadata) {\n if (!providerMetadata) {\n providerMetadata = { ...result.providerMetadata };\n } else {\n for (const [providerName, metadata] of Object.entries(\n result.providerMetadata\n )) {\n providerMetadata[providerName] = {\n ...(_a16 = providerMetadata[providerName]) != null ? _a16 : {},\n ...metadata\n };\n }\n }\n }\n }\n }\n span.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.embeddings\": {\n output: () => embeddings.map((embedding) => JSON.stringify(embedding))\n },\n \"ai.usage.tokens\": tokens\n }\n })\n );\n return new DefaultEmbedManyResult({\n values,\n embeddings,\n usage: { tokens },\n providerMetadata,\n responses\n });\n }\n });\n}\nvar DefaultEmbedManyResult = class {\n constructor(options) {\n this.values = options.values;\n this.embeddings = options.embeddings;\n this.usage = options.usage;\n this.providerMetadata = options.providerMetadata;\n this.responses = options.responses;\n }\n};\n\n// src/generate-image/generate-image.ts\nimport { withUserAgentSuffix as withUserAgentSuffix5 } from \"@ai-sdk/provider-utils\";\nasync function generateImage({\n model,\n prompt,\n n = 1,\n maxImagesPerCall,\n size,\n aspectRatio,\n seed,\n providerOptions,\n maxRetries: maxRetriesArg,\n abortSignal,\n headers\n}) {\n var _a16, _b;\n if (model.specificationVersion !== \"v2\") {\n throw new UnsupportedModelVersionError({\n version: model.specificationVersion,\n provider: model.provider,\n modelId: model.modelId\n });\n }\n const headersWithUserAgent = withUserAgentSuffix5(\n headers != null ? headers : {},\n `ai/${VERSION}`\n );\n const { retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const maxImagesPerCallWithDefault = (_a16 = maxImagesPerCall != null ? maxImagesPerCall : await invokeModelMaxImagesPerCall(model)) != null ? _a16 : 1;\n const callCount = Math.ceil(n / maxImagesPerCallWithDefault);\n const callImageCounts = Array.from({ length: callCount }, (_, i) => {\n if (i < callCount - 1) {\n return maxImagesPerCallWithDefault;\n }\n const remainder = n % maxImagesPerCallWithDefault;\n return remainder === 0 ? maxImagesPerCallWithDefault : remainder;\n });\n const results = await Promise.all(\n callImageCounts.map(\n async (callImageCount) => retry(\n () => model.doGenerate({\n prompt,\n n: callImageCount,\n abortSignal,\n headers: headersWithUserAgent,\n size,\n aspectRatio,\n seed,\n providerOptions: providerOptions != null ? providerOptions : {}\n })\n )\n )\n );\n const images = [];\n const warnings = [];\n const responses = [];\n const providerMetadata = {};\n for (const result of results) {\n images.push(\n ...result.images.map(\n (image) => {\n var _a17;\n return new DefaultGeneratedFile({\n data: image,\n mediaType: (_a17 = detectMediaType({\n data: image,\n signatures: imageMediaTypeSignatures\n })) != null ? _a17 : \"image/png\"\n });\n }\n )\n );\n warnings.push(...result.warnings);\n if (result.providerMetadata) {\n for (const [providerName, metadata] of Object.entries(result.providerMetadata)) {\n (_b = providerMetadata[providerName]) != null ? _b : providerMetadata[providerName] = { images: [] };\n providerMetadata[providerName].images.push(\n ...result.providerMetadata[providerName].images\n );\n }\n }\n responses.push(result.response);\n }\n logWarnings(warnings);\n if (!images.length) {\n throw new NoImageGeneratedError({ responses });\n }\n return new DefaultGenerateImageResult({\n images,\n warnings,\n responses,\n providerMetadata\n });\n}\nvar DefaultGenerateImageResult = class {\n constructor(options) {\n this.images = options.images;\n this.warnings = options.warnings;\n this.responses = options.responses;\n this.providerMetadata = options.providerMetadata;\n }\n get image() {\n return this.images[0];\n }\n};\nasync function invokeModelMaxImagesPerCall(model) {\n const isFunction = model.maxImagesPerCall instanceof Function;\n if (!isFunction) {\n return model.maxImagesPerCall;\n }\n return model.maxImagesPerCall({\n modelId: model.modelId\n });\n}\n\n// src/generate-object/generate-object.ts\nimport {\n createIdGenerator as createIdGenerator3,\n withUserAgentSuffix as withUserAgentSuffix6\n} from \"@ai-sdk/provider-utils\";\n\n// src/generate-text/extract-reasoning-content.ts\nfunction extractReasoningContent(content) {\n const parts = content.filter(\n (content2) => content2.type === \"reasoning\"\n );\n return parts.length === 0 ? void 0 : parts.map((content2) => content2.text).join(\"\\n\");\n}\n\n// src/generate-object/output-strategy.ts\nimport {\n isJSONArray,\n isJSONObject,\n TypeValidationError as TypeValidationError2,\n UnsupportedFunctionalityError as UnsupportedFunctionalityError2\n} from \"@ai-sdk/provider\";\nimport {\n asSchema as asSchema3,\n safeValidateTypes as safeValidateTypes3\n} from \"@ai-sdk/provider-utils\";\nvar noSchemaOutputStrategy = {\n type: \"no-schema\",\n jsonSchema: void 0,\n async validatePartialResult({ value, textDelta }) {\n return { success: true, value: { partial: value, textDelta } };\n },\n async validateFinalResult(value, context) {\n return value === void 0 ? {\n success: false,\n error: new NoObjectGeneratedError({\n message: \"No object generated: response did not match schema.\",\n text: context.text,\n response: context.response,\n usage: context.usage,\n finishReason: context.finishReason\n })\n } : { success: true, value };\n },\n createElementStream() {\n throw new UnsupportedFunctionalityError2({\n functionality: \"element streams in no-schema mode\"\n });\n }\n};\nvar objectOutputStrategy = (schema) => ({\n type: \"object\",\n jsonSchema: schema.jsonSchema,\n async validatePartialResult({ value, textDelta }) {\n return {\n success: true,\n value: {\n // Note: currently no validation of partial results:\n partial: value,\n textDelta\n }\n };\n },\n async validateFinalResult(value) {\n return safeValidateTypes3({ value, schema });\n },\n createElementStream() {\n throw new UnsupportedFunctionalityError2({\n functionality: \"element streams in object mode\"\n });\n }\n});\nvar arrayOutputStrategy = (schema) => {\n const { $schema, ...itemSchema } = schema.jsonSchema;\n return {\n type: \"array\",\n // wrap in object that contains array of elements, since most LLMs will not\n // be able to generate an array directly:\n // possible future optimization: use arrays directly when model supports grammar-guided generation\n jsonSchema: {\n $schema: \"http://json-schema.org/draft-07/schema#\",\n type: \"object\",\n properties: {\n elements: { type: \"array\", items: itemSchema }\n },\n required: [\"elements\"],\n additionalProperties: false\n },\n async validatePartialResult({\n value,\n latestObject,\n isFirstDelta,\n isFinalDelta\n }) {\n var _a16;\n if (!isJSONObject(value) || !isJSONArray(value.elements)) {\n return {\n success: false,\n error: new TypeValidationError2({\n value,\n cause: \"value must be an object that contains an array of elements\"\n })\n };\n }\n const inputArray = value.elements;\n const resultArray = [];\n for (let i = 0; i < inputArray.length; i++) {\n const element = inputArray[i];\n const result = await safeValidateTypes3({ value: element, schema });\n if (i === inputArray.length - 1 && !isFinalDelta) {\n continue;\n }\n if (!result.success) {\n return result;\n }\n resultArray.push(result.value);\n }\n const publishedElementCount = (_a16 = latestObject == null ? void 0 : latestObject.length) != null ? _a16 : 0;\n let textDelta = \"\";\n if (isFirstDelta) {\n textDelta += \"[\";\n }\n if (publishedElementCount > 0) {\n textDelta += \",\";\n }\n textDelta += resultArray.slice(publishedElementCount).map((element) => JSON.stringify(element)).join(\",\");\n if (isFinalDelta) {\n textDelta += \"]\";\n }\n return {\n success: true,\n value: {\n partial: resultArray,\n textDelta\n }\n };\n },\n async validateFinalResult(value) {\n if (!isJSONObject(value) || !isJSONArray(value.elements)) {\n return {\n success: false,\n error: new TypeValidationError2({\n value,\n cause: \"value must be an object that contains an array of elements\"\n })\n };\n }\n const inputArray = value.elements;\n for (const element of inputArray) {\n const result = await safeValidateTypes3({ value: element, schema });\n if (!result.success) {\n return result;\n }\n }\n return { success: true, value: inputArray };\n },\n createElementStream(originalStream) {\n let publishedElements = 0;\n return createAsyncIterableStream(\n originalStream.pipeThrough(\n new TransformStream({\n transform(chunk, controller) {\n switch (chunk.type) {\n case \"object\": {\n const array = chunk.object;\n for (; publishedElements < array.length; publishedElements++) {\n controller.enqueue(array[publishedElements]);\n }\n break;\n }\n case \"text-delta\":\n case \"finish\":\n case \"error\":\n break;\n default: {\n const _exhaustiveCheck = chunk;\n throw new Error(\n `Unsupported chunk type: ${_exhaustiveCheck}`\n );\n }\n }\n }\n })\n )\n );\n }\n };\n};\nvar enumOutputStrategy = (enumValues) => {\n return {\n type: \"enum\",\n // wrap in object that contains result, since most LLMs will not\n // be able to generate an enum value directly:\n // possible future optimization: use enums directly when model supports top-level enums\n jsonSchema: {\n $schema: \"http://json-schema.org/draft-07/schema#\",\n type: \"object\",\n properties: {\n result: { type: \"string\", enum: enumValues }\n },\n required: [\"result\"],\n additionalProperties: false\n },\n async validateFinalResult(value) {\n if (!isJSONObject(value) || typeof value.result !== \"string\") {\n return {\n success: false,\n error: new TypeValidationError2({\n value,\n cause: 'value must be an object that contains a string in the \"result\" property.'\n })\n };\n }\n const result = value.result;\n return enumValues.includes(result) ? { success: true, value: result } : {\n success: false,\n error: new TypeValidationError2({\n value,\n cause: \"value must be a string in the enum\"\n })\n };\n },\n async validatePartialResult({ value, textDelta }) {\n if (!isJSONObject(value) || typeof value.result !== \"string\") {\n return {\n success: false,\n error: new TypeValidationError2({\n value,\n cause: 'value must be an object that contains a string in the \"result\" property.'\n })\n };\n }\n const result = value.result;\n const possibleEnumValues = enumValues.filter(\n (enumValue) => enumValue.startsWith(result)\n );\n if (value.result.length === 0 || possibleEnumValues.length === 0) {\n return {\n success: false,\n error: new TypeValidationError2({\n value,\n cause: \"value must be a string in the enum\"\n })\n };\n }\n return {\n success: true,\n value: {\n partial: possibleEnumValues.length > 1 ? result : possibleEnumValues[0],\n textDelta\n }\n };\n },\n createElementStream() {\n throw new UnsupportedFunctionalityError2({\n functionality: \"element streams in enum mode\"\n });\n }\n };\n};\nfunction getOutputStrategy({\n output,\n schema,\n enumValues\n}) {\n switch (output) {\n case \"object\":\n return objectOutputStrategy(asSchema3(schema));\n case \"array\":\n return arrayOutputStrategy(asSchema3(schema));\n case \"enum\":\n return enumOutputStrategy(enumValues);\n case \"no-schema\":\n return noSchemaOutputStrategy;\n default: {\n const _exhaustiveCheck = output;\n throw new Error(`Unsupported output: ${_exhaustiveCheck}`);\n }\n }\n}\n\n// src/generate-object/parse-and-validate-object-result.ts\nimport { JSONParseError as JSONParseError2, TypeValidationError as TypeValidationError3 } from \"@ai-sdk/provider\";\nimport { safeParseJSON as safeParseJSON3 } from \"@ai-sdk/provider-utils\";\nasync function parseAndValidateObjectResult(result, outputStrategy, context) {\n const parseResult = await safeParseJSON3({ text: result });\n if (!parseResult.success) {\n throw new NoObjectGeneratedError({\n message: \"No object generated: could not parse the response.\",\n cause: parseResult.error,\n text: result,\n response: context.response,\n usage: context.usage,\n finishReason: context.finishReason\n });\n }\n const validationResult = await outputStrategy.validateFinalResult(\n parseResult.value,\n {\n text: result,\n response: context.response,\n usage: context.usage\n }\n );\n if (!validationResult.success) {\n throw new NoObjectGeneratedError({\n message: \"No object generated: response did not match schema.\",\n cause: validationResult.error,\n text: result,\n response: context.response,\n usage: context.usage,\n finishReason: context.finishReason\n });\n }\n return validationResult.value;\n}\nasync function parseAndValidateObjectResultWithRepair(result, outputStrategy, repairText, context) {\n try {\n return await parseAndValidateObjectResult(result, outputStrategy, context);\n } catch (error) {\n if (repairText != null && NoObjectGeneratedError.isInstance(error) && (JSONParseError2.isInstance(error.cause) || TypeValidationError3.isInstance(error.cause))) {\n const repairedText = await repairText({\n text: result,\n error: error.cause\n });\n if (repairedText === null) {\n throw error;\n }\n return await parseAndValidateObjectResult(\n repairedText,\n outputStrategy,\n context\n );\n }\n throw error;\n }\n}\n\n// src/generate-object/validate-object-generation-input.ts\nfunction validateObjectGenerationInput({\n output,\n schema,\n schemaName,\n schemaDescription,\n enumValues\n}) {\n if (output != null && output !== \"object\" && output !== \"array\" && output !== \"enum\" && output !== \"no-schema\") {\n throw new InvalidArgumentError({\n parameter: \"output\",\n value: output,\n message: \"Invalid output type.\"\n });\n }\n if (output === \"no-schema\") {\n if (schema != null) {\n throw new InvalidArgumentError({\n parameter: \"schema\",\n value: schema,\n message: \"Schema is not supported for no-schema output.\"\n });\n }\n if (schemaDescription != null) {\n throw new InvalidArgumentError({\n parameter: \"schemaDescription\",\n value: schemaDescription,\n message: \"Schema description is not supported for no-schema output.\"\n });\n }\n if (schemaName != null) {\n throw new InvalidArgumentError({\n parameter: \"schemaName\",\n value: schemaName,\n message: \"Schema name is not supported for no-schema output.\"\n });\n }\n if (enumValues != null) {\n throw new InvalidArgumentError({\n parameter: \"enumValues\",\n value: enumValues,\n message: \"Enum values are not supported for no-schema output.\"\n });\n }\n }\n if (output === \"object\") {\n if (schema == null) {\n throw new InvalidArgumentError({\n parameter: \"schema\",\n value: schema,\n message: \"Schema is required for object output.\"\n });\n }\n if (enumValues != null) {\n throw new InvalidArgumentError({\n parameter: \"enumValues\",\n value: enumValues,\n message: \"Enum values are not supported for object output.\"\n });\n }\n }\n if (output === \"array\") {\n if (schema == null) {\n throw new InvalidArgumentError({\n parameter: \"schema\",\n value: schema,\n message: \"Element schema is required for array output.\"\n });\n }\n if (enumValues != null) {\n throw new InvalidArgumentError({\n parameter: \"enumValues\",\n value: enumValues,\n message: \"Enum values are not supported for array output.\"\n });\n }\n }\n if (output === \"enum\") {\n if (schema != null) {\n throw new InvalidArgumentError({\n parameter: \"schema\",\n value: schema,\n message: \"Schema is not supported for enum output.\"\n });\n }\n if (schemaDescription != null) {\n throw new InvalidArgumentError({\n parameter: \"schemaDescription\",\n value: schemaDescription,\n message: \"Schema description is not supported for enum output.\"\n });\n }\n if (schemaName != null) {\n throw new InvalidArgumentError({\n parameter: \"schemaName\",\n value: schemaName,\n message: \"Schema name is not supported for enum output.\"\n });\n }\n if (enumValues == null) {\n throw new InvalidArgumentError({\n parameter: \"enumValues\",\n value: enumValues,\n message: \"Enum values are required for enum output.\"\n });\n }\n for (const value of enumValues) {\n if (typeof value !== \"string\") {\n throw new InvalidArgumentError({\n parameter: \"enumValues\",\n value,\n message: \"Enum values must be strings.\"\n });\n }\n }\n }\n}\n\n// src/generate-object/generate-object.ts\nvar originalGenerateId3 = createIdGenerator3({ prefix: \"aiobj\", size: 24 });\nasync function generateObject(options) {\n const {\n model: modelArg,\n output = \"object\",\n system,\n prompt,\n messages,\n maxRetries: maxRetriesArg,\n abortSignal,\n headers,\n experimental_repairText: repairText,\n experimental_telemetry: telemetry,\n experimental_download: download2,\n providerOptions,\n _internal: {\n generateId: generateId3 = originalGenerateId3,\n currentDate = () => /* @__PURE__ */ new Date()\n } = {},\n ...settings\n } = options;\n const model = resolveLanguageModel(modelArg);\n const enumValues = \"enum\" in options ? options.enum : void 0;\n const {\n schema: inputSchema,\n schemaDescription,\n schemaName\n } = \"schema\" in options ? options : {};\n validateObjectGenerationInput({\n output,\n schema: inputSchema,\n schemaName,\n schemaDescription,\n enumValues\n });\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const outputStrategy = getOutputStrategy({\n output,\n schema: inputSchema,\n enumValues\n });\n const callSettings = prepareCallSettings(settings);\n const headersWithUserAgent = withUserAgentSuffix6(\n headers != null ? headers : {},\n `ai/${VERSION}`\n );\n const baseTelemetryAttributes = getBaseTelemetryAttributes({\n model,\n telemetry,\n headers: headersWithUserAgent,\n settings: { ...callSettings, maxRetries }\n });\n const tracer = getTracer(telemetry);\n try {\n return await recordSpan({\n name: \"ai.generateObject\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.generateObject\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n // specific settings that only make sense on the outer level:\n \"ai.prompt\": {\n input: () => JSON.stringify({ system, prompt, messages })\n },\n \"ai.schema\": outputStrategy.jsonSchema != null ? { input: () => JSON.stringify(outputStrategy.jsonSchema) } : void 0,\n \"ai.schema.name\": schemaName,\n \"ai.schema.description\": schemaDescription,\n \"ai.settings.output\": outputStrategy.type\n }\n }),\n tracer,\n fn: async (span) => {\n var _a16;\n let result;\n let finishReason;\n let usage;\n let warnings;\n let response;\n let request;\n let resultProviderMetadata;\n let reasoning;\n const standardizedPrompt = await standardizePrompt({\n system,\n prompt,\n messages\n });\n const promptMessages = await convertToLanguageModelPrompt({\n prompt: standardizedPrompt,\n supportedUrls: await model.supportedUrls,\n download: download2\n });\n const generateResult = await retry(\n () => recordSpan({\n name: \"ai.generateObject.doGenerate\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.generateObject.doGenerate\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n \"ai.prompt.messages\": {\n input: () => stringifyForTelemetry(promptMessages)\n },\n // standardized gen-ai llm span attributes:\n \"gen_ai.system\": model.provider,\n \"gen_ai.request.model\": model.modelId,\n \"gen_ai.request.frequency_penalty\": callSettings.frequencyPenalty,\n \"gen_ai.request.max_tokens\": callSettings.maxOutputTokens,\n \"gen_ai.request.presence_penalty\": callSettings.presencePenalty,\n \"gen_ai.request.temperature\": callSettings.temperature,\n \"gen_ai.request.top_k\": callSettings.topK,\n \"gen_ai.request.top_p\": callSettings.topP\n }\n }),\n tracer,\n fn: async (span2) => {\n var _a17, _b, _c, _d, _e, _f, _g, _h;\n const result2 = await model.doGenerate({\n responseFormat: {\n type: \"json\",\n schema: outputStrategy.jsonSchema,\n name: schemaName,\n description: schemaDescription\n },\n ...prepareCallSettings(settings),\n prompt: promptMessages,\n providerOptions,\n abortSignal,\n headers: headersWithUserAgent\n });\n const responseData = {\n id: (_b = (_a17 = result2.response) == null ? void 0 : _a17.id) != null ? _b : generateId3(),\n timestamp: (_d = (_c = result2.response) == null ? void 0 : _c.timestamp) != null ? _d : currentDate(),\n modelId: (_f = (_e = result2.response) == null ? void 0 : _e.modelId) != null ? _f : model.modelId,\n headers: (_g = result2.response) == null ? void 0 : _g.headers,\n body: (_h = result2.response) == null ? void 0 : _h.body\n };\n const text2 = extractTextContent(result2.content);\n const reasoning2 = extractReasoningContent(result2.content);\n if (text2 === void 0) {\n throw new NoObjectGeneratedError({\n message: \"No object generated: the model did not return a response.\",\n response: responseData,\n usage: result2.usage,\n finishReason: result2.finishReason\n });\n }\n span2.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.response.finishReason\": result2.finishReason,\n \"ai.response.object\": { output: () => text2 },\n \"ai.response.id\": responseData.id,\n \"ai.response.model\": responseData.modelId,\n \"ai.response.timestamp\": responseData.timestamp.toISOString(),\n \"ai.response.providerMetadata\": JSON.stringify(\n result2.providerMetadata\n ),\n // TODO rename telemetry attributes to inputTokens and outputTokens\n \"ai.usage.promptTokens\": result2.usage.inputTokens,\n \"ai.usage.completionTokens\": result2.usage.outputTokens,\n // standardized gen-ai llm span attributes:\n \"gen_ai.response.finish_reasons\": [result2.finishReason],\n \"gen_ai.response.id\": responseData.id,\n \"gen_ai.response.model\": responseData.modelId,\n \"gen_ai.usage.input_tokens\": result2.usage.inputTokens,\n \"gen_ai.usage.output_tokens\": result2.usage.outputTokens\n }\n })\n );\n return {\n ...result2,\n objectText: text2,\n reasoning: reasoning2,\n responseData\n };\n }\n })\n );\n result = generateResult.objectText;\n finishReason = generateResult.finishReason;\n usage = generateResult.usage;\n warnings = generateResult.warnings;\n resultProviderMetadata = generateResult.providerMetadata;\n request = (_a16 = generateResult.request) != null ? _a16 : {};\n response = generateResult.responseData;\n reasoning = generateResult.reasoning;\n logWarnings(warnings);\n const object2 = await parseAndValidateObjectResultWithRepair(\n result,\n outputStrategy,\n repairText,\n {\n response,\n usage,\n finishReason\n }\n );\n span.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.response.finishReason\": finishReason,\n \"ai.response.object\": {\n output: () => JSON.stringify(object2)\n },\n \"ai.response.providerMetadata\": JSON.stringify(\n resultProviderMetadata\n ),\n // TODO rename telemetry attributes to inputTokens and outputTokens\n \"ai.usage.promptTokens\": usage.inputTokens,\n \"ai.usage.completionTokens\": usage.outputTokens\n }\n })\n );\n return new DefaultGenerateObjectResult({\n object: object2,\n reasoning,\n finishReason,\n usage,\n warnings,\n request,\n response,\n providerMetadata: resultProviderMetadata\n });\n }\n });\n } catch (error) {\n throw wrapGatewayError(error);\n }\n}\nvar DefaultGenerateObjectResult = class {\n constructor(options) {\n this.object = options.object;\n this.finishReason = options.finishReason;\n this.usage = options.usage;\n this.warnings = options.warnings;\n this.providerMetadata = options.providerMetadata;\n this.response = options.response;\n this.request = options.request;\n this.reasoning = options.reasoning;\n }\n toJsonResponse(init) {\n var _a16;\n return new Response(JSON.stringify(this.object), {\n status: (_a16 = init == null ? void 0 : init.status) != null ? _a16 : 200,\n headers: prepareHeaders(init == null ? void 0 : init.headers, {\n \"content-type\": \"application/json; charset=utf-8\"\n })\n });\n }\n};\n\n// src/generate-object/stream-object.ts\nimport {\n createIdGenerator as createIdGenerator4\n} from \"@ai-sdk/provider-utils\";\n\n// src/util/cosine-similarity.ts\nfunction cosineSimilarity(vector1, vector2) {\n if (vector1.length !== vector2.length) {\n throw new InvalidArgumentError({\n parameter: \"vector1,vector2\",\n value: { vector1Length: vector1.length, vector2Length: vector2.length },\n message: `Vectors must have the same length`\n });\n }\n const n = vector1.length;\n if (n === 0) {\n return 0;\n }\n let magnitudeSquared1 = 0;\n let magnitudeSquared2 = 0;\n let dotProduct = 0;\n for (let i = 0; i < n; i++) {\n const value1 = vector1[i];\n const value2 = vector2[i];\n magnitudeSquared1 += value1 * value1;\n magnitudeSquared2 += value2 * value2;\n dotProduct += value1 * value2;\n }\n return magnitudeSquared1 === 0 || magnitudeSquared2 === 0 ? 0 : dotProduct / (Math.sqrt(magnitudeSquared1) * Math.sqrt(magnitudeSquared2));\n}\n\n// src/util/data-url.ts\nfunction getTextFromDataUrl(dataUrl) {\n const [header, base64Content] = dataUrl.split(\",\");\n const mediaType = header.split(\";\")[0].split(\":\")[1];\n if (mediaType == null || base64Content == null) {\n throw new Error(\"Invalid data URL format\");\n }\n try {\n return window.atob(base64Content);\n } catch (error) {\n throw new Error(`Error decoding data URL`);\n }\n}\n\n// src/util/is-deep-equal-data.ts\nfunction isDeepEqualData(obj1, obj2) {\n if (obj1 === obj2)\n return true;\n if (obj1 == null || obj2 == null)\n return false;\n if (typeof obj1 !== \"object\" && typeof obj2 !== \"object\")\n return obj1 === obj2;\n if (obj1.constructor !== obj2.constructor)\n return false;\n if (obj1 instanceof Date && obj2 instanceof Date) {\n return obj1.getTime() === obj2.getTime();\n }\n if (Array.isArray(obj1)) {\n if (obj1.length !== obj2.length)\n return false;\n for (let i = 0; i < obj1.length; i++) {\n if (!isDeepEqualData(obj1[i], obj2[i]))\n return false;\n }\n return true;\n }\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n if (keys1.length !== keys2.length)\n return false;\n for (const key of keys1) {\n if (!keys2.includes(key))\n return false;\n if (!isDeepEqualData(obj1[key], obj2[key]))\n return false;\n }\n return true;\n}\n\n// src/util/serial-job-executor.ts\nvar SerialJobExecutor = class {\n constructor() {\n this.queue = [];\n this.isProcessing = false;\n }\n async processQueue() {\n if (this.isProcessing) {\n return;\n }\n this.isProcessing = true;\n while (this.queue.length > 0) {\n await this.queue[0]();\n this.queue.shift();\n }\n this.isProcessing = false;\n }\n async run(job) {\n return new Promise((resolve2, reject) => {\n this.queue.push(async () => {\n try {\n await job();\n resolve2();\n } catch (error) {\n reject(error);\n }\n });\n void this.processQueue();\n });\n }\n};\n\n// src/util/simulate-readable-stream.ts\nimport { delay as delayFunction } from \"@ai-sdk/provider-utils\";\nfunction simulateReadableStream({\n chunks,\n initialDelayInMs = 0,\n chunkDelayInMs = 0,\n _internal\n}) {\n var _a16;\n const delay2 = (_a16 = _internal == null ? void 0 : _internal.delay) != null ? _a16 : delayFunction;\n let index = 0;\n return new ReadableStream({\n async pull(controller) {\n if (index < chunks.length) {\n await delay2(index === 0 ? initialDelayInMs : chunkDelayInMs);\n controller.enqueue(chunks[index++]);\n } else {\n controller.close();\n }\n }\n });\n}\n\n// src/generate-object/stream-object.ts\nvar originalGenerateId4 = createIdGenerator4({ prefix: \"aiobj\", size: 24 });\nfunction streamObject(options) {\n const {\n model,\n output = \"object\",\n system,\n prompt,\n messages,\n maxRetries,\n abortSignal,\n headers,\n experimental_repairText: repairText,\n experimental_telemetry: telemetry,\n experimental_download: download2,\n providerOptions,\n onError = ({ error }) => {\n console.error(error);\n },\n onFinish,\n _internal: {\n generateId: generateId3 = originalGenerateId4,\n currentDate = () => /* @__PURE__ */ new Date(),\n now: now2 = now\n } = {},\n ...settings\n } = options;\n const enumValues = \"enum\" in options && options.enum ? options.enum : void 0;\n const {\n schema: inputSchema,\n schemaDescription,\n schemaName\n } = \"schema\" in options ? options : {};\n validateObjectGenerationInput({\n output,\n schema: inputSchema,\n schemaName,\n schemaDescription,\n enumValues\n });\n const outputStrategy = getOutputStrategy({\n output,\n schema: inputSchema,\n enumValues\n });\n return new DefaultStreamObjectResult({\n model,\n telemetry,\n headers,\n settings,\n maxRetries,\n abortSignal,\n outputStrategy,\n system,\n prompt,\n messages,\n schemaName,\n schemaDescription,\n providerOptions,\n repairText,\n onError,\n onFinish,\n download: download2,\n generateId: generateId3,\n currentDate,\n now: now2\n });\n}\nvar DefaultStreamObjectResult = class {\n constructor({\n model: modelArg,\n headers,\n telemetry,\n settings,\n maxRetries: maxRetriesArg,\n abortSignal,\n outputStrategy,\n system,\n prompt,\n messages,\n schemaName,\n schemaDescription,\n providerOptions,\n repairText,\n onError,\n onFinish,\n download: download2,\n generateId: generateId3,\n currentDate,\n now: now2\n }) {\n this._object = new DelayedPromise();\n this._usage = new DelayedPromise();\n this._providerMetadata = new DelayedPromise();\n this._warnings = new DelayedPromise();\n this._request = new DelayedPromise();\n this._response = new DelayedPromise();\n this._finishReason = new DelayedPromise();\n const model = resolveLanguageModel(modelArg);\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const callSettings = prepareCallSettings(settings);\n const baseTelemetryAttributes = getBaseTelemetryAttributes({\n model,\n telemetry,\n headers,\n settings: { ...callSettings, maxRetries }\n });\n const tracer = getTracer(telemetry);\n const self = this;\n const stitchableStream = createStitchableStream();\n const eventProcessor = new TransformStream({\n transform(chunk, controller) {\n controller.enqueue(chunk);\n if (chunk.type === \"error\") {\n onError({ error: wrapGatewayError(chunk.error) });\n }\n }\n });\n this.baseStream = stitchableStream.stream.pipeThrough(eventProcessor);\n recordSpan({\n name: \"ai.streamObject\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.streamObject\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n // specific settings that only make sense on the outer level:\n \"ai.prompt\": {\n input: () => JSON.stringify({ system, prompt, messages })\n },\n \"ai.schema\": outputStrategy.jsonSchema != null ? { input: () => JSON.stringify(outputStrategy.jsonSchema) } : void 0,\n \"ai.schema.name\": schemaName,\n \"ai.schema.description\": schemaDescription,\n \"ai.settings.output\": outputStrategy.type\n }\n }),\n tracer,\n endWhenDone: false,\n fn: async (rootSpan) => {\n const standardizedPrompt = await standardizePrompt({\n system,\n prompt,\n messages\n });\n const callOptions = {\n responseFormat: {\n type: \"json\",\n schema: outputStrategy.jsonSchema,\n name: schemaName,\n description: schemaDescription\n },\n ...prepareCallSettings(settings),\n prompt: await convertToLanguageModelPrompt({\n prompt: standardizedPrompt,\n supportedUrls: await model.supportedUrls,\n download: download2\n }),\n providerOptions,\n abortSignal,\n headers,\n includeRawChunks: false\n };\n const transformer = {\n transform: (chunk, controller) => {\n switch (chunk.type) {\n case \"text-delta\":\n controller.enqueue(chunk.delta);\n break;\n case \"response-metadata\":\n case \"finish\":\n case \"error\":\n case \"stream-start\":\n controller.enqueue(chunk);\n break;\n }\n }\n };\n const {\n result: { stream, response, request },\n doStreamSpan,\n startTimestampMs\n } = await retry(\n () => recordSpan({\n name: \"ai.streamObject.doStream\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.streamObject.doStream\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n \"ai.prompt.messages\": {\n input: () => stringifyForTelemetry(callOptions.prompt)\n },\n // standardized gen-ai llm span attributes:\n \"gen_ai.system\": model.provider,\n \"gen_ai.request.model\": model.modelId,\n \"gen_ai.request.frequency_penalty\": callSettings.frequencyPenalty,\n \"gen_ai.request.max_tokens\": callSettings.maxOutputTokens,\n \"gen_ai.request.presence_penalty\": callSettings.presencePenalty,\n \"gen_ai.request.temperature\": callSettings.temperature,\n \"gen_ai.request.top_k\": callSettings.topK,\n \"gen_ai.request.top_p\": callSettings.topP\n }\n }),\n tracer,\n endWhenDone: false,\n fn: async (doStreamSpan2) => ({\n startTimestampMs: now2(),\n doStreamSpan: doStreamSpan2,\n result: await model.doStream(callOptions)\n })\n })\n );\n self._request.resolve(request != null ? request : {});\n let warnings;\n let usage = {\n inputTokens: void 0,\n outputTokens: void 0,\n totalTokens: void 0\n };\n let finishReason;\n let providerMetadata;\n let object2;\n let error;\n let accumulatedText = \"\";\n let textDelta = \"\";\n let fullResponse = {\n id: generateId3(),\n timestamp: currentDate(),\n modelId: model.modelId\n };\n let latestObjectJson = void 0;\n let latestObject = void 0;\n let isFirstChunk = true;\n let isFirstDelta = true;\n const transformedStream = stream.pipeThrough(new TransformStream(transformer)).pipeThrough(\n new TransformStream({\n async transform(chunk, controller) {\n var _a16, _b, _c;\n if (typeof chunk === \"object\" && chunk.type === \"stream-start\") {\n warnings = chunk.warnings;\n return;\n }\n if (isFirstChunk) {\n const msToFirstChunk = now2() - startTimestampMs;\n isFirstChunk = false;\n doStreamSpan.addEvent(\"ai.stream.firstChunk\", {\n \"ai.stream.msToFirstChunk\": msToFirstChunk\n });\n doStreamSpan.setAttributes({\n \"ai.stream.msToFirstChunk\": msToFirstChunk\n });\n }\n if (typeof chunk === \"string\") {\n accumulatedText += chunk;\n textDelta += chunk;\n const { value: currentObjectJson, state: parseState } = await parsePartialJson(accumulatedText);\n if (currentObjectJson !== void 0 && !isDeepEqualData(latestObjectJson, currentObjectJson)) {\n const validationResult = await outputStrategy.validatePartialResult({\n value: currentObjectJson,\n textDelta,\n latestObject,\n isFirstDelta,\n isFinalDelta: parseState === \"successful-parse\"\n });\n if (validationResult.success && !isDeepEqualData(\n latestObject,\n validationResult.value.partial\n )) {\n latestObjectJson = currentObjectJson;\n latestObject = validationResult.value.partial;\n controller.enqueue({\n type: \"object\",\n object: latestObject\n });\n controller.enqueue({\n type: \"text-delta\",\n textDelta: validationResult.value.textDelta\n });\n textDelta = \"\";\n isFirstDelta = false;\n }\n }\n return;\n }\n switch (chunk.type) {\n case \"response-metadata\": {\n fullResponse = {\n id: (_a16 = chunk.id) != null ? _a16 : fullResponse.id,\n timestamp: (_b = chunk.timestamp) != null ? _b : fullResponse.timestamp,\n modelId: (_c = chunk.modelId) != null ? _c : fullResponse.modelId\n };\n break;\n }\n case \"finish\": {\n if (textDelta !== \"\") {\n controller.enqueue({ type: \"text-delta\", textDelta });\n }\n finishReason = chunk.finishReason;\n usage = chunk.usage;\n providerMetadata = chunk.providerMetadata;\n controller.enqueue({\n ...chunk,\n usage,\n response: fullResponse\n });\n logWarnings(warnings != null ? warnings : []);\n self._usage.resolve(usage);\n self._providerMetadata.resolve(providerMetadata);\n self._warnings.resolve(warnings);\n self._response.resolve({\n ...fullResponse,\n headers: response == null ? void 0 : response.headers\n });\n self._finishReason.resolve(finishReason != null ? finishReason : \"unknown\");\n try {\n object2 = await parseAndValidateObjectResultWithRepair(\n accumulatedText,\n outputStrategy,\n repairText,\n {\n response: fullResponse,\n usage,\n finishReason\n }\n );\n self._object.resolve(object2);\n } catch (e) {\n error = e;\n self._object.reject(e);\n }\n break;\n }\n default: {\n controller.enqueue(chunk);\n break;\n }\n }\n },\n // invoke onFinish callback and resolve toolResults promise when the stream is about to close:\n async flush(controller) {\n try {\n const finalUsage = usage != null ? usage : {\n promptTokens: NaN,\n completionTokens: NaN,\n totalTokens: NaN\n };\n doStreamSpan.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.response.finishReason\": finishReason,\n \"ai.response.object\": {\n output: () => JSON.stringify(object2)\n },\n \"ai.response.id\": fullResponse.id,\n \"ai.response.model\": fullResponse.modelId,\n \"ai.response.timestamp\": fullResponse.timestamp.toISOString(),\n \"ai.response.providerMetadata\": JSON.stringify(providerMetadata),\n \"ai.usage.inputTokens\": finalUsage.inputTokens,\n \"ai.usage.outputTokens\": finalUsage.outputTokens,\n \"ai.usage.totalTokens\": finalUsage.totalTokens,\n \"ai.usage.reasoningTokens\": finalUsage.reasoningTokens,\n \"ai.usage.cachedInputTokens\": finalUsage.cachedInputTokens,\n // standardized gen-ai llm span attributes:\n \"gen_ai.response.finish_reasons\": [finishReason],\n \"gen_ai.response.id\": fullResponse.id,\n \"gen_ai.response.model\": fullResponse.modelId,\n \"gen_ai.usage.input_tokens\": finalUsage.inputTokens,\n \"gen_ai.usage.output_tokens\": finalUsage.outputTokens\n }\n })\n );\n doStreamSpan.end();\n rootSpan.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.usage.inputTokens\": finalUsage.inputTokens,\n \"ai.usage.outputTokens\": finalUsage.outputTokens,\n \"ai.usage.totalTokens\": finalUsage.totalTokens,\n \"ai.usage.reasoningTokens\": finalUsage.reasoningTokens,\n \"ai.usage.cachedInputTokens\": finalUsage.cachedInputTokens,\n \"ai.response.object\": {\n output: () => JSON.stringify(object2)\n },\n \"ai.response.providerMetadata\": JSON.stringify(providerMetadata)\n }\n })\n );\n await (onFinish == null ? void 0 : onFinish({\n usage: finalUsage,\n object: object2,\n error,\n response: {\n ...fullResponse,\n headers: response == null ? void 0 : response.headers\n },\n warnings,\n providerMetadata\n }));\n } catch (error2) {\n controller.enqueue({ type: \"error\", error: error2 });\n } finally {\n rootSpan.end();\n }\n }\n })\n );\n stitchableStream.addStream(transformedStream);\n }\n }).catch((error) => {\n stitchableStream.addStream(\n new ReadableStream({\n start(controller) {\n controller.enqueue({ type: \"error\", error });\n controller.close();\n }\n })\n );\n }).finally(() => {\n stitchableStream.close();\n });\n this.outputStrategy = outputStrategy;\n }\n get object() {\n return this._object.promise;\n }\n get usage() {\n return this._usage.promise;\n }\n get providerMetadata() {\n return this._providerMetadata.promise;\n }\n get warnings() {\n return this._warnings.promise;\n }\n get request() {\n return this._request.promise;\n }\n get response() {\n return this._response.promise;\n }\n get finishReason() {\n return this._finishReason.promise;\n }\n get partialObjectStream() {\n return createAsyncIterableStream(\n this.baseStream.pipeThrough(\n new TransformStream({\n transform(chunk, controller) {\n switch (chunk.type) {\n case \"object\":\n controller.enqueue(chunk.object);\n break;\n case \"text-delta\":\n case \"finish\":\n case \"error\":\n break;\n default: {\n const _exhaustiveCheck = chunk;\n throw new Error(`Unsupported chunk type: ${_exhaustiveCheck}`);\n }\n }\n }\n })\n )\n );\n }\n get elementStream() {\n return this.outputStrategy.createElementStream(this.baseStream);\n }\n get textStream() {\n return createAsyncIterableStream(\n this.baseStream.pipeThrough(\n new TransformStream({\n transform(chunk, controller) {\n switch (chunk.type) {\n case \"text-delta\":\n controller.enqueue(chunk.textDelta);\n break;\n case \"object\":\n case \"finish\":\n case \"error\":\n break;\n default: {\n const _exhaustiveCheck = chunk;\n throw new Error(`Unsupported chunk type: ${_exhaustiveCheck}`);\n }\n }\n }\n })\n )\n );\n }\n get fullStream() {\n return createAsyncIterableStream(this.baseStream);\n }\n pipeTextStreamToResponse(response, init) {\n pipeTextStreamToResponse({\n response,\n textStream: this.textStream,\n ...init\n });\n }\n toTextStreamResponse(init) {\n return createTextStreamResponse({\n textStream: this.textStream,\n ...init\n });\n }\n};\n\n// src/generate-speech/generate-speech.ts\nimport { withUserAgentSuffix as withUserAgentSuffix7 } from \"@ai-sdk/provider-utils\";\n\n// src/generate-speech/generated-audio-file.ts\nvar DefaultGeneratedAudioFile = class extends DefaultGeneratedFile {\n constructor({\n data,\n mediaType\n }) {\n super({ data, mediaType });\n let format = \"mp3\";\n if (mediaType) {\n const mediaTypeParts = mediaType.split(\"/\");\n if (mediaTypeParts.length === 2) {\n if (mediaType !== \"audio/mpeg\") {\n format = mediaTypeParts[1];\n }\n }\n }\n if (!format) {\n throw new Error(\n \"Audio format must be provided or determinable from media type\"\n );\n }\n this.format = format;\n }\n};\n\n// src/generate-speech/generate-speech.ts\nasync function generateSpeech({\n model,\n text: text2,\n voice,\n outputFormat,\n instructions,\n speed,\n language,\n providerOptions = {},\n maxRetries: maxRetriesArg,\n abortSignal,\n headers\n}) {\n var _a16;\n if (model.specificationVersion !== \"v2\") {\n throw new UnsupportedModelVersionError({\n version: model.specificationVersion,\n provider: model.provider,\n modelId: model.modelId\n });\n }\n const headersWithUserAgent = withUserAgentSuffix7(\n headers != null ? headers : {},\n `ai/${VERSION}`\n );\n const { retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const result = await retry(\n () => model.doGenerate({\n text: text2,\n voice,\n outputFormat,\n instructions,\n speed,\n language,\n abortSignal,\n headers: headersWithUserAgent,\n providerOptions\n })\n );\n if (!result.audio || result.audio.length === 0) {\n throw new NoSpeechGeneratedError({ responses: [result.response] });\n }\n logWarnings(result.warnings);\n return new DefaultSpeechResult({\n audio: new DefaultGeneratedAudioFile({\n data: result.audio,\n mediaType: (_a16 = detectMediaType({\n data: result.audio,\n signatures: audioMediaTypeSignatures\n })) != null ? _a16 : \"audio/mp3\"\n }),\n warnings: result.warnings,\n responses: [result.response],\n providerMetadata: result.providerMetadata\n });\n}\nvar DefaultSpeechResult = class {\n constructor(options) {\n var _a16;\n this.audio = options.audio;\n this.warnings = options.warnings;\n this.responses = options.responses;\n this.providerMetadata = (_a16 = options.providerMetadata) != null ? _a16 : {};\n }\n};\n\n// src/generate-text/output.ts\nvar output_exports = {};\n__export(output_exports, {\n object: () => object,\n text: () => text\n});\nimport {\n asSchema as asSchema4,\n safeParseJSON as safeParseJSON4,\n safeValidateTypes as safeValidateTypes4\n} from \"@ai-sdk/provider-utils\";\nvar text = () => ({\n type: \"text\",\n responseFormat: { type: \"text\" },\n async parsePartial({ text: text2 }) {\n return { partial: text2 };\n },\n async parseOutput({ text: text2 }) {\n return text2;\n }\n});\nvar object = ({\n schema: inputSchema\n}) => {\n const schema = asSchema4(inputSchema);\n return {\n type: \"object\",\n responseFormat: {\n type: \"json\",\n schema: schema.jsonSchema\n },\n async parsePartial({ text: text2 }) {\n const result = await parsePartialJson(text2);\n switch (result.state) {\n case \"failed-parse\":\n case \"undefined-input\":\n return void 0;\n case \"repaired-parse\":\n case \"successful-parse\":\n return {\n // Note: currently no validation of partial results:\n partial: result.value\n };\n default: {\n const _exhaustiveCheck = result.state;\n throw new Error(`Unsupported parse state: ${_exhaustiveCheck}`);\n }\n }\n },\n async parseOutput({ text: text2 }, context) {\n const parseResult = await safeParseJSON4({ text: text2 });\n if (!parseResult.success) {\n throw new NoObjectGeneratedError({\n message: \"No object generated: could not parse the response.\",\n cause: parseResult.error,\n text: text2,\n response: context.response,\n usage: context.usage,\n finishReason: context.finishReason\n });\n }\n const validationResult = await safeValidateTypes4({\n value: parseResult.value,\n schema\n });\n if (!validationResult.success) {\n throw new NoObjectGeneratedError({\n message: \"No object generated: response did not match schema.\",\n cause: validationResult.error,\n text: text2,\n response: context.response,\n usage: context.usage,\n finishReason: context.finishReason\n });\n }\n return validationResult.value;\n }\n };\n};\n\n// src/generate-text/prune-messages.ts\nfunction pruneMessages({\n messages,\n reasoning = \"none\",\n toolCalls = [],\n emptyMessages = \"remove\"\n}) {\n if (reasoning === \"all\" || reasoning === \"before-last-message\") {\n messages = messages.map((message, messageIndex) => {\n if (message.role !== \"assistant\" || typeof message.content === \"string\" || reasoning === \"before-last-message\" && messageIndex === messages.length - 1) {\n return message;\n }\n return {\n ...message,\n content: message.content.filter((part) => part.type !== \"reasoning\")\n };\n });\n }\n if (toolCalls === \"none\") {\n toolCalls = [];\n } else if (toolCalls === \"all\") {\n toolCalls = [{ type: \"all\" }];\n } else if (toolCalls === \"before-last-message\") {\n toolCalls = [{ type: \"before-last-message\" }];\n } else if (typeof toolCalls === \"string\") {\n toolCalls = [{ type: toolCalls }];\n }\n for (const toolCall of toolCalls) {\n const keepLastMessagesCount = toolCall.type === \"all\" ? void 0 : toolCall.type === \"before-last-message\" ? 1 : Number(\n toolCall.type.slice(\"before-last-\".length).slice(0, -\"-messages\".length)\n );\n const keptToolCallIds = /* @__PURE__ */ new Set();\n const keptApprovalIds = /* @__PURE__ */ new Set();\n if (keepLastMessagesCount != null) {\n for (const message of messages.slice(0, -keepLastMessagesCount)) {\n if ((message.role === \"assistant\" || message.role === \"tool\") && typeof message.content !== \"string\") {\n for (const part of message.content) {\n if (part.type === \"tool-call\" || part.type === \"tool-result\") {\n keptToolCallIds.add(part.toolCallId);\n }\n }\n }\n }\n }\n messages = messages.map((message, messageIndex) => {\n if (message.role !== \"assistant\" && message.role !== \"tool\" || typeof message.content === \"string\" || keepLastMessagesCount && messageIndex >= messages.length - keepLastMessagesCount) {\n return message;\n }\n const toolCallIdToToolName = {};\n return {\n ...message,\n content: message.content.filter((part) => {\n if (part.type !== \"tool-call\" && part.type !== \"tool-result\") {\n return true;\n }\n if (part.type === \"tool-call\") {\n toolCallIdToToolName[part.toolCallId] = part.toolName;\n }\n if ((part.type === \"tool-call\" || part.type === \"tool-result\") && keptToolCallIds.has(part.toolCallId)) {\n return true;\n }\n return toolCall.tools != null && !toolCall.tools.includes(part.toolName);\n })\n };\n });\n }\n if (emptyMessages === \"remove\") {\n messages = messages.filter((message) => message.content.length > 0);\n }\n return messages;\n}\n\n// src/generate-text/smooth-stream.ts\nimport { delay as originalDelay } from \"@ai-sdk/provider-utils\";\nimport { InvalidArgumentError as InvalidArgumentError2 } from \"@ai-sdk/provider\";\nvar CHUNKING_REGEXPS = {\n word: /\\S+\\s+/m,\n line: /\\n+/m\n};\nfunction smoothStream({\n delayInMs = 10,\n chunking = \"word\",\n _internal: { delay: delay2 = originalDelay } = {}\n} = {}) {\n let detectChunk;\n if (typeof chunking === \"function\") {\n detectChunk = (buffer) => {\n const match = chunking(buffer);\n if (match == null) {\n return null;\n }\n if (!match.length) {\n throw new Error(`Chunking function must return a non-empty string.`);\n }\n if (!buffer.startsWith(match)) {\n throw new Error(\n `Chunking function must return a match that is a prefix of the buffer. Received: \"${match}\" expected to start with \"${buffer}\"`\n );\n }\n return match;\n };\n } else {\n const chunkingRegex = typeof chunking === \"string\" ? CHUNKING_REGEXPS[chunking] : chunking;\n if (chunkingRegex == null) {\n throw new InvalidArgumentError2({\n argument: \"chunking\",\n message: `Chunking must be \"word\" or \"line\" or a RegExp. Received: ${chunking}`\n });\n }\n detectChunk = (buffer) => {\n const match = chunkingRegex.exec(buffer);\n if (!match) {\n return null;\n }\n return buffer.slice(0, match.index) + (match == null ? void 0 : match[0]);\n };\n }\n return () => {\n let buffer = \"\";\n let id = \"\";\n return new TransformStream({\n async transform(chunk, controller) {\n if (chunk.type !== \"text-delta\") {\n if (buffer.length > 0) {\n controller.enqueue({ type: \"text-delta\", text: buffer, id });\n buffer = \"\";\n }\n controller.enqueue(chunk);\n return;\n }\n if (chunk.id !== id && buffer.length > 0) {\n controller.enqueue({ type: \"text-delta\", text: buffer, id });\n buffer = \"\";\n }\n buffer += chunk.text;\n id = chunk.id;\n let match;\n while ((match = detectChunk(buffer)) != null) {\n controller.enqueue({ type: \"text-delta\", text: match, id });\n buffer = buffer.slice(match.length);\n await delay2(delayInMs);\n }\n }\n });\n };\n}\n\n// src/middleware/default-settings-middleware.ts\nfunction defaultSettingsMiddleware({\n settings\n}) {\n return {\n middlewareVersion: \"v2\",\n transformParams: async ({ params }) => {\n return mergeObjects(settings, params);\n }\n };\n}\n\n// src/util/get-potential-start-index.ts\nfunction getPotentialStartIndex(text2, searchedText) {\n if (searchedText.length === 0) {\n return null;\n }\n const directIndex = text2.indexOf(searchedText);\n if (directIndex !== -1) {\n return directIndex;\n }\n for (let i = text2.length - 1; i >= 0; i--) {\n const suffix = text2.substring(i);\n if (searchedText.startsWith(suffix)) {\n return i;\n }\n }\n return null;\n}\n\n// src/middleware/extract-reasoning-middleware.ts\nfunction extractReasoningMiddleware({\n tagName,\n separator = \"\\n\",\n startWithReasoning = false\n}) {\n const openingTag = `<${tagName}>`;\n const closingTag = `</${tagName}>`;\n return {\n middlewareVersion: \"v2\",\n wrapGenerate: async ({ doGenerate }) => {\n const { content, ...rest } = await doGenerate();\n const transformedContent = [];\n for (const part of content) {\n if (part.type !== \"text\") {\n transformedContent.push(part);\n continue;\n }\n const text2 = startWithReasoning ? openingTag + part.text : part.text;\n const regexp = new RegExp(`${openingTag}(.*?)${closingTag}`, \"gs\");\n const matches = Array.from(text2.matchAll(regexp));\n if (!matches.length) {\n transformedContent.push(part);\n continue;\n }\n const reasoningText = matches.map((match) => match[1]).join(separator);\n let textWithoutReasoning = text2;\n for (let i = matches.length - 1; i >= 0; i--) {\n const match = matches[i];\n const beforeMatch = textWithoutReasoning.slice(0, match.index);\n const afterMatch = textWithoutReasoning.slice(\n match.index + match[0].length\n );\n textWithoutReasoning = beforeMatch + (beforeMatch.length > 0 && afterMatch.length > 0 ? separator : \"\") + afterMatch;\n }\n transformedContent.push({\n type: \"reasoning\",\n text: reasoningText\n });\n transformedContent.push({\n type: \"text\",\n text: textWithoutReasoning\n });\n }\n return { content: transformedContent, ...rest };\n },\n wrapStream: async ({ doStream }) => {\n const { stream, ...rest } = await doStream();\n const reasoningExtractions = {};\n let delayedTextStart;\n return {\n stream: stream.pipeThrough(\n new TransformStream({\n transform: (chunk, controller) => {\n if (chunk.type === \"text-start\") {\n delayedTextStart = chunk;\n return;\n }\n if (chunk.type === \"text-end\" && delayedTextStart) {\n controller.enqueue(delayedTextStart);\n delayedTextStart = void 0;\n }\n if (chunk.type !== \"text-delta\") {\n controller.enqueue(chunk);\n return;\n }\n if (reasoningExtractions[chunk.id] == null) {\n reasoningExtractions[chunk.id] = {\n isFirstReasoning: true,\n isFirstText: true,\n afterSwitch: false,\n isReasoning: startWithReasoning,\n buffer: \"\",\n idCounter: 0,\n textId: chunk.id\n };\n }\n const activeExtraction = reasoningExtractions[chunk.id];\n activeExtraction.buffer += chunk.delta;\n function publish(text2) {\n if (text2.length > 0) {\n const prefix = activeExtraction.afterSwitch && (activeExtraction.isReasoning ? !activeExtraction.isFirstReasoning : !activeExtraction.isFirstText) ? separator : \"\";\n if (activeExtraction.isReasoning && (activeExtraction.afterSwitch || activeExtraction.isFirstReasoning)) {\n controller.enqueue({\n type: \"reasoning-start\",\n id: `reasoning-${activeExtraction.idCounter}`\n });\n }\n if (activeExtraction.isReasoning) {\n controller.enqueue({\n type: \"reasoning-delta\",\n delta: prefix + text2,\n id: `reasoning-${activeExtraction.idCounter}`\n });\n } else {\n if (delayedTextStart) {\n controller.enqueue(delayedTextStart);\n delayedTextStart = void 0;\n }\n controller.enqueue({\n type: \"text-delta\",\n delta: prefix + text2,\n id: activeExtraction.textId\n });\n }\n activeExtraction.afterSwitch = false;\n if (activeExtraction.isReasoning) {\n activeExtraction.isFirstReasoning = false;\n } else {\n activeExtraction.isFirstText = false;\n }\n }\n }\n do {\n const nextTag = activeExtraction.isReasoning ? closingTag : openingTag;\n const startIndex = getPotentialStartIndex(\n activeExtraction.buffer,\n nextTag\n );\n if (startIndex == null) {\n publish(activeExtraction.buffer);\n activeExtraction.buffer = \"\";\n break;\n }\n publish(activeExtraction.buffer.slice(0, startIndex));\n const foundFullMatch = startIndex + nextTag.length <= activeExtraction.buffer.length;\n if (foundFullMatch) {\n activeExtraction.buffer = activeExtraction.buffer.slice(\n startIndex + nextTag.length\n );\n if (activeExtraction.isReasoning) {\n controller.enqueue({\n type: \"reasoning-end\",\n id: `reasoning-${activeExtraction.idCounter++}`\n });\n }\n activeExtraction.isReasoning = !activeExtraction.isReasoning;\n activeExtraction.afterSwitch = true;\n } else {\n activeExtraction.buffer = activeExtraction.buffer.slice(startIndex);\n break;\n }\n } while (true);\n }\n })\n ),\n ...rest\n };\n }\n };\n}\n\n// src/middleware/simulate-streaming-middleware.ts\nfunction simulateStreamingMiddleware() {\n return {\n middlewareVersion: \"v2\",\n wrapStream: async ({ doGenerate }) => {\n const result = await doGenerate();\n let id = 0;\n const simulatedStream = new ReadableStream({\n start(controller) {\n controller.enqueue({\n type: \"stream-start\",\n warnings: result.warnings\n });\n controller.enqueue({ type: \"response-metadata\", ...result.response });\n for (const part of result.content) {\n switch (part.type) {\n case \"text\": {\n if (part.text.length > 0) {\n controller.enqueue({ type: \"text-start\", id: String(id) });\n controller.enqueue({\n type: \"text-delta\",\n id: String(id),\n delta: part.text\n });\n controller.enqueue({ type: \"text-end\", id: String(id) });\n id++;\n }\n break;\n }\n case \"reasoning\": {\n controller.enqueue({\n type: \"reasoning-start\",\n id: String(id),\n providerMetadata: part.providerMetadata\n });\n controller.enqueue({\n type: \"reasoning-delta\",\n id: String(id),\n delta: part.text\n });\n controller.enqueue({ type: \"reasoning-end\", id: String(id) });\n id++;\n break;\n }\n default: {\n controller.enqueue(part);\n break;\n }\n }\n }\n controller.enqueue({\n type: \"finish\",\n finishReason: result.finishReason,\n usage: result.usage,\n providerMetadata: result.providerMetadata\n });\n controller.close();\n }\n });\n return {\n stream: simulatedStream,\n request: result.request,\n response: result.response\n };\n }\n };\n}\n\n// src/middleware/wrap-language-model.ts\nvar wrapLanguageModel = ({\n model,\n middleware: middlewareArg,\n modelId,\n providerId\n}) => {\n return [...asArray(middlewareArg)].reverse().reduce((wrappedModel, middleware) => {\n return doWrap({ model: wrappedModel, middleware, modelId, providerId });\n }, model);\n};\nvar doWrap = ({\n model,\n middleware: {\n transformParams,\n wrapGenerate,\n wrapStream,\n overrideProvider,\n overrideModelId,\n overrideSupportedUrls\n },\n modelId,\n providerId\n}) => {\n var _a16, _b, _c;\n async function doTransform({\n params,\n type\n }) {\n return transformParams ? await transformParams({ params, type, model }) : params;\n }\n return {\n specificationVersion: \"v2\",\n provider: (_a16 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a16 : model.provider,\n modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,\n supportedUrls: (_c = overrideSupportedUrls == null ? void 0 : overrideSupportedUrls({ model })) != null ? _c : model.supportedUrls,\n async doGenerate(params) {\n const transformedParams = await doTransform({ params, type: \"generate\" });\n const doGenerate = async () => model.doGenerate(transformedParams);\n const doStream = async () => model.doStream(transformedParams);\n return wrapGenerate ? wrapGenerate({\n doGenerate,\n doStream,\n params: transformedParams,\n model\n }) : doGenerate();\n },\n async doStream(params) {\n const transformedParams = await doTransform({ params, type: \"stream\" });\n const doGenerate = async () => model.doGenerate(transformedParams);\n const doStream = async () => model.doStream(transformedParams);\n return wrapStream ? wrapStream({ doGenerate, doStream, params: transformedParams, model }) : doStream();\n }\n };\n};\n\n// src/middleware/wrap-provider.ts\nfunction wrapProvider({\n provider,\n languageModelMiddleware\n}) {\n const wrappedProvider = {\n languageModel(modelId) {\n let model = provider.languageModel(modelId);\n model = wrapLanguageModel({\n model,\n middleware: languageModelMiddleware\n });\n return model;\n },\n textEmbeddingModel: provider.textEmbeddingModel,\n imageModel: provider.imageModel,\n transcriptionModel: provider.transcriptionModel,\n speechModel: provider.speechModel\n };\n return wrappedProvider;\n}\n\n// src/registry/custom-provider.ts\nimport {\n NoSuchModelError as NoSuchModelError2\n} from \"@ai-sdk/provider\";\nfunction customProvider({\n languageModels,\n textEmbeddingModels,\n imageModels,\n transcriptionModels,\n speechModels,\n fallbackProvider\n}) {\n return {\n languageModel(modelId) {\n if (languageModels != null && modelId in languageModels) {\n return languageModels[modelId];\n }\n if (fallbackProvider) {\n return fallbackProvider.languageModel(modelId);\n }\n throw new NoSuchModelError2({ modelId, modelType: \"languageModel\" });\n },\n textEmbeddingModel(modelId) {\n if (textEmbeddingModels != null && modelId in textEmbeddingModels) {\n return textEmbeddingModels[modelId];\n }\n if (fallbackProvider) {\n return fallbackProvider.textEmbeddingModel(modelId);\n }\n throw new NoSuchModelError2({ modelId, modelType: \"textEmbeddingModel\" });\n },\n imageModel(modelId) {\n if (imageModels != null && modelId in imageModels) {\n return imageModels[modelId];\n }\n if (fallbackProvider == null ? void 0 : fallbackProvider.imageModel) {\n return fallbackProvider.imageModel(modelId);\n }\n throw new NoSuchModelError2({ modelId, modelType: \"imageModel\" });\n },\n transcriptionModel(modelId) {\n if (transcriptionModels != null && modelId in transcriptionModels) {\n return transcriptionModels[modelId];\n }\n if (fallbackProvider == null ? void 0 : fallbackProvider.transcriptionModel) {\n return fallbackProvider.transcriptionModel(modelId);\n }\n throw new NoSuchModelError2({ modelId, modelType: \"transcriptionModel\" });\n },\n speechModel(modelId) {\n if (speechModels != null && modelId in speechModels) {\n return speechModels[modelId];\n }\n if (fallbackProvider == null ? void 0 : fallbackProvider.speechModel) {\n return fallbackProvider.speechModel(modelId);\n }\n throw new NoSuchModelError2({ modelId, modelType: \"speechModel\" });\n }\n };\n}\nvar experimental_customProvider = customProvider;\n\n// src/registry/no-such-provider-error.ts\nimport { AISDKError as AISDKError20, NoSuchModelError as NoSuchModelError3 } from \"@ai-sdk/provider\";\nvar name15 = \"AI_NoSuchProviderError\";\nvar marker15 = `vercel.ai.error.${name15}`;\nvar symbol15 = Symbol.for(marker15);\nvar _a15;\nvar NoSuchProviderError = class extends NoSuchModelError3 {\n constructor({\n modelId,\n modelType,\n providerId,\n availableProviders,\n message = `No such provider: ${providerId} (available providers: ${availableProviders.join()})`\n }) {\n super({ errorName: name15, modelId, modelType, message });\n this[_a15] = true;\n this.providerId = providerId;\n this.availableProviders = availableProviders;\n }\n static isInstance(error) {\n return AISDKError20.hasMarker(error, marker15);\n }\n};\n_a15 = symbol15;\n\n// src/registry/provider-registry.ts\nimport {\n NoSuchModelError as NoSuchModelError4\n} from \"@ai-sdk/provider\";\nfunction createProviderRegistry(providers, {\n separator = \":\",\n languageModelMiddleware\n} = {}) {\n const registry = new DefaultProviderRegistry({\n separator,\n languageModelMiddleware\n });\n for (const [id, provider] of Object.entries(providers)) {\n registry.registerProvider({ id, provider });\n }\n return registry;\n}\nvar experimental_createProviderRegistry = createProviderRegistry;\nvar DefaultProviderRegistry = class {\n constructor({\n separator,\n languageModelMiddleware\n }) {\n this.providers = {};\n this.separator = separator;\n this.languageModelMiddleware = languageModelMiddleware;\n }\n registerProvider({\n id,\n provider\n }) {\n this.providers[id] = provider;\n }\n getProvider(id, modelType) {\n const provider = this.providers[id];\n if (provider == null) {\n throw new NoSuchProviderError({\n modelId: id,\n modelType,\n providerId: id,\n availableProviders: Object.keys(this.providers)\n });\n }\n return provider;\n }\n splitId(id, modelType) {\n const index = id.indexOf(this.separator);\n if (index === -1) {\n throw new NoSuchModelError4({\n modelId: id,\n modelType,\n message: `Invalid ${modelType} id for registry: ${id} (must be in the format \"providerId${this.separator}modelId\")`\n });\n }\n return [id.slice(0, index), id.slice(index + this.separator.length)];\n }\n languageModel(id) {\n var _a16, _b;\n const [providerId, modelId] = this.splitId(id, \"languageModel\");\n let model = (_b = (_a16 = this.getProvider(providerId, \"languageModel\")).languageModel) == null ? void 0 : _b.call(\n _a16,\n modelId\n );\n if (model == null) {\n throw new NoSuchModelError4({ modelId: id, modelType: \"languageModel\" });\n }\n if (this.languageModelMiddleware != null) {\n model = wrapLanguageModel({\n model,\n middleware: this.languageModelMiddleware\n });\n }\n return model;\n }\n textEmbeddingModel(id) {\n var _a16;\n const [providerId, modelId] = this.splitId(id, \"textEmbeddingModel\");\n const provider = this.getProvider(providerId, \"textEmbeddingModel\");\n const model = (_a16 = provider.textEmbeddingModel) == null ? void 0 : _a16.call(provider, modelId);\n if (model == null) {\n throw new NoSuchModelError4({\n modelId: id,\n modelType: \"textEmbeddingModel\"\n });\n }\n return model;\n }\n imageModel(id) {\n var _a16;\n const [providerId, modelId] = this.splitId(id, \"imageModel\");\n const provider = this.getProvider(providerId, \"imageModel\");\n const model = (_a16 = provider.imageModel) == null ? void 0 : _a16.call(provider, modelId);\n if (model == null) {\n throw new NoSuchModelError4({ modelId: id, modelType: \"imageModel\" });\n }\n return model;\n }\n transcriptionModel(id) {\n var _a16;\n const [providerId, modelId] = this.splitId(id, \"transcriptionModel\");\n const provider = this.getProvider(providerId, \"transcriptionModel\");\n const model = (_a16 = provider.transcriptionModel) == null ? void 0 : _a16.call(provider, modelId);\n if (model == null) {\n throw new NoSuchModelError4({\n modelId: id,\n modelType: \"transcriptionModel\"\n });\n }\n return model;\n }\n speechModel(id) {\n var _a16;\n const [providerId, modelId] = this.splitId(id, \"speechModel\");\n const provider = this.getProvider(providerId, \"speechModel\");\n const model = (_a16 = provider.speechModel) == null ? void 0 : _a16.call(provider, modelId);\n if (model == null) {\n throw new NoSuchModelError4({ modelId: id, modelType: \"speechModel\" });\n }\n return model;\n }\n};\n\n// src/transcribe/transcribe.ts\nimport { withUserAgentSuffix as withUserAgentSuffix8 } from \"@ai-sdk/provider-utils\";\n\n// src/error/no-transcript-generated-error.ts\nimport { AISDKError as AISDKError21 } from \"@ai-sdk/provider\";\nvar NoTranscriptGeneratedError = class extends AISDKError21 {\n constructor(options) {\n super({\n name: \"AI_NoTranscriptGeneratedError\",\n message: \"No transcript generated.\"\n });\n this.responses = options.responses;\n }\n};\n\n// src/transcribe/transcribe.ts\nasync function transcribe({\n model,\n audio,\n providerOptions = {},\n maxRetries: maxRetriesArg,\n abortSignal,\n headers\n}) {\n if (model.specificationVersion !== \"v2\") {\n throw new UnsupportedModelVersionError({\n version: model.specificationVersion,\n provider: model.provider,\n modelId: model.modelId\n });\n }\n const { retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const headersWithUserAgent = withUserAgentSuffix8(\n headers != null ? headers : {},\n `ai/${VERSION}`\n );\n const audioData = audio instanceof URL ? (await download({ url: audio })).data : convertDataContentToUint8Array(audio);\n const result = await retry(\n () => {\n var _a16;\n return model.doGenerate({\n audio: audioData,\n abortSignal,\n headers: headersWithUserAgent,\n providerOptions,\n mediaType: (_a16 = detectMediaType({\n data: audioData,\n signatures: audioMediaTypeSignatures\n })) != null ? _a16 : \"audio/wav\"\n });\n }\n );\n logWarnings(result.warnings);\n if (!result.text) {\n throw new NoTranscriptGeneratedError({ responses: [result.response] });\n }\n return new DefaultTranscriptionResult({\n text: result.text,\n segments: result.segments,\n language: result.language,\n durationInSeconds: result.durationInSeconds,\n warnings: result.warnings,\n responses: [result.response],\n providerMetadata: result.providerMetadata\n });\n}\nvar DefaultTranscriptionResult = class {\n constructor(options) {\n var _a16;\n this.text = options.text;\n this.segments = options.segments;\n this.language = options.language;\n this.durationInSeconds = options.durationInSeconds;\n this.warnings = options.warnings;\n this.responses = options.responses;\n this.providerMetadata = (_a16 = options.providerMetadata) != null ? _a16 : {};\n }\n};\n\n// src/ui/call-completion-api.ts\nimport {\n parseJsonEventStream,\n withUserAgentSuffix as withUserAgentSuffix9,\n getRuntimeEnvironmentUserAgent as getRuntimeEnvironmentUserAgent2\n} from \"@ai-sdk/provider-utils\";\n\n// src/ui/process-text-stream.ts\nasync function processTextStream({\n stream,\n onTextPart\n}) {\n const reader = stream.pipeThrough(new TextDecoderStream()).getReader();\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n await onTextPart(value);\n }\n}\n\n// src/ui/call-completion-api.ts\nvar getOriginalFetch = () => fetch;\nasync function callCompletionApi({\n api,\n prompt,\n credentials,\n headers,\n body,\n streamProtocol = \"data\",\n setCompletion,\n setLoading,\n setError,\n setAbortController,\n onFinish,\n onError,\n fetch: fetch2 = getOriginalFetch()\n}) {\n var _a16;\n try {\n setLoading(true);\n setError(void 0);\n const abortController = new AbortController();\n setAbortController(abortController);\n setCompletion(\"\");\n const response = await fetch2(api, {\n method: \"POST\",\n body: JSON.stringify({\n prompt,\n ...body\n }),\n credentials,\n headers: withUserAgentSuffix9(\n {\n \"Content-Type\": \"application/json\",\n ...headers\n },\n `ai-sdk/${VERSION}`,\n getRuntimeEnvironmentUserAgent2()\n ),\n signal: abortController.signal\n }).catch((err) => {\n throw err;\n });\n if (!response.ok) {\n throw new Error(\n (_a16 = await response.text()) != null ? _a16 : \"Failed to fetch the chat response.\"\n );\n }\n if (!response.body) {\n throw new Error(\"The response body is empty.\");\n }\n let result = \"\";\n switch (streamProtocol) {\n case \"text\": {\n await processTextStream({\n stream: response.body,\n onTextPart: (chunk) => {\n result += chunk;\n setCompletion(result);\n }\n });\n break;\n }\n case \"data\": {\n await consumeStream({\n stream: parseJsonEventStream({\n stream: response.body,\n schema: uiMessageChunkSchema\n }).pipeThrough(\n new TransformStream({\n async transform(part) {\n if (!part.success) {\n throw part.error;\n }\n const streamPart = part.value;\n if (streamPart.type === \"text-delta\") {\n result += streamPart.delta;\n setCompletion(result);\n } else if (streamPart.type === \"error\") {\n throw new Error(streamPart.errorText);\n }\n }\n })\n ),\n onError: (error) => {\n throw error;\n }\n });\n break;\n }\n default: {\n const exhaustiveCheck = streamProtocol;\n throw new Error(`Unknown stream protocol: ${exhaustiveCheck}`);\n }\n }\n if (onFinish) {\n onFinish(prompt, result);\n }\n setAbortController(null);\n return result;\n } catch (err) {\n if (err.name === \"AbortError\") {\n setAbortController(null);\n return null;\n }\n if (err instanceof Error) {\n if (onError) {\n onError(err);\n }\n }\n setError(err);\n } finally {\n setLoading(false);\n }\n}\n\n// src/ui/chat.ts\nimport {\n generateId as generateIdFunc\n} from \"@ai-sdk/provider-utils\";\n\n// src/ui/convert-file-list-to-file-ui-parts.ts\nasync function convertFileListToFileUIParts(files) {\n if (files == null) {\n return [];\n }\n if (!globalThis.FileList || !(files instanceof globalThis.FileList)) {\n throw new Error(\"FileList is not supported in the current environment\");\n }\n return Promise.all(\n Array.from(files).map(async (file) => {\n const { name: name16, type } = file;\n const dataUrl = await new Promise((resolve2, reject) => {\n const reader = new FileReader();\n reader.onload = (readerEvent) => {\n var _a16;\n resolve2((_a16 = readerEvent.target) == null ? void 0 : _a16.result);\n };\n reader.onerror = (error) => reject(error);\n reader.readAsDataURL(file);\n });\n return {\n type: \"file\",\n mediaType: type,\n filename: name16,\n url: dataUrl\n };\n })\n );\n}\n\n// src/ui/default-chat-transport.ts\nimport { parseJsonEventStream as parseJsonEventStream2 } from \"@ai-sdk/provider-utils\";\n\n// src/ui/http-chat-transport.ts\nimport {\n normalizeHeaders,\n resolve,\n withUserAgentSuffix as withUserAgentSuffix10,\n getRuntimeEnvironmentUserAgent as getRuntimeEnvironmentUserAgent3\n} from \"@ai-sdk/provider-utils\";\nvar HttpChatTransport = class {\n constructor({\n api = \"/api/chat\",\n credentials,\n headers,\n body,\n fetch: fetch2,\n prepareSendMessagesRequest,\n prepareReconnectToStreamRequest\n }) {\n this.api = api;\n this.credentials = credentials;\n this.headers = headers;\n this.body = body;\n this.fetch = fetch2;\n this.prepareSendMessagesRequest = prepareSendMessagesRequest;\n this.prepareReconnectToStreamRequest = prepareReconnectToStreamRequest;\n }\n async sendMessages({\n abortSignal,\n ...options\n }) {\n var _a16, _b, _c, _d, _e;\n const resolvedBody = await resolve(this.body);\n const resolvedHeaders = await resolve(this.headers);\n const resolvedCredentials = await resolve(this.credentials);\n const baseHeaders = {\n ...normalizeHeaders(resolvedHeaders),\n ...normalizeHeaders(options.headers)\n };\n const preparedRequest = await ((_a16 = this.prepareSendMessagesRequest) == null ? void 0 : _a16.call(this, {\n api: this.api,\n id: options.chatId,\n messages: options.messages,\n body: { ...resolvedBody, ...options.body },\n headers: baseHeaders,\n credentials: resolvedCredentials,\n requestMetadata: options.metadata,\n trigger: options.trigger,\n messageId: options.messageId\n }));\n const api = (_b = preparedRequest == null ? void 0 : preparedRequest.api) != null ? _b : this.api;\n const headers = (preparedRequest == null ? void 0 : preparedRequest.headers) !== void 0 ? normalizeHeaders(preparedRequest.headers) : baseHeaders;\n const body = (preparedRequest == null ? void 0 : preparedRequest.body) !== void 0 ? preparedRequest.body : {\n ...resolvedBody,\n ...options.body,\n id: options.chatId,\n messages: options.messages,\n trigger: options.trigger,\n messageId: options.messageId\n };\n const credentials = (_c = preparedRequest == null ? void 0 : preparedRequest.credentials) != null ? _c : resolvedCredentials;\n const fetch2 = (_d = this.fetch) != null ? _d : globalThis.fetch;\n const response = await fetch2(api, {\n method: \"POST\",\n headers: withUserAgentSuffix10(\n {\n \"Content-Type\": \"application/json\",\n ...headers\n },\n `ai-sdk/${VERSION}`,\n getRuntimeEnvironmentUserAgent3()\n ),\n body: JSON.stringify(body),\n credentials,\n signal: abortSignal\n });\n if (!response.ok) {\n throw new Error(\n (_e = await response.text()) != null ? _e : \"Failed to fetch the chat response.\"\n );\n }\n if (!response.body) {\n throw new Error(\"The response body is empty.\");\n }\n return this.processResponseStream(response.body);\n }\n async reconnectToStream(options) {\n var _a16, _b, _c, _d, _e;\n const resolvedBody = await resolve(this.body);\n const resolvedHeaders = await resolve(this.headers);\n const resolvedCredentials = await resolve(this.credentials);\n const baseHeaders = {\n ...normalizeHeaders(resolvedHeaders),\n ...normalizeHeaders(options.headers)\n };\n const preparedRequest = await ((_a16 = this.prepareReconnectToStreamRequest) == null ? void 0 : _a16.call(this, {\n api: this.api,\n id: options.chatId,\n body: { ...resolvedBody, ...options.body },\n headers: baseHeaders,\n credentials: resolvedCredentials,\n requestMetadata: options.metadata\n }));\n const api = (_b = preparedRequest == null ? void 0 : preparedRequest.api) != null ? _b : `${this.api}/${options.chatId}/stream`;\n const headers = (preparedRequest == null ? void 0 : preparedRequest.headers) !== void 0 ? normalizeHeaders(preparedRequest.headers) : baseHeaders;\n const credentials = (_c = preparedRequest == null ? void 0 : preparedRequest.credentials) != null ? _c : resolvedCredentials;\n const fetch2 = (_d = this.fetch) != null ? _d : globalThis.fetch;\n const response = await fetch2(api, {\n method: \"GET\",\n headers: withUserAgentSuffix10(\n headers,\n `ai-sdk/${VERSION}`,\n getRuntimeEnvironmentUserAgent3()\n ),\n credentials\n });\n if (response.status === 204) {\n return null;\n }\n if (!response.ok) {\n throw new Error(\n (_e = await response.text()) != null ? _e : \"Failed to fetch the chat response.\"\n );\n }\n if (!response.body) {\n throw new Error(\"The response body is empty.\");\n }\n return this.processResponseStream(response.body);\n }\n};\n\n// src/ui/default-chat-transport.ts\nvar DefaultChatTransport = class extends HttpChatTransport {\n constructor(options = {}) {\n super(options);\n }\n processResponseStream(stream) {\n return parseJsonEventStream2({\n stream,\n schema: uiMessageChunkSchema\n }).pipeThrough(\n new TransformStream({\n async transform(chunk, controller) {\n if (!chunk.success) {\n throw chunk.error;\n }\n controller.enqueue(chunk.value);\n }\n })\n );\n }\n};\n\n// src/ui/chat.ts\nvar AbstractChat = class {\n constructor({\n generateId: generateId3 = generateIdFunc,\n id = generateId3(),\n transport = new DefaultChatTransport(),\n messageMetadataSchema,\n dataPartSchemas,\n state,\n onError,\n onToolCall,\n onFinish,\n onData,\n sendAutomaticallyWhen\n }) {\n this.activeResponse = void 0;\n this.jobExecutor = new SerialJobExecutor();\n /**\n * Appends or replaces a user message to the chat list. This triggers the API call to fetch\n * the assistant's response.\n *\n * If a messageId is provided, the message will be replaced.\n */\n this.sendMessage = async (message, options) => {\n var _a16, _b, _c, _d;\n if (message == null) {\n await this.makeRequest({\n trigger: \"submit-message\",\n messageId: (_a16 = this.lastMessage) == null ? void 0 : _a16.id,\n ...options\n });\n return;\n }\n let uiMessage;\n if (\"text\" in message || \"files\" in message) {\n const fileParts = Array.isArray(message.files) ? message.files : await convertFileListToFileUIParts(message.files);\n uiMessage = {\n parts: [\n ...fileParts,\n ...\"text\" in message && message.text != null ? [{ type: \"text\", text: message.text }] : []\n ]\n };\n } else {\n uiMessage = message;\n }\n if (message.messageId != null) {\n const messageIndex = this.state.messages.findIndex(\n (m) => m.id === message.messageId\n );\n if (messageIndex === -1) {\n throw new Error(`message with id ${message.messageId} not found`);\n }\n if (this.state.messages[messageIndex].role !== \"user\") {\n throw new Error(\n `message with id ${message.messageId} is not a user message`\n );\n }\n this.state.messages = this.state.messages.slice(0, messageIndex + 1);\n this.state.replaceMessage(messageIndex, {\n ...uiMessage,\n id: message.messageId,\n role: (_b = uiMessage.role) != null ? _b : \"user\",\n metadata: message.metadata\n });\n } else {\n this.state.pushMessage({\n ...uiMessage,\n id: (_c = uiMessage.id) != null ? _c : this.generateId(),\n role: (_d = uiMessage.role) != null ? _d : \"user\",\n metadata: message.metadata\n });\n }\n await this.makeRequest({\n trigger: \"submit-message\",\n messageId: message.messageId,\n ...options\n });\n };\n /**\n * Regenerate the assistant message with the provided message id.\n * If no message id is provided, the last assistant message will be regenerated.\n */\n this.regenerate = async ({\n messageId,\n ...options\n } = {}) => {\n const messageIndex = messageId == null ? this.state.messages.length - 1 : this.state.messages.findIndex((message) => message.id === messageId);\n if (messageIndex === -1) {\n throw new Error(`message ${messageId} not found`);\n }\n this.state.messages = this.state.messages.slice(\n 0,\n // if the message is a user message, we need to include it in the request:\n this.messages[messageIndex].role === \"assistant\" ? messageIndex : messageIndex + 1\n );\n await this.makeRequest({\n trigger: \"regenerate-message\",\n messageId,\n ...options\n });\n };\n /**\n * Attempt to resume an ongoing streaming response.\n */\n this.resumeStream = async (options = {}) => {\n await this.makeRequest({ trigger: \"resume-stream\", ...options });\n };\n /**\n * Clear the error state and set the status to ready if the chat is in an error state.\n */\n this.clearError = () => {\n if (this.status === \"error\") {\n this.state.error = void 0;\n this.setStatus({ status: \"ready\" });\n }\n };\n this.addToolResult = async ({\n state = \"output-available\",\n tool: tool2,\n toolCallId,\n output,\n errorText\n }) => this.jobExecutor.run(async () => {\n var _a16, _b;\n const messages = this.state.messages;\n const lastMessage = messages[messages.length - 1];\n this.state.replaceMessage(messages.length - 1, {\n ...lastMessage,\n parts: lastMessage.parts.map(\n (part) => isToolOrDynamicToolUIPart(part) && part.toolCallId === toolCallId ? { ...part, state, output, errorText } : part\n )\n });\n if (this.activeResponse) {\n this.activeResponse.state.message.parts = this.activeResponse.state.message.parts.map(\n (part) => isToolOrDynamicToolUIPart(part) && part.toolCallId === toolCallId ? {\n ...part,\n state,\n output,\n errorText\n } : part\n );\n }\n if (this.status !== \"streaming\" && this.status !== \"submitted\" && ((_a16 = this.sendAutomaticallyWhen) == null ? void 0 : _a16.call(this, { messages: this.state.messages }))) {\n this.makeRequest({\n trigger: \"submit-message\",\n messageId: (_b = this.lastMessage) == null ? void 0 : _b.id\n });\n }\n });\n /**\n * Abort the current request immediately, keep the generated tokens if any.\n */\n this.stop = async () => {\n var _a16;\n if (this.status !== \"streaming\" && this.status !== \"submitted\")\n return;\n if ((_a16 = this.activeResponse) == null ? void 0 : _a16.abortController) {\n this.activeResponse.abortController.abort();\n }\n };\n this.id = id;\n this.transport = transport;\n this.generateId = generateId3;\n this.messageMetadataSchema = messageMetadataSchema;\n this.dataPartSchemas = dataPartSchemas;\n this.state = state;\n this.onError = onError;\n this.onToolCall = onToolCall;\n this.onFinish = onFinish;\n this.onData = onData;\n this.sendAutomaticallyWhen = sendAutomaticallyWhen;\n }\n /**\n * Hook status:\n *\n * - `submitted`: The message has been sent to the API and we're awaiting the start of the response stream.\n * - `streaming`: The response is actively streaming in from the API, receiving chunks of data.\n * - `ready`: The full response has been received and processed; a new user message can be submitted.\n * - `error`: An error occurred during the API request, preventing successful completion.\n */\n get status() {\n return this.state.status;\n }\n setStatus({\n status,\n error\n }) {\n if (this.status === status)\n return;\n this.state.status = status;\n this.state.error = error;\n }\n get error() {\n return this.state.error;\n }\n get messages() {\n return this.state.messages;\n }\n get lastMessage() {\n return this.state.messages[this.state.messages.length - 1];\n }\n set messages(messages) {\n this.state.messages = messages;\n }\n async makeRequest({\n trigger,\n metadata,\n headers,\n body,\n messageId\n }) {\n var _a16, _b, _c;\n this.setStatus({ status: \"submitted\", error: void 0 });\n const lastMessage = this.lastMessage;\n let isAbort = false;\n let isDisconnect = false;\n let isError = false;\n try {\n const activeResponse = {\n state: createStreamingUIMessageState({\n lastMessage: this.state.snapshot(lastMessage),\n messageId: this.generateId()\n }),\n abortController: new AbortController()\n };\n activeResponse.abortController.signal.addEventListener(\"abort\", () => {\n isAbort = true;\n });\n this.activeResponse = activeResponse;\n let stream;\n if (trigger === \"resume-stream\") {\n const reconnect = await this.transport.reconnectToStream({\n chatId: this.id,\n metadata,\n headers,\n body\n });\n if (reconnect == null) {\n this.setStatus({ status: \"ready\" });\n return;\n }\n stream = reconnect;\n } else {\n stream = await this.transport.sendMessages({\n chatId: this.id,\n messages: this.state.messages,\n abortSignal: activeResponse.abortController.signal,\n metadata,\n headers,\n body,\n trigger,\n messageId\n });\n }\n const runUpdateMessageJob = (job) => (\n // serialize the job execution to avoid race conditions:\n this.jobExecutor.run(\n () => job({\n state: activeResponse.state,\n write: () => {\n var _a17;\n this.setStatus({ status: \"streaming\" });\n const replaceLastMessage = activeResponse.state.message.id === ((_a17 = this.lastMessage) == null ? void 0 : _a17.id);\n if (replaceLastMessage) {\n this.state.replaceMessage(\n this.state.messages.length - 1,\n activeResponse.state.message\n );\n } else {\n this.state.pushMessage(activeResponse.state.message);\n }\n }\n })\n )\n );\n await consumeStream({\n stream: processUIMessageStream({\n stream,\n onToolCall: this.onToolCall,\n onData: this.onData,\n messageMetadataSchema: this.messageMetadataSchema,\n dataPartSchemas: this.dataPartSchemas,\n runUpdateMessageJob,\n onError: (error) => {\n throw error;\n }\n }),\n onError: (error) => {\n throw error;\n }\n });\n this.setStatus({ status: \"ready\" });\n } catch (err) {\n if (isAbort || err.name === \"AbortError\") {\n isAbort = true;\n this.setStatus({ status: \"ready\" });\n return null;\n }\n isError = true;\n if (err instanceof TypeError && (err.message.toLowerCase().includes(\"fetch\") || err.message.toLowerCase().includes(\"network\"))) {\n isDisconnect = true;\n }\n if (this.onError && err instanceof Error) {\n this.onError(err);\n }\n this.setStatus({ status: \"error\", error: err });\n } finally {\n try {\n (_a16 = this.onFinish) == null ? void 0 : _a16.call(this, {\n message: this.activeResponse.state.message,\n messages: this.state.messages,\n isAbort,\n isDisconnect,\n isError\n });\n } catch (err) {\n console.error(err);\n }\n this.activeResponse = void 0;\n }\n if (((_b = this.sendAutomaticallyWhen) == null ? void 0 : _b.call(this, { messages: this.state.messages })) && !isError) {\n await this.makeRequest({\n trigger: \"submit-message\",\n messageId: (_c = this.lastMessage) == null ? void 0 : _c.id,\n metadata,\n headers,\n body\n });\n }\n }\n};\n\n// src/ui/last-assistant-message-is-complete-with-tool-calls.ts\nfunction lastAssistantMessageIsCompleteWithToolCalls({\n messages\n}) {\n const message = messages[messages.length - 1];\n if (!message) {\n return false;\n }\n if (message.role !== \"assistant\") {\n return false;\n }\n const lastStepStartIndex = message.parts.reduce((lastIndex, part, index) => {\n return part.type === \"step-start\" ? index : lastIndex;\n }, -1);\n const lastStepToolInvocations = message.parts.slice(lastStepStartIndex + 1).filter(isToolOrDynamicToolUIPart).filter((part) => !part.providerExecuted);\n return lastStepToolInvocations.length > 0 && lastStepToolInvocations.every(\n (part) => part.state === \"output-available\" || part.state === \"output-error\"\n );\n}\n\n// src/ui/transform-text-to-ui-message-stream.ts\nfunction transformTextToUiMessageStream({\n stream\n}) {\n return stream.pipeThrough(\n new TransformStream({\n start(controller) {\n controller.enqueue({ type: \"start\" });\n controller.enqueue({ type: \"start-step\" });\n controller.enqueue({ type: \"text-start\", id: \"text-1\" });\n },\n async transform(part, controller) {\n controller.enqueue({ type: \"text-delta\", id: \"text-1\", delta: part });\n },\n async flush(controller) {\n controller.enqueue({ type: \"text-end\", id: \"text-1\" });\n controller.enqueue({ type: \"finish-step\" });\n controller.enqueue({ type: \"finish\" });\n }\n })\n );\n}\n\n// src/ui/text-stream-chat-transport.ts\nvar TextStreamChatTransport = class extends HttpChatTransport {\n constructor(options = {}) {\n super(options);\n }\n processResponseStream(stream) {\n return transformTextToUiMessageStream({\n stream: stream.pipeThrough(new TextDecoderStream())\n });\n }\n};\n\n// src/ui/validate-ui-messages.ts\nimport { TypeValidationError as TypeValidationError4 } from \"@ai-sdk/provider\";\nimport {\n lazyValidator as lazyValidator2,\n validateTypes as validateTypes2,\n zodSchema as zodSchema2\n} from \"@ai-sdk/provider-utils\";\nimport { z as z8 } from \"zod/v4\";\nvar uiMessagesSchema = lazyValidator2(\n () => zodSchema2(\n z8.array(\n z8.object({\n id: z8.string(),\n role: z8.enum([\"system\", \"user\", \"assistant\"]),\n metadata: z8.unknown().optional(),\n parts: z8.array(\n z8.union([\n z8.object({\n type: z8.literal(\"text\"),\n text: z8.string(),\n state: z8.enum([\"streaming\", \"done\"]).optional(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z8.object({\n type: z8.literal(\"reasoning\"),\n text: z8.string(),\n state: z8.enum([\"streaming\", \"done\"]).optional(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z8.object({\n type: z8.literal(\"source-url\"),\n sourceId: z8.string(),\n url: z8.string(),\n title: z8.string().optional(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z8.object({\n type: z8.literal(\"source-document\"),\n sourceId: z8.string(),\n mediaType: z8.string(),\n title: z8.string(),\n filename: z8.string().optional(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z8.object({\n type: z8.literal(\"file\"),\n mediaType: z8.string(),\n filename: z8.string().optional(),\n url: z8.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z8.object({\n type: z8.literal(\"step-start\")\n }),\n z8.object({\n type: z8.string().startsWith(\"data-\"),\n id: z8.string().optional(),\n data: z8.unknown()\n }),\n z8.object({\n type: z8.literal(\"dynamic-tool\"),\n toolName: z8.string(),\n toolCallId: z8.string(),\n state: z8.literal(\"input-streaming\"),\n input: z8.unknown().optional(),\n providerExecuted: z8.boolean().optional(),\n output: z8.never().optional(),\n errorText: z8.never().optional()\n }),\n z8.object({\n type: z8.literal(\"dynamic-tool\"),\n toolName: z8.string(),\n toolCallId: z8.string(),\n state: z8.literal(\"input-available\"),\n input: z8.unknown(),\n providerExecuted: z8.boolean().optional(),\n output: z8.never().optional(),\n errorText: z8.never().optional(),\n callProviderMetadata: providerMetadataSchema.optional()\n }),\n z8.object({\n type: z8.literal(\"dynamic-tool\"),\n toolName: z8.string(),\n toolCallId: z8.string(),\n state: z8.literal(\"output-available\"),\n input: z8.unknown(),\n providerExecuted: z8.boolean().optional(),\n output: z8.unknown(),\n errorText: z8.never().optional(),\n callProviderMetadata: providerMetadataSchema.optional(),\n preliminary: z8.boolean().optional()\n }),\n z8.object({\n type: z8.literal(\"dynamic-tool\"),\n toolName: z8.string(),\n toolCallId: z8.string(),\n state: z8.literal(\"output-error\"),\n input: z8.unknown(),\n providerExecuted: z8.boolean().optional(),\n output: z8.never().optional(),\n errorText: z8.string(),\n callProviderMetadata: providerMetadataSchema.optional()\n }),\n z8.object({\n type: z8.string().startsWith(\"tool-\"),\n toolCallId: z8.string(),\n state: z8.literal(\"input-streaming\"),\n providerExecuted: z8.boolean().optional(),\n input: z8.unknown().optional(),\n output: z8.never().optional(),\n errorText: z8.never().optional(),\n approval: z8.never().optional()\n }),\n z8.object({\n type: z8.string().startsWith(\"tool-\"),\n toolCallId: z8.string(),\n state: z8.literal(\"input-available\"),\n providerExecuted: z8.boolean().optional(),\n input: z8.unknown(),\n output: z8.never().optional(),\n errorText: z8.never().optional(),\n callProviderMetadata: providerMetadataSchema.optional(),\n approval: z8.never().optional()\n }),\n z8.object({\n type: z8.string().startsWith(\"tool-\"),\n toolCallId: z8.string(),\n state: z8.literal(\"approval-requested\"),\n input: z8.unknown(),\n providerExecuted: z8.boolean().optional(),\n output: z8.never().optional(),\n errorText: z8.never().optional(),\n callProviderMetadata: providerMetadataSchema.optional(),\n approval: z8.object({\n id: z8.string(),\n approved: z8.never().optional(),\n reason: z8.never().optional()\n })\n }),\n z8.object({\n type: z8.string().startsWith(\"tool-\"),\n toolCallId: z8.string(),\n state: z8.literal(\"approval-responded\"),\n input: z8.unknown(),\n providerExecuted: z8.boolean().optional(),\n output: z8.never().optional(),\n errorText: z8.never().optional(),\n callProviderMetadata: providerMetadataSchema.optional(),\n approval: z8.object({\n id: z8.string(),\n approved: z8.boolean(),\n reason: z8.string().optional()\n })\n }),\n z8.object({\n type: z8.string().startsWith(\"tool-\"),\n toolCallId: z8.string(),\n state: z8.literal(\"output-available\"),\n providerExecuted: z8.boolean().optional(),\n input: z8.unknown(),\n output: z8.unknown(),\n errorText: z8.never().optional(),\n callProviderMetadata: providerMetadataSchema.optional(),\n preliminary: z8.boolean().optional(),\n approval: z8.object({\n id: z8.string(),\n approved: z8.literal(true),\n reason: z8.string().optional()\n }).optional()\n }),\n z8.object({\n type: z8.string().startsWith(\"tool-\"),\n toolCallId: z8.string(),\n state: z8.literal(\"output-error\"),\n providerExecuted: z8.boolean().optional(),\n input: z8.unknown(),\n output: z8.never().optional(),\n errorText: z8.string(),\n callProviderMetadata: providerMetadataSchema.optional(),\n approval: z8.object({\n id: z8.string(),\n approved: z8.literal(true),\n reason: z8.string().optional()\n }).optional()\n }),\n z8.object({\n type: z8.string().startsWith(\"tool-\"),\n toolCallId: z8.string(),\n state: z8.literal(\"output-denied\"),\n providerExecuted: z8.boolean().optional(),\n input: z8.unknown(),\n output: z8.never().optional(),\n errorText: z8.never().optional(),\n callProviderMetadata: providerMetadataSchema.optional(),\n approval: z8.object({\n id: z8.string(),\n approved: z8.literal(false),\n reason: z8.string().optional()\n })\n })\n ])\n )\n })\n )\n )\n);\nasync function safeValidateUIMessages({\n messages,\n metadataSchema,\n dataSchemas,\n tools\n}) {\n try {\n if (messages == null) {\n return {\n success: false,\n error: new InvalidArgumentError({\n parameter: \"messages\",\n value: messages,\n message: \"messages parameter must be provided\"\n })\n };\n }\n const validatedMessages = await validateTypes2({\n value: messages,\n schema: uiMessagesSchema\n });\n if (metadataSchema) {\n for (const message of validatedMessages) {\n await validateTypes2({\n value: message.metadata,\n schema: metadataSchema\n });\n }\n }\n if (dataSchemas) {\n for (const message of validatedMessages) {\n const dataParts = message.parts.filter(\n (part) => part.type.startsWith(\"data-\")\n );\n for (const dataPart of dataParts) {\n const dataName = dataPart.type.slice(5);\n const dataSchema = dataSchemas[dataName];\n if (!dataSchema) {\n return {\n success: false,\n error: new TypeValidationError4({\n value: dataPart.data,\n cause: `No data schema found for data part ${dataName}`\n })\n };\n }\n await validateTypes2({\n value: dataPart.data,\n schema: dataSchema\n });\n }\n }\n }\n if (tools) {\n for (const message of validatedMessages) {\n const toolParts = message.parts.filter(\n (part) => part.type.startsWith(\"tool-\")\n );\n for (const toolPart of toolParts) {\n const toolName = toolPart.type.slice(5);\n const tool2 = tools[toolName];\n if (!tool2) {\n return {\n success: false,\n error: new TypeValidationError4({\n value: toolPart.input,\n cause: `No tool schema found for tool part ${toolName}`\n })\n };\n }\n if (toolPart.state === \"input-available\" || toolPart.state === \"output-available\" || toolPart.state === \"output-error\") {\n await validateTypes2({\n value: toolPart.input,\n schema: tool2.inputSchema\n });\n }\n if (toolPart.state === \"output-available\" && tool2.outputSchema) {\n await validateTypes2({\n value: toolPart.output,\n schema: tool2.outputSchema\n });\n }\n }\n }\n }\n return {\n success: true,\n data: validatedMessages\n };\n } catch (error) {\n const err = error;\n return {\n success: false,\n error: err\n };\n }\n}\nasync function validateUIMessages({\n messages,\n metadataSchema,\n dataSchemas,\n tools\n}) {\n const response = await safeValidateUIMessages({\n messages,\n metadataSchema,\n dataSchemas,\n tools\n });\n if (!response.success)\n throw response.error;\n return response.data;\n}\n\n// src/ui-message-stream/create-ui-message-stream.ts\nimport {\n generateId as generateIdFunc2,\n getErrorMessage as getErrorMessage8\n} from \"@ai-sdk/provider-utils\";\nfunction createUIMessageStream({\n execute,\n onError = getErrorMessage8,\n originalMessages,\n onFinish,\n generateId: generateId3 = generateIdFunc2\n}) {\n let controller;\n const ongoingStreamPromises = [];\n const stream = new ReadableStream({\n start(controllerArg) {\n controller = controllerArg;\n }\n });\n function safeEnqueue(data) {\n try {\n controller.enqueue(data);\n } catch (error) {\n }\n }\n try {\n const result = execute({\n writer: {\n write(part) {\n safeEnqueue(part);\n },\n merge(streamArg) {\n ongoingStreamPromises.push(\n (async () => {\n const reader = streamArg.getReader();\n while (true) {\n const { done, value } = await reader.read();\n if (done)\n break;\n safeEnqueue(value);\n }\n })().catch((error) => {\n safeEnqueue({\n type: \"error\",\n errorText: onError(error)\n });\n })\n );\n },\n onError\n }\n });\n if (result) {\n ongoingStreamPromises.push(\n result.catch((error) => {\n safeEnqueue({\n type: \"error\",\n errorText: onError(error)\n });\n })\n );\n }\n } catch (error) {\n safeEnqueue({\n type: \"error\",\n errorText: onError(error)\n });\n }\n const waitForStreams = new Promise(async (resolve2) => {\n while (ongoingStreamPromises.length > 0) {\n await ongoingStreamPromises.shift();\n }\n resolve2();\n });\n waitForStreams.finally(() => {\n try {\n controller.close();\n } catch (error) {\n }\n });\n return handleUIMessageStreamFinish({\n stream,\n messageId: generateId3(),\n originalMessages,\n onFinish,\n onError\n });\n}\n\n// src/ui-message-stream/read-ui-message-stream.ts\nfunction readUIMessageStream({\n message,\n stream,\n onError,\n terminateOnError = false\n}) {\n var _a16;\n let controller;\n let hasErrored = false;\n const outputStream = new ReadableStream({\n start(controllerParam) {\n controller = controllerParam;\n }\n });\n const state = createStreamingUIMessageState({\n messageId: (_a16 = message == null ? void 0 : message.id) != null ? _a16 : \"\",\n lastMessage: message\n });\n const handleError = (error) => {\n onError == null ? void 0 : onError(error);\n if (!hasErrored && terminateOnError) {\n hasErrored = true;\n controller == null ? void 0 : controller.error(error);\n }\n };\n consumeStream({\n stream: processUIMessageStream({\n stream,\n runUpdateMessageJob(job) {\n return job({\n state,\n write: () => {\n controller == null ? void 0 : controller.enqueue(structuredClone(state.message));\n }\n });\n },\n onError: handleError\n }),\n onError: handleError\n }).finally(() => {\n if (!hasErrored) {\n controller == null ? void 0 : controller.close();\n }\n });\n return createAsyncIterableStream(outputStream);\n}\nexport {\n AISDKError17 as AISDKError,\n APICallError,\n AbstractChat,\n DefaultChatTransport,\n DownloadError,\n EmptyResponseBodyError,\n Agent as Experimental_Agent,\n HttpChatTransport,\n InvalidArgumentError,\n InvalidDataContentError,\n InvalidMessageRoleError,\n InvalidPromptError,\n InvalidResponseDataError,\n InvalidStreamPartError,\n InvalidToolInputError,\n JSONParseError,\n JsonToSseTransformStream,\n LoadAPIKeyError,\n LoadSettingError,\n MessageConversionError,\n NoContentGeneratedError,\n NoImageGeneratedError,\n NoObjectGeneratedError,\n NoOutputGeneratedError,\n NoOutputSpecifiedError,\n NoSpeechGeneratedError,\n NoSuchModelError,\n NoSuchProviderError,\n NoSuchToolError,\n output_exports as Output,\n RetryError,\n SerialJobExecutor,\n TextStreamChatTransport,\n TooManyEmbeddingValuesForCallError,\n ToolCallRepairError,\n TypeValidationError,\n UI_MESSAGE_STREAM_HEADERS,\n UnsupportedFunctionalityError,\n UnsupportedModelVersionError,\n asSchema5 as asSchema,\n assistantModelMessageSchema,\n callCompletionApi,\n consumeStream,\n convertFileListToFileUIParts,\n convertToCoreMessages,\n convertToModelMessages,\n coreAssistantMessageSchema,\n coreMessageSchema,\n coreSystemMessageSchema,\n coreToolMessageSchema,\n coreUserMessageSchema,\n cosineSimilarity,\n createGateway,\n createIdGenerator5 as createIdGenerator,\n createProviderRegistry,\n createTextStreamResponse,\n createUIMessageStream,\n createUIMessageStreamResponse,\n customProvider,\n defaultSettingsMiddleware,\n dynamicTool,\n embed,\n embedMany,\n experimental_createProviderRegistry,\n experimental_customProvider,\n generateImage as experimental_generateImage,\n generateSpeech as experimental_generateSpeech,\n transcribe as experimental_transcribe,\n extractReasoningMiddleware,\n gateway2 as gateway,\n generateId2 as generateId,\n generateObject,\n generateText,\n getTextFromDataUrl,\n getToolName,\n getToolOrDynamicToolName,\n hasToolCall,\n isDataUIPart,\n isDeepEqualData,\n isFileUIPart,\n isReasoningUIPart,\n isTextUIPart,\n isToolOrDynamicToolUIPart,\n isToolUIPart,\n jsonSchema,\n lastAssistantMessageIsCompleteWithToolCalls,\n modelMessageSchema,\n parseJsonEventStream3 as parseJsonEventStream,\n parsePartialJson,\n pipeTextStreamToResponse,\n pipeUIMessageStreamToResponse,\n pruneMessages,\n readUIMessageStream,\n safeValidateUIMessages,\n simulateReadableStream,\n simulateStreamingMiddleware,\n smoothStream,\n stepCountIs,\n streamObject,\n streamText,\n systemModelMessageSchema,\n tool,\n toolModelMessageSchema,\n uiMessageChunkSchema,\n userModelMessageSchema,\n validateUIMessages,\n wrapLanguageModel,\n wrapProvider,\n zodSchema3 as zodSchema\n};\n//# sourceMappingURL=index.mjs.map"
62
57
  ],
63
- "mappings": "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",
64
- "debugId": "55ADC100E42D4E1B64756E2164756E21",
58
+ "mappings": "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",
59
+ "debugId": "44EB330AA6A1376C64756E2164756E21",
65
60
  "names": []
66
61
  }