@keystrokehq/keystroke 0.1.66 → 0.1.68

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 (31) hide show
  1. package/dist/agent-types.cjs +1 -1
  2. package/dist/agent-types.mjs +1 -1
  3. package/dist/agent.cjs +3 -3
  4. package/dist/agent.mjs +3 -3
  5. package/dist/{context-compaction-B2veGznA-BwkVoU7M.cjs → context-compaction-B2veGznA-C688EPuR.cjs} +2 -2
  6. package/dist/{context-compaction-B2veGznA-BwkVoU7M.cjs.map → context-compaction-B2veGznA-C688EPuR.cjs.map} +1 -1
  7. package/dist/{context-compaction-B2veGznA-C7mYE8OR.mjs → context-compaction-B2veGznA-CG-VGKtE.mjs} +2 -2
  8. package/dist/{context-compaction-B2veGznA-C7mYE8OR.mjs.map → context-compaction-B2veGznA-CG-VGKtE.mjs.map} +1 -1
  9. package/dist/{dist-Dsbh3YDr.mjs → dist-BIwsF7yy.mjs} +2 -2
  10. package/dist/{dist-Dsbh3YDr.mjs.map → dist-BIwsF7yy.mjs.map} +1 -1
  11. package/dist/dist-BTO9TriT.cjs.map +1 -1
  12. package/dist/dist-D52VUEv_.mjs.map +1 -1
  13. package/dist/{dist-CaJB7b-E.mjs → dist-Dy7p3EAF.mjs} +4 -2
  14. package/dist/dist-Dy7p3EAF.mjs.map +1 -0
  15. package/dist/{dist-CL7JwqCm.cjs → dist-YD2cpwXg.cjs} +2 -2
  16. package/dist/{dist-CL7JwqCm.cjs.map → dist-YD2cpwXg.cjs.map} +1 -1
  17. package/dist/{dist-CvuQJFOO.cjs → dist-wO8x431H.cjs} +4 -2
  18. package/dist/dist-wO8x431H.cjs.map +1 -0
  19. package/dist/index-BolOkiNw.d.mts.map +1 -1
  20. package/dist/index-GJs4NjSJ.d.cts.map +1 -1
  21. package/dist/{token--TO9S99D.mjs → token-DL31KIHH.mjs} +2 -2
  22. package/dist/{token--TO9S99D.mjs.map → token-DL31KIHH.mjs.map} +1 -1
  23. package/dist/{token-C_qVPKh4.cjs → token-DYGYwDdi.cjs} +2 -2
  24. package/dist/{token-C_qVPKh4.cjs.map → token-DYGYwDdi.cjs.map} +1 -1
  25. package/dist/trigger.cjs +1 -1
  26. package/dist/trigger.mjs +1 -1
  27. package/dist/workflow.cjs +1 -1
  28. package/dist/workflow.mjs +1 -1
  29. package/package.json +1 -1
  30. package/dist/dist-CaJB7b-E.mjs.map +0 -1
  31. package/dist/dist-CvuQJFOO.cjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"dist-CaJB7b-E.mjs","names":["ForeignKeyBuilder","ForeignKey","uniqueKeyName","ForeignKeyBuilder","uniqueKeyName","textDecoder","customType","integer","json","numeric","real","text","InlineForeignKeys","IndexBuilderOn","IndexBuilder","Index","index","uniqueIndex","textDecoder","text","serializeSpanError","require","text","integer","uniqueIndex","integer$1","uniqueIndex$1","index","index$1","eq$1","and$1","max$1","inArray$1","marker","symbol","_a","_b","name","marker2","symbol2","_a2","_b2","name2","marker3","symbol3","_a3","_b3","name3","marker4","symbol4","_a4","_b4","InvalidArgumentError","name4","marker5","symbol5","_a5","_b5","name5","marker6","symbol6","_a6","_b6","name6","marker7","symbol7","_a7","_b7","name7","marker8","symbol8","_a8","_b8","name8","marker9","symbol9","_a9","_b9","name9","marker10","symbol10","_a10","_b10","name10","marker11","symbol11","_a11","name11","marker12","symbol12","_a12","name12","marker13","symbol13","_a13","name13","marker14","symbol14","_a14","name14","marker15","symbol15","_a15","atob","btoa","name","marker","symbol","_a","_b","InvalidArgumentError","VERSION","APICallError2","ZodFirstPartyTypeKind2","ZodFirstPartyTypeKind3","TypeValidationError2","TypeValidationError3","APICallError3","resolve","APICallError4","fromSymbol","import_os","fs","path","symbol","_a","name","marker2","symbol2","_a2","name2","marker3","symbol3","_a3","name3","marker4","symbol4","_a4","name4","marker5","symbol5","z","_a5","name5","marker6","symbol6","_a6","name6","marker7","symbol7","_a7","name7","marker8","symbol8","_a8","name8","marker9","symbol9","_a9","lazySchema2","zodSchema2","z2","name9","marker10","symbol10","_a10","safeValidateTypes2","lazySchema3","zodSchema3","z3","resolve","z4","lazySchema4","zodSchema4","getFromApi2","resolve2","createJsonResponseHandler2","createJsonErrorResponseHandler2","z5","lazySchema5","zodSchema5","getFromApi3","resolve3","createJsonResponseHandler3","createJsonErrorResponseHandler3","z6","lazySchema6","zodSchema6","resolve4","createJsonResponseHandler4","z7","createJsonErrorResponseHandler4","WORKFLOW_SERIALIZE2","serializeModelOptions2","WORKFLOW_DESERIALIZE2","resolve5","postJsonToApi2","combineHeaders2","createJsonResponseHandler5","createJsonErrorResponseHandler5","z8","lazySchema7","zodSchema7","WORKFLOW_SERIALIZE3","serializeModelOptions3","WORKFLOW_DESERIALIZE3","resolve6","postJsonToApi3","combineHeaders3","createJsonResponseHandler6","createJsonErrorResponseHandler6","z9","resolve7","postJsonToApi4","combineHeaders4","APICallError2","createJsonErrorResponseHandler7","z10","convertUint8ArrayToBase642","resolve8","postJsonToApi5","combineHeaders5","createJsonResponseHandler7","createJsonErrorResponseHandler8","z11","lazySchema8","zodSchema8","resolve9","postJsonToApi6","combineHeaders6","createJsonResponseHandler8","createJsonErrorResponseHandler9","z12","resolve10","postJsonToApi7","combineHeaders7","convertUint8ArrayToBase643","createJsonResponseHandler9","createJsonErrorResponseHandler10","z13","lazySchema9","zodSchema9","z14","createProviderExecutedToolFactory2","lazySchema10","zodSchema10","z15","createProviderExecutedToolFactory3","lazySchema11","zodSchema11","z16","VERSION","z17","postJsonToApi8","createJsonResponseHandler10","createJsonErrorResponseHandler11","AISDKError3","AISDKError4","AISDKError5","AISDKError6","AISDKError7","AISDKError9","AISDKError10","AISDKError14","AISDKError15","getErrorMessage2","AISDKError16","AISDKError17","AISDKError18","AISDKError19","AISDKError20","AISDKError21","DownloadError2","_exhaustiveCheck","getErrorMessage3","exhaustiveCheck","z","z2","z3","isBuffer2","z4","InvalidPromptError2","asArray2","z5","AISDKError23","asArray3","APICallError2","getErrorMessage4","asSchema2","resolve","safeParseJSON2","safeValidateTypes2","TypeValidationError2","asSchema3","safeParseJSON3","safeValidateTypes3","asArray4","convertUint8ArrayToBase642","convertBase64ToUint8Array2","isExecutableTool2","safeValidateTypes4","asSchema4","asArray5","withUserAgentSuffix2","getErrorMessage5","z6","validateTypes2","createIdGenerator2","getErrorMessage6","createIdGenerator3","asArray6","getErrorMessage7","isAbortError2","filterNullable2","UnsupportedFunctionalityError2","validateTypes3","withUserAgentSuffix3","z7","lazySchema2","zodSchema2","createIdGenerator4","createIdGenerator5","UnsupportedFunctionalityError3","safeValidateTypes5","TypeValidationError4","asSchema5","safeParseJSON4","JSONParseError2","TypeValidationError5","createIdGenerator6","withUserAgentSuffix7","createIdGenerator7","asArray7","createIdGenerator8"],"sources":["../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/entity.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/column.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/column-builder.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/table.utils.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/foreign-keys.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/tracing-utils.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/unique-constraint.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/utils/array.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/common.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/enum.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/subquery.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/tracing.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/view-common.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/table.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/sql/sql.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/utils.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/int.common.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/bigint.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/bigserial.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/boolean.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/char.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/cidr.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/custom.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/date.common.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/date.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/double-precision.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/inet.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/integer.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/interval.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/json.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/jsonb.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/line.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/macaddr.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/macaddr8.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/numeric.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/point.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/postgis_extension/utils.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/postgis_extension/geometry.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/real.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/serial.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/smallint.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/smallserial.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/text.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/time.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/timestamp.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/uuid.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/varchar.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/vector_extension/bit.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/vector_extension/halfvec.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/vector_extension/sparsevec.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/vector_extension/vector.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/columns/all.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/table.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/pg-core/indexes.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/sql/expressions/conditions.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/sql/expressions/select.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/sql/functions/aggregate.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/sqlite-core/foreign-keys.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/sqlite-core/unique-constraint.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/sqlite-core/columns/common.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/sqlite-core/columns/blob.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/sqlite-core/columns/custom.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/sqlite-core/columns/integer.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/sqlite-core/columns/numeric.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/sqlite-core/columns/real.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/sqlite-core/columns/text.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/sqlite-core/columns/all.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/sqlite-core/table.js","../../../node_modules/.pnpm/drizzle-orm@0.45.2_@opentelemetry+api@1.9.1_@types+better-sqlite3@7.6.13_@types+pg@8.20_77911661b3ede76946c974aead4d265f/node_modules/drizzle-orm/sqlite-core/indexes.js","../../tracing/dist/index.mjs","../../database/dist/index.mjs","../../../node_modules/.pnpm/@ai-sdk+provider@4.0.0/node_modules/@ai-sdk/provider/dist/index.js","../../../node_modules/.pnpm/eventsource-parser@3.0.8/node_modules/eventsource-parser/dist/index.js","../../../node_modules/.pnpm/eventsource-parser@3.0.8/node_modules/eventsource-parser/dist/stream.js","../../../node_modules/.pnpm/@workflow+serde@4.1.0/node_modules/@workflow/serde/dist/index.js","../../../node_modules/.pnpm/@ai-sdk+provider-utils@5.0.1_zod@4.4.3/node_modules/@ai-sdk/provider-utils/dist/index.js","../../../node_modules/.pnpm/@vercel+oidc@3.2.0/node_modules/@vercel/oidc/dist/get-context.js","../../../node_modules/.pnpm/@vercel+oidc@3.2.0/node_modules/@vercel/oidc/dist/token-error.js","../../../node_modules/.pnpm/@vercel+oidc@3.2.0/node_modules/@vercel/oidc/dist/get-vercel-oidc-token.js","../../../node_modules/.pnpm/@vercel+oidc@3.2.0/node_modules/@vercel/oidc/dist/auth-errors.js","../../../node_modules/.pnpm/@vercel+oidc@3.2.0/node_modules/@vercel/oidc/dist/token-io.js","../../../node_modules/.pnpm/@vercel+oidc@3.2.0/node_modules/@vercel/oidc/dist/auth-config.js","../../../node_modules/.pnpm/@vercel+oidc@3.2.0/node_modules/@vercel/oidc/dist/oauth.js","../../../node_modules/.pnpm/@vercel+oidc@3.2.0/node_modules/@vercel/oidc/dist/token-util.js","../../../node_modules/.pnpm/@vercel+oidc@3.2.0/node_modules/@vercel/oidc/dist/index.js","../../../node_modules/.pnpm/@ai-sdk+gateway@4.0.4_zod@4.4.3/node_modules/@ai-sdk/gateway/dist/index.js","../../../node_modules/.pnpm/ai@7.0.4_zod@4.4.3/node_modules/ai/dist/index.js"],"sourcesContent":["const entityKind = Symbol.for(\"drizzle:entityKind\");\nconst hasOwnEntityKind = Symbol.for(\"drizzle:hasOwnEntityKind\");\nfunction is(value, type) {\n if (!value || typeof value !== \"object\") {\n return false;\n }\n if (value instanceof type) {\n return true;\n }\n if (!Object.prototype.hasOwnProperty.call(type, entityKind)) {\n throw new Error(\n `Class \"${type.name ?? \"<unknown>\"}\" doesn't look like a Drizzle entity. If this is incorrect and the class is provided by Drizzle, please report this as a bug.`\n );\n }\n let cls = Object.getPrototypeOf(value).constructor;\n if (cls) {\n while (cls) {\n if (entityKind in cls && cls[entityKind] === type[entityKind]) {\n return true;\n }\n cls = Object.getPrototypeOf(cls);\n }\n }\n return false;\n}\nexport {\n entityKind,\n hasOwnEntityKind,\n is\n};\n//# sourceMappingURL=entity.js.map","import { entityKind } from \"./entity.js\";\nclass Column {\n constructor(table, config) {\n this.table = table;\n this.config = config;\n this.name = config.name;\n this.keyAsName = config.keyAsName;\n this.notNull = config.notNull;\n this.default = config.default;\n this.defaultFn = config.defaultFn;\n this.onUpdateFn = config.onUpdateFn;\n this.hasDefault = config.hasDefault;\n this.primary = config.primaryKey;\n this.isUnique = config.isUnique;\n this.uniqueName = config.uniqueName;\n this.uniqueType = config.uniqueType;\n this.dataType = config.dataType;\n this.columnType = config.columnType;\n this.generated = config.generated;\n this.generatedIdentity = config.generatedIdentity;\n }\n static [entityKind] = \"Column\";\n name;\n keyAsName;\n primary;\n notNull;\n default;\n defaultFn;\n onUpdateFn;\n hasDefault;\n isUnique;\n uniqueName;\n uniqueType;\n dataType;\n columnType;\n enumValues = void 0;\n generated = void 0;\n generatedIdentity = void 0;\n config;\n mapFromDriverValue(value) {\n return value;\n }\n mapToDriverValue(value) {\n return value;\n }\n // ** @internal */\n shouldDisableInsert() {\n return this.config.generated !== void 0 && this.config.generated.type !== \"byDefault\";\n }\n}\nexport {\n Column\n};\n//# sourceMappingURL=column.js.map","import { entityKind } from \"./entity.js\";\nclass ColumnBuilder {\n static [entityKind] = \"ColumnBuilder\";\n config;\n constructor(name, dataType, columnType) {\n this.config = {\n name,\n keyAsName: name === \"\",\n notNull: false,\n default: void 0,\n hasDefault: false,\n primaryKey: false,\n isUnique: false,\n uniqueName: void 0,\n uniqueType: void 0,\n dataType,\n columnType,\n generated: void 0\n };\n }\n /**\n * Changes the data type of the column. Commonly used with `json` columns. Also, useful for branded types.\n *\n * @example\n * ```ts\n * const users = pgTable('users', {\n * \tid: integer('id').$type<UserId>().primaryKey(),\n * \tdetails: json('details').$type<UserDetails>().notNull(),\n * });\n * ```\n */\n $type() {\n return this;\n }\n /**\n * Adds a `not null` clause to the column definition.\n *\n * Affects the `select` model of the table - columns *without* `not null` will be nullable on select.\n */\n notNull() {\n this.config.notNull = true;\n return this;\n }\n /**\n * Adds a `default <value>` clause to the column definition.\n *\n * Affects the `insert` model of the table - columns *with* `default` are optional on insert.\n *\n * If you need to set a dynamic default value, use {@link $defaultFn} instead.\n */\n default(value) {\n this.config.default = value;\n this.config.hasDefault = true;\n return this;\n }\n /**\n * Adds a dynamic default value to the column.\n * The function will be called when the row is inserted, and the returned value will be used as the column value.\n *\n * **Note:** This value does not affect the `drizzle-kit` behavior, it is only used at runtime in `drizzle-orm`.\n */\n $defaultFn(fn) {\n this.config.defaultFn = fn;\n this.config.hasDefault = true;\n return this;\n }\n /**\n * Alias for {@link $defaultFn}.\n */\n $default = this.$defaultFn;\n /**\n * Adds a dynamic update value to the column.\n * The function will be called when the row is updated, and the returned value will be used as the column value if none is provided.\n * If no `default` (or `$defaultFn`) value is provided, the function will be called when the row is inserted as well, and the returned value will be used as the column value.\n *\n * **Note:** This value does not affect the `drizzle-kit` behavior, it is only used at runtime in `drizzle-orm`.\n */\n $onUpdateFn(fn) {\n this.config.onUpdateFn = fn;\n this.config.hasDefault = true;\n return this;\n }\n /**\n * Alias for {@link $onUpdateFn}.\n */\n $onUpdate = this.$onUpdateFn;\n /**\n * Adds a `primary key` clause to the column definition. This implicitly makes the column `not null`.\n *\n * In SQLite, `integer primary key` implicitly makes the column auto-incrementing.\n */\n primaryKey() {\n this.config.primaryKey = true;\n this.config.notNull = true;\n return this;\n }\n /** @internal Sets the name of the column to the key within the table definition if a name was not given. */\n setName(name) {\n if (this.config.name !== \"\") return;\n this.config.name = name;\n }\n}\nexport {\n ColumnBuilder\n};\n//# sourceMappingURL=column-builder.js.map","const TableName = Symbol.for(\"drizzle:Name\");\nexport {\n TableName\n};\n//# sourceMappingURL=table.utils.js.map","import { entityKind } from \"../entity.js\";\nimport { TableName } from \"../table.utils.js\";\nclass ForeignKeyBuilder {\n static [entityKind] = \"PgForeignKeyBuilder\";\n /** @internal */\n reference;\n /** @internal */\n _onUpdate = \"no action\";\n /** @internal */\n _onDelete = \"no action\";\n constructor(config, actions) {\n this.reference = () => {\n const { name, columns, foreignColumns } = config();\n return { name, columns, foreignTable: foreignColumns[0].table, foreignColumns };\n };\n if (actions) {\n this._onUpdate = actions.onUpdate;\n this._onDelete = actions.onDelete;\n }\n }\n onUpdate(action) {\n this._onUpdate = action === void 0 ? \"no action\" : action;\n return this;\n }\n onDelete(action) {\n this._onDelete = action === void 0 ? \"no action\" : action;\n return this;\n }\n /** @internal */\n build(table) {\n return new ForeignKey(table, this);\n }\n}\nclass ForeignKey {\n constructor(table, builder) {\n this.table = table;\n this.reference = builder.reference;\n this.onUpdate = builder._onUpdate;\n this.onDelete = builder._onDelete;\n }\n static [entityKind] = \"PgForeignKey\";\n reference;\n onUpdate;\n onDelete;\n getName() {\n const { name, columns, foreignColumns } = this.reference();\n const columnNames = columns.map((column) => column.name);\n const foreignColumnNames = foreignColumns.map((column) => column.name);\n const chunks = [\n this.table[TableName],\n ...columnNames,\n foreignColumns[0].table[TableName],\n ...foreignColumnNames\n ];\n return name ?? `${chunks.join(\"_\")}_fk`;\n }\n}\nfunction foreignKey(config) {\n function mappedConfig() {\n const { name, columns, foreignColumns } = config;\n return {\n name,\n columns,\n foreignColumns\n };\n }\n return new ForeignKeyBuilder(mappedConfig);\n}\nexport {\n ForeignKey,\n ForeignKeyBuilder,\n foreignKey\n};\n//# sourceMappingURL=foreign-keys.js.map","function iife(fn, ...args) {\n return fn(...args);\n}\nexport {\n iife\n};\n//# sourceMappingURL=tracing-utils.js.map","import { entityKind } from \"../entity.js\";\nimport { TableName } from \"../table.utils.js\";\nfunction unique(name) {\n return new UniqueOnConstraintBuilder(name);\n}\nfunction uniqueKeyName(table, columns) {\n return `${table[TableName]}_${columns.join(\"_\")}_unique`;\n}\nclass UniqueConstraintBuilder {\n constructor(columns, name) {\n this.name = name;\n this.columns = columns;\n }\n static [entityKind] = \"PgUniqueConstraintBuilder\";\n /** @internal */\n columns;\n /** @internal */\n nullsNotDistinctConfig = false;\n nullsNotDistinct() {\n this.nullsNotDistinctConfig = true;\n return this;\n }\n /** @internal */\n build(table) {\n return new UniqueConstraint(table, this.columns, this.nullsNotDistinctConfig, this.name);\n }\n}\nclass UniqueOnConstraintBuilder {\n static [entityKind] = \"PgUniqueOnConstraintBuilder\";\n /** @internal */\n name;\n constructor(name) {\n this.name = name;\n }\n on(...columns) {\n return new UniqueConstraintBuilder(columns, this.name);\n }\n}\nclass UniqueConstraint {\n constructor(table, columns, nullsNotDistinct, name) {\n this.table = table;\n this.columns = columns;\n this.name = name ?? uniqueKeyName(this.table, this.columns.map((column) => column.name));\n this.nullsNotDistinct = nullsNotDistinct;\n }\n static [entityKind] = \"PgUniqueConstraint\";\n columns;\n name;\n nullsNotDistinct = false;\n getName() {\n return this.name;\n }\n}\nexport {\n UniqueConstraint,\n UniqueConstraintBuilder,\n UniqueOnConstraintBuilder,\n unique,\n uniqueKeyName\n};\n//# sourceMappingURL=unique-constraint.js.map","function parsePgArrayValue(arrayString, startFrom, inQuotes) {\n for (let i = startFrom; i < arrayString.length; i++) {\n const char = arrayString[i];\n if (char === \"\\\\\") {\n i++;\n continue;\n }\n if (char === '\"') {\n return [arrayString.slice(startFrom, i).replace(/\\\\/g, \"\"), i + 1];\n }\n if (inQuotes) {\n continue;\n }\n if (char === \",\" || char === \"}\") {\n return [arrayString.slice(startFrom, i).replace(/\\\\/g, \"\"), i];\n }\n }\n return [arrayString.slice(startFrom).replace(/\\\\/g, \"\"), arrayString.length];\n}\nfunction parsePgNestedArray(arrayString, startFrom = 0) {\n const result = [];\n let i = startFrom;\n let lastCharIsComma = false;\n while (i < arrayString.length) {\n const char = arrayString[i];\n if (char === \",\") {\n if (lastCharIsComma || i === startFrom) {\n result.push(\"\");\n }\n lastCharIsComma = true;\n i++;\n continue;\n }\n lastCharIsComma = false;\n if (char === \"\\\\\") {\n i += 2;\n continue;\n }\n if (char === '\"') {\n const [value2, startFrom2] = parsePgArrayValue(arrayString, i + 1, true);\n result.push(value2);\n i = startFrom2;\n continue;\n }\n if (char === \"}\") {\n return [result, i + 1];\n }\n if (char === \"{\") {\n const [value2, startFrom2] = parsePgNestedArray(arrayString, i + 1);\n result.push(value2);\n i = startFrom2;\n continue;\n }\n const [value, newStartFrom] = parsePgArrayValue(arrayString, i, false);\n result.push(value);\n i = newStartFrom;\n }\n return [result, i];\n}\nfunction parsePgArray(arrayString) {\n const [result] = parsePgNestedArray(arrayString, 1);\n return result;\n}\nfunction makePgArray(array) {\n return `{${array.map((item) => {\n if (Array.isArray(item)) {\n return makePgArray(item);\n }\n if (typeof item === \"string\") {\n return `\"${item.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"')}\"`;\n }\n return `${item}`;\n }).join(\",\")}}`;\n}\nexport {\n makePgArray,\n parsePgArray,\n parsePgNestedArray\n};\n//# sourceMappingURL=array.js.map","import { ColumnBuilder } from \"../../column-builder.js\";\nimport { Column } from \"../../column.js\";\nimport { entityKind, is } from \"../../entity.js\";\nimport { ForeignKeyBuilder } from \"../foreign-keys.js\";\nimport { iife } from \"../../tracing-utils.js\";\nimport { uniqueKeyName } from \"../unique-constraint.js\";\nimport { makePgArray, parsePgArray } from \"../utils/array.js\";\nclass PgColumnBuilder extends ColumnBuilder {\n foreignKeyConfigs = [];\n static [entityKind] = \"PgColumnBuilder\";\n array(size) {\n return new PgArrayBuilder(this.config.name, this, size);\n }\n references(ref, actions = {}) {\n this.foreignKeyConfigs.push({ ref, actions });\n return this;\n }\n unique(name, config) {\n this.config.isUnique = true;\n this.config.uniqueName = name;\n this.config.uniqueType = config?.nulls;\n return this;\n }\n generatedAlwaysAs(as) {\n this.config.generated = {\n as,\n type: \"always\",\n mode: \"stored\"\n };\n return this;\n }\n /** @internal */\n buildForeignKeys(column, table) {\n return this.foreignKeyConfigs.map(({ ref, actions }) => {\n return iife(\n (ref2, actions2) => {\n const builder = new ForeignKeyBuilder(() => {\n const foreignColumn = ref2();\n return { columns: [column], foreignColumns: [foreignColumn] };\n });\n if (actions2.onUpdate) {\n builder.onUpdate(actions2.onUpdate);\n }\n if (actions2.onDelete) {\n builder.onDelete(actions2.onDelete);\n }\n return builder.build(table);\n },\n ref,\n actions\n );\n });\n }\n /** @internal */\n buildExtraConfigColumn(table) {\n return new ExtraConfigColumn(table, this.config);\n }\n}\nclass PgColumn extends Column {\n constructor(table, config) {\n if (!config.uniqueName) {\n config.uniqueName = uniqueKeyName(table, [config.name]);\n }\n super(table, config);\n this.table = table;\n }\n static [entityKind] = \"PgColumn\";\n}\nclass ExtraConfigColumn extends PgColumn {\n static [entityKind] = \"ExtraConfigColumn\";\n getSQLType() {\n return this.getSQLType();\n }\n indexConfig = {\n order: this.config.order ?? \"asc\",\n nulls: this.config.nulls ?? \"last\",\n opClass: this.config.opClass\n };\n defaultConfig = {\n order: \"asc\",\n nulls: \"last\",\n opClass: void 0\n };\n asc() {\n this.indexConfig.order = \"asc\";\n return this;\n }\n desc() {\n this.indexConfig.order = \"desc\";\n return this;\n }\n nullsFirst() {\n this.indexConfig.nulls = \"first\";\n return this;\n }\n nullsLast() {\n this.indexConfig.nulls = \"last\";\n return this;\n }\n /**\n * ### PostgreSQL documentation quote\n *\n * > An operator class with optional parameters can be specified for each column of an index.\n * The operator class identifies the operators to be used by the index for that column.\n * For example, a B-tree index on four-byte integers would use the int4_ops class;\n * this operator class includes comparison functions for four-byte integers.\n * In practice the default operator class for the column's data type is usually sufficient.\n * The main point of having operator classes is that for some data types, there could be more than one meaningful ordering.\n * For example, we might want to sort a complex-number data type either by absolute value or by real part.\n * We could do this by defining two operator classes for the data type and then selecting the proper class when creating an index.\n * More information about operator classes check:\n *\n * ### Useful links\n * https://www.postgresql.org/docs/current/sql-createindex.html\n *\n * https://www.postgresql.org/docs/current/indexes-opclass.html\n *\n * https://www.postgresql.org/docs/current/xindex.html\n *\n * ### Additional types\n * If you have the `pg_vector` extension installed in your database, you can use the\n * `vector_l2_ops`, `vector_ip_ops`, `vector_cosine_ops`, `vector_l1_ops`, `bit_hamming_ops`, `bit_jaccard_ops`, `halfvec_l2_ops`, `sparsevec_l2_ops` options, which are predefined types.\n *\n * **You can always specify any string you want in the operator class, in case Drizzle doesn't have it natively in its types**\n *\n * @param opClass\n * @returns\n */\n op(opClass) {\n this.indexConfig.opClass = opClass;\n return this;\n }\n}\nclass IndexedColumn {\n static [entityKind] = \"IndexedColumn\";\n constructor(name, keyAsName, type, indexConfig) {\n this.name = name;\n this.keyAsName = keyAsName;\n this.type = type;\n this.indexConfig = indexConfig;\n }\n name;\n keyAsName;\n type;\n indexConfig;\n}\nclass PgArrayBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgArrayBuilder\";\n constructor(name, baseBuilder, size) {\n super(name, \"array\", \"PgArray\");\n this.config.baseBuilder = baseBuilder;\n this.config.size = size;\n }\n /** @internal */\n build(table) {\n const baseColumn = this.config.baseBuilder.build(table);\n return new PgArray(\n table,\n this.config,\n baseColumn\n );\n }\n}\nclass PgArray extends PgColumn {\n constructor(table, config, baseColumn, range) {\n super(table, config);\n this.baseColumn = baseColumn;\n this.range = range;\n this.size = config.size;\n }\n size;\n static [entityKind] = \"PgArray\";\n getSQLType() {\n return `${this.baseColumn.getSQLType()}[${typeof this.size === \"number\" ? this.size : \"\"}]`;\n }\n mapFromDriverValue(value) {\n if (typeof value === \"string\") {\n value = parsePgArray(value);\n }\n return value.map((v) => this.baseColumn.mapFromDriverValue(v));\n }\n mapToDriverValue(value, isNestedArray = false) {\n const a = value.map(\n (v) => v === null ? null : is(this.baseColumn, PgArray) ? this.baseColumn.mapToDriverValue(v, true) : this.baseColumn.mapToDriverValue(v)\n );\n if (isNestedArray) return a;\n return makePgArray(a);\n }\n}\nexport {\n ExtraConfigColumn,\n IndexedColumn,\n PgArray,\n PgArrayBuilder,\n PgColumn,\n PgColumnBuilder\n};\n//# sourceMappingURL=common.js.map","import { entityKind } from \"../../entity.js\";\nimport { PgColumn, PgColumnBuilder } from \"./common.js\";\nclass PgEnumObjectColumnBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgEnumObjectColumnBuilder\";\n constructor(name, enumInstance) {\n super(name, \"string\", \"PgEnumObjectColumn\");\n this.config.enum = enumInstance;\n }\n /** @internal */\n build(table) {\n return new PgEnumObjectColumn(\n table,\n this.config\n );\n }\n}\nclass PgEnumObjectColumn extends PgColumn {\n static [entityKind] = \"PgEnumObjectColumn\";\n enum;\n enumValues = this.config.enum.enumValues;\n constructor(table, config) {\n super(table, config);\n this.enum = config.enum;\n }\n getSQLType() {\n return this.enum.enumName;\n }\n}\nconst isPgEnumSym = Symbol.for(\"drizzle:isPgEnum\");\nfunction isPgEnum(obj) {\n return !!obj && typeof obj === \"function\" && isPgEnumSym in obj && obj[isPgEnumSym] === true;\n}\nclass PgEnumColumnBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgEnumColumnBuilder\";\n constructor(name, enumInstance) {\n super(name, \"string\", \"PgEnumColumn\");\n this.config.enum = enumInstance;\n }\n /** @internal */\n build(table) {\n return new PgEnumColumn(\n table,\n this.config\n );\n }\n}\nclass PgEnumColumn extends PgColumn {\n static [entityKind] = \"PgEnumColumn\";\n enum = this.config.enum;\n enumValues = this.config.enum.enumValues;\n constructor(table, config) {\n super(table, config);\n this.enum = config.enum;\n }\n getSQLType() {\n return this.enum.enumName;\n }\n}\nfunction pgEnum(enumName, input) {\n return Array.isArray(input) ? pgEnumWithSchema(enumName, [...input], void 0) : pgEnumObjectWithSchema(enumName, input, void 0);\n}\nfunction pgEnumWithSchema(enumName, values, schema) {\n const enumInstance = Object.assign(\n (name) => new PgEnumColumnBuilder(name ?? \"\", enumInstance),\n {\n enumName,\n enumValues: values,\n schema,\n [isPgEnumSym]: true\n }\n );\n return enumInstance;\n}\nfunction pgEnumObjectWithSchema(enumName, values, schema) {\n const enumInstance = Object.assign(\n (name) => new PgEnumObjectColumnBuilder(name ?? \"\", enumInstance),\n {\n enumName,\n enumValues: Object.values(values),\n schema,\n [isPgEnumSym]: true\n }\n );\n return enumInstance;\n}\nexport {\n PgEnumColumn,\n PgEnumColumnBuilder,\n PgEnumObjectColumn,\n PgEnumObjectColumnBuilder,\n isPgEnum,\n pgEnum,\n pgEnumObjectWithSchema,\n pgEnumWithSchema\n};\n//# sourceMappingURL=enum.js.map","import { entityKind } from \"./entity.js\";\nclass Subquery {\n static [entityKind] = \"Subquery\";\n constructor(sql, fields, alias, isWith = false, usedTables = []) {\n this._ = {\n brand: \"Subquery\",\n sql,\n selectedFields: fields,\n alias,\n isWith,\n usedTables\n };\n }\n // getSQL(): SQL<unknown> {\n // \treturn new SQL([this]);\n // }\n}\nclass WithSubquery extends Subquery {\n static [entityKind] = \"WithSubquery\";\n}\nexport {\n Subquery,\n WithSubquery\n};\n//# sourceMappingURL=subquery.js.map","import { iife } from \"./tracing-utils.js\";\nimport { npmVersion } from \"./version.js\";\nlet otel;\nlet rawTracer;\nconst tracer = {\n startActiveSpan(name, fn) {\n if (!otel) {\n return fn();\n }\n if (!rawTracer) {\n rawTracer = otel.trace.getTracer(\"drizzle-orm\", npmVersion);\n }\n return iife(\n (otel2, rawTracer2) => rawTracer2.startActiveSpan(\n name,\n (span) => {\n try {\n return fn(span);\n } catch (e) {\n span.setStatus({\n code: otel2.SpanStatusCode.ERROR,\n message: e instanceof Error ? e.message : \"Unknown error\"\n // eslint-disable-line no-instanceof/no-instanceof\n });\n throw e;\n } finally {\n span.end();\n }\n }\n ),\n otel,\n rawTracer\n );\n }\n};\nexport {\n tracer\n};\n//# sourceMappingURL=tracing.js.map","const ViewBaseConfig = Symbol.for(\"drizzle:ViewBaseConfig\");\nexport {\n ViewBaseConfig\n};\n//# sourceMappingURL=view-common.js.map","import { entityKind } from \"./entity.js\";\nimport { TableName } from \"./table.utils.js\";\nconst Schema = Symbol.for(\"drizzle:Schema\");\nconst Columns = Symbol.for(\"drizzle:Columns\");\nconst ExtraConfigColumns = Symbol.for(\"drizzle:ExtraConfigColumns\");\nconst OriginalName = Symbol.for(\"drizzle:OriginalName\");\nconst BaseName = Symbol.for(\"drizzle:BaseName\");\nconst IsAlias = Symbol.for(\"drizzle:IsAlias\");\nconst ExtraConfigBuilder = Symbol.for(\"drizzle:ExtraConfigBuilder\");\nconst IsDrizzleTable = Symbol.for(\"drizzle:IsDrizzleTable\");\nclass Table {\n static [entityKind] = \"Table\";\n /** @internal */\n static Symbol = {\n Name: TableName,\n Schema,\n OriginalName,\n Columns,\n ExtraConfigColumns,\n BaseName,\n IsAlias,\n ExtraConfigBuilder\n };\n /**\n * @internal\n * Can be changed if the table is aliased.\n */\n [TableName];\n /**\n * @internal\n * Used to store the original name of the table, before any aliasing.\n */\n [OriginalName];\n /** @internal */\n [Schema];\n /** @internal */\n [Columns];\n /** @internal */\n [ExtraConfigColumns];\n /**\n * @internal\n * Used to store the table name before the transformation via the `tableCreator` functions.\n */\n [BaseName];\n /** @internal */\n [IsAlias] = false;\n /** @internal */\n [IsDrizzleTable] = true;\n /** @internal */\n [ExtraConfigBuilder] = void 0;\n constructor(name, schema, baseName) {\n this[TableName] = this[OriginalName] = name;\n this[Schema] = schema;\n this[BaseName] = baseName;\n }\n}\nfunction isTable(table) {\n return typeof table === \"object\" && table !== null && IsDrizzleTable in table;\n}\nfunction getTableName(table) {\n return table[TableName];\n}\nfunction getTableUniqueName(table) {\n return `${table[Schema] ?? \"public\"}.${table[TableName]}`;\n}\nexport {\n BaseName,\n Columns,\n ExtraConfigBuilder,\n ExtraConfigColumns,\n IsAlias,\n OriginalName,\n Schema,\n Table,\n getTableName,\n getTableUniqueName,\n isTable\n};\n//# sourceMappingURL=table.js.map","import { entityKind, is } from \"../entity.js\";\nimport { isPgEnum } from \"../pg-core/columns/enum.js\";\nimport { Subquery } from \"../subquery.js\";\nimport { tracer } from \"../tracing.js\";\nimport { ViewBaseConfig } from \"../view-common.js\";\nimport { Column } from \"../column.js\";\nimport { IsAlias, Table } from \"../table.js\";\nclass FakePrimitiveParam {\n static [entityKind] = \"FakePrimitiveParam\";\n}\nfunction isSQLWrapper(value) {\n return value !== null && value !== void 0 && typeof value.getSQL === \"function\";\n}\nfunction mergeQueries(queries) {\n const result = { sql: \"\", params: [] };\n for (const query of queries) {\n result.sql += query.sql;\n result.params.push(...query.params);\n if (query.typings?.length) {\n if (!result.typings) {\n result.typings = [];\n }\n result.typings.push(...query.typings);\n }\n }\n return result;\n}\nclass StringChunk {\n static [entityKind] = \"StringChunk\";\n value;\n constructor(value) {\n this.value = Array.isArray(value) ? value : [value];\n }\n getSQL() {\n return new SQL([this]);\n }\n}\nclass SQL {\n constructor(queryChunks) {\n this.queryChunks = queryChunks;\n for (const chunk of queryChunks) {\n if (is(chunk, Table)) {\n const schemaName = chunk[Table.Symbol.Schema];\n this.usedTables.push(\n schemaName === void 0 ? chunk[Table.Symbol.Name] : schemaName + \".\" + chunk[Table.Symbol.Name]\n );\n }\n }\n }\n static [entityKind] = \"SQL\";\n /** @internal */\n decoder = noopDecoder;\n shouldInlineParams = false;\n /** @internal */\n usedTables = [];\n append(query) {\n this.queryChunks.push(...query.queryChunks);\n return this;\n }\n toQuery(config) {\n return tracer.startActiveSpan(\"drizzle.buildSQL\", (span) => {\n const query = this.buildQueryFromSourceParams(this.queryChunks, config);\n span?.setAttributes({\n \"drizzle.query.text\": query.sql,\n \"drizzle.query.params\": JSON.stringify(query.params)\n });\n return query;\n });\n }\n buildQueryFromSourceParams(chunks, _config) {\n const config = Object.assign({}, _config, {\n inlineParams: _config.inlineParams || this.shouldInlineParams,\n paramStartIndex: _config.paramStartIndex || { value: 0 }\n });\n const {\n casing,\n escapeName,\n escapeParam,\n prepareTyping,\n inlineParams,\n paramStartIndex\n } = config;\n return mergeQueries(chunks.map((chunk) => {\n if (is(chunk, StringChunk)) {\n return { sql: chunk.value.join(\"\"), params: [] };\n }\n if (is(chunk, Name)) {\n return { sql: escapeName(chunk.value), params: [] };\n }\n if (chunk === void 0) {\n return { sql: \"\", params: [] };\n }\n if (Array.isArray(chunk)) {\n const result = [new StringChunk(\"(\")];\n for (const [i, p] of chunk.entries()) {\n result.push(p);\n if (i < chunk.length - 1) {\n result.push(new StringChunk(\", \"));\n }\n }\n result.push(new StringChunk(\")\"));\n return this.buildQueryFromSourceParams(result, config);\n }\n if (is(chunk, SQL)) {\n return this.buildQueryFromSourceParams(chunk.queryChunks, {\n ...config,\n inlineParams: inlineParams || chunk.shouldInlineParams\n });\n }\n if (is(chunk, Table)) {\n const schemaName = chunk[Table.Symbol.Schema];\n const tableName = chunk[Table.Symbol.Name];\n return {\n sql: schemaName === void 0 || chunk[IsAlias] ? escapeName(tableName) : escapeName(schemaName) + \".\" + escapeName(tableName),\n params: []\n };\n }\n if (is(chunk, Column)) {\n const columnName = casing.getColumnCasing(chunk);\n if (_config.invokeSource === \"indexes\") {\n return { sql: escapeName(columnName), params: [] };\n }\n const schemaName = chunk.table[Table.Symbol.Schema];\n return {\n sql: chunk.table[IsAlias] || schemaName === void 0 ? escapeName(chunk.table[Table.Symbol.Name]) + \".\" + escapeName(columnName) : escapeName(schemaName) + \".\" + escapeName(chunk.table[Table.Symbol.Name]) + \".\" + escapeName(columnName),\n params: []\n };\n }\n if (is(chunk, View)) {\n const schemaName = chunk[ViewBaseConfig].schema;\n const viewName = chunk[ViewBaseConfig].name;\n return {\n sql: schemaName === void 0 || chunk[ViewBaseConfig].isAlias ? escapeName(viewName) : escapeName(schemaName) + \".\" + escapeName(viewName),\n params: []\n };\n }\n if (is(chunk, Param)) {\n if (is(chunk.value, Placeholder)) {\n return { sql: escapeParam(paramStartIndex.value++, chunk), params: [chunk], typings: [\"none\"] };\n }\n const mappedValue = chunk.value === null ? null : chunk.encoder.mapToDriverValue(chunk.value);\n if (is(mappedValue, SQL)) {\n return this.buildQueryFromSourceParams([mappedValue], config);\n }\n if (inlineParams) {\n return { sql: this.mapInlineParam(mappedValue, config), params: [] };\n }\n let typings = [\"none\"];\n if (prepareTyping) {\n typings = [prepareTyping(chunk.encoder)];\n }\n return { sql: escapeParam(paramStartIndex.value++, mappedValue), params: [mappedValue], typings };\n }\n if (is(chunk, Placeholder)) {\n return { sql: escapeParam(paramStartIndex.value++, chunk), params: [chunk], typings: [\"none\"] };\n }\n if (is(chunk, SQL.Aliased) && chunk.fieldAlias !== void 0) {\n return { sql: escapeName(chunk.fieldAlias), params: [] };\n }\n if (is(chunk, Subquery)) {\n if (chunk._.isWith) {\n return { sql: escapeName(chunk._.alias), params: [] };\n }\n return this.buildQueryFromSourceParams([\n new StringChunk(\"(\"),\n chunk._.sql,\n new StringChunk(\") \"),\n new Name(chunk._.alias)\n ], config);\n }\n if (isPgEnum(chunk)) {\n if (chunk.schema) {\n return { sql: escapeName(chunk.schema) + \".\" + escapeName(chunk.enumName), params: [] };\n }\n return { sql: escapeName(chunk.enumName), params: [] };\n }\n if (isSQLWrapper(chunk)) {\n if (chunk.shouldOmitSQLParens?.()) {\n return this.buildQueryFromSourceParams([chunk.getSQL()], config);\n }\n return this.buildQueryFromSourceParams([\n new StringChunk(\"(\"),\n chunk.getSQL(),\n new StringChunk(\")\")\n ], config);\n }\n if (inlineParams) {\n return { sql: this.mapInlineParam(chunk, config), params: [] };\n }\n return { sql: escapeParam(paramStartIndex.value++, chunk), params: [chunk], typings: [\"none\"] };\n }));\n }\n mapInlineParam(chunk, { escapeString }) {\n if (chunk === null) {\n return \"null\";\n }\n if (typeof chunk === \"number\" || typeof chunk === \"boolean\") {\n return chunk.toString();\n }\n if (typeof chunk === \"string\") {\n return escapeString(chunk);\n }\n if (typeof chunk === \"object\") {\n const mappedValueAsString = chunk.toString();\n if (mappedValueAsString === \"[object Object]\") {\n return escapeString(JSON.stringify(chunk));\n }\n return escapeString(mappedValueAsString);\n }\n throw new Error(\"Unexpected param value: \" + chunk);\n }\n getSQL() {\n return this;\n }\n as(alias) {\n if (alias === void 0) {\n return this;\n }\n return new SQL.Aliased(this, alias);\n }\n mapWith(decoder) {\n this.decoder = typeof decoder === \"function\" ? { mapFromDriverValue: decoder } : decoder;\n return this;\n }\n inlineParams() {\n this.shouldInlineParams = true;\n return this;\n }\n /**\n * This method is used to conditionally include a part of the query.\n *\n * @param condition - Condition to check\n * @returns itself if the condition is `true`, otherwise `undefined`\n */\n if(condition) {\n return condition ? this : void 0;\n }\n}\nclass Name {\n constructor(value) {\n this.value = value;\n }\n static [entityKind] = \"Name\";\n brand;\n getSQL() {\n return new SQL([this]);\n }\n}\nfunction name(value) {\n return new Name(value);\n}\nfunction isDriverValueEncoder(value) {\n return typeof value === \"object\" && value !== null && \"mapToDriverValue\" in value && typeof value.mapToDriverValue === \"function\";\n}\nconst noopDecoder = {\n mapFromDriverValue: (value) => value\n};\nconst noopEncoder = {\n mapToDriverValue: (value) => value\n};\nconst noopMapper = {\n ...noopDecoder,\n ...noopEncoder\n};\nclass Param {\n /**\n * @param value - Parameter value\n * @param encoder - Encoder to convert the value to a driver parameter\n */\n constructor(value, encoder = noopEncoder) {\n this.value = value;\n this.encoder = encoder;\n }\n static [entityKind] = \"Param\";\n brand;\n getSQL() {\n return new SQL([this]);\n }\n}\nfunction param(value, encoder) {\n return new Param(value, encoder);\n}\nfunction sql(strings, ...params) {\n const queryChunks = [];\n if (params.length > 0 || strings.length > 0 && strings[0] !== \"\") {\n queryChunks.push(new StringChunk(strings[0]));\n }\n for (const [paramIndex, param2] of params.entries()) {\n queryChunks.push(param2, new StringChunk(strings[paramIndex + 1]));\n }\n return new SQL(queryChunks);\n}\n((sql2) => {\n function empty() {\n return new SQL([]);\n }\n sql2.empty = empty;\n function fromList(list) {\n return new SQL(list);\n }\n sql2.fromList = fromList;\n function raw(str) {\n return new SQL([new StringChunk(str)]);\n }\n sql2.raw = raw;\n function join(chunks, separator) {\n const result = [];\n for (const [i, chunk] of chunks.entries()) {\n if (i > 0 && separator !== void 0) {\n result.push(separator);\n }\n result.push(chunk);\n }\n return new SQL(result);\n }\n sql2.join = join;\n function identifier(value) {\n return new Name(value);\n }\n sql2.identifier = identifier;\n function placeholder2(name2) {\n return new Placeholder(name2);\n }\n sql2.placeholder = placeholder2;\n function param2(value, encoder) {\n return new Param(value, encoder);\n }\n sql2.param = param2;\n})(sql || (sql = {}));\n((SQL2) => {\n class Aliased {\n constructor(sql2, fieldAlias) {\n this.sql = sql2;\n this.fieldAlias = fieldAlias;\n }\n static [entityKind] = \"SQL.Aliased\";\n /** @internal */\n isSelectionField = false;\n getSQL() {\n return this.sql;\n }\n /** @internal */\n clone() {\n return new Aliased(this.sql, this.fieldAlias);\n }\n }\n SQL2.Aliased = Aliased;\n})(SQL || (SQL = {}));\nclass Placeholder {\n constructor(name2) {\n this.name = name2;\n }\n static [entityKind] = \"Placeholder\";\n getSQL() {\n return new SQL([this]);\n }\n}\nfunction placeholder(name2) {\n return new Placeholder(name2);\n}\nfunction fillPlaceholders(params, values) {\n return params.map((p) => {\n if (is(p, Placeholder)) {\n if (!(p.name in values)) {\n throw new Error(`No value for placeholder \"${p.name}\" was provided`);\n }\n return values[p.name];\n }\n if (is(p, Param) && is(p.value, Placeholder)) {\n if (!(p.value.name in values)) {\n throw new Error(`No value for placeholder \"${p.value.name}\" was provided`);\n }\n return p.encoder.mapToDriverValue(values[p.value.name]);\n }\n return p;\n });\n}\nconst IsDrizzleView = Symbol.for(\"drizzle:IsDrizzleView\");\nclass View {\n static [entityKind] = \"View\";\n /** @internal */\n [ViewBaseConfig];\n /** @internal */\n [IsDrizzleView] = true;\n constructor({ name: name2, schema, selectedFields, query }) {\n this[ViewBaseConfig] = {\n name: name2,\n originalName: name2,\n schema,\n selectedFields,\n query,\n isExisting: !query,\n isAlias: false\n };\n }\n getSQL() {\n return new SQL([this]);\n }\n}\nfunction isView(view) {\n return typeof view === \"object\" && view !== null && IsDrizzleView in view;\n}\nfunction getViewName(view) {\n return view[ViewBaseConfig].name;\n}\nColumn.prototype.getSQL = function() {\n return new SQL([this]);\n};\nTable.prototype.getSQL = function() {\n return new SQL([this]);\n};\nSubquery.prototype.getSQL = function() {\n return new SQL([this]);\n};\nexport {\n FakePrimitiveParam,\n Name,\n Param,\n Placeholder,\n SQL,\n StringChunk,\n View,\n fillPlaceholders,\n getViewName,\n isDriverValueEncoder,\n isSQLWrapper,\n isView,\n name,\n noopDecoder,\n noopEncoder,\n noopMapper,\n param,\n placeholder,\n sql\n};\n//# sourceMappingURL=sql.js.map","import { Column } from \"./column.js\";\nimport { is } from \"./entity.js\";\nimport { Param, SQL, View } from \"./sql/sql.js\";\nimport { Subquery } from \"./subquery.js\";\nimport { getTableName, Table } from \"./table.js\";\nimport { ViewBaseConfig } from \"./view-common.js\";\nfunction mapResultRow(columns, row, joinsNotNullableMap) {\n const nullifyMap = {};\n const result = columns.reduce(\n (result2, { path, field }, columnIndex) => {\n let decoder;\n if (is(field, Column)) {\n decoder = field;\n } else if (is(field, SQL)) {\n decoder = field.decoder;\n } else if (is(field, Subquery)) {\n decoder = field._.sql.decoder;\n } else {\n decoder = field.sql.decoder;\n }\n let node = result2;\n for (const [pathChunkIndex, pathChunk] of path.entries()) {\n if (pathChunkIndex < path.length - 1) {\n if (!(pathChunk in node)) {\n node[pathChunk] = {};\n }\n node = node[pathChunk];\n } else {\n const rawValue = row[columnIndex];\n const value = node[pathChunk] = rawValue === null ? null : decoder.mapFromDriverValue(rawValue);\n if (joinsNotNullableMap && is(field, Column) && path.length === 2) {\n const objectName = path[0];\n if (!(objectName in nullifyMap)) {\n nullifyMap[objectName] = value === null ? getTableName(field.table) : false;\n } else if (typeof nullifyMap[objectName] === \"string\" && nullifyMap[objectName] !== getTableName(field.table)) {\n nullifyMap[objectName] = false;\n }\n }\n }\n }\n return result2;\n },\n {}\n );\n if (joinsNotNullableMap && Object.keys(nullifyMap).length > 0) {\n for (const [objectName, tableName] of Object.entries(nullifyMap)) {\n if (typeof tableName === \"string\" && !joinsNotNullableMap[tableName]) {\n result[objectName] = null;\n }\n }\n }\n return result;\n}\nfunction orderSelectedFields(fields, pathPrefix) {\n return Object.entries(fields).reduce((result, [name, field]) => {\n if (typeof name !== \"string\") {\n return result;\n }\n const newPath = pathPrefix ? [...pathPrefix, name] : [name];\n if (is(field, Column) || is(field, SQL) || is(field, SQL.Aliased) || is(field, Subquery)) {\n result.push({ path: newPath, field });\n } else if (is(field, Table)) {\n result.push(...orderSelectedFields(field[Table.Symbol.Columns], newPath));\n } else {\n result.push(...orderSelectedFields(field, newPath));\n }\n return result;\n }, []);\n}\nfunction haveSameKeys(left, right) {\n const leftKeys = Object.keys(left);\n const rightKeys = Object.keys(right);\n if (leftKeys.length !== rightKeys.length) {\n return false;\n }\n for (const [index, key] of leftKeys.entries()) {\n if (key !== rightKeys[index]) {\n return false;\n }\n }\n return true;\n}\nfunction mapUpdateSet(table, values) {\n const entries = Object.entries(values).filter(([, value]) => value !== void 0).map(([key, value]) => {\n if (is(value, SQL) || is(value, Column)) {\n return [key, value];\n } else {\n return [key, new Param(value, table[Table.Symbol.Columns][key])];\n }\n });\n if (entries.length === 0) {\n throw new Error(\"No values to set\");\n }\n return Object.fromEntries(entries);\n}\nfunction applyMixins(baseClass, extendedClasses) {\n for (const extendedClass of extendedClasses) {\n for (const name of Object.getOwnPropertyNames(extendedClass.prototype)) {\n if (name === \"constructor\") continue;\n Object.defineProperty(\n baseClass.prototype,\n name,\n Object.getOwnPropertyDescriptor(extendedClass.prototype, name) || /* @__PURE__ */ Object.create(null)\n );\n }\n }\n}\nfunction getTableColumns(table) {\n return table[Table.Symbol.Columns];\n}\nfunction getViewSelectedFields(view) {\n return view[ViewBaseConfig].selectedFields;\n}\nfunction getTableLikeName(table) {\n return is(table, Subquery) ? table._.alias : is(table, View) ? table[ViewBaseConfig].name : is(table, SQL) ? void 0 : table[Table.Symbol.IsAlias] ? table[Table.Symbol.Name] : table[Table.Symbol.BaseName];\n}\nfunction getColumnNameAndConfig(a, b) {\n return {\n name: typeof a === \"string\" && a.length > 0 ? a : \"\",\n config: typeof a === \"object\" ? a : b\n };\n}\nconst _ = {};\nconst __ = {};\nfunction isConfig(data) {\n if (typeof data !== \"object\" || data === null) return false;\n if (data.constructor.name !== \"Object\") return false;\n if (\"logger\" in data) {\n const type = typeof data[\"logger\"];\n if (type !== \"boolean\" && (type !== \"object\" || typeof data[\"logger\"][\"logQuery\"] !== \"function\") && type !== \"undefined\") return false;\n return true;\n }\n if (\"schema\" in data) {\n const type = typeof data[\"schema\"];\n if (type !== \"object\" && type !== \"undefined\") return false;\n return true;\n }\n if (\"casing\" in data) {\n const type = typeof data[\"casing\"];\n if (type !== \"string\" && type !== \"undefined\") return false;\n return true;\n }\n if (\"mode\" in data) {\n if (data[\"mode\"] !== \"default\" || data[\"mode\"] !== \"planetscale\" || data[\"mode\"] !== void 0) return false;\n return true;\n }\n if (\"connection\" in data) {\n const type = typeof data[\"connection\"];\n if (type !== \"string\" && type !== \"object\" && type !== \"undefined\") return false;\n return true;\n }\n if (\"client\" in data) {\n const type = typeof data[\"client\"];\n if (type !== \"object\" && type !== \"function\" && type !== \"undefined\") return false;\n return true;\n }\n if (Object.keys(data).length === 0) return true;\n return false;\n}\nconst textDecoder = typeof TextDecoder === \"undefined\" ? null : new TextDecoder();\nexport {\n applyMixins,\n getColumnNameAndConfig,\n getTableColumns,\n getTableLikeName,\n getViewSelectedFields,\n haveSameKeys,\n isConfig,\n mapResultRow,\n mapUpdateSet,\n orderSelectedFields,\n textDecoder\n};\n//# sourceMappingURL=utils.js.map","import { entityKind } from \"../../entity.js\";\nimport { PgColumnBuilder } from \"./common.js\";\nclass PgIntColumnBaseBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgIntColumnBaseBuilder\";\n generatedAlwaysAsIdentity(sequence) {\n if (sequence) {\n const { name, ...options } = sequence;\n this.config.generatedIdentity = {\n type: \"always\",\n sequenceName: name,\n sequenceOptions: options\n };\n } else {\n this.config.generatedIdentity = {\n type: \"always\"\n };\n }\n this.config.hasDefault = true;\n this.config.notNull = true;\n return this;\n }\n generatedByDefaultAsIdentity(sequence) {\n if (sequence) {\n const { name, ...options } = sequence;\n this.config.generatedIdentity = {\n type: \"byDefault\",\n sequenceName: name,\n sequenceOptions: options\n };\n } else {\n this.config.generatedIdentity = {\n type: \"byDefault\"\n };\n }\n this.config.hasDefault = true;\n this.config.notNull = true;\n return this;\n }\n}\nexport {\n PgIntColumnBaseBuilder\n};\n//# sourceMappingURL=int.common.js.map","import { entityKind } from \"../../entity.js\";\nimport { getColumnNameAndConfig } from \"../../utils.js\";\nimport { PgColumn } from \"./common.js\";\nimport { PgIntColumnBaseBuilder } from \"./int.common.js\";\nclass PgBigInt53Builder extends PgIntColumnBaseBuilder {\n static [entityKind] = \"PgBigInt53Builder\";\n constructor(name) {\n super(name, \"number\", \"PgBigInt53\");\n }\n /** @internal */\n build(table) {\n return new PgBigInt53(table, this.config);\n }\n}\nclass PgBigInt53 extends PgColumn {\n static [entityKind] = \"PgBigInt53\";\n getSQLType() {\n return \"bigint\";\n }\n mapFromDriverValue(value) {\n if (typeof value === \"number\") {\n return value;\n }\n return Number(value);\n }\n}\nclass PgBigInt64Builder extends PgIntColumnBaseBuilder {\n static [entityKind] = \"PgBigInt64Builder\";\n constructor(name) {\n super(name, \"bigint\", \"PgBigInt64\");\n }\n /** @internal */\n build(table) {\n return new PgBigInt64(\n table,\n this.config\n );\n }\n}\nclass PgBigInt64 extends PgColumn {\n static [entityKind] = \"PgBigInt64\";\n getSQLType() {\n return \"bigint\";\n }\n // eslint-disable-next-line unicorn/prefer-native-coercion-functions\n mapFromDriverValue(value) {\n return BigInt(value);\n }\n}\nfunction bigint(a, b) {\n const { name, config } = getColumnNameAndConfig(a, b);\n if (config.mode === \"number\") {\n return new PgBigInt53Builder(name);\n }\n return new PgBigInt64Builder(name);\n}\nexport {\n PgBigInt53,\n PgBigInt53Builder,\n PgBigInt64,\n PgBigInt64Builder,\n bigint\n};\n//# sourceMappingURL=bigint.js.map","import { entityKind } from \"../../entity.js\";\nimport { getColumnNameAndConfig } from \"../../utils.js\";\nimport { PgColumn, PgColumnBuilder } from \"./common.js\";\nclass PgBigSerial53Builder extends PgColumnBuilder {\n static [entityKind] = \"PgBigSerial53Builder\";\n constructor(name) {\n super(name, \"number\", \"PgBigSerial53\");\n this.config.hasDefault = true;\n this.config.notNull = true;\n }\n /** @internal */\n build(table) {\n return new PgBigSerial53(\n table,\n this.config\n );\n }\n}\nclass PgBigSerial53 extends PgColumn {\n static [entityKind] = \"PgBigSerial53\";\n getSQLType() {\n return \"bigserial\";\n }\n mapFromDriverValue(value) {\n if (typeof value === \"number\") {\n return value;\n }\n return Number(value);\n }\n}\nclass PgBigSerial64Builder extends PgColumnBuilder {\n static [entityKind] = \"PgBigSerial64Builder\";\n constructor(name) {\n super(name, \"bigint\", \"PgBigSerial64\");\n this.config.hasDefault = true;\n }\n /** @internal */\n build(table) {\n return new PgBigSerial64(\n table,\n this.config\n );\n }\n}\nclass PgBigSerial64 extends PgColumn {\n static [entityKind] = \"PgBigSerial64\";\n getSQLType() {\n return \"bigserial\";\n }\n // eslint-disable-next-line unicorn/prefer-native-coercion-functions\n mapFromDriverValue(value) {\n return BigInt(value);\n }\n}\nfunction bigserial(a, b) {\n const { name, config } = getColumnNameAndConfig(a, b);\n if (config.mode === \"number\") {\n return new PgBigSerial53Builder(name);\n }\n return new PgBigSerial64Builder(name);\n}\nexport {\n PgBigSerial53,\n PgBigSerial53Builder,\n PgBigSerial64,\n PgBigSerial64Builder,\n bigserial\n};\n//# sourceMappingURL=bigserial.js.map","import { entityKind } from \"../../entity.js\";\nimport { PgColumn, PgColumnBuilder } from \"./common.js\";\nclass PgBooleanBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgBooleanBuilder\";\n constructor(name) {\n super(name, \"boolean\", \"PgBoolean\");\n }\n /** @internal */\n build(table) {\n return new PgBoolean(table, this.config);\n }\n}\nclass PgBoolean extends PgColumn {\n static [entityKind] = \"PgBoolean\";\n getSQLType() {\n return \"boolean\";\n }\n}\nfunction boolean(name) {\n return new PgBooleanBuilder(name ?? \"\");\n}\nexport {\n PgBoolean,\n PgBooleanBuilder,\n boolean\n};\n//# sourceMappingURL=boolean.js.map","import { entityKind } from \"../../entity.js\";\nimport { getColumnNameAndConfig } from \"../../utils.js\";\nimport { PgColumn, PgColumnBuilder } from \"./common.js\";\nclass PgCharBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgCharBuilder\";\n constructor(name, config) {\n super(name, \"string\", \"PgChar\");\n this.config.length = config.length;\n this.config.enumValues = config.enum;\n }\n /** @internal */\n build(table) {\n return new PgChar(\n table,\n this.config\n );\n }\n}\nclass PgChar extends PgColumn {\n static [entityKind] = \"PgChar\";\n length = this.config.length;\n enumValues = this.config.enumValues;\n getSQLType() {\n return this.length === void 0 ? `char` : `char(${this.length})`;\n }\n}\nfunction char(a, b = {}) {\n const { name, config } = getColumnNameAndConfig(a, b);\n return new PgCharBuilder(name, config);\n}\nexport {\n PgChar,\n PgCharBuilder,\n char\n};\n//# sourceMappingURL=char.js.map","import { entityKind } from \"../../entity.js\";\nimport { PgColumn, PgColumnBuilder } from \"./common.js\";\nclass PgCidrBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgCidrBuilder\";\n constructor(name) {\n super(name, \"string\", \"PgCidr\");\n }\n /** @internal */\n build(table) {\n return new PgCidr(table, this.config);\n }\n}\nclass PgCidr extends PgColumn {\n static [entityKind] = \"PgCidr\";\n getSQLType() {\n return \"cidr\";\n }\n}\nfunction cidr(name) {\n return new PgCidrBuilder(name ?? \"\");\n}\nexport {\n PgCidr,\n PgCidrBuilder,\n cidr\n};\n//# sourceMappingURL=cidr.js.map","import { entityKind } from \"../../entity.js\";\nimport { getColumnNameAndConfig } from \"../../utils.js\";\nimport { PgColumn, PgColumnBuilder } from \"./common.js\";\nclass PgCustomColumnBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgCustomColumnBuilder\";\n constructor(name, fieldConfig, customTypeParams) {\n super(name, \"custom\", \"PgCustomColumn\");\n this.config.fieldConfig = fieldConfig;\n this.config.customTypeParams = customTypeParams;\n }\n /** @internal */\n build(table) {\n return new PgCustomColumn(\n table,\n this.config\n );\n }\n}\nclass PgCustomColumn extends PgColumn {\n static [entityKind] = \"PgCustomColumn\";\n sqlName;\n mapTo;\n mapFrom;\n constructor(table, config) {\n super(table, config);\n this.sqlName = config.customTypeParams.dataType(config.fieldConfig);\n this.mapTo = config.customTypeParams.toDriver;\n this.mapFrom = config.customTypeParams.fromDriver;\n }\n getSQLType() {\n return this.sqlName;\n }\n mapFromDriverValue(value) {\n return typeof this.mapFrom === \"function\" ? this.mapFrom(value) : value;\n }\n mapToDriverValue(value) {\n return typeof this.mapTo === \"function\" ? this.mapTo(value) : value;\n }\n}\nfunction customType(customTypeParams) {\n return (a, b) => {\n const { name, config } = getColumnNameAndConfig(a, b);\n return new PgCustomColumnBuilder(name, config, customTypeParams);\n };\n}\nexport {\n PgCustomColumn,\n PgCustomColumnBuilder,\n customType\n};\n//# sourceMappingURL=custom.js.map","import { entityKind } from \"../../entity.js\";\nimport { sql } from \"../../sql/sql.js\";\nimport { PgColumnBuilder } from \"./common.js\";\nclass PgDateColumnBaseBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgDateColumnBaseBuilder\";\n defaultNow() {\n return this.default(sql`now()`);\n }\n}\nexport {\n PgDateColumnBaseBuilder\n};\n//# sourceMappingURL=date.common.js.map","import { entityKind } from \"../../entity.js\";\nimport { getColumnNameAndConfig } from \"../../utils.js\";\nimport { PgColumn } from \"./common.js\";\nimport { PgDateColumnBaseBuilder } from \"./date.common.js\";\nclass PgDateBuilder extends PgDateColumnBaseBuilder {\n static [entityKind] = \"PgDateBuilder\";\n constructor(name) {\n super(name, \"date\", \"PgDate\");\n }\n /** @internal */\n build(table) {\n return new PgDate(table, this.config);\n }\n}\nclass PgDate extends PgColumn {\n static [entityKind] = \"PgDate\";\n getSQLType() {\n return \"date\";\n }\n mapFromDriverValue(value) {\n if (typeof value === \"string\") return new Date(value);\n return value;\n }\n mapToDriverValue(value) {\n return value.toISOString();\n }\n}\nclass PgDateStringBuilder extends PgDateColumnBaseBuilder {\n static [entityKind] = \"PgDateStringBuilder\";\n constructor(name) {\n super(name, \"string\", \"PgDateString\");\n }\n /** @internal */\n build(table) {\n return new PgDateString(\n table,\n this.config\n );\n }\n}\nclass PgDateString extends PgColumn {\n static [entityKind] = \"PgDateString\";\n getSQLType() {\n return \"date\";\n }\n mapFromDriverValue(value) {\n if (typeof value === \"string\") return value;\n return value.toISOString().slice(0, -14);\n }\n}\nfunction date(a, b) {\n const { name, config } = getColumnNameAndConfig(a, b);\n if (config?.mode === \"date\") {\n return new PgDateBuilder(name);\n }\n return new PgDateStringBuilder(name);\n}\nexport {\n PgDate,\n PgDateBuilder,\n PgDateString,\n PgDateStringBuilder,\n date\n};\n//# sourceMappingURL=date.js.map","import { entityKind } from \"../../entity.js\";\nimport { PgColumn, PgColumnBuilder } from \"./common.js\";\nclass PgDoublePrecisionBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgDoublePrecisionBuilder\";\n constructor(name) {\n super(name, \"number\", \"PgDoublePrecision\");\n }\n /** @internal */\n build(table) {\n return new PgDoublePrecision(\n table,\n this.config\n );\n }\n}\nclass PgDoublePrecision extends PgColumn {\n static [entityKind] = \"PgDoublePrecision\";\n getSQLType() {\n return \"double precision\";\n }\n mapFromDriverValue(value) {\n if (typeof value === \"string\") {\n return Number.parseFloat(value);\n }\n return value;\n }\n}\nfunction doublePrecision(name) {\n return new PgDoublePrecisionBuilder(name ?? \"\");\n}\nexport {\n PgDoublePrecision,\n PgDoublePrecisionBuilder,\n doublePrecision\n};\n//# sourceMappingURL=double-precision.js.map","import { entityKind } from \"../../entity.js\";\nimport { PgColumn, PgColumnBuilder } from \"./common.js\";\nclass PgInetBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgInetBuilder\";\n constructor(name) {\n super(name, \"string\", \"PgInet\");\n }\n /** @internal */\n build(table) {\n return new PgInet(table, this.config);\n }\n}\nclass PgInet extends PgColumn {\n static [entityKind] = \"PgInet\";\n getSQLType() {\n return \"inet\";\n }\n}\nfunction inet(name) {\n return new PgInetBuilder(name ?? \"\");\n}\nexport {\n PgInet,\n PgInetBuilder,\n inet\n};\n//# sourceMappingURL=inet.js.map","import { entityKind } from \"../../entity.js\";\nimport { PgColumn } from \"./common.js\";\nimport { PgIntColumnBaseBuilder } from \"./int.common.js\";\nclass PgIntegerBuilder extends PgIntColumnBaseBuilder {\n static [entityKind] = \"PgIntegerBuilder\";\n constructor(name) {\n super(name, \"number\", \"PgInteger\");\n }\n /** @internal */\n build(table) {\n return new PgInteger(table, this.config);\n }\n}\nclass PgInteger extends PgColumn {\n static [entityKind] = \"PgInteger\";\n getSQLType() {\n return \"integer\";\n }\n mapFromDriverValue(value) {\n if (typeof value === \"string\") {\n return Number.parseInt(value);\n }\n return value;\n }\n}\nfunction integer(name) {\n return new PgIntegerBuilder(name ?? \"\");\n}\nexport {\n PgInteger,\n PgIntegerBuilder,\n integer\n};\n//# sourceMappingURL=integer.js.map","import { entityKind } from \"../../entity.js\";\nimport { getColumnNameAndConfig } from \"../../utils.js\";\nimport { PgColumn, PgColumnBuilder } from \"./common.js\";\nclass PgIntervalBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgIntervalBuilder\";\n constructor(name, intervalConfig) {\n super(name, \"string\", \"PgInterval\");\n this.config.intervalConfig = intervalConfig;\n }\n /** @internal */\n build(table) {\n return new PgInterval(table, this.config);\n }\n}\nclass PgInterval extends PgColumn {\n static [entityKind] = \"PgInterval\";\n fields = this.config.intervalConfig.fields;\n precision = this.config.intervalConfig.precision;\n getSQLType() {\n const fields = this.fields ? ` ${this.fields}` : \"\";\n const precision = this.precision ? `(${this.precision})` : \"\";\n return `interval${fields}${precision}`;\n }\n}\nfunction interval(a, b = {}) {\n const { name, config } = getColumnNameAndConfig(a, b);\n return new PgIntervalBuilder(name, config);\n}\nexport {\n PgInterval,\n PgIntervalBuilder,\n interval\n};\n//# sourceMappingURL=interval.js.map","import { entityKind } from \"../../entity.js\";\nimport { PgColumn, PgColumnBuilder } from \"./common.js\";\nclass PgJsonBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgJsonBuilder\";\n constructor(name) {\n super(name, \"json\", \"PgJson\");\n }\n /** @internal */\n build(table) {\n return new PgJson(table, this.config);\n }\n}\nclass PgJson extends PgColumn {\n static [entityKind] = \"PgJson\";\n constructor(table, config) {\n super(table, config);\n }\n getSQLType() {\n return \"json\";\n }\n mapToDriverValue(value) {\n return JSON.stringify(value);\n }\n mapFromDriverValue(value) {\n if (typeof value === \"string\") {\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n }\n return value;\n }\n}\nfunction json(name) {\n return new PgJsonBuilder(name ?? \"\");\n}\nexport {\n PgJson,\n PgJsonBuilder,\n json\n};\n//# sourceMappingURL=json.js.map","import { entityKind } from \"../../entity.js\";\nimport { PgColumn, PgColumnBuilder } from \"./common.js\";\nclass PgJsonbBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgJsonbBuilder\";\n constructor(name) {\n super(name, \"json\", \"PgJsonb\");\n }\n /** @internal */\n build(table) {\n return new PgJsonb(table, this.config);\n }\n}\nclass PgJsonb extends PgColumn {\n static [entityKind] = \"PgJsonb\";\n constructor(table, config) {\n super(table, config);\n }\n getSQLType() {\n return \"jsonb\";\n }\n mapToDriverValue(value) {\n return JSON.stringify(value);\n }\n mapFromDriverValue(value) {\n if (typeof value === \"string\") {\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n }\n return value;\n }\n}\nfunction jsonb(name) {\n return new PgJsonbBuilder(name ?? \"\");\n}\nexport {\n PgJsonb,\n PgJsonbBuilder,\n jsonb\n};\n//# sourceMappingURL=jsonb.js.map","import { entityKind } from \"../../entity.js\";\nimport { getColumnNameAndConfig } from \"../../utils.js\";\nimport { PgColumn, PgColumnBuilder } from \"./common.js\";\nclass PgLineBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgLineBuilder\";\n constructor(name) {\n super(name, \"array\", \"PgLine\");\n }\n /** @internal */\n build(table) {\n return new PgLineTuple(\n table,\n this.config\n );\n }\n}\nclass PgLineTuple extends PgColumn {\n static [entityKind] = \"PgLine\";\n getSQLType() {\n return \"line\";\n }\n mapFromDriverValue(value) {\n const [a, b, c] = value.slice(1, -1).split(\",\");\n return [Number.parseFloat(a), Number.parseFloat(b), Number.parseFloat(c)];\n }\n mapToDriverValue(value) {\n return `{${value[0]},${value[1]},${value[2]}}`;\n }\n}\nclass PgLineABCBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgLineABCBuilder\";\n constructor(name) {\n super(name, \"json\", \"PgLineABC\");\n }\n /** @internal */\n build(table) {\n return new PgLineABC(\n table,\n this.config\n );\n }\n}\nclass PgLineABC extends PgColumn {\n static [entityKind] = \"PgLineABC\";\n getSQLType() {\n return \"line\";\n }\n mapFromDriverValue(value) {\n const [a, b, c] = value.slice(1, -1).split(\",\");\n return { a: Number.parseFloat(a), b: Number.parseFloat(b), c: Number.parseFloat(c) };\n }\n mapToDriverValue(value) {\n return `{${value.a},${value.b},${value.c}}`;\n }\n}\nfunction line(a, b) {\n const { name, config } = getColumnNameAndConfig(a, b);\n if (!config?.mode || config.mode === \"tuple\") {\n return new PgLineBuilder(name);\n }\n return new PgLineABCBuilder(name);\n}\nexport {\n PgLineABC,\n PgLineABCBuilder,\n PgLineBuilder,\n PgLineTuple,\n line\n};\n//# sourceMappingURL=line.js.map","import { entityKind } from \"../../entity.js\";\nimport { PgColumn, PgColumnBuilder } from \"./common.js\";\nclass PgMacaddrBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgMacaddrBuilder\";\n constructor(name) {\n super(name, \"string\", \"PgMacaddr\");\n }\n /** @internal */\n build(table) {\n return new PgMacaddr(table, this.config);\n }\n}\nclass PgMacaddr extends PgColumn {\n static [entityKind] = \"PgMacaddr\";\n getSQLType() {\n return \"macaddr\";\n }\n}\nfunction macaddr(name) {\n return new PgMacaddrBuilder(name ?? \"\");\n}\nexport {\n PgMacaddr,\n PgMacaddrBuilder,\n macaddr\n};\n//# sourceMappingURL=macaddr.js.map","import { entityKind } from \"../../entity.js\";\nimport { PgColumn, PgColumnBuilder } from \"./common.js\";\nclass PgMacaddr8Builder extends PgColumnBuilder {\n static [entityKind] = \"PgMacaddr8Builder\";\n constructor(name) {\n super(name, \"string\", \"PgMacaddr8\");\n }\n /** @internal */\n build(table) {\n return new PgMacaddr8(table, this.config);\n }\n}\nclass PgMacaddr8 extends PgColumn {\n static [entityKind] = \"PgMacaddr8\";\n getSQLType() {\n return \"macaddr8\";\n }\n}\nfunction macaddr8(name) {\n return new PgMacaddr8Builder(name ?? \"\");\n}\nexport {\n PgMacaddr8,\n PgMacaddr8Builder,\n macaddr8\n};\n//# sourceMappingURL=macaddr8.js.map","import { entityKind } from \"../../entity.js\";\nimport { getColumnNameAndConfig } from \"../../utils.js\";\nimport { PgColumn, PgColumnBuilder } from \"./common.js\";\nclass PgNumericBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgNumericBuilder\";\n constructor(name, precision, scale) {\n super(name, \"string\", \"PgNumeric\");\n this.config.precision = precision;\n this.config.scale = scale;\n }\n /** @internal */\n build(table) {\n return new PgNumeric(table, this.config);\n }\n}\nclass PgNumeric extends PgColumn {\n static [entityKind] = \"PgNumeric\";\n precision;\n scale;\n constructor(table, config) {\n super(table, config);\n this.precision = config.precision;\n this.scale = config.scale;\n }\n mapFromDriverValue(value) {\n if (typeof value === \"string\") return value;\n return String(value);\n }\n getSQLType() {\n if (this.precision !== void 0 && this.scale !== void 0) {\n return `numeric(${this.precision}, ${this.scale})`;\n } else if (this.precision === void 0) {\n return \"numeric\";\n } else {\n return `numeric(${this.precision})`;\n }\n }\n}\nclass PgNumericNumberBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgNumericNumberBuilder\";\n constructor(name, precision, scale) {\n super(name, \"number\", \"PgNumericNumber\");\n this.config.precision = precision;\n this.config.scale = scale;\n }\n /** @internal */\n build(table) {\n return new PgNumericNumber(\n table,\n this.config\n );\n }\n}\nclass PgNumericNumber extends PgColumn {\n static [entityKind] = \"PgNumericNumber\";\n precision;\n scale;\n constructor(table, config) {\n super(table, config);\n this.precision = config.precision;\n this.scale = config.scale;\n }\n mapFromDriverValue(value) {\n if (typeof value === \"number\") return value;\n return Number(value);\n }\n mapToDriverValue = String;\n getSQLType() {\n if (this.precision !== void 0 && this.scale !== void 0) {\n return `numeric(${this.precision}, ${this.scale})`;\n } else if (this.precision === void 0) {\n return \"numeric\";\n } else {\n return `numeric(${this.precision})`;\n }\n }\n}\nclass PgNumericBigIntBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgNumericBigIntBuilder\";\n constructor(name, precision, scale) {\n super(name, \"bigint\", \"PgNumericBigInt\");\n this.config.precision = precision;\n this.config.scale = scale;\n }\n /** @internal */\n build(table) {\n return new PgNumericBigInt(\n table,\n this.config\n );\n }\n}\nclass PgNumericBigInt extends PgColumn {\n static [entityKind] = \"PgNumericBigInt\";\n precision;\n scale;\n constructor(table, config) {\n super(table, config);\n this.precision = config.precision;\n this.scale = config.scale;\n }\n mapFromDriverValue = BigInt;\n mapToDriverValue = String;\n getSQLType() {\n if (this.precision !== void 0 && this.scale !== void 0) {\n return `numeric(${this.precision}, ${this.scale})`;\n } else if (this.precision === void 0) {\n return \"numeric\";\n } else {\n return `numeric(${this.precision})`;\n }\n }\n}\nfunction numeric(a, b) {\n const { name, config } = getColumnNameAndConfig(a, b);\n const mode = config?.mode;\n return mode === \"number\" ? new PgNumericNumberBuilder(name, config?.precision, config?.scale) : mode === \"bigint\" ? new PgNumericBigIntBuilder(name, config?.precision, config?.scale) : new PgNumericBuilder(name, config?.precision, config?.scale);\n}\nconst decimal = numeric;\nexport {\n PgNumeric,\n PgNumericBigInt,\n PgNumericBigIntBuilder,\n PgNumericBuilder,\n PgNumericNumber,\n PgNumericNumberBuilder,\n decimal,\n numeric\n};\n//# sourceMappingURL=numeric.js.map","import { entityKind } from \"../../entity.js\";\nimport { getColumnNameAndConfig } from \"../../utils.js\";\nimport { PgColumn, PgColumnBuilder } from \"./common.js\";\nclass PgPointTupleBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgPointTupleBuilder\";\n constructor(name) {\n super(name, \"array\", \"PgPointTuple\");\n }\n /** @internal */\n build(table) {\n return new PgPointTuple(\n table,\n this.config\n );\n }\n}\nclass PgPointTuple extends PgColumn {\n static [entityKind] = \"PgPointTuple\";\n getSQLType() {\n return \"point\";\n }\n mapFromDriverValue(value) {\n if (typeof value === \"string\") {\n const [x, y] = value.slice(1, -1).split(\",\");\n return [Number.parseFloat(x), Number.parseFloat(y)];\n }\n return [value.x, value.y];\n }\n mapToDriverValue(value) {\n return `(${value[0]},${value[1]})`;\n }\n}\nclass PgPointObjectBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgPointObjectBuilder\";\n constructor(name) {\n super(name, \"json\", \"PgPointObject\");\n }\n /** @internal */\n build(table) {\n return new PgPointObject(\n table,\n this.config\n );\n }\n}\nclass PgPointObject extends PgColumn {\n static [entityKind] = \"PgPointObject\";\n getSQLType() {\n return \"point\";\n }\n mapFromDriverValue(value) {\n if (typeof value === \"string\") {\n const [x, y] = value.slice(1, -1).split(\",\");\n return { x: Number.parseFloat(x), y: Number.parseFloat(y) };\n }\n return value;\n }\n mapToDriverValue(value) {\n return `(${value.x},${value.y})`;\n }\n}\nfunction point(a, b) {\n const { name, config } = getColumnNameAndConfig(a, b);\n if (!config?.mode || config.mode === \"tuple\") {\n return new PgPointTupleBuilder(name);\n }\n return new PgPointObjectBuilder(name);\n}\nexport {\n PgPointObject,\n PgPointObjectBuilder,\n PgPointTuple,\n PgPointTupleBuilder,\n point\n};\n//# sourceMappingURL=point.js.map","function hexToBytes(hex) {\n const bytes = [];\n for (let c = 0; c < hex.length; c += 2) {\n bytes.push(Number.parseInt(hex.slice(c, c + 2), 16));\n }\n return new Uint8Array(bytes);\n}\nfunction bytesToFloat64(bytes, offset) {\n const buffer = new ArrayBuffer(8);\n const view = new DataView(buffer);\n for (let i = 0; i < 8; i++) {\n view.setUint8(i, bytes[offset + i]);\n }\n return view.getFloat64(0, true);\n}\nfunction parseEWKB(hex) {\n const bytes = hexToBytes(hex);\n let offset = 0;\n const byteOrder = bytes[offset];\n offset += 1;\n const view = new DataView(bytes.buffer);\n const geomType = view.getUint32(offset, byteOrder === 1);\n offset += 4;\n let _srid;\n if (geomType & 536870912) {\n _srid = view.getUint32(offset, byteOrder === 1);\n offset += 4;\n }\n if ((geomType & 65535) === 1) {\n const x = bytesToFloat64(bytes, offset);\n offset += 8;\n const y = bytesToFloat64(bytes, offset);\n offset += 8;\n return [x, y];\n }\n throw new Error(\"Unsupported geometry type\");\n}\nexport {\n parseEWKB\n};\n//# sourceMappingURL=utils.js.map","import { entityKind } from \"../../../entity.js\";\nimport { getColumnNameAndConfig } from \"../../../utils.js\";\nimport { PgColumn, PgColumnBuilder } from \"../common.js\";\nimport { parseEWKB } from \"./utils.js\";\nclass PgGeometryBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgGeometryBuilder\";\n constructor(name) {\n super(name, \"array\", \"PgGeometry\");\n }\n /** @internal */\n build(table) {\n return new PgGeometry(\n table,\n this.config\n );\n }\n}\nclass PgGeometry extends PgColumn {\n static [entityKind] = \"PgGeometry\";\n getSQLType() {\n return \"geometry(point)\";\n }\n mapFromDriverValue(value) {\n return parseEWKB(value);\n }\n mapToDriverValue(value) {\n return `point(${value[0]} ${value[1]})`;\n }\n}\nclass PgGeometryObjectBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgGeometryObjectBuilder\";\n constructor(name) {\n super(name, \"json\", \"PgGeometryObject\");\n }\n /** @internal */\n build(table) {\n return new PgGeometryObject(\n table,\n this.config\n );\n }\n}\nclass PgGeometryObject extends PgColumn {\n static [entityKind] = \"PgGeometryObject\";\n getSQLType() {\n return \"geometry(point)\";\n }\n mapFromDriverValue(value) {\n const parsed = parseEWKB(value);\n return { x: parsed[0], y: parsed[1] };\n }\n mapToDriverValue(value) {\n return `point(${value.x} ${value.y})`;\n }\n}\nfunction geometry(a, b) {\n const { name, config } = getColumnNameAndConfig(a, b);\n if (!config?.mode || config.mode === \"tuple\") {\n return new PgGeometryBuilder(name);\n }\n return new PgGeometryObjectBuilder(name);\n}\nexport {\n PgGeometry,\n PgGeometryBuilder,\n PgGeometryObject,\n PgGeometryObjectBuilder,\n geometry\n};\n//# sourceMappingURL=geometry.js.map","import { entityKind } from \"../../entity.js\";\nimport { PgColumn, PgColumnBuilder } from \"./common.js\";\nclass PgRealBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgRealBuilder\";\n constructor(name, length) {\n super(name, \"number\", \"PgReal\");\n this.config.length = length;\n }\n /** @internal */\n build(table) {\n return new PgReal(table, this.config);\n }\n}\nclass PgReal extends PgColumn {\n static [entityKind] = \"PgReal\";\n constructor(table, config) {\n super(table, config);\n }\n getSQLType() {\n return \"real\";\n }\n mapFromDriverValue = (value) => {\n if (typeof value === \"string\") {\n return Number.parseFloat(value);\n }\n return value;\n };\n}\nfunction real(name) {\n return new PgRealBuilder(name ?? \"\");\n}\nexport {\n PgReal,\n PgRealBuilder,\n real\n};\n//# sourceMappingURL=real.js.map","import { entityKind } from \"../../entity.js\";\nimport { PgColumn, PgColumnBuilder } from \"./common.js\";\nclass PgSerialBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgSerialBuilder\";\n constructor(name) {\n super(name, \"number\", \"PgSerial\");\n this.config.hasDefault = true;\n this.config.notNull = true;\n }\n /** @internal */\n build(table) {\n return new PgSerial(table, this.config);\n }\n}\nclass PgSerial extends PgColumn {\n static [entityKind] = \"PgSerial\";\n getSQLType() {\n return \"serial\";\n }\n}\nfunction serial(name) {\n return new PgSerialBuilder(name ?? \"\");\n}\nexport {\n PgSerial,\n PgSerialBuilder,\n serial\n};\n//# sourceMappingURL=serial.js.map","import { entityKind } from \"../../entity.js\";\nimport { PgColumn } from \"./common.js\";\nimport { PgIntColumnBaseBuilder } from \"./int.common.js\";\nclass PgSmallIntBuilder extends PgIntColumnBaseBuilder {\n static [entityKind] = \"PgSmallIntBuilder\";\n constructor(name) {\n super(name, \"number\", \"PgSmallInt\");\n }\n /** @internal */\n build(table) {\n return new PgSmallInt(table, this.config);\n }\n}\nclass PgSmallInt extends PgColumn {\n static [entityKind] = \"PgSmallInt\";\n getSQLType() {\n return \"smallint\";\n }\n mapFromDriverValue = (value) => {\n if (typeof value === \"string\") {\n return Number(value);\n }\n return value;\n };\n}\nfunction smallint(name) {\n return new PgSmallIntBuilder(name ?? \"\");\n}\nexport {\n PgSmallInt,\n PgSmallIntBuilder,\n smallint\n};\n//# sourceMappingURL=smallint.js.map","import { entityKind } from \"../../entity.js\";\nimport { PgColumn, PgColumnBuilder } from \"./common.js\";\nclass PgSmallSerialBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgSmallSerialBuilder\";\n constructor(name) {\n super(name, \"number\", \"PgSmallSerial\");\n this.config.hasDefault = true;\n this.config.notNull = true;\n }\n /** @internal */\n build(table) {\n return new PgSmallSerial(\n table,\n this.config\n );\n }\n}\nclass PgSmallSerial extends PgColumn {\n static [entityKind] = \"PgSmallSerial\";\n getSQLType() {\n return \"smallserial\";\n }\n}\nfunction smallserial(name) {\n return new PgSmallSerialBuilder(name ?? \"\");\n}\nexport {\n PgSmallSerial,\n PgSmallSerialBuilder,\n smallserial\n};\n//# sourceMappingURL=smallserial.js.map","import { entityKind } from \"../../entity.js\";\nimport { getColumnNameAndConfig } from \"../../utils.js\";\nimport { PgColumn, PgColumnBuilder } from \"./common.js\";\nclass PgTextBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgTextBuilder\";\n constructor(name, config) {\n super(name, \"string\", \"PgText\");\n this.config.enumValues = config.enum;\n }\n /** @internal */\n build(table) {\n return new PgText(table, this.config);\n }\n}\nclass PgText extends PgColumn {\n static [entityKind] = \"PgText\";\n enumValues = this.config.enumValues;\n getSQLType() {\n return \"text\";\n }\n}\nfunction text(a, b = {}) {\n const { name, config } = getColumnNameAndConfig(a, b);\n return new PgTextBuilder(name, config);\n}\nexport {\n PgText,\n PgTextBuilder,\n text\n};\n//# sourceMappingURL=text.js.map","import { entityKind } from \"../../entity.js\";\nimport { getColumnNameAndConfig } from \"../../utils.js\";\nimport { PgColumn } from \"./common.js\";\nimport { PgDateColumnBaseBuilder } from \"./date.common.js\";\nclass PgTimeBuilder extends PgDateColumnBaseBuilder {\n constructor(name, withTimezone, precision) {\n super(name, \"string\", \"PgTime\");\n this.withTimezone = withTimezone;\n this.precision = precision;\n this.config.withTimezone = withTimezone;\n this.config.precision = precision;\n }\n static [entityKind] = \"PgTimeBuilder\";\n /** @internal */\n build(table) {\n return new PgTime(table, this.config);\n }\n}\nclass PgTime extends PgColumn {\n static [entityKind] = \"PgTime\";\n withTimezone;\n precision;\n constructor(table, config) {\n super(table, config);\n this.withTimezone = config.withTimezone;\n this.precision = config.precision;\n }\n getSQLType() {\n const precision = this.precision === void 0 ? \"\" : `(${this.precision})`;\n return `time${precision}${this.withTimezone ? \" with time zone\" : \"\"}`;\n }\n}\nfunction time(a, b = {}) {\n const { name, config } = getColumnNameAndConfig(a, b);\n return new PgTimeBuilder(name, config.withTimezone ?? false, config.precision);\n}\nexport {\n PgTime,\n PgTimeBuilder,\n time\n};\n//# sourceMappingURL=time.js.map","import { entityKind } from \"../../entity.js\";\nimport { getColumnNameAndConfig } from \"../../utils.js\";\nimport { PgColumn } from \"./common.js\";\nimport { PgDateColumnBaseBuilder } from \"./date.common.js\";\nclass PgTimestampBuilder extends PgDateColumnBaseBuilder {\n static [entityKind] = \"PgTimestampBuilder\";\n constructor(name, withTimezone, precision) {\n super(name, \"date\", \"PgTimestamp\");\n this.config.withTimezone = withTimezone;\n this.config.precision = precision;\n }\n /** @internal */\n build(table) {\n return new PgTimestamp(table, this.config);\n }\n}\nclass PgTimestamp extends PgColumn {\n static [entityKind] = \"PgTimestamp\";\n withTimezone;\n precision;\n constructor(table, config) {\n super(table, config);\n this.withTimezone = config.withTimezone;\n this.precision = config.precision;\n }\n getSQLType() {\n const precision = this.precision === void 0 ? \"\" : ` (${this.precision})`;\n return `timestamp${precision}${this.withTimezone ? \" with time zone\" : \"\"}`;\n }\n mapFromDriverValue(value) {\n if (typeof value === \"string\") return new Date(this.withTimezone ? value : value + \"+0000\");\n return value;\n }\n mapToDriverValue = (value) => {\n return value.toISOString();\n };\n}\nclass PgTimestampStringBuilder extends PgDateColumnBaseBuilder {\n static [entityKind] = \"PgTimestampStringBuilder\";\n constructor(name, withTimezone, precision) {\n super(name, \"string\", \"PgTimestampString\");\n this.config.withTimezone = withTimezone;\n this.config.precision = precision;\n }\n /** @internal */\n build(table) {\n return new PgTimestampString(\n table,\n this.config\n );\n }\n}\nclass PgTimestampString extends PgColumn {\n static [entityKind] = \"PgTimestampString\";\n withTimezone;\n precision;\n constructor(table, config) {\n super(table, config);\n this.withTimezone = config.withTimezone;\n this.precision = config.precision;\n }\n getSQLType() {\n const precision = this.precision === void 0 ? \"\" : `(${this.precision})`;\n return `timestamp${precision}${this.withTimezone ? \" with time zone\" : \"\"}`;\n }\n mapFromDriverValue(value) {\n if (typeof value === \"string\") return value;\n const shortened = value.toISOString().slice(0, -1).replace(\"T\", \" \");\n if (this.withTimezone) {\n const offset = value.getTimezoneOffset();\n const sign = offset <= 0 ? \"+\" : \"-\";\n return `${shortened}${sign}${Math.floor(Math.abs(offset) / 60).toString().padStart(2, \"0\")}`;\n }\n return shortened;\n }\n}\nfunction timestamp(a, b = {}) {\n const { name, config } = getColumnNameAndConfig(a, b);\n if (config?.mode === \"string\") {\n return new PgTimestampStringBuilder(name, config.withTimezone ?? false, config.precision);\n }\n return new PgTimestampBuilder(name, config?.withTimezone ?? false, config?.precision);\n}\nexport {\n PgTimestamp,\n PgTimestampBuilder,\n PgTimestampString,\n PgTimestampStringBuilder,\n timestamp\n};\n//# sourceMappingURL=timestamp.js.map","import { entityKind } from \"../../entity.js\";\nimport { sql } from \"../../sql/sql.js\";\nimport { PgColumn, PgColumnBuilder } from \"./common.js\";\nclass PgUUIDBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgUUIDBuilder\";\n constructor(name) {\n super(name, \"string\", \"PgUUID\");\n }\n /**\n * Adds `default gen_random_uuid()` to the column definition.\n */\n defaultRandom() {\n return this.default(sql`gen_random_uuid()`);\n }\n /** @internal */\n build(table) {\n return new PgUUID(table, this.config);\n }\n}\nclass PgUUID extends PgColumn {\n static [entityKind] = \"PgUUID\";\n getSQLType() {\n return \"uuid\";\n }\n}\nfunction uuid(name) {\n return new PgUUIDBuilder(name ?? \"\");\n}\nexport {\n PgUUID,\n PgUUIDBuilder,\n uuid\n};\n//# sourceMappingURL=uuid.js.map","import { entityKind } from \"../../entity.js\";\nimport { getColumnNameAndConfig } from \"../../utils.js\";\nimport { PgColumn, PgColumnBuilder } from \"./common.js\";\nclass PgVarcharBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgVarcharBuilder\";\n constructor(name, config) {\n super(name, \"string\", \"PgVarchar\");\n this.config.length = config.length;\n this.config.enumValues = config.enum;\n }\n /** @internal */\n build(table) {\n return new PgVarchar(\n table,\n this.config\n );\n }\n}\nclass PgVarchar extends PgColumn {\n static [entityKind] = \"PgVarchar\";\n length = this.config.length;\n enumValues = this.config.enumValues;\n getSQLType() {\n return this.length === void 0 ? `varchar` : `varchar(${this.length})`;\n }\n}\nfunction varchar(a, b = {}) {\n const { name, config } = getColumnNameAndConfig(a, b);\n return new PgVarcharBuilder(name, config);\n}\nexport {\n PgVarchar,\n PgVarcharBuilder,\n varchar\n};\n//# sourceMappingURL=varchar.js.map","import { entityKind } from \"../../../entity.js\";\nimport { getColumnNameAndConfig } from \"../../../utils.js\";\nimport { PgColumn, PgColumnBuilder } from \"../common.js\";\nclass PgBinaryVectorBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgBinaryVectorBuilder\";\n constructor(name, config) {\n super(name, \"string\", \"PgBinaryVector\");\n this.config.dimensions = config.dimensions;\n }\n /** @internal */\n build(table) {\n return new PgBinaryVector(\n table,\n this.config\n );\n }\n}\nclass PgBinaryVector extends PgColumn {\n static [entityKind] = \"PgBinaryVector\";\n dimensions = this.config.dimensions;\n getSQLType() {\n return `bit(${this.dimensions})`;\n }\n}\nfunction bit(a, b) {\n const { name, config } = getColumnNameAndConfig(a, b);\n return new PgBinaryVectorBuilder(name, config);\n}\nexport {\n PgBinaryVector,\n PgBinaryVectorBuilder,\n bit\n};\n//# sourceMappingURL=bit.js.map","import { entityKind } from \"../../../entity.js\";\nimport { getColumnNameAndConfig } from \"../../../utils.js\";\nimport { PgColumn, PgColumnBuilder } from \"../common.js\";\nclass PgHalfVectorBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgHalfVectorBuilder\";\n constructor(name, config) {\n super(name, \"array\", \"PgHalfVector\");\n this.config.dimensions = config.dimensions;\n }\n /** @internal */\n build(table) {\n return new PgHalfVector(\n table,\n this.config\n );\n }\n}\nclass PgHalfVector extends PgColumn {\n static [entityKind] = \"PgHalfVector\";\n dimensions = this.config.dimensions;\n getSQLType() {\n return `halfvec(${this.dimensions})`;\n }\n mapToDriverValue(value) {\n return JSON.stringify(value);\n }\n mapFromDriverValue(value) {\n return value.slice(1, -1).split(\",\").map((v) => Number.parseFloat(v));\n }\n}\nfunction halfvec(a, b) {\n const { name, config } = getColumnNameAndConfig(a, b);\n return new PgHalfVectorBuilder(name, config);\n}\nexport {\n PgHalfVector,\n PgHalfVectorBuilder,\n halfvec\n};\n//# sourceMappingURL=halfvec.js.map","import { entityKind } from \"../../../entity.js\";\nimport { getColumnNameAndConfig } from \"../../../utils.js\";\nimport { PgColumn, PgColumnBuilder } from \"../common.js\";\nclass PgSparseVectorBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgSparseVectorBuilder\";\n constructor(name, config) {\n super(name, \"string\", \"PgSparseVector\");\n this.config.dimensions = config.dimensions;\n }\n /** @internal */\n build(table) {\n return new PgSparseVector(\n table,\n this.config\n );\n }\n}\nclass PgSparseVector extends PgColumn {\n static [entityKind] = \"PgSparseVector\";\n dimensions = this.config.dimensions;\n getSQLType() {\n return `sparsevec(${this.dimensions})`;\n }\n}\nfunction sparsevec(a, b) {\n const { name, config } = getColumnNameAndConfig(a, b);\n return new PgSparseVectorBuilder(name, config);\n}\nexport {\n PgSparseVector,\n PgSparseVectorBuilder,\n sparsevec\n};\n//# sourceMappingURL=sparsevec.js.map","import { entityKind } from \"../../../entity.js\";\nimport { getColumnNameAndConfig } from \"../../../utils.js\";\nimport { PgColumn, PgColumnBuilder } from \"../common.js\";\nclass PgVectorBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgVectorBuilder\";\n constructor(name, config) {\n super(name, \"array\", \"PgVector\");\n this.config.dimensions = config.dimensions;\n }\n /** @internal */\n build(table) {\n return new PgVector(\n table,\n this.config\n );\n }\n}\nclass PgVector extends PgColumn {\n static [entityKind] = \"PgVector\";\n dimensions = this.config.dimensions;\n getSQLType() {\n return `vector(${this.dimensions})`;\n }\n mapToDriverValue(value) {\n return JSON.stringify(value);\n }\n mapFromDriverValue(value) {\n return value.slice(1, -1).split(\",\").map((v) => Number.parseFloat(v));\n }\n}\nfunction vector(a, b) {\n const { name, config } = getColumnNameAndConfig(a, b);\n return new PgVectorBuilder(name, config);\n}\nexport {\n PgVector,\n PgVectorBuilder,\n vector\n};\n//# sourceMappingURL=vector.js.map","import { bigint } from \"./bigint.js\";\nimport { bigserial } from \"./bigserial.js\";\nimport { boolean } from \"./boolean.js\";\nimport { char } from \"./char.js\";\nimport { cidr } from \"./cidr.js\";\nimport { customType } from \"./custom.js\";\nimport { date } from \"./date.js\";\nimport { doublePrecision } from \"./double-precision.js\";\nimport { inet } from \"./inet.js\";\nimport { integer } from \"./integer.js\";\nimport { interval } from \"./interval.js\";\nimport { json } from \"./json.js\";\nimport { jsonb } from \"./jsonb.js\";\nimport { line } from \"./line.js\";\nimport { macaddr } from \"./macaddr.js\";\nimport { macaddr8 } from \"./macaddr8.js\";\nimport { numeric } from \"./numeric.js\";\nimport { point } from \"./point.js\";\nimport { geometry } from \"./postgis_extension/geometry.js\";\nimport { real } from \"./real.js\";\nimport { serial } from \"./serial.js\";\nimport { smallint } from \"./smallint.js\";\nimport { smallserial } from \"./smallserial.js\";\nimport { text } from \"./text.js\";\nimport { time } from \"./time.js\";\nimport { timestamp } from \"./timestamp.js\";\nimport { uuid } from \"./uuid.js\";\nimport { varchar } from \"./varchar.js\";\nimport { bit } from \"./vector_extension/bit.js\";\nimport { halfvec } from \"./vector_extension/halfvec.js\";\nimport { sparsevec } from \"./vector_extension/sparsevec.js\";\nimport { vector } from \"./vector_extension/vector.js\";\nfunction getPgColumnBuilders() {\n return {\n bigint,\n bigserial,\n boolean,\n char,\n cidr,\n customType,\n date,\n doublePrecision,\n inet,\n integer,\n interval,\n json,\n jsonb,\n line,\n macaddr,\n macaddr8,\n numeric,\n point,\n geometry,\n real,\n serial,\n smallint,\n smallserial,\n text,\n time,\n timestamp,\n uuid,\n varchar,\n bit,\n halfvec,\n sparsevec,\n vector\n };\n}\nexport {\n getPgColumnBuilders\n};\n//# sourceMappingURL=all.js.map","import { entityKind } from \"../entity.js\";\nimport { Table } from \"../table.js\";\nimport { getPgColumnBuilders } from \"./columns/all.js\";\nconst InlineForeignKeys = Symbol.for(\"drizzle:PgInlineForeignKeys\");\nconst EnableRLS = Symbol.for(\"drizzle:EnableRLS\");\nclass PgTable extends Table {\n static [entityKind] = \"PgTable\";\n /** @internal */\n static Symbol = Object.assign({}, Table.Symbol, {\n InlineForeignKeys,\n EnableRLS\n });\n /**@internal */\n [InlineForeignKeys] = [];\n /** @internal */\n [EnableRLS] = false;\n /** @internal */\n [Table.Symbol.ExtraConfigBuilder] = void 0;\n /** @internal */\n [Table.Symbol.ExtraConfigColumns] = {};\n}\nfunction pgTableWithSchema(name, columns, extraConfig, schema, baseName = name) {\n const rawTable = new PgTable(name, schema, baseName);\n const parsedColumns = typeof columns === \"function\" ? columns(getPgColumnBuilders()) : columns;\n const builtColumns = Object.fromEntries(\n Object.entries(parsedColumns).map(([name2, colBuilderBase]) => {\n const colBuilder = colBuilderBase;\n colBuilder.setName(name2);\n const column = colBuilder.build(rawTable);\n rawTable[InlineForeignKeys].push(...colBuilder.buildForeignKeys(column, rawTable));\n return [name2, column];\n })\n );\n const builtColumnsForExtraConfig = Object.fromEntries(\n Object.entries(parsedColumns).map(([name2, colBuilderBase]) => {\n const colBuilder = colBuilderBase;\n colBuilder.setName(name2);\n const column = colBuilder.buildExtraConfigColumn(rawTable);\n return [name2, column];\n })\n );\n const table = Object.assign(rawTable, builtColumns);\n table[Table.Symbol.Columns] = builtColumns;\n table[Table.Symbol.ExtraConfigColumns] = builtColumnsForExtraConfig;\n if (extraConfig) {\n table[PgTable.Symbol.ExtraConfigBuilder] = extraConfig;\n }\n return Object.assign(table, {\n enableRLS: () => {\n table[PgTable.Symbol.EnableRLS] = true;\n return table;\n }\n });\n}\nconst pgTable = (name, columns, extraConfig) => {\n return pgTableWithSchema(name, columns, extraConfig, void 0);\n};\nfunction pgTableCreator(customizeTableName) {\n return (name, columns, extraConfig) => {\n return pgTableWithSchema(customizeTableName(name), columns, extraConfig, void 0, name);\n };\n}\nexport {\n EnableRLS,\n InlineForeignKeys,\n PgTable,\n pgTable,\n pgTableCreator,\n pgTableWithSchema\n};\n//# sourceMappingURL=table.js.map","import { SQL } from \"../sql/sql.js\";\nimport { entityKind, is } from \"../entity.js\";\nimport { IndexedColumn } from \"./columns/index.js\";\nclass IndexBuilderOn {\n constructor(unique, name) {\n this.unique = unique;\n this.name = name;\n }\n static [entityKind] = \"PgIndexBuilderOn\";\n on(...columns) {\n return new IndexBuilder(\n columns.map((it) => {\n if (is(it, SQL)) {\n return it;\n }\n it = it;\n const clonedIndexedColumn = new IndexedColumn(it.name, !!it.keyAsName, it.columnType, it.indexConfig);\n it.indexConfig = JSON.parse(JSON.stringify(it.defaultConfig));\n return clonedIndexedColumn;\n }),\n this.unique,\n false,\n this.name\n );\n }\n onOnly(...columns) {\n return new IndexBuilder(\n columns.map((it) => {\n if (is(it, SQL)) {\n return it;\n }\n it = it;\n const clonedIndexedColumn = new IndexedColumn(it.name, !!it.keyAsName, it.columnType, it.indexConfig);\n it.indexConfig = it.defaultConfig;\n return clonedIndexedColumn;\n }),\n this.unique,\n true,\n this.name\n );\n }\n /**\n * Specify what index method to use. Choices are `btree`, `hash`, `gist`, `spgist`, `gin`, `brin`, or user-installed access methods like `bloom`. The default method is `btree.\n *\n * If you have the `pg_vector` extension installed in your database, you can use the `hnsw` and `ivfflat` options, which are predefined types.\n *\n * **You can always specify any string you want in the method, in case Drizzle doesn't have it natively in its types**\n *\n * @param method The name of the index method to be used\n * @param columns\n * @returns\n */\n using(method, ...columns) {\n return new IndexBuilder(\n columns.map((it) => {\n if (is(it, SQL)) {\n return it;\n }\n it = it;\n const clonedIndexedColumn = new IndexedColumn(it.name, !!it.keyAsName, it.columnType, it.indexConfig);\n it.indexConfig = JSON.parse(JSON.stringify(it.defaultConfig));\n return clonedIndexedColumn;\n }),\n this.unique,\n true,\n this.name,\n method\n );\n }\n}\nclass IndexBuilder {\n static [entityKind] = \"PgIndexBuilder\";\n /** @internal */\n config;\n constructor(columns, unique, only, name, method = \"btree\") {\n this.config = {\n name,\n columns,\n unique,\n only,\n method\n };\n }\n concurrently() {\n this.config.concurrently = true;\n return this;\n }\n with(obj) {\n this.config.with = obj;\n return this;\n }\n where(condition) {\n this.config.where = condition;\n return this;\n }\n /** @internal */\n build(table) {\n return new Index(this.config, table);\n }\n}\nclass Index {\n static [entityKind] = \"PgIndex\";\n config;\n constructor(config, table) {\n this.config = { ...config, table };\n }\n}\nfunction index(name) {\n return new IndexBuilderOn(false, name);\n}\nfunction uniqueIndex(name) {\n return new IndexBuilderOn(true, name);\n}\nexport {\n Index,\n IndexBuilder,\n IndexBuilderOn,\n index,\n uniqueIndex\n};\n//# sourceMappingURL=indexes.js.map","import { Column } from \"../../column.js\";\nimport { is } from \"../../entity.js\";\nimport { Table } from \"../../table.js\";\nimport {\n isDriverValueEncoder,\n isSQLWrapper,\n Param,\n Placeholder,\n SQL,\n sql,\n StringChunk,\n View\n} from \"../sql.js\";\nfunction bindIfParam(value, column) {\n if (isDriverValueEncoder(column) && !isSQLWrapper(value) && !is(value, Param) && !is(value, Placeholder) && !is(value, Column) && !is(value, Table) && !is(value, View)) {\n return new Param(value, column);\n }\n return value;\n}\nconst eq = (left, right) => {\n return sql`${left} = ${bindIfParam(right, left)}`;\n};\nconst ne = (left, right) => {\n return sql`${left} <> ${bindIfParam(right, left)}`;\n};\nfunction and(...unfilteredConditions) {\n const conditions = unfilteredConditions.filter(\n (c) => c !== void 0\n );\n if (conditions.length === 0) {\n return void 0;\n }\n if (conditions.length === 1) {\n return new SQL(conditions);\n }\n return new SQL([\n new StringChunk(\"(\"),\n sql.join(conditions, new StringChunk(\" and \")),\n new StringChunk(\")\")\n ]);\n}\nfunction or(...unfilteredConditions) {\n const conditions = unfilteredConditions.filter(\n (c) => c !== void 0\n );\n if (conditions.length === 0) {\n return void 0;\n }\n if (conditions.length === 1) {\n return new SQL(conditions);\n }\n return new SQL([\n new StringChunk(\"(\"),\n sql.join(conditions, new StringChunk(\" or \")),\n new StringChunk(\")\")\n ]);\n}\nfunction not(condition) {\n return sql`not ${condition}`;\n}\nconst gt = (left, right) => {\n return sql`${left} > ${bindIfParam(right, left)}`;\n};\nconst gte = (left, right) => {\n return sql`${left} >= ${bindIfParam(right, left)}`;\n};\nconst lt = (left, right) => {\n return sql`${left} < ${bindIfParam(right, left)}`;\n};\nconst lte = (left, right) => {\n return sql`${left} <= ${bindIfParam(right, left)}`;\n};\nfunction inArray(column, values) {\n if (Array.isArray(values)) {\n if (values.length === 0) {\n return sql`false`;\n }\n return sql`${column} in ${values.map((v) => bindIfParam(v, column))}`;\n }\n return sql`${column} in ${bindIfParam(values, column)}`;\n}\nfunction notInArray(column, values) {\n if (Array.isArray(values)) {\n if (values.length === 0) {\n return sql`true`;\n }\n return sql`${column} not in ${values.map((v) => bindIfParam(v, column))}`;\n }\n return sql`${column} not in ${bindIfParam(values, column)}`;\n}\nfunction isNull(value) {\n return sql`${value} is null`;\n}\nfunction isNotNull(value) {\n return sql`${value} is not null`;\n}\nfunction exists(subquery) {\n return sql`exists ${subquery}`;\n}\nfunction notExists(subquery) {\n return sql`not exists ${subquery}`;\n}\nfunction between(column, min, max) {\n return sql`${column} between ${bindIfParam(min, column)} and ${bindIfParam(\n max,\n column\n )}`;\n}\nfunction notBetween(column, min, max) {\n return sql`${column} not between ${bindIfParam(\n min,\n column\n )} and ${bindIfParam(max, column)}`;\n}\nfunction like(column, value) {\n return sql`${column} like ${value}`;\n}\nfunction notLike(column, value) {\n return sql`${column} not like ${value}`;\n}\nfunction ilike(column, value) {\n return sql`${column} ilike ${value}`;\n}\nfunction notIlike(column, value) {\n return sql`${column} not ilike ${value}`;\n}\nfunction arrayContains(column, values) {\n if (Array.isArray(values)) {\n if (values.length === 0) {\n throw new Error(\"arrayContains requires at least one value\");\n }\n const array = sql`${bindIfParam(values, column)}`;\n return sql`${column} @> ${array}`;\n }\n return sql`${column} @> ${bindIfParam(values, column)}`;\n}\nfunction arrayContained(column, values) {\n if (Array.isArray(values)) {\n if (values.length === 0) {\n throw new Error(\"arrayContained requires at least one value\");\n }\n const array = sql`${bindIfParam(values, column)}`;\n return sql`${column} <@ ${array}`;\n }\n return sql`${column} <@ ${bindIfParam(values, column)}`;\n}\nfunction arrayOverlaps(column, values) {\n if (Array.isArray(values)) {\n if (values.length === 0) {\n throw new Error(\"arrayOverlaps requires at least one value\");\n }\n const array = sql`${bindIfParam(values, column)}`;\n return sql`${column} && ${array}`;\n }\n return sql`${column} && ${bindIfParam(values, column)}`;\n}\nexport {\n and,\n arrayContained,\n arrayContains,\n arrayOverlaps,\n between,\n bindIfParam,\n eq,\n exists,\n gt,\n gte,\n ilike,\n inArray,\n isNotNull,\n isNull,\n like,\n lt,\n lte,\n ne,\n not,\n notBetween,\n notExists,\n notIlike,\n notInArray,\n notLike,\n or\n};\n//# sourceMappingURL=conditions.js.map","import { sql } from \"../sql.js\";\nfunction asc(column) {\n return sql`${column} asc`;\n}\nfunction desc(column) {\n return sql`${column} desc`;\n}\nexport {\n asc,\n desc\n};\n//# sourceMappingURL=select.js.map","import { Column } from \"../../column.js\";\nimport { is } from \"../../entity.js\";\nimport { sql } from \"../sql.js\";\nfunction count(expression) {\n return sql`count(${expression || sql.raw(\"*\")})`.mapWith(Number);\n}\nfunction countDistinct(expression) {\n return sql`count(distinct ${expression})`.mapWith(Number);\n}\nfunction avg(expression) {\n return sql`avg(${expression})`.mapWith(String);\n}\nfunction avgDistinct(expression) {\n return sql`avg(distinct ${expression})`.mapWith(String);\n}\nfunction sum(expression) {\n return sql`sum(${expression})`.mapWith(String);\n}\nfunction sumDistinct(expression) {\n return sql`sum(distinct ${expression})`.mapWith(String);\n}\nfunction max(expression) {\n return sql`max(${expression})`.mapWith(is(expression, Column) ? expression : String);\n}\nfunction min(expression) {\n return sql`min(${expression})`.mapWith(is(expression, Column) ? expression : String);\n}\nexport {\n avg,\n avgDistinct,\n count,\n countDistinct,\n max,\n min,\n sum,\n sumDistinct\n};\n//# sourceMappingURL=aggregate.js.map","import { entityKind } from \"../entity.js\";\nimport { TableName } from \"../table.utils.js\";\nclass ForeignKeyBuilder {\n static [entityKind] = \"SQLiteForeignKeyBuilder\";\n /** @internal */\n reference;\n /** @internal */\n _onUpdate;\n /** @internal */\n _onDelete;\n constructor(config, actions) {\n this.reference = () => {\n const { name, columns, foreignColumns } = config();\n return { name, columns, foreignTable: foreignColumns[0].table, foreignColumns };\n };\n if (actions) {\n this._onUpdate = actions.onUpdate;\n this._onDelete = actions.onDelete;\n }\n }\n onUpdate(action) {\n this._onUpdate = action;\n return this;\n }\n onDelete(action) {\n this._onDelete = action;\n return this;\n }\n /** @internal */\n build(table) {\n return new ForeignKey(table, this);\n }\n}\nclass ForeignKey {\n constructor(table, builder) {\n this.table = table;\n this.reference = builder.reference;\n this.onUpdate = builder._onUpdate;\n this.onDelete = builder._onDelete;\n }\n static [entityKind] = \"SQLiteForeignKey\";\n reference;\n onUpdate;\n onDelete;\n getName() {\n const { name, columns, foreignColumns } = this.reference();\n const columnNames = columns.map((column) => column.name);\n const foreignColumnNames = foreignColumns.map((column) => column.name);\n const chunks = [\n this.table[TableName],\n ...columnNames,\n foreignColumns[0].table[TableName],\n ...foreignColumnNames\n ];\n return name ?? `${chunks.join(\"_\")}_fk`;\n }\n}\nfunction foreignKey(config) {\n function mappedConfig() {\n if (typeof config === \"function\") {\n const { name, columns, foreignColumns } = config();\n return {\n name,\n columns,\n foreignColumns\n };\n }\n return config;\n }\n return new ForeignKeyBuilder(mappedConfig);\n}\nexport {\n ForeignKey,\n ForeignKeyBuilder,\n foreignKey\n};\n//# sourceMappingURL=foreign-keys.js.map","import { entityKind } from \"../entity.js\";\nimport { TableName } from \"../table.utils.js\";\nfunction uniqueKeyName(table, columns) {\n return `${table[TableName]}_${columns.join(\"_\")}_unique`;\n}\nfunction unique(name) {\n return new UniqueOnConstraintBuilder(name);\n}\nclass UniqueConstraintBuilder {\n constructor(columns, name) {\n this.name = name;\n this.columns = columns;\n }\n static [entityKind] = \"SQLiteUniqueConstraintBuilder\";\n /** @internal */\n columns;\n /** @internal */\n build(table) {\n return new UniqueConstraint(table, this.columns, this.name);\n }\n}\nclass UniqueOnConstraintBuilder {\n static [entityKind] = \"SQLiteUniqueOnConstraintBuilder\";\n /** @internal */\n name;\n constructor(name) {\n this.name = name;\n }\n on(...columns) {\n return new UniqueConstraintBuilder(columns, this.name);\n }\n}\nclass UniqueConstraint {\n constructor(table, columns, name) {\n this.table = table;\n this.columns = columns;\n this.name = name ?? uniqueKeyName(this.table, this.columns.map((column) => column.name));\n }\n static [entityKind] = \"SQLiteUniqueConstraint\";\n columns;\n name;\n getName() {\n return this.name;\n }\n}\nexport {\n UniqueConstraint,\n UniqueConstraintBuilder,\n UniqueOnConstraintBuilder,\n unique,\n uniqueKeyName\n};\n//# sourceMappingURL=unique-constraint.js.map","import { ColumnBuilder } from \"../../column-builder.js\";\nimport { Column } from \"../../column.js\";\nimport { entityKind } from \"../../entity.js\";\nimport { ForeignKeyBuilder } from \"../foreign-keys.js\";\nimport { uniqueKeyName } from \"../unique-constraint.js\";\nclass SQLiteColumnBuilder extends ColumnBuilder {\n static [entityKind] = \"SQLiteColumnBuilder\";\n foreignKeyConfigs = [];\n references(ref, actions = {}) {\n this.foreignKeyConfigs.push({ ref, actions });\n return this;\n }\n unique(name) {\n this.config.isUnique = true;\n this.config.uniqueName = name;\n return this;\n }\n generatedAlwaysAs(as, config) {\n this.config.generated = {\n as,\n type: \"always\",\n mode: config?.mode ?? \"virtual\"\n };\n return this;\n }\n /** @internal */\n buildForeignKeys(column, table) {\n return this.foreignKeyConfigs.map(({ ref, actions }) => {\n return ((ref2, actions2) => {\n const builder = new ForeignKeyBuilder(() => {\n const foreignColumn = ref2();\n return { columns: [column], foreignColumns: [foreignColumn] };\n });\n if (actions2.onUpdate) {\n builder.onUpdate(actions2.onUpdate);\n }\n if (actions2.onDelete) {\n builder.onDelete(actions2.onDelete);\n }\n return builder.build(table);\n })(ref, actions);\n });\n }\n}\nclass SQLiteColumn extends Column {\n constructor(table, config) {\n if (!config.uniqueName) {\n config.uniqueName = uniqueKeyName(table, [config.name]);\n }\n super(table, config);\n this.table = table;\n }\n static [entityKind] = \"SQLiteColumn\";\n}\nexport {\n SQLiteColumn,\n SQLiteColumnBuilder\n};\n//# sourceMappingURL=common.js.map","import { entityKind } from \"../../entity.js\";\nimport { getColumnNameAndConfig, textDecoder } from \"../../utils.js\";\nimport { SQLiteColumn, SQLiteColumnBuilder } from \"./common.js\";\nclass SQLiteBigIntBuilder extends SQLiteColumnBuilder {\n static [entityKind] = \"SQLiteBigIntBuilder\";\n constructor(name) {\n super(name, \"bigint\", \"SQLiteBigInt\");\n }\n /** @internal */\n build(table) {\n return new SQLiteBigInt(table, this.config);\n }\n}\nclass SQLiteBigInt extends SQLiteColumn {\n static [entityKind] = \"SQLiteBigInt\";\n getSQLType() {\n return \"blob\";\n }\n mapFromDriverValue(value) {\n if (typeof Buffer !== \"undefined\" && Buffer.from) {\n const buf = Buffer.isBuffer(value) ? value : value instanceof ArrayBuffer ? Buffer.from(value) : value.buffer ? Buffer.from(value.buffer, value.byteOffset, value.byteLength) : Buffer.from(value);\n return BigInt(buf.toString(\"utf8\"));\n }\n return BigInt(textDecoder.decode(value));\n }\n mapToDriverValue(value) {\n return Buffer.from(value.toString());\n }\n}\nclass SQLiteBlobJsonBuilder extends SQLiteColumnBuilder {\n static [entityKind] = \"SQLiteBlobJsonBuilder\";\n constructor(name) {\n super(name, \"json\", \"SQLiteBlobJson\");\n }\n /** @internal */\n build(table) {\n return new SQLiteBlobJson(\n table,\n this.config\n );\n }\n}\nclass SQLiteBlobJson extends SQLiteColumn {\n static [entityKind] = \"SQLiteBlobJson\";\n getSQLType() {\n return \"blob\";\n }\n mapFromDriverValue(value) {\n if (typeof Buffer !== \"undefined\" && Buffer.from) {\n const buf = Buffer.isBuffer(value) ? value : value instanceof ArrayBuffer ? Buffer.from(value) : value.buffer ? Buffer.from(value.buffer, value.byteOffset, value.byteLength) : Buffer.from(value);\n return JSON.parse(buf.toString(\"utf8\"));\n }\n return JSON.parse(textDecoder.decode(value));\n }\n mapToDriverValue(value) {\n return Buffer.from(JSON.stringify(value));\n }\n}\nclass SQLiteBlobBufferBuilder extends SQLiteColumnBuilder {\n static [entityKind] = \"SQLiteBlobBufferBuilder\";\n constructor(name) {\n super(name, \"buffer\", \"SQLiteBlobBuffer\");\n }\n /** @internal */\n build(table) {\n return new SQLiteBlobBuffer(table, this.config);\n }\n}\nclass SQLiteBlobBuffer extends SQLiteColumn {\n static [entityKind] = \"SQLiteBlobBuffer\";\n mapFromDriverValue(value) {\n if (Buffer.isBuffer(value)) {\n return value;\n }\n return Buffer.from(value);\n }\n getSQLType() {\n return \"blob\";\n }\n}\nfunction blob(a, b) {\n const { name, config } = getColumnNameAndConfig(a, b);\n if (config?.mode === \"json\") {\n return new SQLiteBlobJsonBuilder(name);\n }\n if (config?.mode === \"bigint\") {\n return new SQLiteBigIntBuilder(name);\n }\n return new SQLiteBlobBufferBuilder(name);\n}\nexport {\n SQLiteBigInt,\n SQLiteBigIntBuilder,\n SQLiteBlobBuffer,\n SQLiteBlobBufferBuilder,\n SQLiteBlobJson,\n SQLiteBlobJsonBuilder,\n blob\n};\n//# sourceMappingURL=blob.js.map","import { entityKind } from \"../../entity.js\";\nimport { getColumnNameAndConfig } from \"../../utils.js\";\nimport { SQLiteColumn, SQLiteColumnBuilder } from \"./common.js\";\nclass SQLiteCustomColumnBuilder extends SQLiteColumnBuilder {\n static [entityKind] = \"SQLiteCustomColumnBuilder\";\n constructor(name, fieldConfig, customTypeParams) {\n super(name, \"custom\", \"SQLiteCustomColumn\");\n this.config.fieldConfig = fieldConfig;\n this.config.customTypeParams = customTypeParams;\n }\n /** @internal */\n build(table) {\n return new SQLiteCustomColumn(\n table,\n this.config\n );\n }\n}\nclass SQLiteCustomColumn extends SQLiteColumn {\n static [entityKind] = \"SQLiteCustomColumn\";\n sqlName;\n mapTo;\n mapFrom;\n constructor(table, config) {\n super(table, config);\n this.sqlName = config.customTypeParams.dataType(config.fieldConfig);\n this.mapTo = config.customTypeParams.toDriver;\n this.mapFrom = config.customTypeParams.fromDriver;\n }\n getSQLType() {\n return this.sqlName;\n }\n mapFromDriverValue(value) {\n return typeof this.mapFrom === \"function\" ? this.mapFrom(value) : value;\n }\n mapToDriverValue(value) {\n return typeof this.mapTo === \"function\" ? this.mapTo(value) : value;\n }\n}\nfunction customType(customTypeParams) {\n return (a, b) => {\n const { name, config } = getColumnNameAndConfig(a, b);\n return new SQLiteCustomColumnBuilder(\n name,\n config,\n customTypeParams\n );\n };\n}\nexport {\n SQLiteCustomColumn,\n SQLiteCustomColumnBuilder,\n customType\n};\n//# sourceMappingURL=custom.js.map","import { entityKind } from \"../../entity.js\";\nimport { sql } from \"../../sql/sql.js\";\nimport { getColumnNameAndConfig } from \"../../utils.js\";\nimport { SQLiteColumn, SQLiteColumnBuilder } from \"./common.js\";\nclass SQLiteBaseIntegerBuilder extends SQLiteColumnBuilder {\n static [entityKind] = \"SQLiteBaseIntegerBuilder\";\n constructor(name, dataType, columnType) {\n super(name, dataType, columnType);\n this.config.autoIncrement = false;\n }\n primaryKey(config) {\n if (config?.autoIncrement) {\n this.config.autoIncrement = true;\n }\n this.config.hasDefault = true;\n return super.primaryKey();\n }\n}\nclass SQLiteBaseInteger extends SQLiteColumn {\n static [entityKind] = \"SQLiteBaseInteger\";\n autoIncrement = this.config.autoIncrement;\n getSQLType() {\n return \"integer\";\n }\n}\nclass SQLiteIntegerBuilder extends SQLiteBaseIntegerBuilder {\n static [entityKind] = \"SQLiteIntegerBuilder\";\n constructor(name) {\n super(name, \"number\", \"SQLiteInteger\");\n }\n build(table) {\n return new SQLiteInteger(\n table,\n this.config\n );\n }\n}\nclass SQLiteInteger extends SQLiteBaseInteger {\n static [entityKind] = \"SQLiteInteger\";\n}\nclass SQLiteTimestampBuilder extends SQLiteBaseIntegerBuilder {\n static [entityKind] = \"SQLiteTimestampBuilder\";\n constructor(name, mode) {\n super(name, \"date\", \"SQLiteTimestamp\");\n this.config.mode = mode;\n }\n /**\n * @deprecated Use `default()` with your own expression instead.\n *\n * Adds `DEFAULT (cast((julianday('now') - 2440587.5)*86400000 as integer))` to the column, which is the current epoch timestamp in milliseconds.\n */\n defaultNow() {\n return this.default(sql`(cast((julianday('now') - 2440587.5)*86400000 as integer))`);\n }\n build(table) {\n return new SQLiteTimestamp(\n table,\n this.config\n );\n }\n}\nclass SQLiteTimestamp extends SQLiteBaseInteger {\n static [entityKind] = \"SQLiteTimestamp\";\n mode = this.config.mode;\n mapFromDriverValue(value) {\n if (this.config.mode === \"timestamp\") {\n return new Date(value * 1e3);\n }\n return new Date(value);\n }\n mapToDriverValue(value) {\n const unix = value.getTime();\n if (this.config.mode === \"timestamp\") {\n return Math.floor(unix / 1e3);\n }\n return unix;\n }\n}\nclass SQLiteBooleanBuilder extends SQLiteBaseIntegerBuilder {\n static [entityKind] = \"SQLiteBooleanBuilder\";\n constructor(name, mode) {\n super(name, \"boolean\", \"SQLiteBoolean\");\n this.config.mode = mode;\n }\n build(table) {\n return new SQLiteBoolean(\n table,\n this.config\n );\n }\n}\nclass SQLiteBoolean extends SQLiteBaseInteger {\n static [entityKind] = \"SQLiteBoolean\";\n mode = this.config.mode;\n mapFromDriverValue(value) {\n return Number(value) === 1;\n }\n mapToDriverValue(value) {\n return value ? 1 : 0;\n }\n}\nfunction integer(a, b) {\n const { name, config } = getColumnNameAndConfig(a, b);\n if (config?.mode === \"timestamp\" || config?.mode === \"timestamp_ms\") {\n return new SQLiteTimestampBuilder(name, config.mode);\n }\n if (config?.mode === \"boolean\") {\n return new SQLiteBooleanBuilder(name, config.mode);\n }\n return new SQLiteIntegerBuilder(name);\n}\nconst int = integer;\nexport {\n SQLiteBaseInteger,\n SQLiteBaseIntegerBuilder,\n SQLiteBoolean,\n SQLiteBooleanBuilder,\n SQLiteInteger,\n SQLiteIntegerBuilder,\n SQLiteTimestamp,\n SQLiteTimestampBuilder,\n int,\n integer\n};\n//# sourceMappingURL=integer.js.map","import { entityKind } from \"../../entity.js\";\nimport { getColumnNameAndConfig } from \"../../utils.js\";\nimport { SQLiteColumn, SQLiteColumnBuilder } from \"./common.js\";\nclass SQLiteNumericBuilder extends SQLiteColumnBuilder {\n static [entityKind] = \"SQLiteNumericBuilder\";\n constructor(name) {\n super(name, \"string\", \"SQLiteNumeric\");\n }\n /** @internal */\n build(table) {\n return new SQLiteNumeric(\n table,\n this.config\n );\n }\n}\nclass SQLiteNumeric extends SQLiteColumn {\n static [entityKind] = \"SQLiteNumeric\";\n mapFromDriverValue(value) {\n if (typeof value === \"string\") return value;\n return String(value);\n }\n getSQLType() {\n return \"numeric\";\n }\n}\nclass SQLiteNumericNumberBuilder extends SQLiteColumnBuilder {\n static [entityKind] = \"SQLiteNumericNumberBuilder\";\n constructor(name) {\n super(name, \"number\", \"SQLiteNumericNumber\");\n }\n /** @internal */\n build(table) {\n return new SQLiteNumericNumber(\n table,\n this.config\n );\n }\n}\nclass SQLiteNumericNumber extends SQLiteColumn {\n static [entityKind] = \"SQLiteNumericNumber\";\n mapFromDriverValue(value) {\n if (typeof value === \"number\") return value;\n return Number(value);\n }\n mapToDriverValue = String;\n getSQLType() {\n return \"numeric\";\n }\n}\nclass SQLiteNumericBigIntBuilder extends SQLiteColumnBuilder {\n static [entityKind] = \"SQLiteNumericBigIntBuilder\";\n constructor(name) {\n super(name, \"bigint\", \"SQLiteNumericBigInt\");\n }\n /** @internal */\n build(table) {\n return new SQLiteNumericBigInt(\n table,\n this.config\n );\n }\n}\nclass SQLiteNumericBigInt extends SQLiteColumn {\n static [entityKind] = \"SQLiteNumericBigInt\";\n mapFromDriverValue = BigInt;\n mapToDriverValue = String;\n getSQLType() {\n return \"numeric\";\n }\n}\nfunction numeric(a, b) {\n const { name, config } = getColumnNameAndConfig(a, b);\n const mode = config?.mode;\n return mode === \"number\" ? new SQLiteNumericNumberBuilder(name) : mode === \"bigint\" ? new SQLiteNumericBigIntBuilder(name) : new SQLiteNumericBuilder(name);\n}\nexport {\n SQLiteNumeric,\n SQLiteNumericBigInt,\n SQLiteNumericBigIntBuilder,\n SQLiteNumericBuilder,\n SQLiteNumericNumber,\n SQLiteNumericNumberBuilder,\n numeric\n};\n//# sourceMappingURL=numeric.js.map","import { entityKind } from \"../../entity.js\";\nimport { SQLiteColumn, SQLiteColumnBuilder } from \"./common.js\";\nclass SQLiteRealBuilder extends SQLiteColumnBuilder {\n static [entityKind] = \"SQLiteRealBuilder\";\n constructor(name) {\n super(name, \"number\", \"SQLiteReal\");\n }\n /** @internal */\n build(table) {\n return new SQLiteReal(table, this.config);\n }\n}\nclass SQLiteReal extends SQLiteColumn {\n static [entityKind] = \"SQLiteReal\";\n getSQLType() {\n return \"real\";\n }\n}\nfunction real(name) {\n return new SQLiteRealBuilder(name ?? \"\");\n}\nexport {\n SQLiteReal,\n SQLiteRealBuilder,\n real\n};\n//# sourceMappingURL=real.js.map","import { entityKind } from \"../../entity.js\";\nimport { getColumnNameAndConfig } from \"../../utils.js\";\nimport { SQLiteColumn, SQLiteColumnBuilder } from \"./common.js\";\nclass SQLiteTextBuilder extends SQLiteColumnBuilder {\n static [entityKind] = \"SQLiteTextBuilder\";\n constructor(name, config) {\n super(name, \"string\", \"SQLiteText\");\n this.config.enumValues = config.enum;\n this.config.length = config.length;\n }\n /** @internal */\n build(table) {\n return new SQLiteText(\n table,\n this.config\n );\n }\n}\nclass SQLiteText extends SQLiteColumn {\n static [entityKind] = \"SQLiteText\";\n enumValues = this.config.enumValues;\n length = this.config.length;\n constructor(table, config) {\n super(table, config);\n }\n getSQLType() {\n return `text${this.config.length ? `(${this.config.length})` : \"\"}`;\n }\n}\nclass SQLiteTextJsonBuilder extends SQLiteColumnBuilder {\n static [entityKind] = \"SQLiteTextJsonBuilder\";\n constructor(name) {\n super(name, \"json\", \"SQLiteTextJson\");\n }\n /** @internal */\n build(table) {\n return new SQLiteTextJson(\n table,\n this.config\n );\n }\n}\nclass SQLiteTextJson extends SQLiteColumn {\n static [entityKind] = \"SQLiteTextJson\";\n getSQLType() {\n return \"text\";\n }\n mapFromDriverValue(value) {\n return JSON.parse(value);\n }\n mapToDriverValue(value) {\n return JSON.stringify(value);\n }\n}\nfunction text(a, b = {}) {\n const { name, config } = getColumnNameAndConfig(a, b);\n if (config.mode === \"json\") {\n return new SQLiteTextJsonBuilder(name);\n }\n return new SQLiteTextBuilder(name, config);\n}\nexport {\n SQLiteText,\n SQLiteTextBuilder,\n SQLiteTextJson,\n SQLiteTextJsonBuilder,\n text\n};\n//# sourceMappingURL=text.js.map","import { blob } from \"./blob.js\";\nimport { customType } from \"./custom.js\";\nimport { integer } from \"./integer.js\";\nimport { numeric } from \"./numeric.js\";\nimport { real } from \"./real.js\";\nimport { text } from \"./text.js\";\nfunction getSQLiteColumnBuilders() {\n return {\n blob,\n customType,\n integer,\n numeric,\n real,\n text\n };\n}\nexport {\n getSQLiteColumnBuilders\n};\n//# sourceMappingURL=all.js.map","import { entityKind } from \"../entity.js\";\nimport { Table } from \"../table.js\";\nimport { getSQLiteColumnBuilders } from \"./columns/all.js\";\nconst InlineForeignKeys = Symbol.for(\"drizzle:SQLiteInlineForeignKeys\");\nclass SQLiteTable extends Table {\n static [entityKind] = \"SQLiteTable\";\n /** @internal */\n static Symbol = Object.assign({}, Table.Symbol, {\n InlineForeignKeys\n });\n /** @internal */\n [Table.Symbol.Columns];\n /** @internal */\n [InlineForeignKeys] = [];\n /** @internal */\n [Table.Symbol.ExtraConfigBuilder] = void 0;\n}\nfunction sqliteTableBase(name, columns, extraConfig, schema, baseName = name) {\n const rawTable = new SQLiteTable(name, schema, baseName);\n const parsedColumns = typeof columns === \"function\" ? columns(getSQLiteColumnBuilders()) : columns;\n const builtColumns = Object.fromEntries(\n Object.entries(parsedColumns).map(([name2, colBuilderBase]) => {\n const colBuilder = colBuilderBase;\n colBuilder.setName(name2);\n const column = colBuilder.build(rawTable);\n rawTable[InlineForeignKeys].push(...colBuilder.buildForeignKeys(column, rawTable));\n return [name2, column];\n })\n );\n const table = Object.assign(rawTable, builtColumns);\n table[Table.Symbol.Columns] = builtColumns;\n table[Table.Symbol.ExtraConfigColumns] = builtColumns;\n if (extraConfig) {\n table[SQLiteTable.Symbol.ExtraConfigBuilder] = extraConfig;\n }\n return table;\n}\nconst sqliteTable = (name, columns, extraConfig) => {\n return sqliteTableBase(name, columns, extraConfig);\n};\nfunction sqliteTableCreator(customizeTableName) {\n return (name, columns, extraConfig) => {\n return sqliteTableBase(customizeTableName(name), columns, extraConfig, void 0, name);\n };\n}\nexport {\n InlineForeignKeys,\n SQLiteTable,\n sqliteTable,\n sqliteTableCreator\n};\n//# sourceMappingURL=table.js.map","import { entityKind } from \"../entity.js\";\nclass IndexBuilderOn {\n constructor(name, unique) {\n this.name = name;\n this.unique = unique;\n }\n static [entityKind] = \"SQLiteIndexBuilderOn\";\n on(...columns) {\n return new IndexBuilder(this.name, columns, this.unique);\n }\n}\nclass IndexBuilder {\n static [entityKind] = \"SQLiteIndexBuilder\";\n /** @internal */\n config;\n constructor(name, columns, unique) {\n this.config = {\n name,\n columns,\n unique,\n where: void 0\n };\n }\n /**\n * Condition for partial index.\n */\n where(condition) {\n this.config.where = condition;\n return this;\n }\n /** @internal */\n build(table) {\n return new Index(this.config, table);\n }\n}\nclass Index {\n static [entityKind] = \"SQLiteIndex\";\n config;\n constructor(config, table) {\n this.config = { ...config, table };\n }\n}\nfunction index(name) {\n return new IndexBuilderOn(name, false);\n}\nfunction uniqueIndex(name) {\n return new IndexBuilderOn(name, true);\n}\nexport {\n Index,\n IndexBuilder,\n IndexBuilderOn,\n index,\n uniqueIndex\n};\n//# sourceMappingURL=indexes.js.map","import { AsyncLocalStorage } from \"node:async_hooks\";\n//#region src/config.ts\nlet sink;\nfunction configureTracing(options) {\n\tsink = options.sink;\n}\nfunction getTracingSink() {\n\treturn sink;\n}\nfunction resetTracingForTests() {\n\tsink = void 0;\n}\n//#endregion\n//#region src/context.ts\nconst traceContextStorage = new AsyncLocalStorage();\nfunction getTraceContext() {\n\treturn traceContextStorage.getStore();\n}\nfunction runWithTraceContext(context, fn) {\n\treturn traceContextStorage.run(context, fn);\n}\n//#endregion\n//#region src/serialize.ts\nfunction formatConsoleArg(value) {\n\tif (typeof value === \"string\") return value;\n\tif (value instanceof Error) return value.stack ?? value.message;\n\ttry {\n\t\treturn JSON.stringify(value);\n\t} catch {\n\t\treturn String(value);\n\t}\n}\nfunction serializeConsoleArgs(args) {\n\tif (args.length === 0) return { message: \"\" };\n\tconst [first, ...rest] = args;\n\tconst message = formatConsoleArg(first);\n\tif (rest.length === 0) return { message };\n\tif (rest.length === 1) return {\n\t\tmessage,\n\t\tdata: rest[0]\n\t};\n\treturn {\n\t\tmessage,\n\t\tdata: rest\n\t};\n}\nfunction summarizePayload(payload) {\n\tif (payload === void 0) return;\n\ttry {\n\t\tconst serialized = JSON.stringify(payload);\n\t\tif (serialized.length <= 500) return payload;\n\t\treturn {\n\t\t\ttruncated: true,\n\t\t\tlength: serialized.length,\n\t\t\tpreview: serialized.slice(0, 500)\n\t\t};\n\t} catch {\n\t\treturn {\n\t\t\ttruncated: true,\n\t\t\tpreview: String(payload).slice(0, 500)\n\t\t};\n\t}\n}\n//#endregion\n//#region src/console.ts\nconst CONSOLE_LEVELS = [\n\t\"log\",\n\t\"debug\",\n\t\"info\",\n\t\"warn\",\n\t\"error\"\n];\nfunction mapConsoleLevel(level) {\n\tif (level === \"log\") return \"info\";\n\treturn level;\n}\nasync function captureConsole(fn) {\n\tconst originals = /* @__PURE__ */ new Map();\n\tfor (const level of CONSOLE_LEVELS) {\n\t\toriginals.set(level, console[level].bind(console));\n\t\tconsole[level] = (...args) => {\n\t\t\toriginals.get(level)?.(...args);\n\t\t\tconst sink = getTracingSink();\n\t\t\tconst context = getTraceContext();\n\t\t\tif (!sink || !context) return;\n\t\t\tconst { message, data } = serializeConsoleArgs(args);\n\t\t\tsink.appendLog({\n\t\t\t\ttraceId: context.traceId,\n\t\t\t\tspanId: context.spanId,\n\t\t\t\tlevel: mapConsoleLevel(level),\n\t\t\t\tmessage,\n\t\t\t\tdata,\n\t\t\t\tsource: \"console\",\n\t\t\t\tcreatedAt: /* @__PURE__ */ new Date()\n\t\t\t});\n\t\t};\n\t}\n\ttry {\n\t\treturn await fn();\n\t} finally {\n\t\tfor (const level of CONSOLE_LEVELS) {\n\t\t\tconst original = originals.get(level);\n\t\t\tif (original) console[level] = original;\n\t\t}\n\t}\n}\n//#endregion\n//#region src/log.ts\nasync function logSystem(level, message, data) {\n\tconst sink = getTracingSink();\n\tconst context = getTraceContext();\n\tif (!sink || !context) return;\n\tawait sink.appendLog({\n\t\ttraceId: context.traceId,\n\t\tspanId: context.spanId,\n\t\tlevel,\n\t\tmessage,\n\t\tdata,\n\t\tsource: \"system\",\n\t\tcreatedAt: /* @__PURE__ */ new Date()\n\t});\n}\n//#endregion\n//#region src/span.ts\nfunction serializeSpanError(error) {\n\tif (error instanceof Error) return {\n\t\tname: error.name,\n\t\tmessage: error.message\n\t};\n\treturn { message: String(error) };\n}\nasync function withSpan(input, fn) {\n\tconst sink = getTracingSink();\n\tif (!sink) return await fn();\n\tconst parent = getTraceContext();\n\tconst spanId = input.spanId ?? crypto.randomUUID();\n\tconst traceId = input.traceId ?? parent?.traceId ?? spanId;\n\tconst parentSpanId = input.parentSpanId ?? parent?.spanId;\n\tconst startedAt = /* @__PURE__ */ new Date();\n\tawait sink.openSpan({\n\t\tid: spanId,\n\t\ttraceId,\n\t\tparentSpanId,\n\t\tkind: input.kind,\n\t\trefId: input.refId,\n\t\tname: input.name,\n\t\tmetadata: input.metadata,\n\t\tstartedAt\n\t});\n\tconst context = {\n\t\ttraceId,\n\t\tspanId,\n\t\tparentSpanId\n\t};\n\ttry {\n\t\tconst result = await runWithTraceContext(context, () => fn());\n\t\tawait sink.closeSpan(spanId, \"ok\", /* @__PURE__ */ new Date());\n\t\treturn result;\n\t} catch (error) {\n\t\tawait sink.closeSpan(spanId, \"error\", /* @__PURE__ */ new Date(), serializeSpanError(error));\n\t\tthrow error;\n\t}\n}\nfunction isSpanActive() {\n\treturn getTraceContext() !== void 0;\n}\n//#endregion\nexport { captureConsole, configureTracing, getTraceContext, isSpanActive, logSystem, resetTracingForTests, runWithTraceContext, summarizePayload, withSpan };\n\n//# sourceMappingURL=index.mjs.map","import { createRequire } from \"node:module\";\nimport { AsyncLocalStorage } from \"node:async_hooks\";\nimport { index, integer, jsonb, pgTable, text, timestamp, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { index as index$1, integer as integer$1, sqliteTable, text as text$1, uniqueIndex as uniqueIndex$1 } from \"drizzle-orm/sqlite-core\";\nimport { and, and as and$1, asc, count, desc, eq, eq as eq$1, gt, inArray, inArray as inArray$1, isNotNull, isNull, lt, lte, max, max as max$1, ne, notInArray, or, sql, sql as sql$1 } from \"drizzle-orm\";\nimport { drizzle } from \"drizzle-orm/pg-proxy\";\nimport { existsSync, mkdirSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport SqliteClient from \"better-sqlite3\";\nimport { drizzle as drizzle$1 } from \"drizzle-orm/better-sqlite3\";\nimport { readMigrationFiles } from \"drizzle-orm/migrator\";\nimport { fileURLToPath } from \"node:url\";\nimport { migrate } from \"drizzle-orm/better-sqlite3/migrator\";\nimport { buildCredentialInstanceLabel, deriveCredentialInstanceSlug, displayCredentialAppName, resolveUniqueCredentialInstanceLabel, stripPromptContext } from \"@keystrokehq/shared\";\nimport { getTraceContext } from \"@keystrokehq/tracing\";\nimport { createCipheriv, createDecipheriv, createHash, randomBytes } from \"node:crypto\";\n//#region \\0rolldown/runtime.js\nvar __defProp = Object.defineProperty;\nvar __exportAll = (all, no_symbols) => {\n\tlet target = {};\n\tfor (var name in all) __defProp(target, name, {\n\t\tget: all[name],\n\t\tenumerable: true\n\t});\n\tif (!no_symbols) __defProp(target, Symbol.toStringTag, { value: \"Module\" });\n\treturn target;\n};\n//#endregion\n//#region src/config/constants.ts\n/** Used when `DATABASE_URL` is unset and `initDatabase({ url })` is omitted. */\nconst DEFAULT_DATABASE_URL = \"file:./data/dev.db\";\nconst tenantScopeStorage = new AsyncLocalStorage();\nfunction runWithTenantScope(tenantId, fn) {\n\treturn tenantScopeStorage.run(tenantId, fn);\n}\nfunction getServerTenantScopeId() {\n\treturn tenantScopeStorage.getStore() ?? process.env.TENANT_ID?.trim() ?? \"default\";\n}\n//#endregion\n//#region src/config/project-scope.ts\n/** Default project id for local single-project dev. */\nconst DEFAULT_PROJECT_ID = \"default\";\nconst projectScopeStorage = new AsyncLocalStorage();\nfunction runWithProjectScope(projectId, fn) {\n\treturn projectScopeStorage.run(projectId, fn);\n}\nfunction getBoundProjectScopeId() {\n\treturn projectScopeStorage.getStore();\n}\nfunction getProjectScopeId() {\n\treturn getBoundProjectScopeId() ?? \"default\";\n}\n//#endregion\n//#region src/config/postgres-url.ts\n/** Default `node-pg` pool size when `PG_POOL_MAX` / `options.max` are unset. */\nconst DEFAULT_PG_POOL_MAX = 10;\n/**\n* Resolve Postgres client pool size from env.\n* Invalid / non-positive values fall back to {@link DEFAULT_PG_POOL_MAX}.\n*/\nfunction resolvePgPoolMax(env = process.env) {\n\tconst raw = env.PG_POOL_MAX?.trim();\n\tif (!raw) return 10;\n\tconst parsed = Number(raw);\n\tif (!Number.isFinite(parsed) || parsed < 1) return 10;\n\treturn Math.floor(parsed);\n}\nconst POSTGRES_ENV_KEYS = [\n\t\"POSTGRES_HOST\",\n\t\"POSTGRES_PORT\",\n\t\"POSTGRES_DB\",\n\t\"POSTGRES_USER\",\n\t\"POSTGRES_PASSWORD\"\n];\nfunction readEnv(env, key) {\n\treturn env[key]?.trim() || void 0;\n}\nfunction readPostgresSsl(env) {\n\tconst value = readEnv(env, \"POSTGRES_SSL\")?.toLowerCase();\n\treturn value === \"true\" || value === \"1\" || value === \"yes\";\n}\nfunction readPostgresSslFromUrl(url) {\n\ttry {\n\t\tconst sslmode = new URL(url.replace(/^postgresql:/i, \"postgres:\")).searchParams.get(\"sslmode\")?.toLowerCase();\n\t\treturn sslmode === \"require\" || sslmode === \"verify-ca\" || sslmode === \"verify-full\";\n\t} catch {\n\t\treturn false;\n\t}\n}\nfunction resolvePostgresSsl(env, url) {\n\treturn readPostgresSsl(env) || (url ? readPostgresSslFromUrl(url) : false);\n}\nfunction resolvePostgresBranch(env) {\n\tconst explicit = env.POSTGRES_BRANCH?.trim();\n\tif (explicit) return explicit;\n\tconst platformUser = readEnv(env, \"POSTGRES_USER\") ?? readPostgresUserFromDatabaseUrl(readEnv(env, \"DATABASE_URL\"));\n\tif (!platformUser?.includes(\".\")) return;\n\treturn platformUser.slice(platformUser.lastIndexOf(\".\") + 1) || void 0;\n}\nfunction readPostgresUserFromDatabaseUrl(url) {\n\tif (!url || !/^postgres(ql)?:\\/\\//i.test(url)) return;\n\ttry {\n\t\tconst parsed = new URL(url.replace(/^postgresql:/i, \"postgres:\"));\n\t\treturn decodeURIComponent(parsed.username);\n\t} catch {\n\t\treturn;\n\t}\n}\nfunction applyPostgresSslMode(url) {\n\tconst parsed = new URL(url.replace(/^postgresql:/i, \"postgres:\"));\n\tif (!parsed.searchParams.has(\"sslmode\")) parsed.searchParams.set(\"sslmode\", \"require\");\n\treturn parsed.toString().replace(/^postgres:/i, \"postgresql:\");\n}\nfunction missingPostgresEnvKeys(env) {\n\treturn POSTGRES_ENV_KEYS.filter((key) => readEnv(env, key) === void 0);\n}\n/** Append POSTGRES_BRANCH to bare role names for providers that use user.branch connections. */\nfunction qualifyConnectionUser(user, env = process.env) {\n\tif (user.includes(\".\")) return user;\n\tconst branch = resolvePostgresBranch(env);\n\tif (!branch) return user;\n\treturn `${user}.${branch}`;\n}\nfunction buildPostgresUrl(config) {\n\tconst user = encodeURIComponent(config.user);\n\tconst password = encodeURIComponent(config.password);\n\tconst auth = config.password ? `${user}:${password}` : user;\n\tconst database = encodeURIComponent(config.database).replace(/%2F/g, \"/\");\n\tconst url = `postgresql://${auth}@${config.host}:${config.port}/${database}`;\n\treturn config.ssl ? applyPostgresSslMode(url) : url;\n}\nfunction parsePostgresUrl(url) {\n\tconst parsed = new URL(url.replace(/^postgresql:/i, \"postgres:\"));\n\tconst database = decodeURIComponent(parsed.pathname.replace(/^\\//, \"\"));\n\tif (!database) throw new Error(`Postgres URL is missing database name: ${url}`);\n\treturn {\n\t\thost: parsed.hostname,\n\t\tport: parsed.port ? Number(parsed.port) : 5432,\n\t\tdatabase,\n\t\tuser: decodeURIComponent(parsed.username),\n\t\tpassword: decodeURIComponent(parsed.password)\n\t};\n}\nfunction resolvePostgresConfigFromPostgresEnv(env) {\n\tif (missingPostgresEnvKeys(env).length > 0) return;\n\tconst port = Number(readEnv(env, \"POSTGRES_PORT\"));\n\tif (!Number.isFinite(port)) throw new Error(`Invalid POSTGRES_PORT: ${env.POSTGRES_PORT}`);\n\treturn {\n\t\thost: readEnv(env, \"POSTGRES_HOST\"),\n\t\tport,\n\t\tdatabase: readEnv(env, \"POSTGRES_DB\"),\n\t\tuser: readEnv(env, \"POSTGRES_USER\"),\n\t\tpassword: readEnv(env, \"POSTGRES_PASSWORD\"),\n\t\tssl: readPostgresSsl(env)\n\t};\n}\n/** Requires POSTGRES_* env vars or a postgres DATABASE_URL. */\nfunction resolvePostgresConfigFromEnv(env = process.env) {\n\tconst direct = readEnv(env, \"DATABASE_URL\");\n\tif (direct && /^postgres(ql)?:\\/\\//i.test(direct)) return {\n\t\t...parsePostgresUrl(direct),\n\t\tssl: resolvePostgresSsl(env, direct)\n\t};\n\tconst config = resolvePostgresConfigFromPostgresEnv(env);\n\tif (!config) throw new Error(`Missing required Postgres env vars: ${missingPostgresEnvKeys(env).join(\", \")}`);\n\treturn config;\n}\n/** Requires POSTGRES_* env vars or a postgres DATABASE_URL. */\nfunction resolvePostgresUrlFromEnv(env = process.env) {\n\tconst ssl = readPostgresSsl(env);\n\tconst direct = readEnv(env, \"DATABASE_URL\");\n\tif (direct && /^postgres(ql)?:\\/\\//i.test(direct)) return ssl ? applyPostgresSslMode(direct) : direct;\n\treturn buildPostgresUrl(resolvePostgresConfigFromEnv(env));\n}\n/**\n* Project runtime — POSTGRES_* only (same env shape as hosted workers).\n* Returns undefined when unset; initDatabase falls back to sqlite DEFAULT_DATABASE_URL.\n* Optional DATABASE_SEARCH_PATH sets the tenant schema search_path.\n*/\nfunction resolveProjectDatabaseUrlFromEnv(env = process.env) {\n\tconst config = resolvePostgresConfigFromPostgresEnv(env);\n\treturn config ? buildPostgresUrl(config) : void 0;\n}\n/** @deprecated Prefer resolveProjectDatabaseUrlFromEnv (project) or resolvePostgresUrlFromEnv (platform). */\nfunction resolveDatabaseUrlFromEnv(env = process.env) {\n\treturn resolveProjectDatabaseUrlFromEnv(env);\n}\n//#endregion\n//#region src/client/request-context.ts\nconst requestHandle = new AsyncLocalStorage();\nfunction getRequestDatabaseHandle() {\n\treturn requestHandle.getStore();\n}\nfunction runWithRequestDatabaseHandle(handle, fn) {\n\treturn requestHandle.run(handle, fn);\n}\n//#endregion\n//#region src/client/context.ts\nlet handle;\nfunction isDatabaseInitialized() {\n\treturn getRequestDatabaseHandle() !== void 0 || handle !== void 0;\n}\nfunction getDatabaseHandle() {\n\tconst scoped = getRequestDatabaseHandle();\n\tif (scoped) return scoped;\n\tif (!handle) throw new Error(\"Database not initialized. Call initDatabase() before getDb().\");\n\treturn handle;\n}\nfunction setDatabaseHandle(next) {\n\thandle = next;\n}\nfunction getDefaultDatabaseHandle() {\n\treturn handle;\n}\nfunction getDbFromContext() {\n\treturn getDatabaseHandle().db;\n}\n//#endregion\n//#region src/connection/pg/driver.ts\nconst require = createRequire(import.meta.url);\n/**\n* Lazily load the native `pg` driver. Keeping this off the module's static import\n* graph means consumers that only reference database helpers/types (e.g. the CLI,\n* which never opens a Postgres pool) never force `pg` into their bundle — it\n* resolves from the runtime image only when a connection is actually created.\n*/\nfunction loadPg() {\n\treturn require(\"pg\");\n}\n/** Lazily load drizzle's node-postgres adapter — it statically imports `pg`. */\nfunction loadDrizzlePg() {\n\treturn require(\"drizzle-orm/node-postgres\");\n}\n//#endregion\n//#region src/schema/bundle.ts\nfunction buildPgSchema(registry) {\n\treturn Object.fromEntries(Object.entries(registry).map(([name, { pg }]) => [name, pg]));\n}\nfunction buildSqliteSchema(registry) {\n\treturn Object.fromEntries(Object.entries(registry).map(([name, { sqlite }]) => [name, sqlite]));\n}\n//#endregion\n//#region src/schema/tables/agents.ts\nconst agents = pgTable(\"agents\", {\n\tid: text(\"id\").primaryKey(),\n\tprojectId: text(\"project_id\").notNull(),\n\tslug: text(\"slug\").notNull(),\n\tname: text(\"name\"),\n\tdescription: text(\"description\"),\n\troute: text(\"route\").notNull(),\n\tmoduleFile: text(\"module_file\").notNull(),\n\tmodel: text(\"model\").notNull(),\n\tsystemPrompt: text(\"system_prompt\").notNull(),\n\ttoolCount: integer(\"tool_count\"),\n\tcredentialCount: integer(\"credential_count\"),\n\tappSlugs: jsonb(\"app_slugs\").$type(),\n\tregisteredAt: timestamp(\"registered_at\", { withTimezone: true }).notNull(),\n\tupdatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull(),\n\tdeletedAt: timestamp(\"deleted_at\", { withTimezone: true })\n}, (table) => [uniqueIndex(\"agents_project_id_slug_idx\").on(table.projectId, table.slug), uniqueIndex(\"agents_project_id_route_idx\").on(table.projectId, table.route)]);\nconst agentsSqlite = sqliteTable(\"agents\", {\n\tid: text$1(\"id\").primaryKey(),\n\tprojectId: text$1(\"project_id\").notNull(),\n\tslug: text$1(\"slug\").notNull(),\n\tname: text$1(\"name\"),\n\tdescription: text$1(\"description\"),\n\troute: text$1(\"route\").notNull(),\n\tmoduleFile: text$1(\"module_file\").notNull(),\n\tmodel: text$1(\"model\").notNull(),\n\tsystemPrompt: text$1(\"system_prompt\").notNull(),\n\ttoolCount: integer$1(\"tool_count\"),\n\tcredentialCount: integer$1(\"credential_count\"),\n\tappSlugs: text$1(\"app_slugs\", { mode: \"json\" }).$type(),\n\tregisteredAt: integer$1(\"registered_at\", { mode: \"timestamp_ms\" }).notNull(),\n\tupdatedAt: integer$1(\"updated_at\", { mode: \"timestamp_ms\" }).notNull(),\n\tdeletedAt: integer$1(\"deleted_at\", { mode: \"timestamp_ms\" })\n}, (table) => [uniqueIndex$1(\"agents_project_id_slug_idx\").on(table.projectId, table.slug), uniqueIndex$1(\"agents_project_id_route_idx\").on(table.projectId, table.route)]);\n//#endregion\n//#region src/schema/tables/agent-sessions.ts\nconst agentSessions = pgTable(\"agent_sessions\", {\n\tid: text(\"id\").primaryKey(),\n\tprojectId: text(\"project_id\").notNull(),\n\tagentId: text(\"agent_id\").notNull().references(() => agents.id),\n\tsourceKind: text(\"source_kind\").$type().notNull().default(\"api\"),\n\tsourceId: text(\"source_id\"),\n\tparentSpanId: text(\"parent_span_id\"),\n\tranByUserId: text(\"ran_by_user_id\"),\n\ttitle: text(\"title\"),\n\tcanceledAt: timestamp(\"canceled_at\", { withTimezone: true }),\n\tstatus: text(\"status\").$type(),\n\ttotalDurationMs: integer(\"total_duration_ms\").notNull().default(0),\n\tcreatedAt: timestamp(\"created_at\", { withTimezone: true }).notNull(),\n\tupdatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull(),\n\tdeletedAt: timestamp(\"deleted_at\", { withTimezone: true })\n}, (table) => [index(\"agent_sessions_agent_updated_idx\").on(table.agentId, table.updatedAt)]);\nconst agentSessionsSqlite = sqliteTable(\"agent_sessions\", {\n\tid: text$1(\"id\").primaryKey(),\n\tprojectId: text$1(\"project_id\").notNull(),\n\tagentId: text$1(\"agent_id\").notNull().references(() => agentsSqlite.id),\n\tsourceKind: text$1(\"source_kind\").$type().notNull().default(\"api\"),\n\tsourceId: text$1(\"source_id\"),\n\tparentSpanId: text$1(\"parent_span_id\"),\n\tranByUserId: text$1(\"ran_by_user_id\"),\n\ttitle: text$1(\"title\"),\n\tcanceledAt: integer$1(\"canceled_at\", { mode: \"timestamp_ms\" }),\n\tstatus: text$1(\"status\").$type(),\n\ttotalDurationMs: integer$1(\"total_duration_ms\").notNull().default(0),\n\tcreatedAt: integer$1(\"created_at\", { mode: \"timestamp_ms\" }).notNull(),\n\tupdatedAt: integer$1(\"updated_at\", { mode: \"timestamp_ms\" }).notNull(),\n\tdeletedAt: integer$1(\"deleted_at\", { mode: \"timestamp_ms\" })\n}, (table) => [index$1(\"agent_sessions_agent_updated_idx\").on(table.agentId, table.updatedAt)]);\n//#endregion\n//#region src/schema/tables/agent-events.ts\nconst agentEvents = pgTable(\"agent_events\", {\n\tid: text(\"id\").primaryKey(),\n\tsessionId: text(\"session_id\").notNull().references(() => agentSessions.id),\n\tseq: integer(\"seq\").notNull(),\n\teventType: text(\"event_type\").notNull(),\n\tpayload: jsonb(\"payload\").notNull(),\n\tcreatedAt: timestamp(\"created_at\", { withTimezone: true }).notNull(),\n\tdeletedAt: timestamp(\"deleted_at\", { withTimezone: true })\n}, (table) => [index(\"agent_events_session_event_seq_idx\").on(table.sessionId, table.eventType, table.seq)]);\nconst agentEventsSqlite = sqliteTable(\"agent_events\", {\n\tid: text$1(\"id\").primaryKey(),\n\tsessionId: text$1(\"session_id\").notNull().references(() => agentSessionsSqlite.id),\n\tseq: integer$1(\"seq\").notNull(),\n\teventType: text$1(\"event_type\").notNull(),\n\tpayload: text$1(\"payload\", { mode: \"json\" }).notNull(),\n\tcreatedAt: integer$1(\"created_at\", { mode: \"timestamp_ms\" }).notNull(),\n\tdeletedAt: integer$1(\"deleted_at\", { mode: \"timestamp_ms\" })\n}, (table) => [index$1(\"agent_events_session_event_seq_idx\").on(table.sessionId, table.eventType, table.seq)]);\n//#endregion\n//#region src/schema/tables/triggers.ts\nconst triggers = pgTable(\"triggers\", {\n\tid: text(\"id\").primaryKey(),\n\tprojectId: text(\"project_id\").notNull(),\n\tslug: text(\"slug\").notNull(),\n\tkind: text(\"kind\").$type().notNull(),\n\tname: text(\"name\"),\n\tdescription: text(\"description\"),\n\tmoduleFile: text(\"module_file\").notNull(),\n\torigin: text(\"origin\").$type().notNull().default(\"project\"),\n\tconfig: jsonb(\"config\").$type(),\n\tstate: jsonb(\"state\").$type(),\n\tschedule: text(\"schedule\"),\n\tnextRunAt: timestamp(\"next_run_at\", { withTimezone: true }),\n\tenabled: integer(\"enabled\").notNull().default(1),\n\tlifecycle: jsonb(\"lifecycle\").$type(),\n\tcreatedBySessionId: text(\"created_by_session_id\"),\n\ttriggerHash: text(\"trigger_hash\"),\n\toverviewMarkdown: text(\"overview_markdown\"),\n\toverviewHash: text(\"overview_hash\"),\n\toverviewModel: text(\"overview_model\"),\n\toverviewStatus: text(\"overview_status\").$type().notNull().default(\"idle\"),\n\toverviewGeneratedAt: timestamp(\"overview_generated_at\", { withTimezone: true }),\n\tregisteredAt: timestamp(\"registered_at\", { withTimezone: true }).notNull(),\n\tupdatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull(),\n\tdeletedAt: timestamp(\"deleted_at\", { withTimezone: true })\n}, (table) => [uniqueIndex(\"triggers_project_id_slug_idx\").on(table.projectId, table.slug), index(\"triggers_next_run_at_enabled_idx\").on(table.nextRunAt, table.enabled)]);\nconst triggersSqlite = sqliteTable(\"triggers\", {\n\tid: text$1(\"id\").primaryKey(),\n\tprojectId: text$1(\"project_id\").notNull(),\n\tslug: text$1(\"slug\").notNull(),\n\tkind: text$1(\"kind\").$type().notNull(),\n\tname: text$1(\"name\"),\n\tdescription: text$1(\"description\"),\n\tmoduleFile: text$1(\"module_file\").notNull(),\n\torigin: text$1(\"origin\").$type().notNull().default(\"project\"),\n\tconfig: text$1(\"config\", { mode: \"json\" }).$type(),\n\tstate: text$1(\"state\", { mode: \"json\" }).$type(),\n\tschedule: text$1(\"schedule\"),\n\tnextRunAt: integer$1(\"next_run_at\", { mode: \"timestamp_ms\" }),\n\tenabled: integer$1(\"enabled\").notNull().default(1),\n\tlifecycle: text$1(\"lifecycle\", { mode: \"json\" }).$type(),\n\tcreatedBySessionId: text$1(\"created_by_session_id\"),\n\ttriggerHash: text$1(\"trigger_hash\"),\n\toverviewMarkdown: text$1(\"overview_markdown\"),\n\toverviewHash: text$1(\"overview_hash\"),\n\toverviewModel: text$1(\"overview_model\"),\n\toverviewStatus: text$1(\"overview_status\").$type().notNull().default(\"idle\"),\n\toverviewGeneratedAt: integer$1(\"overview_generated_at\", { mode: \"timestamp_ms\" }),\n\tregisteredAt: integer$1(\"registered_at\", { mode: \"timestamp_ms\" }).notNull(),\n\tupdatedAt: integer$1(\"updated_at\", { mode: \"timestamp_ms\" }).notNull(),\n\tdeletedAt: integer$1(\"deleted_at\", { mode: \"timestamp_ms\" })\n}, (table) => [uniqueIndex$1(\"triggers_project_id_slug_idx\").on(table.projectId, table.slug), index$1(\"triggers_next_run_at_enabled_idx\").on(table.nextRunAt, table.enabled)]);\n//#endregion\n//#region src/schema/tables/trigger-attachments.ts\nconst triggerAttachments = pgTable(\"trigger_attachments\", {\n\tid: text(\"id\").primaryKey(),\n\tprojectId: text(\"project_id\").notNull(),\n\ttriggerId: text(\"trigger_id\").notNull().references(() => triggers.id),\n\tslug: text(\"slug\").notNull(),\n\ttargetKind: text(\"target_kind\").$type().notNull().default(\"workflow\"),\n\tworkflowSlug: text(\"workflow_slug\"),\n\tagentSlug: text(\"agent_slug\"),\n\tprompt: text(\"prompt\"),\n\tregisteredAt: timestamp(\"registered_at\", { withTimezone: true }).notNull(),\n\tupdatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull(),\n\tdisabledAt: timestamp(\"disabled_at\", { withTimezone: true }),\n\tdeletedAt: timestamp(\"deleted_at\", { withTimezone: true })\n}, (table) => [uniqueIndex(\"trigger_attachments_project_id_slug_idx\").on(table.projectId, table.slug)]);\nconst triggerAttachmentsSqlite = sqliteTable(\"trigger_attachments\", {\n\tid: text$1(\"id\").primaryKey(),\n\tprojectId: text$1(\"project_id\").notNull(),\n\ttriggerId: text$1(\"trigger_id\").notNull().references(() => triggersSqlite.id),\n\tslug: text$1(\"slug\").notNull(),\n\ttargetKind: text$1(\"target_kind\").$type().notNull().default(\"workflow\"),\n\tworkflowSlug: text$1(\"workflow_slug\"),\n\tagentSlug: text$1(\"agent_slug\"),\n\tprompt: text$1(\"prompt\"),\n\tregisteredAt: integer$1(\"registered_at\", { mode: \"timestamp_ms\" }).notNull(),\n\tupdatedAt: integer$1(\"updated_at\", { mode: \"timestamp_ms\" }).notNull(),\n\tdisabledAt: integer$1(\"disabled_at\", { mode: \"timestamp_ms\" }),\n\tdeletedAt: integer$1(\"deleted_at\", { mode: \"timestamp_ms\" })\n}, (table) => [uniqueIndex$1(\"trigger_attachments_project_id_slug_idx\").on(table.projectId, table.slug)]);\n//#endregion\n//#region src/schema/tables/trigger-runs.ts\nconst triggerRuns = pgTable(\"trigger_runs\", {\n\tid: text(\"id\").primaryKey(),\n\tprojectId: text(\"project_id\").notNull(),\n\ttriggerId: text(\"trigger_id\").notNull().references(() => triggers.id),\n\tsourcePath: text(\"source_path\"),\n\ttriggerType: text(\"trigger_type\").$type().notNull(),\n\toutcome: text(\"outcome\").$type().notNull().default(\"dispatched\"),\n\treason: text(\"reason\").$type(),\n\tdetail: text(\"detail\"),\n\tpayload: jsonb(\"payload\"),\n\ttriggeredAt: timestamp(\"triggered_at\", { withTimezone: true }).notNull()\n}, (table) => [index(\"trigger_runs_project_trigger_triggered_idx\").on(table.projectId, table.triggerId, table.triggeredAt), index(\"trigger_runs_project_triggered_idx\").on(table.projectId, table.triggeredAt)]);\nconst triggerRunsSqlite = sqliteTable(\"trigger_runs\", {\n\tid: text$1(\"id\").primaryKey(),\n\tprojectId: text$1(\"project_id\").notNull(),\n\ttriggerId: text$1(\"trigger_id\").notNull().references(() => triggersSqlite.id),\n\tsourcePath: text$1(\"source_path\"),\n\ttriggerType: text$1(\"trigger_type\").$type().notNull(),\n\toutcome: text$1(\"outcome\").$type().notNull().default(\"dispatched\"),\n\treason: text$1(\"reason\").$type(),\n\tdetail: text$1(\"detail\"),\n\tpayload: text$1(\"payload\", { mode: \"json\" }),\n\ttriggeredAt: integer$1(\"triggered_at\", { mode: \"timestamp_ms\" }).notNull()\n}, (table) => [index$1(\"trigger_runs_project_trigger_triggered_idx\").on(table.projectId, table.triggerId, table.triggeredAt), index$1(\"trigger_runs_project_triggered_idx\").on(table.projectId, table.triggeredAt)]);\n//#endregion\n//#region src/schema/tables/workflow-subscriptions.ts\nconst workflowSubscriptions = pgTable(\"workflow_subscriptions\", {\n\tid: text(\"id\").primaryKey(),\n\tprojectId: text(\"project_id\").notNull(),\n\tworkflowSlug: text(\"workflow_slug\").notNull(),\n\tuserId: text(\"user_id\").notNull(),\n\tenabled: integer(\"enabled\").notNull(),\n\tcreatedAt: timestamp(\"created_at\", { withTimezone: true }).notNull(),\n\tupdatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull()\n}, (table) => [uniqueIndex(\"workflow_subscriptions_project_workflow_user\").on(table.projectId, table.workflowSlug, table.userId)]);\nconst workflowSubscriptionsSqlite = sqliteTable(\"workflow_subscriptions\", {\n\tid: text$1(\"id\").primaryKey(),\n\tprojectId: text$1(\"project_id\").notNull(),\n\tworkflowSlug: text$1(\"workflow_slug\").notNull(),\n\tuserId: text$1(\"user_id\").notNull(),\n\tenabled: integer$1(\"enabled\", { mode: \"boolean\" }).notNull(),\n\tcreatedAt: integer$1(\"created_at\", { mode: \"timestamp_ms\" }).notNull(),\n\tupdatedAt: integer$1(\"updated_at\", { mode: \"timestamp_ms\" }).notNull()\n}, (table) => [uniqueIndex$1(\"workflow_subscriptions_project_workflow_user\").on(table.projectId, table.workflowSlug, table.userId)]);\n//#endregion\n//#region src/schema/tables/workflow-runs.ts\nconst workflowRuns = pgTable(\"workflow_runs\", {\n\tid: text(\"id\").primaryKey(),\n\tprojectId: text(\"project_id\").notNull(),\n\tworkflowSlug: text(\"workflow_slug\").notNull(),\n\tattachmentId: text(\"attachment_id\").references(() => triggerAttachments.id),\n\tsubscriptionId: text(\"subscription_id\").references(() => workflowSubscriptions.id),\n\ttriggerRunId: text(\"trigger_run_id\").references(() => triggerRuns.id),\n\tparentWorkflowRunId: text(\"parent_workflow_run_id\"),\n\tparentSpanId: text(\"parent_span_id\"),\n\tsourceKind: text(\"source_kind\").$type().notNull().default(\"api\"),\n\tsourceId: text(\"source_id\"),\n\tranByUserId: text(\"ran_by_user_id\"),\n\tcredentialContext: jsonb(\"credential_context\").$type(),\n\tstatus: text(\"status\").$type().notNull(),\n\ttrigger: text(\"trigger\").$type().notNull(),\n\ttriggeredAt: timestamp(\"triggered_at\", { withTimezone: true }).notNull(),\n\tstartedAt: timestamp(\"started_at\", { withTimezone: true }),\n\tfinishedAt: timestamp(\"finished_at\", { withTimezone: true }),\n\tinput: jsonb(\"input\"),\n\toutput: jsonb(\"output\"),\n\terror: jsonb(\"error\")\n}, (table) => [index(\"workflow_runs_project_workflow_triggered_idx\").on(table.projectId, table.workflowSlug, table.triggeredAt)]);\nconst workflowRunsSqlite = sqliteTable(\"workflow_runs\", {\n\tid: text$1(\"id\").primaryKey(),\n\tprojectId: text$1(\"project_id\").notNull(),\n\tworkflowSlug: text$1(\"workflow_slug\").notNull(),\n\tattachmentId: text$1(\"attachment_id\").references(() => triggerAttachmentsSqlite.id),\n\tsubscriptionId: text$1(\"subscription_id\").references(() => workflowSubscriptionsSqlite.id),\n\ttriggerRunId: text$1(\"trigger_run_id\").references(() => triggerRunsSqlite.id),\n\tparentWorkflowRunId: text$1(\"parent_workflow_run_id\"),\n\tparentSpanId: text$1(\"parent_span_id\"),\n\tsourceKind: text$1(\"source_kind\").$type().notNull().default(\"api\"),\n\tsourceId: text$1(\"source_id\"),\n\tranByUserId: text$1(\"ran_by_user_id\"),\n\tcredentialContext: text$1(\"credential_context\", { mode: \"json\" }).$type(),\n\tstatus: text$1(\"status\").$type().notNull(),\n\ttrigger: text$1(\"trigger\").$type().notNull(),\n\ttriggeredAt: integer$1(\"triggered_at\", { mode: \"timestamp_ms\" }).notNull(),\n\tstartedAt: integer$1(\"started_at\", { mode: \"timestamp_ms\" }),\n\tfinishedAt: integer$1(\"finished_at\", { mode: \"timestamp_ms\" }),\n\tinput: text$1(\"input\", { mode: \"json\" }),\n\toutput: text$1(\"output\", { mode: \"json\" }),\n\terror: text$1(\"error\", { mode: \"json\" })\n}, (table) => [index$1(\"workflow_runs_project_workflow_triggered_idx\").on(table.projectId, table.workflowSlug, table.triggeredAt)]);\n//#endregion\n//#region src/schema/tables/workflow-events.ts\n/**\n* Append-only durable execution log. One row per workflow lifecycle transition.\n* Replay reads these in `seq` order and short-circuits already-completed primitives.\n*/\nconst workflowEvents = pgTable(\"workflow_events\", {\n\tid: text(\"id\").primaryKey(),\n\trunId: text(\"run_id\").notNull().references(() => workflowRuns.id),\n\tprojectId: text(\"project_id\").notNull(),\n\tseq: integer(\"seq\").notNull(),\n\ttype: text(\"type\").$type().notNull(),\n\tcorrelationId: text(\"correlation_id\"),\n\tdata: jsonb(\"data\"),\n\tcreatedAt: timestamp(\"created_at\", { withTimezone: true }).notNull()\n}, (table) => [\n\tuniqueIndex(\"workflow_events_run_id_seq_unique\").on(table.runId, table.seq),\n\tindex(\"workflow_events_run_id_type_idx\").on(table.runId, table.type),\n\tindex(\"workflow_events_correlation_id_idx\").on(table.correlationId)\n]);\nconst workflowEventsSqlite = sqliteTable(\"workflow_events\", {\n\tid: text$1(\"id\").primaryKey(),\n\trunId: text$1(\"run_id\").notNull().references(() => workflowRunsSqlite.id),\n\tprojectId: text$1(\"project_id\").notNull(),\n\tseq: integer$1(\"seq\").notNull(),\n\ttype: text$1(\"type\").$type().notNull(),\n\tcorrelationId: text$1(\"correlation_id\"),\n\tdata: text$1(\"data\", { mode: \"json\" }),\n\tcreatedAt: integer$1(\"created_at\", { mode: \"timestamp_ms\" }).notNull()\n}, (table) => [\n\tuniqueIndex$1(\"workflow_events_run_id_seq_unique\").on(table.runId, table.seq),\n\tindex$1(\"workflow_events_run_id_type_idx\").on(table.runId, table.type),\n\tindex$1(\"workflow_events_correlation_id_idx\").on(table.correlationId)\n]);\n//#endregion\n//#region src/schema/tables/workflow-hooks.ts\nconst workflowHooks = pgTable(\"workflow_hooks\", {\n\thookId: text(\"hook_id\").primaryKey(),\n\trunId: text(\"run_id\").notNull().references(() => workflowRuns.id),\n\tprojectId: text(\"project_id\").notNull(),\n\ttoken: text(\"token\").notNull(),\n\tcorrelationId: text(\"correlation_id\").notNull(),\n\tstatus: text(\"status\").$type().notNull(),\n\tschema: jsonb(\"schema\"),\n\tpayload: jsonb(\"payload\"),\n\tcreatedAt: timestamp(\"created_at\", { withTimezone: true }).notNull(),\n\tresumedAt: timestamp(\"resumed_at\", { withTimezone: true })\n}, (table) => [uniqueIndex(\"workflow_hooks_token_unique\").on(table.token), index(\"workflow_hooks_run_id_idx\").on(table.runId)]);\nconst workflowHooksSqlite = sqliteTable(\"workflow_hooks\", {\n\thookId: text$1(\"hook_id\").primaryKey(),\n\trunId: text$1(\"run_id\").notNull().references(() => workflowRunsSqlite.id),\n\tprojectId: text$1(\"project_id\").notNull(),\n\ttoken: text$1(\"token\").notNull(),\n\tcorrelationId: text$1(\"correlation_id\").notNull(),\n\tstatus: text$1(\"status\").$type().notNull(),\n\tschema: text$1(\"schema\", { mode: \"json\" }),\n\tpayload: text$1(\"payload\", { mode: \"json\" }),\n\tcreatedAt: integer$1(\"created_at\", { mode: \"timestamp_ms\" }).notNull(),\n\tresumedAt: integer$1(\"resumed_at\", { mode: \"timestamp_ms\" })\n}, (table) => [uniqueIndex$1(\"workflow_hooks_token_unique\").on(table.token), index$1(\"workflow_hooks_run_id_idx\").on(table.runId)]);\n//#endregion\n//#region src/schema/tables/credential-instances.ts\nconst credentialInstances = pgTable(\"credential_instances\", {\n\tid: text(\"id\").primaryKey(),\n\tprojectId: text(\"project_id\").notNull(),\n\tappSlug: text(\"app_slug\").notNull(),\n\tslug: text(\"slug\").notNull(),\n\tname: text(\"name\"),\n\tscopeType: text(\"scope_type\").$type().notNull(),\n\tscopeId: text(\"scope_id\"),\n\tlabel: text(\"label\"),\n\tisDefault: integer(\"is_default\").notNull(),\n\tauthKind: text(\"auth_kind\").$type().notNull(),\n\tciphertext: text(\"ciphertext\"),\n\tconnectionId: text(\"connection_id\"),\n\t/** MCP entity id that owns connection_id when multiple scopes share one connection. */\n\tsharedConnectionId: text(\"shared_connection_id\"),\n\tgrantedScopes: jsonb(\"granted_scopes\").$type(),\n\tcreatedAt: timestamp(\"created_at\", { withTimezone: true }).notNull(),\n\tupdatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull(),\n\tlastUsedAt: timestamp(\"last_used_at\", { withTimezone: true })\n}, (table) => [uniqueIndex(\"credential_instances_project_scope_slug_unique\").on(table.projectId, table.scopeType, table.scopeId, table.slug), index(\"credential_instances_project_app_slug_scope_idx\").on(table.projectId, table.appSlug, table.scopeType, table.scopeId)]);\nconst credentialInstancesSqlite = sqliteTable(\"credential_instances\", {\n\tid: text$1(\"id\").primaryKey(),\n\tprojectId: text$1(\"project_id\").notNull(),\n\tappSlug: text$1(\"app_slug\").notNull(),\n\tslug: text$1(\"slug\").notNull(),\n\tname: text$1(\"name\"),\n\tscopeType: text$1(\"scope_type\").$type().notNull(),\n\tscopeId: text$1(\"scope_id\"),\n\tlabel: text$1(\"label\"),\n\tisDefault: integer$1(\"is_default\", { mode: \"boolean\" }).notNull(),\n\tauthKind: text$1(\"auth_kind\").$type().notNull(),\n\tciphertext: text$1(\"ciphertext\"),\n\tconnectionId: text$1(\"connection_id\"),\n\t/** MCP entity id that owns connection_id when multiple scopes share one connection. */\n\tsharedConnectionId: text$1(\"shared_connection_id\"),\n\tgrantedScopes: text$1(\"granted_scopes\", { mode: \"json\" }).$type(),\n\tcreatedAt: integer$1(\"created_at\", { mode: \"timestamp_ms\" }).notNull(),\n\tupdatedAt: integer$1(\"updated_at\", { mode: \"timestamp_ms\" }).notNull(),\n\tlastUsedAt: integer$1(\"last_used_at\", { mode: \"timestamp_ms\" })\n}, (table) => [uniqueIndex$1(\"credential_instances_project_scope_slug_unique\").on(table.projectId, table.scopeType, table.scopeId, table.slug), index$1(\"credential_instances_project_app_slug_scope_idx\").on(table.projectId, table.appSlug, table.scopeType, table.scopeId)]);\n//#endregion\n//#region src/schema/tables/credential-assignments.ts\nconst credentialAssignments = pgTable(\"credential_assignments\", {\n\tid: text(\"id\").primaryKey(),\n\tprojectId: text(\"project_id\").notNull(),\n\ttargetType: text(\"target_type\").$type().notNull(),\n\ttargetKey: text(\"target_key\").notNull(),\n\t/** '*' = wildcard; else runtime consumer id (step correlation id or tool slug). */\n\tconsumerId: text(\"consumer_id\").notNull(),\n\tcredentialSlug: text(\"credential_slug\").notNull(),\n\tinstanceId: text(\"instance_id\").notNull(),\n\tcreatedAt: timestamp(\"created_at\", { withTimezone: true }).notNull(),\n\tupdatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull()\n}, (table) => [uniqueIndex(\"credential_assignments_project_target_consumer_slug\").on(table.projectId, table.targetType, table.targetKey, table.consumerId, table.credentialSlug)]);\nconst credentialAssignmentsSqlite = sqliteTable(\"credential_assignments\", {\n\tid: text$1(\"id\").primaryKey(),\n\tprojectId: text$1(\"project_id\").notNull(),\n\ttargetType: text$1(\"target_type\").$type().notNull(),\n\ttargetKey: text$1(\"target_key\").notNull(),\n\tconsumerId: text$1(\"consumer_id\").notNull(),\n\tcredentialSlug: text$1(\"credential_slug\").notNull(),\n\tinstanceId: text$1(\"instance_id\").notNull(),\n\tcreatedAt: integer$1(\"created_at\", { mode: \"timestamp_ms\" }).notNull(),\n\tupdatedAt: integer$1(\"updated_at\", { mode: \"timestamp_ms\" }).notNull()\n}, (table) => [uniqueIndex$1(\"credential_assignments_project_target_consumer_slug\").on(table.projectId, table.targetType, table.targetKey, table.consumerId, table.credentialSlug)]);\n//#endregion\n//#region src/schema/tables/jobs.ts\nconst jobs = pgTable(\"jobs\", {\n\tid: text(\"id\").primaryKey(),\n\tprojectId: text(\"project_id\").notNull(),\n\tkind: text(\"kind\").$type().notNull(),\n\ttargetId: text(\"target_id\").notNull(),\n\trunId: text(\"run_id\").notNull(),\n\ttrigger: text(\"trigger\").$type().notNull(),\n\tpayload: jsonb(\"payload\"),\n\tparent: jsonb(\"parent\").$type(),\n\tstatus: text(\"status\").$type().notNull(),\n\tscheduledAt: timestamp(\"scheduled_at\", { withTimezone: true }).notNull(),\n\tattempt: integer(\"attempt\").notNull(),\n\tmaxAttempts: integer(\"max_attempts\").notNull(),\n\tleasedBy: text(\"leased_by\"),\n\tleaseExpiresAt: timestamp(\"lease_expires_at\", { withTimezone: true }),\n\tcompletedAt: timestamp(\"completed_at\", { withTimezone: true }),\n\terror: jsonb(\"error\")\n});\nconst jobsSqlite = sqliteTable(\"jobs\", {\n\tid: text$1(\"id\").primaryKey(),\n\tprojectId: text$1(\"project_id\").notNull(),\n\tkind: text$1(\"kind\").$type().notNull(),\n\ttargetId: text$1(\"target_id\").notNull(),\n\trunId: text$1(\"run_id\").notNull(),\n\ttrigger: text$1(\"trigger\").$type().notNull(),\n\tpayload: text$1(\"payload\", { mode: \"json\" }),\n\tparent: text$1(\"parent\", { mode: \"json\" }).$type(),\n\tstatus: text$1(\"status\").$type().notNull(),\n\tscheduledAt: integer$1(\"scheduled_at\", { mode: \"timestamp_ms\" }).notNull(),\n\tattempt: integer$1(\"attempt\").notNull(),\n\tmaxAttempts: integer$1(\"max_attempts\").notNull(),\n\tleasedBy: text$1(\"leased_by\"),\n\tleaseExpiresAt: integer$1(\"lease_expires_at\", { mode: \"timestamp_ms\" }),\n\tcompletedAt: integer$1(\"completed_at\", { mode: \"timestamp_ms\" }),\n\terror: text$1(\"error\", { mode: \"json\" })\n});\n//#endregion\n//#region src/schema/tables/gateway-attachments.ts\nconst gatewayAttachments = pgTable(\"gateway_attachments\", {\n\tid: text(\"id\").primaryKey(),\n\tprojectId: text(\"project_id\").notNull(),\n\tslug: text(\"slug\").notNull(),\n\tagentSlug: text(\"agent_slug\").notNull(),\n\tmoduleFile: text(\"module_file\"),\n\tplatform: text(\"platform\").notNull(),\n\tteamId: text(\"team_id\"),\n\tchannelId: text(\"channel_id\").notNull(),\n\tsource: jsonb(\"source\").$type().notNull(),\n\tregisteredAt: timestamp(\"registered_at\", { withTimezone: true }).notNull(),\n\tupdatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull(),\n\tdeletedAt: timestamp(\"deleted_at\", { withTimezone: true })\n}, (table) => [uniqueIndex(\"gateway_attachments_project_id_slug_idx\").on(table.projectId, table.slug), uniqueIndex(\"gateway_attachments_project_platform_channel_active\").on(table.projectId, table.platform, table.channelId).where(sql`${table.deletedAt} is null`)]);\nconst gatewayAttachmentsSqlite = sqliteTable(\"gateway_attachments\", {\n\tid: text$1(\"id\").primaryKey(),\n\tprojectId: text$1(\"project_id\").notNull(),\n\tslug: text$1(\"slug\").notNull(),\n\tagentSlug: text$1(\"agent_slug\").notNull(),\n\tmoduleFile: text$1(\"module_file\"),\n\tplatform: text$1(\"platform\").notNull(),\n\tteamId: text$1(\"team_id\"),\n\tchannelId: text$1(\"channel_id\").notNull(),\n\tsource: text$1(\"source\", { mode: \"json\" }).$type().notNull(),\n\tregisteredAt: integer$1(\"registered_at\", { mode: \"timestamp_ms\" }).notNull(),\n\tupdatedAt: integer$1(\"updated_at\", { mode: \"timestamp_ms\" }).notNull(),\n\tdeletedAt: integer$1(\"deleted_at\", { mode: \"timestamp_ms\" })\n}, (table) => [uniqueIndex$1(\"gateway_attachments_project_id_slug_idx\").on(table.projectId, table.slug), uniqueIndex$1(\"gateway_attachments_project_platform_channel_active\").on(table.projectId, table.platform, table.channelId).where(sql`${table.deletedAt} is null`)]);\nfunction gatewayAttachmentKeyForChannel(platform, channelId) {\n\treturn `${platform}:${channelId}`;\n}\n//#endregion\n//#region src/schema/tables/gateway-thread-sessions.ts\nconst gatewayThreadSessions = pgTable(\"gateway_thread_sessions\", {\n\tthreadId: text(\"thread_id\").primaryKey(),\n\tagentId: text(\"agent_id\").notNull().references(() => agents.id),\n\tsessionId: text(\"session_id\").notNull().references(() => agentSessions.id),\n\tattachmentId: text(\"attachment_id\").notNull().references(() => gatewayAttachments.id),\n\tcreatedAt: timestamp(\"created_at\", { withTimezone: true }).notNull(),\n\tupdatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull()\n});\nconst gatewayThreadSessionsSqlite = sqliteTable(\"gateway_thread_sessions\", {\n\tthreadId: text$1(\"thread_id\").primaryKey(),\n\tagentId: text$1(\"agent_id\").notNull().references(() => agentsSqlite.id),\n\tsessionId: text$1(\"session_id\").notNull().references(() => agentSessionsSqlite.id),\n\tattachmentId: text$1(\"attachment_id\").notNull().references(() => gatewayAttachmentsSqlite.id),\n\tcreatedAt: integer$1(\"created_at\", { mode: \"timestamp_ms\" }).notNull(),\n\tupdatedAt: integer$1(\"updated_at\", { mode: \"timestamp_ms\" }).notNull()\n});\n//#endregion\n//#region src/schema/tables/trace-spans.ts\nconst traceSpans = pgTable(\"trace_spans\", {\n\tid: text(\"id\").primaryKey(),\n\ttraceId: text(\"trace_id\").notNull(),\n\tparentSpanId: text(\"parent_span_id\"),\n\tkind: text(\"kind\").$type().notNull(),\n\trefId: text(\"ref_id\").notNull(),\n\tname: text(\"name\").notNull(),\n\tstatus: text(\"status\").$type().notNull(),\n\tstartedAt: timestamp(\"started_at\", { withTimezone: true }).notNull(),\n\tfinishedAt: timestamp(\"finished_at\", { withTimezone: true }),\n\tmetadata: jsonb(\"metadata\"),\n\terror: jsonb(\"error\")\n}, (table) => [index(\"trace_spans_trace_id_started_at_idx\").on(table.traceId, table.startedAt), index(\"trace_spans_ref_id_kind_started_at_idx\").on(table.refId, table.kind, table.startedAt)]);\nconst traceSpansSqlite = sqliteTable(\"trace_spans\", {\n\tid: text$1(\"id\").primaryKey(),\n\ttraceId: text$1(\"trace_id\").notNull(),\n\tparentSpanId: text$1(\"parent_span_id\"),\n\tkind: text$1(\"kind\").$type().notNull(),\n\trefId: text$1(\"ref_id\").notNull(),\n\tname: text$1(\"name\").notNull(),\n\tstatus: text$1(\"status\").$type().notNull(),\n\tstartedAt: integer$1(\"started_at\", { mode: \"timestamp_ms\" }).notNull(),\n\tfinishedAt: integer$1(\"finished_at\", { mode: \"timestamp_ms\" }),\n\tmetadata: text$1(\"metadata\", { mode: \"json\" }),\n\terror: text$1(\"error\", { mode: \"json\" })\n}, (table) => [index$1(\"trace_spans_trace_id_started_at_idx\").on(table.traceId, table.startedAt), index$1(\"trace_spans_ref_id_kind_started_at_idx\").on(table.refId, table.kind, table.startedAt)]);\n//#endregion\n//#region src/schema/tables/trace-logs.ts\nconst traceLogs = pgTable(\"trace_logs\", {\n\tid: text(\"id\").primaryKey(),\n\ttraceId: text(\"trace_id\").notNull(),\n\tspanId: text(\"span_id\").notNull().references(() => traceSpans.id),\n\tseq: integer(\"seq\").notNull(),\n\tlevel: text(\"level\").$type().notNull(),\n\tmessage: text(\"message\").notNull(),\n\tdata: jsonb(\"data\"),\n\tsource: text(\"source\").$type().notNull(),\n\tcreatedAt: timestamp(\"created_at\", { withTimezone: true }).notNull()\n}, (table) => [index(\"trace_logs_trace_id_seq_idx\").on(table.traceId, table.seq), index(\"trace_logs_span_id_seq_idx\").on(table.spanId, table.seq)]);\nconst traceLogsSqlite = sqliteTable(\"trace_logs\", {\n\tid: text$1(\"id\").primaryKey(),\n\ttraceId: text$1(\"trace_id\").notNull(),\n\tspanId: text$1(\"span_id\").notNull().references(() => traceSpansSqlite.id),\n\tseq: integer$1(\"seq\").notNull(),\n\tlevel: text$1(\"level\").$type().notNull(),\n\tmessage: text$1(\"message\").notNull(),\n\tdata: text$1(\"data\", { mode: \"json\" }),\n\tsource: text$1(\"source\").$type().notNull(),\n\tcreatedAt: integer$1(\"created_at\", { mode: \"timestamp_ms\" }).notNull()\n}, (table) => [index$1(\"trace_logs_trace_id_seq_idx\").on(table.traceId, table.seq), index$1(\"trace_logs_span_id_seq_idx\").on(table.spanId, table.seq)]);\n//#endregion\n//#region src/schema/tables/skills.ts\nconst skills = pgTable(\"skills\", {\n\tid: text(\"id\").primaryKey(),\n\tprojectId: text(\"project_id\").notNull(),\n\tslug: text(\"slug\").notNull(),\n\tname: text(\"name\"),\n\tdescription: text(\"description\"),\n\tmoduleFile: text(\"module_file\").notNull(),\n\tregisteredAt: timestamp(\"registered_at\", { withTimezone: true }).notNull(),\n\tupdatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull(),\n\tdeletedAt: timestamp(\"deleted_at\", { withTimezone: true })\n}, (table) => [uniqueIndex(\"skills_project_id_slug_idx\").on(table.projectId, table.slug)]);\nconst skillsSqlite = sqliteTable(\"skills\", {\n\tid: text$1(\"id\").primaryKey(),\n\tprojectId: text$1(\"project_id\").notNull(),\n\tslug: text$1(\"slug\").notNull(),\n\tname: text$1(\"name\"),\n\tdescription: text$1(\"description\"),\n\tmoduleFile: text$1(\"module_file\").notNull(),\n\tregisteredAt: integer$1(\"registered_at\", { mode: \"timestamp_ms\" }).notNull(),\n\tupdatedAt: integer$1(\"updated_at\", { mode: \"timestamp_ms\" }).notNull(),\n\tdeletedAt: integer$1(\"deleted_at\", { mode: \"timestamp_ms\" })\n}, (table) => [uniqueIndex$1(\"skills_project_id_slug_idx\").on(table.projectId, table.slug)]);\n//#endregion\n//#region src/schema/tables/workflows.ts\nconst workflows = pgTable(\"workflows\", {\n\tid: text(\"id\").primaryKey(),\n\tprojectId: text(\"project_id\").notNull(),\n\tslug: text(\"slug\").notNull(),\n\tname: text(\"name\").notNull(),\n\tdescription: text(\"description\").notNull(),\n\tmoduleFile: text(\"module_file\").notNull(),\n\tsubscribable: integer(\"subscribable\").notNull(),\n\tregisteredAt: timestamp(\"registered_at\", { withTimezone: true }).notNull(),\n\tupdatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull(),\n\tdeletedAt: timestamp(\"deleted_at\", { withTimezone: true }),\n\trunInputValues: jsonb(\"run_input_values\").$type(),\n\tcanvasAnnotationsJson: jsonb(\"canvas_annotations_json\").$type(),\n\tcanvasAnnotationsHash: text(\"canvas_annotations_hash\"),\n\tcanvasAnnotationsModel: text(\"canvas_annotations_model\"),\n\tcanvasAnnotationsStatus: text(\"canvas_annotations_status\").$type().notNull().default(\"idle\"),\n\tcanvasAnnotationsGeneratedAt: timestamp(\"canvas_annotations_generated_at\", { withTimezone: true }),\n\toverviewSummary: text(\"overview_summary\"),\n\toverviewPhasesJson: jsonb(\"overview_phases_json\").$type(),\n\toverviewHash: text(\"overview_hash\"),\n\toverviewModel: text(\"overview_model\"),\n\toverviewStatus: text(\"overview_status\").$type().notNull().default(\"idle\"),\n\toverviewGeneratedAt: timestamp(\"overview_generated_at\", { withTimezone: true })\n}, (table) => [uniqueIndex(\"workflows_project_id_slug_idx\").on(table.projectId, table.slug)]);\nconst workflowsSqlite = sqliteTable(\"workflows\", {\n\tid: text$1(\"id\").primaryKey(),\n\tprojectId: text$1(\"project_id\").notNull(),\n\tslug: text$1(\"slug\").notNull(),\n\tname: text$1(\"name\").notNull(),\n\tdescription: text$1(\"description\").notNull(),\n\tmoduleFile: text$1(\"module_file\").notNull(),\n\tsubscribable: integer$1(\"subscribable\", { mode: \"boolean\" }).notNull(),\n\tregisteredAt: integer$1(\"registered_at\", { mode: \"timestamp_ms\" }).notNull(),\n\tupdatedAt: integer$1(\"updated_at\", { mode: \"timestamp_ms\" }).notNull(),\n\tdeletedAt: integer$1(\"deleted_at\", { mode: \"timestamp_ms\" }),\n\trunInputValues: text$1(\"run_input_values\", { mode: \"json\" }).$type(),\n\tcanvasAnnotationsJson: text$1(\"canvas_annotations_json\", { mode: \"json\" }).$type(),\n\tcanvasAnnotationsHash: text$1(\"canvas_annotations_hash\"),\n\tcanvasAnnotationsModel: text$1(\"canvas_annotations_model\"),\n\tcanvasAnnotationsStatus: text$1(\"canvas_annotations_status\").$type().notNull().default(\"idle\"),\n\tcanvasAnnotationsGeneratedAt: integer$1(\"canvas_annotations_generated_at\", { mode: \"timestamp_ms\" }),\n\toverviewSummary: text$1(\"overview_summary\"),\n\toverviewPhasesJson: text$1(\"overview_phases_json\", { mode: \"json\" }).$type(),\n\toverviewHash: text$1(\"overview_hash\"),\n\toverviewModel: text$1(\"overview_model\"),\n\toverviewStatus: text$1(\"overview_status\").$type().notNull().default(\"idle\"),\n\toverviewGeneratedAt: integer$1(\"overview_generated_at\", { mode: \"timestamp_ms\" })\n}, (table) => [uniqueIndex$1(\"workflows_project_id_slug_idx\").on(table.projectId, table.slug)]);\n//#endregion\n//#region src/schema/tables/resource-activity.ts\nconst resourceActivity = pgTable(\"resource_activity\", {\n\tid: text(\"id\").primaryKey(),\n\tprojectId: text(\"project_id\").notNull(),\n\tuserId: text(\"user_id\").notNull(),\n\tresourceKind: text(\"resource_kind\").notNull(),\n\tresourceId: text(\"resource_id\").notNull(),\n\tlastOpenedAt: timestamp(\"last_opened_at\", { withTimezone: true }).notNull()\n}, (table) => [uniqueIndex(\"resource_activity_project_user_kind_resource\").on(table.projectId, table.userId, table.resourceKind, table.resourceId), index(\"resource_activity_user_last_opened_at\").on(table.userId, table.lastOpenedAt)]);\nconst resourceActivitySqlite = sqliteTable(\"resource_activity\", {\n\tid: text$1(\"id\").primaryKey(),\n\tprojectId: text$1(\"project_id\").notNull(),\n\tuserId: text$1(\"user_id\").notNull(),\n\tresourceKind: text$1(\"resource_kind\").notNull(),\n\tresourceId: text$1(\"resource_id\").notNull(),\n\tlastOpenedAt: integer$1(\"last_opened_at\", { mode: \"timestamp_ms\" }).notNull()\n}, (table) => [uniqueIndex$1(\"resource_activity_project_user_kind_resource\").on(table.projectId, table.userId, table.resourceKind, table.resourceId), index$1(\"resource_activity_user_last_opened_at\").on(table.userId, table.lastOpenedAt)]);\n//#endregion\n//#region src/schema/registrations.ts\n/**\n* Project server tables — Postgres (hosted) or SQLite (local dev).\n*/\nconst tableRegistry = {\n\tagents: {\n\t\tpg: agents,\n\t\tsqlite: agentsSqlite\n\t},\n\tagentSessions: {\n\t\tpg: agentSessions,\n\t\tsqlite: agentSessionsSqlite\n\t},\n\tagentEvents: {\n\t\tpg: agentEvents,\n\t\tsqlite: agentEventsSqlite\n\t},\n\ttriggers: {\n\t\tpg: triggers,\n\t\tsqlite: triggersSqlite\n\t},\n\ttriggerAttachments: {\n\t\tpg: triggerAttachments,\n\t\tsqlite: triggerAttachmentsSqlite\n\t},\n\ttriggerRuns: {\n\t\tpg: triggerRuns,\n\t\tsqlite: triggerRunsSqlite\n\t},\n\tworkflowRuns: {\n\t\tpg: workflowRuns,\n\t\tsqlite: workflowRunsSqlite\n\t},\n\tworkflowEvents: {\n\t\tpg: workflowEvents,\n\t\tsqlite: workflowEventsSqlite\n\t},\n\tworkflowHooks: {\n\t\tpg: workflowHooks,\n\t\tsqlite: workflowHooksSqlite\n\t},\n\tcredentialInstances: {\n\t\tpg: credentialInstances,\n\t\tsqlite: credentialInstancesSqlite\n\t},\n\tcredentialAssignments: {\n\t\tpg: credentialAssignments,\n\t\tsqlite: credentialAssignmentsSqlite\n\t},\n\tjobs: {\n\t\tpg: jobs,\n\t\tsqlite: jobsSqlite\n\t},\n\tgatewayAttachments: {\n\t\tpg: gatewayAttachments,\n\t\tsqlite: gatewayAttachmentsSqlite\n\t},\n\tgatewayThreadSessions: {\n\t\tpg: gatewayThreadSessions,\n\t\tsqlite: gatewayThreadSessionsSqlite\n\t},\n\ttraceSpans: {\n\t\tpg: traceSpans,\n\t\tsqlite: traceSpansSqlite\n\t},\n\ttraceLogs: {\n\t\tpg: traceLogs,\n\t\tsqlite: traceLogsSqlite\n\t},\n\tskills: {\n\t\tpg: skills,\n\t\tsqlite: skillsSqlite\n\t},\n\tworkflows: {\n\t\tpg: workflows,\n\t\tsqlite: workflowsSqlite\n\t},\n\tworkflowSubscriptions: {\n\t\tpg: workflowSubscriptions,\n\t\tsqlite: workflowSubscriptionsSqlite\n\t},\n\tresourceActivity: {\n\t\tpg: resourceActivity,\n\t\tsqlite: resourceActivitySqlite\n\t}\n};\nconst schema = buildPgSchema(tableRegistry);\nbuildSqliteSchema(tableRegistry);\n//#endregion\n//#region src/schema/pg.ts\nvar pg_exports = /* @__PURE__ */ __exportAll({\n\tagentEvents: () => agentEvents,\n\tagentSessions: () => agentSessions,\n\tagents: () => agents,\n\tcredentialAssignments: () => credentialAssignments,\n\tcredentialInstances: () => credentialInstances,\n\tgatewayAttachments: () => gatewayAttachments,\n\tgatewayThreadSessions: () => gatewayThreadSessions,\n\tjobs: () => jobs,\n\tresourceActivity: () => resourceActivity,\n\tschema: () => schema,\n\tskills: () => skills,\n\ttraceLogs: () => traceLogs,\n\ttraceSpans: () => traceSpans,\n\ttriggerAttachments: () => triggerAttachments,\n\ttriggerRuns: () => triggerRuns,\n\ttriggers: () => triggers,\n\tworkflowEvents: () => workflowEvents,\n\tworkflowHooks: () => workflowHooks,\n\tworkflowRuns: () => workflowRuns,\n\tworkflowSubscriptions: () => workflowSubscriptions,\n\tworkflows: () => workflows\n});\n//#endregion\n//#region src/connection/pg/db.ts\n/** Inferred from `schema` — `getDb()` and query files use this type. */\nfunction createPgDb(pool) {\n\treturn loadDrizzlePg().drizzle(pool, { schema });\n}\n//#endregion\n//#region src/connection/pg/search-path.ts\nconst SCHEMA_IDENT = /^[a-zA-Z_][a-zA-Z0-9_]*$/;\n/** Drizzle __drizzle_migrations schema — tenant path when set, else public (platform). */\nfunction resolveMigrationsSchema(searchPath) {\n\treturn searchPath ? primarySearchPathSchema(searchPath) : \"public\";\n}\n/** First schema in a comma-separated search_path (the tenant / app schema). */\nfunction primarySearchPathSchema(searchPath) {\n\tconst schema = searchPath.split(\",\")[0]?.trim();\n\tif (!schema || !SCHEMA_IDENT.test(schema)) throw new Error(`Invalid search_path: ${searchPath}`);\n\treturn schema;\n}\nfunction parseSearchPathFromUrl(url) {\n\ttry {\n\t\tconst parsed = new URL(url.replace(/^postgresql:/, \"postgres:\"));\n\t\tconst direct = parsed.searchParams.get(\"search_path\");\n\t\tif (direct) return direct;\n\t\tconst options = parsed.searchParams.get(\"options\");\n\t\tif (!options) return;\n\t\treturn decodeURIComponent(options).match(/search_path[= ]([^,\\s]+(?:,\\s*[^,\\s]+)*)/i)?.[1]?.trim();\n\t} catch {\n\t\treturn;\n\t}\n}\nfunction resolveSearchPath(url, override) {\n\tconst explicit = override?.trim() || process.env.DATABASE_SEARCH_PATH?.trim();\n\tif (explicit) {\n\t\tprimarySearchPathSchema(explicit);\n\t\treturn explicit;\n\t}\n\treturn parseSearchPathFromUrl(url);\n}\n//#endregion\n//#region src/connection/pg/index.ts\nfunction createPgConnection(options) {\n\tconst searchPath = resolveSearchPath(options.url, options.searchPath);\n\tconst { Pool } = loadPg();\n\tconst pool = new Pool({\n\t\tconnectionString: options.url,\n\t\tmax: options.max ?? resolvePgPoolMax(),\n\t\tconnectionTimeoutMillis: 5e3,\n\t\tidleTimeoutMillis: 3e4,\n\t\tkeepAlive: true\n\t});\n\treturn {\n\t\tdialect: \"postgres\",\n\t\tdb: createPgDb(pool),\n\t\tpool,\n\t\tsearchPath,\n\t\tclose: () => pool.end()\n\t};\n}\n//#endregion\n//#region src/connection/pg/proxy.ts\nfunction proxyEndpoint(proxyUrl, path) {\n\treturn `${proxyUrl.replace(/\\/$/, \"\")}${path}`;\n}\nasync function postProxy(proxyUrl, token, path, body) {\n\tconst response = await fetch(proxyEndpoint(proxyUrl, path), {\n\t\tmethod: \"POST\",\n\t\theaders: {\n\t\t\tauthorization: `Bearer ${token}`,\n\t\t\t\"content-type\": \"application/json\"\n\t\t},\n\t\tbody: JSON.stringify(body)\n\t});\n\tif (!response.ok) {\n\t\tconst text = await response.text().catch(() => \"\");\n\t\tthrow new Error(`Database proxy request failed (${response.status}): ${text}`);\n\t}\n\treturn await response.json();\n}\nfunction unsupportedPool() {\n\tconst fail = () => {\n\t\tthrow new Error(\"Raw pg pool is unavailable when using the database proxy\");\n\t};\n\treturn {\n\t\tquery: fail,\n\t\tconnect: fail,\n\t\tend: async () => void 0\n\t};\n}\nfunction createPgProxyConnection(options) {\n\tconst searchPath = resolveSearchPath(options.url, options.searchPath);\n\treturn {\n\t\tdialect: \"postgres\",\n\t\tdb: drizzle(async (sql, params, method) => {\n\t\t\treturn { rows: (await postProxy(options.proxyUrl, options.proxyToken, \"/query\", {\n\t\t\t\tsql,\n\t\t\t\tparams,\n\t\t\t\tmethod\n\t\t\t})).rows };\n\t\t}, { schema }),\n\t\tpool: unsupportedPool(),\n\t\tsearchPath,\n\t\trunMigrations: async (_config, _migrations) => {\n\t\t\tawait postProxy(options.proxyUrl, options.proxyToken, \"/migrate\", {});\n\t\t},\n\t\tclose: async () => void 0\n\t};\n}\n//#endregion\n//#region src/connection/sqlite/configure.ts\n/** Pragmas for on-disk sqlite (WAL, FKs, busy timeout). No-op for `:memory:`. */\nfunction configureSqlite(client, path) {\n\tif (path === \":memory:\" || path.startsWith(\":memory:\")) {\n\t\tclient.pragma(\"foreign_keys = ON\");\n\t\treturn;\n\t}\n\tclient.pragma(\"journal_mode = WAL\");\n\tclient.pragma(\"synchronous = NORMAL\");\n\tclient.pragma(\"foreign_keys = ON\");\n\tclient.pragma(\"busy_timeout = 5000\");\n}\n//#endregion\n//#region src/connection/sqlite/resolve-path.ts\nfunction resolveSqlitePath(url) {\n\tif (url === \":memory:\" || url.startsWith(\":memory:\")) return url;\n\tif (url.startsWith(\"file:\")) return url.slice(5);\n\tif (url.startsWith(\"sqlite:\")) return url.slice(7);\n\treturn url;\n}\n//#endregion\n//#region src/connection/sqlite/index.ts\nfunction createSqliteConnection(options) {\n\tconst path = resolveSqlitePath(options.url);\n\tif (path !== \":memory:\" && !path.startsWith(\":memory:\")) mkdirSync(dirname(path), { recursive: true });\n\tconst client = new SqliteClient(path);\n\tconfigureSqlite(client, path);\n\treturn {\n\t\tdialect: \"sqlite\",\n\t\tdb: drizzle$1(client, { schema: pg_exports }),\n\t\tclose: () => client.close()\n\t};\n}\n//#endregion\n//#region src/connection/pg/cancel-channel.ts\n/** Postgres LISTEN/NOTIFY pub/sub for a single cancel channel (lowercase identifier, max 63 chars). */\nfunction createPostgresCancelChannel(connectionString, channel) {\n\tconst { Client } = loadPg();\n\treturn {\n\t\tasync publishCancel(runId) {\n\t\t\tconst client = new Client({ connectionString });\n\t\t\tawait client.connect();\n\t\t\ttry {\n\t\t\t\tawait client.query(\"SELECT pg_notify($1, $2)\", [channel, runId]);\n\t\t\t} finally {\n\t\t\t\tawait client.end();\n\t\t\t}\n\t\t},\n\t\tasync subscribeCancel(handler) {\n\t\t\tconst client = new Client({ connectionString });\n\t\t\tawait client.connect();\n\t\t\tawait client.query(`LISTEN ${channel}`);\n\t\t\tconst onNotification = (message) => {\n\t\t\t\tif (message.payload) handler(message.payload);\n\t\t\t};\n\t\t\tclient.on(\"notification\", onNotification);\n\t\t\treturn async () => {\n\t\t\t\tclient.off(\"notification\", onNotification);\n\t\t\t\tawait client.query(`UNLISTEN ${channel}`);\n\t\t\t\tawait client.end();\n\t\t\t};\n\t\t}\n\t};\n}\n//#endregion\n//#region src/connection/index.ts\nfunction createConnection(options) {\n\tif (options.dialect === \"postgres\") {\n\t\tif (options.proxy) return createPgProxyConnection({\n\t\t\turl: options.url,\n\t\t\tmax: options.max,\n\t\t\tsearchPath: options.searchPath,\n\t\t\tproxyUrl: options.proxy.url,\n\t\t\tproxyToken: options.proxy.token\n\t\t});\n\t\treturn createPgConnection({\n\t\t\turl: options.url,\n\t\t\tmax: options.max,\n\t\t\tsearchPath: options.searchPath\n\t\t});\n\t}\n\treturn createSqliteConnection({ url: options.url });\n}\n//#endregion\n//#region src/connection/pg/pg-ident.ts\nconst PG_IDENT = /^[a-zA-Z_][a-zA-Z0-9_]*$/;\nfunction assertPgIdent(name) {\n\tif (!PG_IDENT.test(name)) throw new Error(`Invalid Postgres identifier: ${name}`);\n}\nfunction quotePgIdent(name) {\n\tassertPgIdent(name);\n\treturn `\"${name.replace(/\"/g, \"\\\"\\\"\")}\"`;\n}\n//#endregion\n//#region src/connection/pg/org-scoped-pool.ts\nfunction queryText$1(args) {\n\tconst first = args[0];\n\tif (typeof first === \"string\") return first;\n\treturn first.text;\n}\nfunction normalizeSqlCommand$1(text) {\n\treturn text?.trim().split(/\\s+/)[0]?.toUpperCase();\n}\nfunction isFullRollback$1(text) {\n\treturn text?.trim().toUpperCase() === \"ROLLBACK\";\n}\n/** Single multi-statement round trip: BEGIN + SET LOCAL ROLE + SET LOCAL search_path. */\nfunction buildOrgScopeBegin(role, searchPath) {\n\treturn `BEGIN; SET LOCAL ROLE ${quotePgIdent(role)}; SET LOCAL search_path TO ${quotePgIdent(primarySearchPathSchema(searchPath))}`;\n}\nfunction bindQuery$1(originalQuery) {\n\treturn (...args) => Promise.resolve(originalQuery(...args));\n}\nfunction createOrgScopedClient(client, role, searchPath) {\n\tconst originalQuery = bindQuery$1(client.query.bind(client));\n\tlet prologueApplied = false;\n\tclient.query = ((...args) => {\n\t\tconst sql = queryText$1(args);\n\t\tconst command = normalizeSqlCommand$1(sql);\n\t\tif (command === \"BEGIN\") {\n\t\t\tif (!prologueApplied) {\n\t\t\t\tprologueApplied = true;\n\t\t\t\treturn originalQuery(buildOrgScopeBegin(role, searchPath));\n\t\t\t}\n\t\t\treturn originalQuery(...args);\n\t\t}\n\t\tif (command === \"COMMIT\") {\n\t\t\tprologueApplied = false;\n\t\t\treturn originalQuery(...args);\n\t\t}\n\t\tif (command === \"ROLLBACK\" && isFullRollback$1(sql)) {\n\t\t\tprologueApplied = false;\n\t\t\treturn originalQuery(...args);\n\t\t}\n\t\tif (command === \"ROLLBACK\") return originalQuery(...args);\n\t\treturn originalQuery(...args);\n\t});\n\treturn client;\n}\nfunction createOrgScopedPool(options) {\n\tconst { pool, role, searchPath } = options;\n\tassertOrgScope(role, searchPath);\n\tconst scopedPool = Object.create(pool);\n\tscopedPool.query = (async (...args) => {\n\t\tconst client = await pool.connect();\n\t\tconst query = bindQuery$1(client.query.bind(client));\n\t\ttry {\n\t\t\tawait query(buildOrgScopeBegin(role, searchPath));\n\t\t\tconst result = await query(...args);\n\t\t\tawait query(\"COMMIT\");\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\tawait query(\"ROLLBACK\").catch(() => void 0);\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tclient.release();\n\t\t}\n\t});\n\tscopedPool.connect = ((callback) => {\n\t\tif (callback) return pool.connect((error, client, release) => {\n\t\t\tif (error || !client) {\n\t\t\t\tcallback(error ?? /* @__PURE__ */ new Error(\"failed to connect\"), client, release);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcallback(null, createOrgScopedClient(client, role, searchPath), release);\n\t\t});\n\t\treturn pool.connect().then((client) => createOrgScopedClient(client, role, searchPath));\n\t});\n\treturn scopedPool;\n}\nfunction createOrgScopedHandle(options) {\n\tconst searchPath = primarySearchPathSchema(options.searchPath);\n\tconst scopedPool = createOrgScopedPool({\n\t\t...options,\n\t\tsearchPath\n\t});\n\treturn {\n\t\tdialect: \"postgres\",\n\t\tdb: createPgDb(scopedPool),\n\t\tpool: scopedPool,\n\t\tsearchPath,\n\t\tclose: async () => void 0\n\t};\n}\nfunction assertOrgScope(role, searchPath) {\n\tif (!role?.trim()) throw new Error(\"Shared-login tenant access requires role\");\n\tif (!searchPath?.trim()) throw new Error(\"Shared-login tenant access requires searchPath\");\n\tquotePgIdent(role);\n\tprimarySearchPathSchema(searchPath);\n}\n//#endregion\n//#region src/dialect/infer.ts\nfunction inferDialect(url, override) {\n\tif (override) return override;\n\tconst lower = url.toLowerCase();\n\tif (lower.startsWith(\"postgres://\") || lower.startsWith(\"postgresql://\")) return \"postgres\";\n\tif (lower.startsWith(\"file:\") || lower.startsWith(\"sqlite:\") || lower === \":memory:\" || lower.startsWith(\":memory:\")) return \"sqlite\";\n\tif (!url.includes(\"://\")) return \"sqlite\";\n\tthrow new Error(`Could not infer database dialect from DATABASE_URL. Set dialect explicitly (got: ${url})`);\n}\n//#endregion\n//#region src/client/pool-cache.ts\nconst IDLE_EVICT_MS = 6e4;\nconst EVICT_INTERVAL_MS = 3e4;\nconst cache = /* @__PURE__ */ new Map();\nlet evictTimer;\nfunction sharedPoolCacheKey(url, max) {\n\treturn `${url}\\0shared-login\\0${max ?? \"\"}`;\n}\n/** Untrusted proxy pools — authenticated as the org login, keyed by credential URL. */\nfunction orgLoginPoolCacheKey(url, searchPath, max) {\n\treturn `${url}\\0org-login\\0${searchPath ?? \"\"}\\0${max ?? \"\"}`;\n}\nfunction touch(entry) {\n\tentry.lastUsedAt = Date.now();\n}\nfunction ensureEvictTimer() {\n\tif (evictTimer) return;\n\tevictTimer = setInterval(() => {\n\t\tevictIdlePools();\n\t}, EVICT_INTERVAL_MS);\n\tevictTimer.unref?.();\n}\nasync function closeEntry(key, entry) {\n\tcache.delete(key);\n\tawait entry.handle.close();\n}\nasync function evictIdlePools() {\n\tconst now = Date.now();\n\tfor (const [key, entry] of cache) if (entry.refs === 0 && now - entry.lastUsedAt >= IDLE_EVICT_MS) await closeEntry(key, entry);\n}\nasync function acquireProjectDatabasePool(options) {\n\tconst dialect = inferDialect(options.url);\n\tif (dialect !== \"postgres\") {\n\t\tconst searchPath = resolveSearchPath(options.url, options.searchPath);\n\t\treturn createConnection({\n\t\t\turl: options.url,\n\t\t\tdialect,\n\t\t\tmax: options.max,\n\t\t\tsearchPath\n\t\t});\n\t}\n\tconst role = options.role?.trim();\n\tconst searchPath = resolveSearchPath(options.url, options.searchPath);\n\tconst max = options.max ?? resolvePgPoolMax();\n\tif (role) {\n\t\tif (!options.searchPath?.trim()) throw new Error(\"Shared-login tenant access requires role and searchPath\");\n\t\tconst key = sharedPoolCacheKey(options.url, max);\n\t\tlet entry = cache.get(key);\n\t\tif (!entry) {\n\t\t\tentry = {\n\t\t\t\thandle: createConnection({\n\t\t\t\t\turl: options.url,\n\t\t\t\t\tdialect,\n\t\t\t\t\tmax\n\t\t\t\t}),\n\t\t\t\trefs: 0,\n\t\t\t\tlastUsedAt: Date.now()\n\t\t\t};\n\t\t\tcache.set(key, entry);\n\t\t\tensureEvictTimer();\n\t\t}\n\t\tentry.refs += 1;\n\t\ttouch(entry);\n\t\tif (entry.handle.dialect !== \"postgres\") {\n\t\t\tentry.refs = Math.max(0, entry.refs - 1);\n\t\t\tthrow new Error(\"Shared-login tenant access requires postgres\");\n\t\t}\n\t\treturn createOrgScopedHandle({\n\t\t\tpool: entry.handle.pool,\n\t\t\trole,\n\t\t\tsearchPath: options.searchPath\n\t\t});\n\t}\n\tconst key = orgLoginPoolCacheKey(options.url, searchPath, max);\n\tlet entry = cache.get(key);\n\tif (!entry) {\n\t\tentry = {\n\t\t\thandle: createConnection({\n\t\t\t\turl: options.url,\n\t\t\t\tdialect,\n\t\t\t\tmax,\n\t\t\t\tsearchPath\n\t\t\t}),\n\t\t\trefs: 0,\n\t\t\tlastUsedAt: Date.now()\n\t\t};\n\t\tcache.set(key, entry);\n\t\tensureEvictTimer();\n\t}\n\tentry.refs += 1;\n\ttouch(entry);\n\treturn entry.handle;\n}\nfunction releaseProjectDatabasePool(options) {\n\tif (inferDialect(options.url) !== \"postgres\") return;\n\tconst max = options.max ?? resolvePgPoolMax();\n\tconst key = options.role?.trim() ? sharedPoolCacheKey(options.url, max) : orgLoginPoolCacheKey(options.url, resolveSearchPath(options.url, options.searchPath), max);\n\tconst entry = cache.get(key);\n\tif (!entry) return;\n\tentry.refs = Math.max(0, entry.refs - 1);\n\ttouch(entry);\n}\nasync function closeAllProjectDatabasePools() {\n\tconst entries = [...cache.entries()];\n\tcache.clear();\n\tif (evictTimer) {\n\t\tclearInterval(evictTimer);\n\t\tevictTimer = void 0;\n\t}\n\tawait Promise.all(entries.map(([, entry]) => entry.handle.close()));\n}\n//#endregion\n//#region src/client/close.ts\nasync function closeDatabase() {\n\tif (getRequestDatabaseHandle()) throw new Error(\"closeDatabase() cannot be called inside runWithProjectDatabase()\");\n\tawait closeAllProjectDatabasePools();\n\tconst handle = getDefaultDatabaseHandle();\n\tif (!handle) return;\n\tawait handle.close();\n\tsetDatabaseHandle(void 0);\n}\n//#endregion\n//#region src/migrate/adapt-pg-migrations.ts\n/** Drizzle-kit emits REFERENCES \"public\".\"table\" — strip public so search_path applies. */\nfunction adaptPgMigrationsForSearchPath(migrations) {\n\treturn migrations.map((migration) => ({\n\t\t...migration,\n\t\tsql: migration.sql.map((statement) => statement.replace(/REFERENCES \"public\"\\./gi, \"REFERENCES \"))\n\t}));\n}\n//#endregion\n//#region src/migrate/load-migrations.ts\nfunction loadMigrations(migrationsFolder, embedded) {\n\tif (existsSync(join(migrationsFolder, \"meta\", \"_journal.json\"))) return readMigrationFiles({ migrationsFolder });\n\treturn embedded.map((migration) => ({\n\t\t...migration,\n\t\tsql: [...migration.sql]\n\t}));\n}\n//#endregion\n//#region src/migrate/migrate-pg.ts\nasync function migratePgDatabase(db, config, migrations) {\n\tconst migrator = db;\n\tawait migrator.dialect.migrate(migrations, migrator.session, config);\n}\n/**\n* Ensure the tenant schema exists — check first, create only when missing.\n*\n* Cloud org schemas always exist here (the platform admin creates them at\n* provision) and the org login could not create one anyway: it has no\n* database-level CREATE, which Postgres checks *before* the IF-NOT-EXISTS\n* short-circuit. The create branch is for standalone/self-hosted Postgres,\n* where no provisioning step exists and the user's login does the first-boot\n* schema creation.\n*/\nasync function ensureTenantSchema(db, schemaName) {\n\tif ((await db.execute(sql`SELECT 1 FROM information_schema.schemata WHERE schema_name = ${schemaName}`)).rows.length > 0) return;\n\tawait db.execute(sql`CREATE SCHEMA IF NOT EXISTS ${sql.identifier(schemaName)}`);\n}\n/**\n* Drizzle's migrator adapted for tenant schemas: same journal table and\n* folderMillis comparison, but with a permission-tolerant ensure-schema step\n* (see {@link ensureTenantSchema}) and a per-schema advisory lock so\n* concurrent runs (worker restarts, rollout overlap) serialize instead of\n* racing the same pending migration — the journal is read *inside* the locked\n* transaction, so the second runner sees the winner's work and no-ops.\n*/\nasync function migratePgTenantSchema(db, config, migrations) {\n\tconst journal = sql.identifier(config.migrationsSchema);\n\tconst table = sql.identifier(config.migrationsTable ?? \"__drizzle_migrations\");\n\tawait ensureTenantSchema(db, config.migrationsSchema);\n\tawait db.execute(sql`\n CREATE TABLE IF NOT EXISTS ${journal}.${table} (\n id SERIAL PRIMARY KEY,\n hash text NOT NULL,\n created_at bigint\n )\n `);\n\tawait db.transaction(async (tx) => {\n\t\tawait tx.execute(sql`SELECT pg_advisory_xact_lock(hashtext(${`migrate:${config.migrationsSchema}`}))`);\n\t\tconst lastMillisRaw = (await tx.execute(sql`SELECT created_at FROM ${journal}.${table} ORDER BY created_at DESC LIMIT 1`)).rows[0]?.created_at;\n\t\tconst lastMillis = lastMillisRaw === void 0 ? void 0 : Number(lastMillisRaw);\n\t\tfor (const migration of migrations) {\n\t\t\tif (lastMillis !== void 0 && lastMillis >= migration.folderMillis) continue;\n\t\t\tfor (const statement of migration.sql) await tx.execute(sql.raw(statement));\n\t\t\tawait tx.execute(sql`INSERT INTO ${journal}.${table} (\"hash\", \"created_at\") VALUES (${migration.hash}, ${migration.folderMillis})`);\n\t\t}\n\t});\n}\n//#endregion\n//#region src/migrate/resolve-folder.ts\nfunction resolvePackageRoot() {\n\tlet dir = dirname(fileURLToPath(import.meta.url));\n\tfor (;;) {\n\t\tif (existsSync(join(dir, \"drizzle\", \"sqlite\", \"meta\", \"_journal.json\")) || existsSync(join(dir, \"drizzle\", \"pg\", \"meta\", \"_journal.json\"))) return dir;\n\t\tconst parent = dirname(dir);\n\t\tif (parent === dir) break;\n\t\tdir = parent;\n\t}\n\tthrow new Error(\"Could not resolve @keystrokehq/database package root for migrations\");\n}\nfunction fallbackFolder(...segments) {\n\treturn join(dirname(fileURLToPath(import.meta.url)), ...segments);\n}\nfunction resolveMigrationsFolder(dialect, override) {\n\tif (override) return override;\n\ttry {\n\t\treturn join(resolvePackageRoot(), \"drizzle\", dialect === \"postgres\" ? \"pg\" : \"sqlite\");\n\t} catch {\n\t\treturn fallbackFolder(\"drizzle\", dialect === \"postgres\" ? \"pg\" : \"sqlite\");\n\t}\n}\n//#endregion\n//#region src/migrate/migrations.pg.generated.ts\nconst pgMigrations = [\n\t{\n\t\t\"sql\": [\n\t\t\t\"CREATE TABLE \\\"agent_events\\\" (\\n\t\\\"id\\\" text PRIMARY KEY NOT NULL,\\n\t\\\"session_id\\\" text NOT NULL,\\n\t\\\"seq\\\" integer NOT NULL,\\n\t\\\"event_type\\\" text NOT NULL,\\n\t\\\"payload\\\" jsonb NOT NULL,\\n\t\\\"created_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"deleted_at\\\" timestamp with time zone\\n);\\n\",\n\t\t\t\"\\nCREATE TABLE \\\"agent_sessions\\\" (\\n\t\\\"id\\\" text PRIMARY KEY NOT NULL,\\n\t\\\"project_id\\\" text NOT NULL,\\n\t\\\"agent_id\\\" text NOT NULL,\\n\t\\\"source_kind\\\" text DEFAULT 'api' NOT NULL,\\n\t\\\"source_id\\\" text,\\n\t\\\"parent_span_id\\\" text,\\n\t\\\"created_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"updated_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"deleted_at\\\" timestamp with time zone\\n);\\n\",\n\t\t\t\"\\nCREATE TABLE \\\"agents\\\" (\\n\t\\\"id\\\" text PRIMARY KEY NOT NULL,\\n\t\\\"project_id\\\" text NOT NULL,\\n\t\\\"slug\\\" text NOT NULL,\\n\t\\\"name\\\" text,\\n\t\\\"description\\\" text,\\n\t\\\"route\\\" text NOT NULL,\\n\t\\\"module_file\\\" text NOT NULL,\\n\t\\\"model\\\" text NOT NULL,\\n\t\\\"system_prompt\\\" text NOT NULL,\\n\t\\\"tool_count\\\" integer,\\n\t\\\"credential_count\\\" integer,\\n\t\\\"registered_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"updated_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"deleted_at\\\" timestamp with time zone\\n);\\n\",\n\t\t\t\"\\nCREATE TABLE \\\"credential_instances\\\" (\\n\t\\\"id\\\" text PRIMARY KEY NOT NULL,\\n\t\\\"project_id\\\" text NOT NULL,\\n\t\\\"slug\\\" text NOT NULL,\\n\t\\\"scope_type\\\" text NOT NULL,\\n\t\\\"scope_id\\\" text,\\n\t\\\"label\\\" text,\\n\t\\\"is_default\\\" integer NOT NULL,\\n\t\\\"auth_kind\\\" text NOT NULL,\\n\t\\\"ciphertext\\\" text,\\n\t\\\"connection_id\\\" text,\\n\t\\\"created_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"updated_at\\\" timestamp with time zone NOT NULL\\n);\\n\",\n\t\t\t\"\\nCREATE TABLE \\\"gateway_attachments\\\" (\\n\t\\\"id\\\" text PRIMARY KEY NOT NULL,\\n\t\\\"project_id\\\" text NOT NULL,\\n\t\\\"slug\\\" text NOT NULL,\\n\t\\\"agent_slug\\\" text NOT NULL,\\n\t\\\"module_file\\\" text,\\n\t\\\"platform\\\" text NOT NULL,\\n\t\\\"team_id\\\" text,\\n\t\\\"channel_id\\\" text NOT NULL,\\n\t\\\"source\\\" jsonb NOT NULL,\\n\t\\\"registered_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"updated_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"deleted_at\\\" timestamp with time zone\\n);\\n\",\n\t\t\t\"\\nCREATE TABLE \\\"gateway_thread_sessions\\\" (\\n\t\\\"thread_id\\\" text PRIMARY KEY NOT NULL,\\n\t\\\"agent_id\\\" text NOT NULL,\\n\t\\\"session_id\\\" text NOT NULL,\\n\t\\\"attachment_id\\\" text NOT NULL,\\n\t\\\"created_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"updated_at\\\" timestamp with time zone NOT NULL\\n);\\n\",\n\t\t\t\"\\nCREATE TABLE \\\"jobs\\\" (\\n\t\\\"id\\\" text PRIMARY KEY NOT NULL,\\n\t\\\"project_id\\\" text NOT NULL,\\n\t\\\"kind\\\" text NOT NULL,\\n\t\\\"target_id\\\" text NOT NULL,\\n\t\\\"run_id\\\" text NOT NULL,\\n\t\\\"trigger\\\" text NOT NULL,\\n\t\\\"payload\\\" jsonb,\\n\t\\\"status\\\" text NOT NULL,\\n\t\\\"scheduled_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"attempt\\\" integer NOT NULL,\\n\t\\\"max_attempts\\\" integer NOT NULL,\\n\t\\\"leased_by\\\" text,\\n\t\\\"lease_expires_at\\\" timestamp with time zone,\\n\t\\\"completed_at\\\" timestamp with time zone,\\n\t\\\"error\\\" jsonb\\n);\\n\",\n\t\t\t\"\\nCREATE TABLE \\\"oauth_apps\\\" (\\n\t\\\"id\\\" text PRIMARY KEY NOT NULL,\\n\t\\\"project_id\\\" text NOT NULL,\\n\t\\\"provider\\\" text NOT NULL,\\n\t\\\"slug\\\" text NOT NULL,\\n\t\\\"token_strategy\\\" text NOT NULL,\\n\t\\\"client_id_ciphertext\\\" text NOT NULL,\\n\t\\\"client_secret_ciphertext\\\" text NOT NULL,\\n\t\\\"signing_secret_ciphertext\\\" text,\\n\t\\\"redirect_uri\\\" text,\\n\t\\\"metadata\\\" jsonb,\\n\t\\\"created_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"updated_at\\\" timestamp with time zone NOT NULL\\n);\\n\",\n\t\t\t\"\\nCREATE TABLE \\\"oauth_connections\\\" (\\n\t\\\"id\\\" text PRIMARY KEY NOT NULL,\\n\t\\\"app_id\\\" text NOT NULL,\\n\t\\\"external_id\\\" text NOT NULL,\\n\t\\\"access_token_ciphertext\\\" text NOT NULL,\\n\t\\\"refresh_token_ciphertext\\\" text,\\n\t\\\"access_token_expires_at\\\" timestamp with time zone,\\n\t\\\"granted_scopes\\\" jsonb,\\n\t\\\"metadata\\\" jsonb,\\n\t\\\"connected_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"updated_at\\\" timestamp with time zone NOT NULL\\n);\\n\",\n\t\t\t\"\\nCREATE TABLE \\\"resource_activity\\\" (\\n\t\\\"id\\\" text PRIMARY KEY NOT NULL,\\n\t\\\"project_id\\\" text NOT NULL,\\n\t\\\"user_id\\\" text NOT NULL,\\n\t\\\"resource_kind\\\" text NOT NULL,\\n\t\\\"resource_id\\\" text NOT NULL,\\n\t\\\"last_opened_at\\\" timestamp with time zone NOT NULL\\n);\\n\",\n\t\t\t\"\\nCREATE TABLE \\\"secret_values\\\" (\\n\t\\\"id\\\" text PRIMARY KEY NOT NULL,\\n\t\\\"project_id\\\" text NOT NULL,\\n\t\\\"ref_kind\\\" text NOT NULL,\\n\t\\\"ref_id\\\" text NOT NULL,\\n\t\\\"field\\\" text NOT NULL,\\n\t\\\"ciphertext\\\" text NOT NULL,\\n\t\\\"created_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"updated_at\\\" timestamp with time zone NOT NULL\\n);\\n\",\n\t\t\t\"\\nCREATE TABLE \\\"skills\\\" (\\n\t\\\"id\\\" text PRIMARY KEY NOT NULL,\\n\t\\\"project_id\\\" text NOT NULL,\\n\t\\\"slug\\\" text NOT NULL,\\n\t\\\"name\\\" text,\\n\t\\\"description\\\" text,\\n\t\\\"module_file\\\" text NOT NULL,\\n\t\\\"registered_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"updated_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"deleted_at\\\" timestamp with time zone\\n);\\n\",\n\t\t\t\"\\nCREATE TABLE \\\"trace_logs\\\" (\\n\t\\\"id\\\" text PRIMARY KEY NOT NULL,\\n\t\\\"trace_id\\\" text NOT NULL,\\n\t\\\"span_id\\\" text NOT NULL,\\n\t\\\"seq\\\" integer NOT NULL,\\n\t\\\"level\\\" text NOT NULL,\\n\t\\\"message\\\" text NOT NULL,\\n\t\\\"data\\\" jsonb,\\n\t\\\"source\\\" text NOT NULL,\\n\t\\\"created_at\\\" timestamp with time zone NOT NULL\\n);\\n\",\n\t\t\t\"\\nCREATE TABLE \\\"trace_spans\\\" (\\n\t\\\"id\\\" text PRIMARY KEY NOT NULL,\\n\t\\\"trace_id\\\" text NOT NULL,\\n\t\\\"parent_span_id\\\" text,\\n\t\\\"kind\\\" text NOT NULL,\\n\t\\\"ref_id\\\" text NOT NULL,\\n\t\\\"name\\\" text NOT NULL,\\n\t\\\"status\\\" text NOT NULL,\\n\t\\\"started_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"finished_at\\\" timestamp with time zone,\\n\t\\\"metadata\\\" jsonb,\\n\t\\\"error\\\" jsonb\\n);\\n\",\n\t\t\t\"\\nCREATE TABLE \\\"trigger_attachments\\\" (\\n\t\\\"id\\\" text PRIMARY KEY NOT NULL,\\n\t\\\"project_id\\\" text NOT NULL,\\n\t\\\"slug\\\" text NOT NULL,\\n\t\\\"target_kind\\\" text DEFAULT 'workflow' NOT NULL,\\n\t\\\"workflow_slug\\\" text,\\n\t\\\"agent_slug\\\" text,\\n\t\\\"module_file\\\" text NOT NULL,\\n\t\\\"source\\\" jsonb NOT NULL,\\n\t\\\"origin\\\" text DEFAULT 'project' NOT NULL,\\n\t\\\"prompt\\\" text,\\n\t\\\"lifecycle\\\" jsonb,\\n\t\\\"created_by_session_id\\\" text,\\n\t\\\"registered_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"updated_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"deleted_at\\\" timestamp with time zone\\n);\\n\",\n\t\t\t\"\\nCREATE TABLE \\\"trigger_runs\\\" (\\n\t\\\"id\\\" text PRIMARY KEY NOT NULL,\\n\t\\\"project_id\\\" text NOT NULL,\\n\t\\\"attachment_id\\\" text NOT NULL,\\n\t\\\"source_path\\\" text,\\n\t\\\"trigger_type\\\" text NOT NULL,\\n\t\\\"payload\\\" jsonb,\\n\t\\\"triggered_at\\\" timestamp with time zone NOT NULL\\n);\\n\",\n\t\t\t\"\\nCREATE TABLE \\\"trigger_schedules\\\" (\\n\t\\\"id\\\" text PRIMARY KEY NOT NULL,\\n\t\\\"project_id\\\" text NOT NULL,\\n\t\\\"attachment_slug\\\" text NOT NULL,\\n\t\\\"kind\\\" text NOT NULL,\\n\t\\\"schedule\\\" text NOT NULL,\\n\t\\\"next_run_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"enabled\\\" integer NOT NULL,\\n\t\\\"updated_at\\\" timestamp with time zone NOT NULL\\n);\\n\",\n\t\t\t\"\\nCREATE TABLE \\\"workflow_events\\\" (\\n\t\\\"id\\\" text PRIMARY KEY NOT NULL,\\n\t\\\"run_id\\\" text NOT NULL,\\n\t\\\"project_id\\\" text NOT NULL,\\n\t\\\"seq\\\" integer NOT NULL,\\n\t\\\"type\\\" text NOT NULL,\\n\t\\\"correlation_id\\\" text,\\n\t\\\"data\\\" jsonb,\\n\t\\\"created_at\\\" timestamp with time zone NOT NULL\\n);\\n\",\n\t\t\t\"\\nCREATE TABLE \\\"workflow_hooks\\\" (\\n\t\\\"hook_id\\\" text PRIMARY KEY NOT NULL,\\n\t\\\"run_id\\\" text NOT NULL,\\n\t\\\"project_id\\\" text NOT NULL,\\n\t\\\"token\\\" text NOT NULL,\\n\t\\\"correlation_id\\\" text NOT NULL,\\n\t\\\"status\\\" text NOT NULL,\\n\t\\\"payload\\\" jsonb,\\n\t\\\"created_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"resumed_at\\\" timestamp with time zone\\n);\\n\",\n\t\t\t\"\\nCREATE TABLE \\\"workflow_runs\\\" (\\n\t\\\"id\\\" text PRIMARY KEY NOT NULL,\\n\t\\\"project_id\\\" text NOT NULL,\\n\t\\\"workflow_slug\\\" text NOT NULL,\\n\t\\\"attachment_id\\\" text,\\n\t\\\"subscription_id\\\" text,\\n\t\\\"trigger_run_id\\\" text,\\n\t\\\"parent_workflow_run_id\\\" text,\\n\t\\\"parent_span_id\\\" text,\\n\t\\\"source_kind\\\" text DEFAULT 'api' NOT NULL,\\n\t\\\"source_id\\\" text,\\n\t\\\"status\\\" text NOT NULL,\\n\t\\\"trigger\\\" text NOT NULL,\\n\t\\\"triggered_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"started_at\\\" timestamp with time zone,\\n\t\\\"finished_at\\\" timestamp with time zone,\\n\t\\\"input\\\" jsonb,\\n\t\\\"output\\\" jsonb,\\n\t\\\"error\\\" jsonb\\n);\\n\",\n\t\t\t\"\\nCREATE TABLE \\\"workflow_subscriptions\\\" (\\n\t\\\"id\\\" text PRIMARY KEY NOT NULL,\\n\t\\\"project_id\\\" text NOT NULL,\\n\t\\\"workflow_slug\\\" text NOT NULL,\\n\t\\\"user_id\\\" text NOT NULL,\\n\t\\\"enabled\\\" integer NOT NULL,\\n\t\\\"created_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"updated_at\\\" timestamp with time zone NOT NULL\\n);\\n\",\n\t\t\t\"\\nCREATE TABLE \\\"workflows\\\" (\\n\t\\\"id\\\" text PRIMARY KEY NOT NULL,\\n\t\\\"project_id\\\" text NOT NULL,\\n\t\\\"slug\\\" text NOT NULL,\\n\t\\\"name\\\" text,\\n\t\\\"description\\\" text,\\n\t\\\"module_file\\\" text NOT NULL,\\n\t\\\"subscribable\\\" integer NOT NULL,\\n\t\\\"registered_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"updated_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"deleted_at\\\" timestamp with time zone\\n);\\n\",\n\t\t\t\"\\nALTER TABLE \\\"agent_events\\\" ADD CONSTRAINT \\\"agent_events_session_id_agent_sessions_id_fk\\\" FOREIGN KEY (\\\"session_id\\\") REFERENCES \\\"public\\\".\\\"agent_sessions\\\"(\\\"id\\\") ON DELETE no action ON UPDATE no action;\",\n\t\t\t\"\\nALTER TABLE \\\"agent_sessions\\\" ADD CONSTRAINT \\\"agent_sessions_agent_id_agents_id_fk\\\" FOREIGN KEY (\\\"agent_id\\\") REFERENCES \\\"public\\\".\\\"agents\\\"(\\\"id\\\") ON DELETE no action ON UPDATE no action;\",\n\t\t\t\"\\nALTER TABLE \\\"gateway_thread_sessions\\\" ADD CONSTRAINT \\\"gateway_thread_sessions_agent_id_agents_id_fk\\\" FOREIGN KEY (\\\"agent_id\\\") REFERENCES \\\"public\\\".\\\"agents\\\"(\\\"id\\\") ON DELETE no action ON UPDATE no action;\",\n\t\t\t\"\\nALTER TABLE \\\"gateway_thread_sessions\\\" ADD CONSTRAINT \\\"gateway_thread_sessions_session_id_agent_sessions_id_fk\\\" FOREIGN KEY (\\\"session_id\\\") REFERENCES \\\"public\\\".\\\"agent_sessions\\\"(\\\"id\\\") ON DELETE no action ON UPDATE no action;\",\n\t\t\t\"\\nALTER TABLE \\\"gateway_thread_sessions\\\" ADD CONSTRAINT \\\"gateway_thread_sessions_attachment_id_gateway_attachments_id_fk\\\" FOREIGN KEY (\\\"attachment_id\\\") REFERENCES \\\"public\\\".\\\"gateway_attachments\\\"(\\\"id\\\") ON DELETE no action ON UPDATE no action;\",\n\t\t\t\"\\nALTER TABLE \\\"oauth_connections\\\" ADD CONSTRAINT \\\"oauth_connections_app_id_oauth_apps_id_fk\\\" FOREIGN KEY (\\\"app_id\\\") REFERENCES \\\"public\\\".\\\"oauth_apps\\\"(\\\"id\\\") ON DELETE cascade ON UPDATE no action;\",\n\t\t\t\"\\nALTER TABLE \\\"trace_logs\\\" ADD CONSTRAINT \\\"trace_logs_span_id_trace_spans_id_fk\\\" FOREIGN KEY (\\\"span_id\\\") REFERENCES \\\"public\\\".\\\"trace_spans\\\"(\\\"id\\\") ON DELETE no action ON UPDATE no action;\",\n\t\t\t\"\\nALTER TABLE \\\"trigger_runs\\\" ADD CONSTRAINT \\\"trigger_runs_attachment_id_trigger_attachments_id_fk\\\" FOREIGN KEY (\\\"attachment_id\\\") REFERENCES \\\"public\\\".\\\"trigger_attachments\\\"(\\\"id\\\") ON DELETE no action ON UPDATE no action;\",\n\t\t\t\"\\nALTER TABLE \\\"workflow_events\\\" ADD CONSTRAINT \\\"workflow_events_run_id_workflow_runs_id_fk\\\" FOREIGN KEY (\\\"run_id\\\") REFERENCES \\\"public\\\".\\\"workflow_runs\\\"(\\\"id\\\") ON DELETE no action ON UPDATE no action;\",\n\t\t\t\"\\nALTER TABLE \\\"workflow_hooks\\\" ADD CONSTRAINT \\\"workflow_hooks_run_id_workflow_runs_id_fk\\\" FOREIGN KEY (\\\"run_id\\\") REFERENCES \\\"public\\\".\\\"workflow_runs\\\"(\\\"id\\\") ON DELETE no action ON UPDATE no action;\",\n\t\t\t\"\\nALTER TABLE \\\"workflow_runs\\\" ADD CONSTRAINT \\\"workflow_runs_attachment_id_trigger_attachments_id_fk\\\" FOREIGN KEY (\\\"attachment_id\\\") REFERENCES \\\"public\\\".\\\"trigger_attachments\\\"(\\\"id\\\") ON DELETE no action ON UPDATE no action;\",\n\t\t\t\"\\nALTER TABLE \\\"workflow_runs\\\" ADD CONSTRAINT \\\"workflow_runs_subscription_id_workflow_subscriptions_id_fk\\\" FOREIGN KEY (\\\"subscription_id\\\") REFERENCES \\\"public\\\".\\\"workflow_subscriptions\\\"(\\\"id\\\") ON DELETE no action ON UPDATE no action;\",\n\t\t\t\"\\nALTER TABLE \\\"workflow_runs\\\" ADD CONSTRAINT \\\"workflow_runs_trigger_run_id_trigger_runs_id_fk\\\" FOREIGN KEY (\\\"trigger_run_id\\\") REFERENCES \\\"public\\\".\\\"trigger_runs\\\"(\\\"id\\\") ON DELETE no action ON UPDATE no action;\",\n\t\t\t\"\\nCREATE INDEX \\\"agent_sessions_agent_updated_idx\\\" ON \\\"agent_sessions\\\" USING btree (\\\"agent_id\\\",\\\"updated_at\\\");\",\n\t\t\t\"\\nCREATE UNIQUE INDEX \\\"agents_project_id_slug_idx\\\" ON \\\"agents\\\" USING btree (\\\"project_id\\\",\\\"slug\\\");\",\n\t\t\t\"\\nCREATE UNIQUE INDEX \\\"agents_project_id_route_idx\\\" ON \\\"agents\\\" USING btree (\\\"project_id\\\",\\\"route\\\");\",\n\t\t\t\"\\nCREATE UNIQUE INDEX \\\"credential_instances_project_slug_scope_label_unique\\\" ON \\\"credential_instances\\\" USING btree (\\\"project_id\\\",\\\"slug\\\",\\\"scope_type\\\",\\\"scope_id\\\",\\\"label\\\");\",\n\t\t\t\"\\nCREATE INDEX \\\"credential_instances_project_slug_scope_idx\\\" ON \\\"credential_instances\\\" USING btree (\\\"project_id\\\",\\\"slug\\\",\\\"scope_type\\\",\\\"scope_id\\\");\",\n\t\t\t\"\\nCREATE UNIQUE INDEX \\\"gateway_attachments_project_id_slug_idx\\\" ON \\\"gateway_attachments\\\" USING btree (\\\"project_id\\\",\\\"slug\\\");\",\n\t\t\t\"\\nCREATE UNIQUE INDEX \\\"gateway_attachments_project_platform_channel_active\\\" ON \\\"gateway_attachments\\\" USING btree (\\\"project_id\\\",\\\"platform\\\",\\\"channel_id\\\") WHERE \\\"gateway_attachments\\\".\\\"deleted_at\\\" is null;\",\n\t\t\t\"\\nCREATE UNIQUE INDEX \\\"oauth_apps_project_id_slug_idx\\\" ON \\\"oauth_apps\\\" USING btree (\\\"project_id\\\",\\\"slug\\\");\",\n\t\t\t\"\\nCREATE UNIQUE INDEX \\\"oauth_connections_app_external_unique\\\" ON \\\"oauth_connections\\\" USING btree (\\\"app_id\\\",\\\"external_id\\\");\",\n\t\t\t\"\\nCREATE UNIQUE INDEX \\\"resource_activity_project_user_kind_resource\\\" ON \\\"resource_activity\\\" USING btree (\\\"project_id\\\",\\\"user_id\\\",\\\"resource_kind\\\",\\\"resource_id\\\");\",\n\t\t\t\"\\nCREATE INDEX \\\"resource_activity_user_last_opened_at\\\" ON \\\"resource_activity\\\" USING btree (\\\"user_id\\\",\\\"last_opened_at\\\");\",\n\t\t\t\"\\nCREATE UNIQUE INDEX \\\"secret_values_ref_unique\\\" ON \\\"secret_values\\\" USING btree (\\\"project_id\\\",\\\"ref_kind\\\",\\\"ref_id\\\",\\\"field\\\");\",\n\t\t\t\"\\nCREATE INDEX \\\"secret_values_ref_idx\\\" ON \\\"secret_values\\\" USING btree (\\\"project_id\\\",\\\"ref_kind\\\",\\\"ref_id\\\");\",\n\t\t\t\"\\nCREATE UNIQUE INDEX \\\"skills_project_id_slug_idx\\\" ON \\\"skills\\\" USING btree (\\\"project_id\\\",\\\"slug\\\");\",\n\t\t\t\"\\nCREATE INDEX \\\"trace_logs_trace_id_seq_idx\\\" ON \\\"trace_logs\\\" USING btree (\\\"trace_id\\\",\\\"seq\\\");\",\n\t\t\t\"\\nCREATE INDEX \\\"trace_logs_span_id_seq_idx\\\" ON \\\"trace_logs\\\" USING btree (\\\"span_id\\\",\\\"seq\\\");\",\n\t\t\t\"\\nCREATE UNIQUE INDEX \\\"trigger_attachments_project_id_slug_idx\\\" ON \\\"trigger_attachments\\\" USING btree (\\\"project_id\\\",\\\"slug\\\");\",\n\t\t\t\"\\nCREATE UNIQUE INDEX \\\"trigger_schedules_project_id_attachment_slug_idx\\\" ON \\\"trigger_schedules\\\" USING btree (\\\"project_id\\\",\\\"attachment_slug\\\");\",\n\t\t\t\"\\nCREATE INDEX \\\"trigger_schedules_next_run_at_idx\\\" ON \\\"trigger_schedules\\\" USING btree (\\\"next_run_at\\\",\\\"enabled\\\");\",\n\t\t\t\"\\nCREATE UNIQUE INDEX \\\"workflow_events_run_id_seq_unique\\\" ON \\\"workflow_events\\\" USING btree (\\\"run_id\\\",\\\"seq\\\");\",\n\t\t\t\"\\nCREATE INDEX \\\"workflow_events_run_id_type_idx\\\" ON \\\"workflow_events\\\" USING btree (\\\"run_id\\\",\\\"type\\\");\",\n\t\t\t\"\\nCREATE INDEX \\\"workflow_events_correlation_id_idx\\\" ON \\\"workflow_events\\\" USING btree (\\\"correlation_id\\\");\",\n\t\t\t\"\\nCREATE UNIQUE INDEX \\\"workflow_hooks_token_unique\\\" ON \\\"workflow_hooks\\\" USING btree (\\\"token\\\");\",\n\t\t\t\"\\nCREATE INDEX \\\"workflow_hooks_run_id_idx\\\" ON \\\"workflow_hooks\\\" USING btree (\\\"run_id\\\");\",\n\t\t\t\"\\nCREATE INDEX \\\"workflow_runs_project_workflow_triggered_idx\\\" ON \\\"workflow_runs\\\" USING btree (\\\"project_id\\\",\\\"workflow_slug\\\",\\\"triggered_at\\\");\",\n\t\t\t\"\\nCREATE UNIQUE INDEX \\\"workflow_subscriptions_project_workflow_user\\\" ON \\\"workflow_subscriptions\\\" USING btree (\\\"project_id\\\",\\\"workflow_slug\\\",\\\"user_id\\\");\",\n\t\t\t\"\\nCREATE UNIQUE INDEX \\\"workflows_project_id_slug_idx\\\" ON \\\"workflows\\\" USING btree (\\\"project_id\\\",\\\"slug\\\");\"\n\t\t],\n\t\t\"bps\": true,\n\t\t\"folderMillis\": 1781213647873,\n\t\t\"hash\": \"03d99ea3c47d7b7f9a3b73a9b767c82a29394e5b2c53868e55061bf0bed93e0b\"\n\t},\n\t{\n\t\t\"sql\": [\"ALTER TABLE \\\"agent_sessions\\\" ADD COLUMN \\\"ran_by_user_id\\\" text;\", \"\\nALTER TABLE \\\"workflow_runs\\\" ADD COLUMN \\\"ran_by_user_id\\\" text;\"],\n\t\t\"bps\": true,\n\t\t\"folderMillis\": 1781243850513,\n\t\t\"hash\": \"3f3eb52271a724ca488bfd6b2aba9095265455c55dee2a5d76d16c8698801906\"\n\t},\n\t{\n\t\t\"sql\": [\"ALTER TABLE \\\"agent_sessions\\\" ADD COLUMN \\\"canceled_at\\\" timestamp with time zone;\\n\"],\n\t\t\"bps\": true,\n\t\t\"folderMillis\": 17813e8,\n\t\t\"hash\": \"3dbe010bde8652bd58886b33d5d8c449e7213ef66a6235c365598dc978802d71\"\n\t},\n\t{\n\t\t\"sql\": [\n\t\t\t\"CREATE TABLE \\\"agent_runs\\\" (\\n\t\\\"id\\\" text PRIMARY KEY NOT NULL,\\n\t\\\"session_id\\\" text NOT NULL,\\n\t\\\"project_id\\\" text NOT NULL,\\n\t\\\"agent_id\\\" text NOT NULL,\\n\t\\\"run_index\\\" integer NOT NULL,\\n\t\\\"source_kind\\\" text DEFAULT 'api' NOT NULL,\\n\t\\\"source_id\\\" text,\\n\t\\\"ran_by_user_id\\\" text,\\n\t\\\"status\\\" text NOT NULL,\\n\t\\\"error\\\" jsonb,\\n\t\\\"started_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"finished_at\\\" timestamp with time zone,\\n\t\\\"total_cost_usd\\\" double precision,\\n\t\\\"total_tokens\\\" integer,\\n\t\\\"models_used\\\" jsonb,\\n\t\\\"created_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"updated_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"deleted_at\\\" timestamp with time zone\\n);\\n\",\n\t\t\t\"\\nCREATE TABLE \\\"usage_records\\\" (\\n\t\\\"id\\\" text PRIMARY KEY NOT NULL,\\n\t\\\"run_id\\\" text NOT NULL,\\n\t\\\"run_kind\\\" text NOT NULL,\\n\t\\\"kind\\\" text NOT NULL,\\n\t\\\"label\\\" text NOT NULL,\\n\t\\\"quantity\\\" integer,\\n\t\\\"unit\\\" text,\\n\t\\\"amount\\\" double precision NOT NULL,\\n\t\\\"metadata\\\" jsonb,\\n\t\\\"created_at\\\" timestamp with time zone NOT NULL\\n);\\n\",\n\t\t\t\"\\nALTER TABLE \\\"agent_events\\\" ADD COLUMN \\\"run_id\\\" text;\",\n\t\t\t\"\\nALTER TABLE \\\"agent_runs\\\" ADD CONSTRAINT \\\"agent_runs_session_id_agent_sessions_id_fk\\\" FOREIGN KEY (\\\"session_id\\\") REFERENCES \\\"public\\\".\\\"agent_sessions\\\"(\\\"id\\\") ON DELETE no action ON UPDATE no action;\",\n\t\t\t\"\\nALTER TABLE \\\"agent_runs\\\" ADD CONSTRAINT \\\"agent_runs_agent_id_agents_id_fk\\\" FOREIGN KEY (\\\"agent_id\\\") REFERENCES \\\"public\\\".\\\"agents\\\"(\\\"id\\\") ON DELETE no action ON UPDATE no action;\",\n\t\t\t\"\\nCREATE INDEX \\\"agent_runs_session_run_index_idx\\\" ON \\\"agent_runs\\\" USING btree (\\\"session_id\\\",\\\"run_index\\\");\",\n\t\t\t\"\\nCREATE INDEX \\\"agent_runs_agent_started_idx\\\" ON \\\"agent_runs\\\" USING btree (\\\"agent_id\\\",\\\"started_at\\\");\",\n\t\t\t\"\\nCREATE INDEX \\\"agent_runs_project_started_idx\\\" ON \\\"agent_runs\\\" USING btree (\\\"project_id\\\",\\\"started_at\\\");\",\n\t\t\t\"\\nCREATE INDEX \\\"usage_records_run_run_kind_idx\\\" ON \\\"usage_records\\\" USING btree (\\\"run_id\\\",\\\"run_kind\\\");\",\n\t\t\t\"\\nCREATE INDEX \\\"usage_records_kind_idx\\\" ON \\\"usage_records\\\" USING btree (\\\"kind\\\");\",\n\t\t\t\"\\nALTER TABLE \\\"agent_events\\\" ADD CONSTRAINT \\\"agent_events_run_id_agent_runs_id_fk\\\" FOREIGN KEY (\\\"run_id\\\") REFERENCES \\\"public\\\".\\\"agent_runs\\\"(\\\"id\\\") ON DELETE no action ON UPDATE no action;\"\n\t\t],\n\t\t\"bps\": true,\n\t\t\"folderMillis\": 1781568153484,\n\t\t\"hash\": \"e40c228590351e229ed0fb39e8e3045e2b68368363675b2f147a694c6437a80e\"\n\t},\n\t{\n\t\t\"sql\": [\n\t\t\t\"ALTER TABLE IF EXISTS \\\"agent_runs\\\" DISABLE ROW LEVEL SECURITY;\",\n\t\t\t\"\\nDROP TABLE IF EXISTS \\\"agent_runs\\\" CASCADE;\",\n\t\t\t\"\\nALTER TABLE \\\"agent_sessions\\\" ADD COLUMN IF NOT EXISTS \\\"total_duration_ms\\\" integer DEFAULT 0 NOT NULL;\",\n\t\t\t\"\\nALTER TABLE \\\"agent_events\\\" DROP COLUMN IF EXISTS \\\"run_id\\\";\"\n\t\t],\n\t\t\"bps\": true,\n\t\t\"folderMillis\": 1781630388181,\n\t\t\"hash\": \"b995f6f4e5f1147c20ea90cd26877d7154ff1b1625adba277507268c2a8c35f6\"\n\t},\n\t{\n\t\t\"sql\": [\n\t\t\t\"DROP TABLE \\\"oauth_apps\\\" CASCADE;\",\n\t\t\t\"\\nDROP TABLE \\\"oauth_connections\\\" CASCADE;\",\n\t\t\t\"\\nDROP TABLE \\\"secret_values\\\" CASCADE;\"\n\t\t],\n\t\t\"bps\": true,\n\t\t\"folderMillis\": 1781941661795,\n\t\t\"hash\": \"3816998a2a2c7ead79cacfb64281fd415220473dee9512192b05b8cb57516f74\"\n\t},\n\t{\n\t\t\"sql\": [\"ALTER TABLE \\\"credential_instances\\\" ADD COLUMN \\\"shared_connection_id\\\" text;\"],\n\t\t\"bps\": true,\n\t\t\"folderMillis\": 1782243320892,\n\t\t\"hash\": \"ec36b70bcd148a39ac4f55789348aee32315070e7d8b75aff61a9cee1d245721\"\n\t},\n\t{\n\t\t\"sql\": [\n\t\t\t\"ALTER TABLE \\\"agent_sessions\\\" ADD COLUMN \\\"title\\\" text;\",\n\t\t\t\"\\nALTER TABLE \\\"agent_sessions\\\" ADD COLUMN \\\"live_message\\\" jsonb;\",\n\t\t\t\"\\nALTER TABLE \\\"agents\\\" ADD COLUMN \\\"credential_keys\\\" jsonb;\"\n\t\t],\n\t\t\"bps\": true,\n\t\t\"folderMillis\": 1782280074442,\n\t\t\"hash\": \"6174d3625965c6921bc20d51f67cc841b3e96b0d1c3777508a6969a2f2622f25\"\n\t},\n\t{\n\t\t\"sql\": [\n\t\t\t\"ALTER TABLE \\\"agents\\\" RENAME COLUMN \\\"credential_keys\\\" TO \\\"app_slugs\\\";\",\n\t\t\t\"\\nCREATE TABLE \\\"credential_assignments\\\" (\\n\t\\\"id\\\" text PRIMARY KEY NOT NULL,\\n\t\\\"project_id\\\" text NOT NULL,\\n\t\\\"target_type\\\" text NOT NULL,\\n\t\\\"target_key\\\" text NOT NULL,\\n\t\\\"consumer_id\\\" text NOT NULL,\\n\t\\\"credential_slug\\\" text NOT NULL,\\n\t\\\"instance_id\\\" text NOT NULL,\\n\t\\\"created_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"updated_at\\\" timestamp with time zone NOT NULL\\n);\\n\",\n\t\t\t\"\\nCREATE UNIQUE INDEX \\\"credential_assignments_project_target_consumer_slug\\\" ON \\\"credential_assignments\\\" USING btree (\\\"project_id\\\",\\\"target_type\\\",\\\"target_key\\\",\\\"consumer_id\\\",\\\"credential_slug\\\");\",\n\t\t\t\"\\nCREATE INDEX \\\"credential_assignments_project_target_idx\\\" ON \\\"credential_assignments\\\" USING btree (\\\"project_id\\\",\\\"target_type\\\",\\\"target_key\\\");\",\n\t\t\t\"\\nALTER TABLE \\\"credential_instances\\\" RENAME COLUMN \\\"slug\\\" TO \\\"app_slug\\\";\",\n\t\t\t\"\\nALTER TABLE \\\"credential_instances\\\" ADD COLUMN \\\"slug\\\" text;\",\n\t\t\t\"\\nALTER TABLE \\\"credential_instances\\\" ADD COLUMN \\\"name\\\" text;\",\n\t\t\t\"\\nUPDATE \\\"credential_instances\\\" SET \\\"name\\\" = \\\"label\\\";\",\n\t\t\t\"\\nUPDATE \\\"credential_instances\\\" SET \\\"slug\\\" = CASE WHEN \\\"is_default\\\" = 1 THEN \\\"app_slug\\\" ELSE \\\"app_slug\\\" || '-' || substr(\\\"id\\\", 1, 8) END;\",\n\t\t\t\"\\nALTER TABLE \\\"credential_instances\\\" ALTER COLUMN \\\"slug\\\" SET NOT NULL;\",\n\t\t\t\"\\nDROP INDEX \\\"credential_instances_project_slug_scope_label_unique\\\";\",\n\t\t\t\"\\nDROP INDEX \\\"credential_instances_project_slug_scope_idx\\\";\",\n\t\t\t\"\\nCREATE INDEX \\\"credential_instances_project_app_slug_scope_idx\\\" ON \\\"credential_instances\\\" USING btree (\\\"project_id\\\",\\\"app_slug\\\",\\\"scope_type\\\",\\\"scope_id\\\");\",\n\t\t\t\"\\nCREATE UNIQUE INDEX \\\"credential_instances_project_scope_slug_unique\\\" ON \\\"credential_instances\\\" USING btree (\\\"project_id\\\",\\\"scope_type\\\",\\\"scope_id\\\",\\\"slug\\\");\\n\"\n\t\t],\n\t\t\"bps\": true,\n\t\t\"folderMillis\": 17826e8,\n\t\t\"hash\": \"ee310c8ce64fdc1b17cff8f138fee267eb1b1676262e58dae6e4c7e505295b4a\"\n\t},\n\t{\n\t\t\"sql\": [\"ALTER TABLE \\\"trigger_attachments\\\" ADD COLUMN \\\"name\\\" text;\", \"\\nALTER TABLE \\\"trigger_attachments\\\" ADD COLUMN \\\"description\\\" text;\\n\"],\n\t\t\"bps\": true,\n\t\t\"folderMillis\": 17827e8,\n\t\t\"hash\": \"5ce9dbb84f2eaae456389abaca578d65e148ade609bf7f4e3debe55041163dd6\"\n\t},\n\t{\n\t\t\"sql\": [\"ALTER TABLE \\\"credential_instances\\\" ADD COLUMN \\\"granted_scopes\\\" jsonb;\\n\"],\n\t\t\"bps\": true,\n\t\t\"folderMillis\": 17828e8,\n\t\t\"hash\": \"643bd06059078751d2c1d03c61a21f56313a8feb89cf69ed97a8fb6fac66ea19\"\n\t},\n\t{\n\t\t\"sql\": [\"ALTER TABLE \\\"credential_instances\\\" ADD COLUMN \\\"last_used_at\\\" timestamp with time zone;\\n\"],\n\t\t\"bps\": true,\n\t\t\"folderMillis\": 17829e8,\n\t\t\"hash\": \"eb8a691e801cb24a2e6a41a1472bd61c838b6ecea23341dff7fa5d48414a9b05\"\n\t},\n\t{\n\t\t\"sql\": [\n\t\t\t\"CREATE TABLE \\\"triggers\\\" (\\n\t\\\"id\\\" text PRIMARY KEY NOT NULL,\\n\t\\\"project_id\\\" text NOT NULL,\\n\t\\\"slug\\\" text NOT NULL,\\n\t\\\"kind\\\" text NOT NULL,\\n\t\\\"name\\\" text,\\n\t\\\"description\\\" text,\\n\t\\\"module_file\\\" text NOT NULL,\\n\t\\\"origin\\\" text DEFAULT 'project' NOT NULL,\\n\t\\\"config\\\" jsonb,\\n\t\\\"schedule\\\" text,\\n\t\\\"next_run_at\\\" timestamp with time zone,\\n\t\\\"enabled\\\" integer DEFAULT 1 NOT NULL,\\n\t\\\"lifecycle\\\" jsonb,\\n\t\\\"created_by_session_id\\\" text,\\n\t\\\"registered_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"updated_at\\\" timestamp with time zone NOT NULL,\\n\t\\\"deleted_at\\\" timestamp with time zone\\n);\\n\",\n\t\t\t\"\\nCREATE UNIQUE INDEX \\\"triggers_project_id_slug_idx\\\" ON \\\"triggers\\\" USING btree (\\\"project_id\\\",\\\"slug\\\");\",\n\t\t\t\"\\nCREATE INDEX \\\"triggers_next_run_at_enabled_idx\\\" ON \\\"triggers\\\" USING btree (\\\"next_run_at\\\",\\\"enabled\\\");\",\n\t\t\t\"\\nINSERT INTO \\\"triggers\\\" (\\n\t\\\"id\\\",\\n\t\\\"project_id\\\",\\n\t\\\"slug\\\",\\n\t\\\"kind\\\",\\n\t\\\"name\\\",\\n\t\\\"description\\\",\\n\t\\\"module_file\\\",\\n\t\\\"origin\\\",\\n\t\\\"config\\\",\\n\t\\\"schedule\\\",\\n\t\\\"next_run_at\\\",\\n\t\\\"enabled\\\",\\n\t\\\"lifecycle\\\",\\n\t\\\"created_by_session_id\\\",\\n\t\\\"registered_at\\\",\\n\t\\\"updated_at\\\",\\n\t\\\"deleted_at\\\"\\n)\\nSELECT\\n\tgen_random_uuid()::text,\\n\tg.project_id,\\n\tg.slug,\\n\tg.kind,\\n\tg.name,\\n\tg.description,\\n\tg.module_file,\\n\tg.origin,\\n\tg.config,\\n\tg.schedule,\\n\tg.next_run_at,\\n\tg.enabled,\\n\tg.lifecycle,\\n\tg.created_by_session_id,\\n\tg.registered_at,\\n\tg.updated_at,\\n\tg.deleted_at\\nFROM (\\n\tSELECT DISTINCT ON (ta.project_id, g.group_key)\\n\t\tta.project_id,\\n\t\tCASE\\n\t\t\tWHEN ta.origin = 'ephemeral' THEN ta.slug\\n\t\t\tELSE COALESCE(NULLIF(ta.source->>'slug', ''), NULLIF(ta.source->>'key', ''))\\n\t\tEND AS slug,\\n\t\t(ta.source->>'kind') AS kind,\\n\t\tta.name,\\n\t\tta.description,\\n\t\tta.module_file,\\n\t\tta.origin,\\n\t\tCASE\\n\t\t\tWHEN ta.source->>'kind' = 'webhook' THEN jsonb_strip_nulls(\\n\t\t\t\tjsonb_build_object(\\n\t\t\t\t\t'endpoint', ta.source->>'endpoint',\\n\t\t\t\t\t'requestSchema', ta.source->'requestSchema',\\n\t\t\t\t\t'filterSchema', ta.source->'filterSchema'\\n\t\t\t\t)\\n\t\t\t)\\n\t\t\tWHEN ta.source->>'kind' = 'poll' THEN jsonb_strip_nulls(\\n\t\t\t\tjsonb_build_object('code', ta.source->>'code', 'id', ta.source->>'id')\\n\t\t\t)\\n\t\t\tELSE NULL\\n\t\tEND AS config,\\n\t\tCASE\\n\t\t\tWHEN ta.source->>'kind' IN ('cron', 'poll') THEN ta.source->>'schedule'\\n\t\t\tELSE NULL\\n\t\tEND AS schedule,\\n\t\ts.next_run_at,\\n\t\tCOALESCE(s.enabled, 1) AS enabled,\\n\t\tta.lifecycle,\\n\t\tta.created_by_session_id,\\n\t\tta.registered_at,\\n\t\tta.updated_at,\\n\t\tta.deleted_at,\\n\t\tg.group_key\\n\tFROM trigger_attachments ta\\n\tINNER JOIN (\\n\t\tSELECT\\n\t\t\tid,\\n\t\t\tCASE\\n\t\t\t\tWHEN origin = 'ephemeral' THEN id\\n\t\t\t\tWHEN source->>'kind' = 'poll' AND source->>'id' IS NOT NULL THEN 'poll:' || (source->>'id')\\n\t\t\t\tELSE (source->>'kind') || ':' || COALESCE(NULLIF(source->>'slug', ''), NULLIF(source->>'key', ''))\\n\t\t\tEND AS group_key\\n\t\tFROM trigger_attachments\\n\t) g ON g.id = ta.id\\n\tLEFT JOIN LATERAL (\\n\t\tSELECT ts.next_run_at, ts.enabled\\n\t\tFROM trigger_schedules ts\\n\t\tWHERE ts.project_id = ta.project_id AND ts.attachment_slug = ta.slug\\n\t\tORDER BY ts.enabled DESC, ts.next_run_at ASC NULLS LAST\\n\t\tLIMIT 1\\n\t) s ON true\\n\tORDER BY ta.project_id, g.group_key, ta.registered_at ASC\\n) g;\\n\",\n\t\t\t\"\\nALTER TABLE \\\"trigger_attachments\\\" ADD COLUMN \\\"trigger_id\\\" text;\",\n\t\t\t\"\\nUPDATE trigger_attachments ta\\nSET trigger_id = t.id\\nFROM triggers t\\nWHERE t.project_id = ta.project_id\\n\tAND t.kind = (ta.source->>'kind')\\n\tAND (\\n\t\t(ta.origin = 'ephemeral' AND t.origin = 'ephemeral' AND t.slug = ta.slug)\\n\t\tOR (\\n\t\t\tta.origin <> 'ephemeral'\\n\t\t\tAND t.origin = 'project'\\n\t\t\tAND t.slug = COALESCE(NULLIF(ta.source->>'slug', ''), NULLIF(ta.source->>'key', ''))\\n\t\t)\\n\t);\\n\",\n\t\t\t\"\\nALTER TABLE \\\"trigger_runs\\\" ADD COLUMN IF NOT EXISTS \\\"outcome\\\" text DEFAULT 'dispatched' NOT NULL;\",\n\t\t\t\"\\nALTER TABLE \\\"trigger_runs\\\" ADD COLUMN IF NOT EXISTS \\\"reason\\\" text;\",\n\t\t\t\"\\nALTER TABLE \\\"trigger_runs\\\" ADD COLUMN IF NOT EXISTS \\\"detail\\\" text;\",\n\t\t\t\"\\nALTER TABLE \\\"trigger_runs\\\" ADD COLUMN \\\"trigger_id\\\" text;\",\n\t\t\t\"\\nUPDATE trigger_runs tr\\nSET trigger_id = ta.trigger_id\\nFROM trigger_attachments ta\\nWHERE tr.attachment_id = ta.id;\\n\",\n\t\t\t\"\\nALTER TABLE \\\"trigger_runs\\\" DROP CONSTRAINT \\\"trigger_runs_attachment_id_trigger_attachments_id_fk\\\";\",\n\t\t\t\"\\nDROP INDEX IF EXISTS \\\"trigger_runs_project_attachment_triggered_idx\\\";\",\n\t\t\t\"\\nALTER TABLE \\\"trigger_runs\\\" DROP COLUMN \\\"attachment_id\\\";\",\n\t\t\t\"\\nALTER TABLE \\\"trigger_runs\\\" ALTER COLUMN \\\"trigger_id\\\" SET NOT NULL;\",\n\t\t\t\"\\nALTER TABLE \\\"trigger_runs\\\" ADD CONSTRAINT \\\"trigger_runs_trigger_id_triggers_id_fk\\\" FOREIGN KEY (\\\"trigger_id\\\") REFERENCES \\\"public\\\".\\\"triggers\\\"(\\\"id\\\") ON DELETE no action ON UPDATE no action;\",\n\t\t\t\"\\nCREATE INDEX \\\"trigger_runs_project_trigger_triggered_idx\\\" ON \\\"trigger_runs\\\" USING btree (\\\"project_id\\\",\\\"trigger_id\\\",\\\"triggered_at\\\");\",\n\t\t\t\"\\nALTER TABLE \\\"trigger_attachments\\\" DROP COLUMN \\\"name\\\";\",\n\t\t\t\"\\nALTER TABLE \\\"trigger_attachments\\\" DROP COLUMN \\\"description\\\";\",\n\t\t\t\"\\nALTER TABLE \\\"trigger_attachments\\\" DROP COLUMN \\\"module_file\\\";\",\n\t\t\t\"\\nALTER TABLE \\\"trigger_attachments\\\" DROP COLUMN \\\"source\\\";\",\n\t\t\t\"\\nALTER TABLE \\\"trigger_attachments\\\" DROP COLUMN \\\"origin\\\";\",\n\t\t\t\"\\nALTER TABLE \\\"trigger_attachments\\\" DROP COLUMN \\\"lifecycle\\\";\",\n\t\t\t\"\\nALTER TABLE \\\"trigger_attachments\\\" DROP COLUMN \\\"created_by_session_id\\\";\",\n\t\t\t\"\\nALTER TABLE \\\"trigger_attachments\\\" ALTER COLUMN \\\"trigger_id\\\" SET NOT NULL;\",\n\t\t\t\"\\nALTER TABLE \\\"trigger_attachments\\\" ADD CONSTRAINT \\\"trigger_attachments_trigger_id_triggers_id_fk\\\" FOREIGN KEY (\\\"trigger_id\\\") REFERENCES \\\"public\\\".\\\"triggers\\\"(\\\"id\\\") ON DELETE no action ON UPDATE no action;\",\n\t\t\t\"\\nDROP TABLE \\\"trigger_schedules\\\";\\n\"\n\t\t],\n\t\t\"bps\": true,\n\t\t\"folderMillis\": 1783e9,\n\t\t\"hash\": \"1413969c71976435768a9ade921f6da3e6e974a3b1c1dbaf9644536bd47f6507\"\n\t},\n\t{\n\t\t\"sql\": [\n\t\t\t\"ALTER TABLE \\\"triggers\\\" ADD COLUMN \\\"trigger_hash\\\" text;\",\n\t\t\t\"\\nALTER TABLE \\\"triggers\\\" ADD COLUMN \\\"overview_markdown\\\" text;\",\n\t\t\t\"\\nALTER TABLE \\\"triggers\\\" ADD COLUMN \\\"overview_hash\\\" text;\",\n\t\t\t\"\\nALTER TABLE \\\"triggers\\\" ADD COLUMN \\\"overview_model\\\" text;\",\n\t\t\t\"\\nALTER TABLE \\\"triggers\\\" ADD COLUMN \\\"overview_status\\\" text DEFAULT 'idle' NOT NULL;\",\n\t\t\t\"\\nALTER TABLE \\\"triggers\\\" ADD COLUMN \\\"overview_generated_at\\\" timestamp with time zone;\\n\"\n\t\t],\n\t\t\"bps\": true,\n\t\t\"folderMillis\": 17831e8,\n\t\t\"hash\": \"6bfdc822c7dffa912d818b7c46dfed152e15b0baa37c8117da0dd1f2123a8613\"\n\t},\n\t{\n\t\t\"sql\": [\"ALTER TABLE \\\"trigger_attachments\\\" ADD COLUMN \\\"disabled_at\\\" timestamp with time zone;\\n\"],\n\t\t\"bps\": true,\n\t\t\"folderMillis\": 17832e8,\n\t\t\"hash\": \"c9bc827a4ca2fdb7326eb974e50aa185f1cb5db59921925a1baf9c9e544c8f4a\"\n\t},\n\t{\n\t\t\"sql\": [\"DROP INDEX \\\"credential_assignments_project_target_idx\\\";\", \"\\nCREATE INDEX \\\"agent_events_session_event_seq_idx\\\" ON \\\"agent_events\\\" USING btree (\\\"session_id\\\",\\\"event_type\\\",\\\"seq\\\");\"],\n\t\t\"bps\": true,\n\t\t\"folderMillis\": 17833e8,\n\t\t\"hash\": \"be25c33ca471d79a0e536ed39c7e7b76183688398bd87edb200741290651fd1e\"\n\t},\n\t{\n\t\t\"sql\": [\"ALTER TABLE \\\"workflow_hooks\\\" ADD COLUMN \\\"schema\\\" jsonb;\"],\n\t\t\"bps\": true,\n\t\t\"folderMillis\": 17834e8,\n\t\t\"hash\": \"e10f62340d5a270245d9e3ed3c86c8158b95e7e254978e5b51c07c523a713788\"\n\t},\n\t{\n\t\t\"sql\": [\n\t\t\t\"ALTER TABLE \\\"workflows\\\" ALTER COLUMN \\\"name\\\" SET NOT NULL;\",\n\t\t\t\"\\nALTER TABLE \\\"workflows\\\" ALTER COLUMN \\\"description\\\" SET NOT NULL;\",\n\t\t\t\"\\nALTER TABLE \\\"workflows\\\" ADD COLUMN \\\"run_input_values\\\" jsonb;\",\n\t\t\t\"\\nALTER TABLE \\\"workflows\\\" ADD COLUMN \\\"canvas_annotations_json\\\" jsonb;\",\n\t\t\t\"\\nALTER TABLE \\\"workflows\\\" ADD COLUMN \\\"canvas_annotations_hash\\\" text;\",\n\t\t\t\"\\nALTER TABLE \\\"workflows\\\" ADD COLUMN \\\"canvas_annotations_model\\\" text;\",\n\t\t\t\"\\nALTER TABLE \\\"workflows\\\" ADD COLUMN \\\"canvas_annotations_status\\\" text DEFAULT 'idle' NOT NULL;\",\n\t\t\t\"\\nALTER TABLE \\\"workflows\\\" ADD COLUMN \\\"canvas_annotations_generated_at\\\" timestamp with time zone;\",\n\t\t\t\"\\nALTER TABLE \\\"workflows\\\" ADD COLUMN \\\"overview_summary\\\" text;\",\n\t\t\t\"\\nALTER TABLE \\\"workflows\\\" ADD COLUMN \\\"overview_phases_json\\\" jsonb;\",\n\t\t\t\"\\nALTER TABLE \\\"workflows\\\" ADD COLUMN \\\"overview_hash\\\" text;\",\n\t\t\t\"\\nALTER TABLE \\\"workflows\\\" ADD COLUMN \\\"overview_model\\\" text;\",\n\t\t\t\"\\nALTER TABLE \\\"workflows\\\" ADD COLUMN \\\"overview_status\\\" text DEFAULT 'idle' NOT NULL;\",\n\t\t\t\"\\nALTER TABLE \\\"workflows\\\" ADD COLUMN \\\"overview_generated_at\\\" timestamp with time zone;\"\n\t\t],\n\t\t\"bps\": true,\n\t\t\"folderMillis\": 1783400000001,\n\t\t\"hash\": \"2aa0640e57ab9e4e633c9734cd2987bf500a86b48611e60e0116e3966d8a9fb1\"\n\t},\n\t{\n\t\t\"sql\": [\n\t\t\t\"CREATE TABLE \\\"billing_wallet\\\" (\\n\t\\\"organization_id\\\" text PRIMARY KEY NOT NULL,\\n\t\\\"plan_credit_micro_credits\\\" bigint DEFAULT 0 NOT NULL,\\n\t\\\"prepaid_credit_micro_credits\\\" bigint DEFAULT 0 NOT NULL,\\n\t\\\"period_start\\\" timestamp with time zone,\\n\t\\\"period_end\\\" timestamp with time zone,\\n\t\\\"plan_key\\\" text,\\n\t\\\"monthly_credit_micro_credits\\\" bigint,\\n\t\\\"included_storage_gb\\\" integer,\\n\t\\\"concurrency_limit\\\" integer,\\n\t\\\"agent_timeout_ms\\\" integer,\\n\t\\\"workflow_timeout_ms\\\" integer,\\n\t\\\"poll_timeout_ms\\\" integer,\\n\t\\\"log_retention_days\\\" integer,\\n\t\\\"updated_at\\\" timestamp with time zone NOT NULL\\n);\\n\",\n\t\t\t\"\\nALTER TABLE \\\"usage_records\\\" ALTER COLUMN \\\"run_id\\\" DROP NOT NULL;\",\n\t\t\t\"\\nALTER TABLE \\\"usage_records\\\" ALTER COLUMN \\\"run_kind\\\" DROP NOT NULL;\",\n\t\t\t\"\\nALTER TABLE \\\"usage_records\\\" ADD COLUMN \\\"entry_type\\\" text DEFAULT 'usage' NOT NULL;\",\n\t\t\t\"\\nALTER TABLE \\\"usage_records\\\" ADD COLUMN \\\"meter_key\\\" text;\",\n\t\t\t\"\\nALTER TABLE \\\"usage_records\\\" ADD COLUMN \\\"micro_credits\\\" bigint;\",\n\t\t\t\"\\nALTER TABLE \\\"usage_records\\\" ADD COLUMN \\\"bucket\\\" text;\",\n\t\t\t\"\\nALTER TABLE \\\"usage_records\\\" ADD COLUMN \\\"reference\\\" text;\",\n\t\t\t\"\\nCREATE INDEX \\\"usage_records_entry_type_created_at_idx\\\" ON \\\"usage_records\\\" USING btree (\\\"entry_type\\\",\\\"created_at\\\");\",\n\t\t\t\"\\nCREATE UNIQUE INDEX \\\"usage_records_entry_type_reference_unique\\\" ON \\\"usage_records\\\" USING btree (\\\"entry_type\\\",\\\"reference\\\") WHERE \\\"usage_records\\\".\\\"reference\\\" is not null;\"\n\t\t],\n\t\t\"bps\": true,\n\t\t\"folderMillis\": 1783400000002,\n\t\t\"hash\": \"c00adbb3ea94724e7820cf6a9b005d62f446616df5de649ed1f580926dd79d0f\"\n\t},\n\t{\n\t\t\"sql\": [\"ALTER TABLE \\\"triggers\\\" ADD COLUMN \\\"state\\\" jsonb;\"],\n\t\t\"bps\": true,\n\t\t\"folderMillis\": 1783400000003,\n\t\t\"hash\": \"8421b078dd8ddfa070c927399a8f34a72b5db716acbdbdac023f4370c9af2786\"\n\t},\n\t{\n\t\t\"sql\": [\"ALTER TABLE \\\"billing_wallet\\\" ADD COLUMN \\\"auto_topup_enabled\\\" integer DEFAULT 0 NOT NULL;\", \"\\nALTER TABLE \\\"billing_wallet\\\" ADD COLUMN \\\"auto_topup_threshold_micro_credits\\\" bigint;\"],\n\t\t\"bps\": true,\n\t\t\"folderMillis\": 1783400000004,\n\t\t\"hash\": \"b294ea292c4b7c016518e115a90e93ae14d00e13b20df1ce827bbf4bdfabb557\"\n\t},\n\t{\n\t\t\"sql\": [\"ALTER TABLE \\\"agent_sessions\\\" ADD COLUMN IF NOT EXISTS \\\"status\\\" text;\"],\n\t\t\"bps\": true,\n\t\t\"folderMillis\": 1783439524491,\n\t\t\"hash\": \"d631ea7ae05b148abc9e8429602d28b4630a7940a49f3300fc9953ae4fd7e753\"\n\t},\n\t{\n\t\t\"sql\": [\"CREATE INDEX \\\"trace_spans_trace_id_started_at_idx\\\" ON \\\"trace_spans\\\" USING btree (\\\"trace_id\\\",\\\"started_at\\\");\", \"\\nCREATE INDEX \\\"trace_spans_ref_id_kind_started_at_idx\\\" ON \\\"trace_spans\\\" USING btree (\\\"ref_id\\\",\\\"kind\\\",\\\"started_at\\\");\"],\n\t\t\"bps\": true,\n\t\t\"folderMillis\": 1783628390082,\n\t\t\"hash\": \"c9be7dac24470c028d4a5b284c9c89b54b2f60a445fe53e9ba9d5c7cdcc37c14\"\n\t},\n\t{\n\t\t\"sql\": [\"ALTER TABLE \\\"agent_sessions\\\" DROP COLUMN \\\"live_message\\\";\"],\n\t\t\"bps\": true,\n\t\t\"folderMillis\": 1783718833653,\n\t\t\"hash\": \"d67a5e9f5bf5f4193a911f1c6b46101663686d706b631af400121a1c7295b984\"\n\t},\n\t{\n\t\t\"sql\": [\"ALTER TABLE \\\"jobs\\\" ADD COLUMN \\\"parent\\\" jsonb;\"],\n\t\t\"bps\": true,\n\t\t\"folderMillis\": 1783783854867,\n\t\t\"hash\": \"3f47699f0c64bd26ea5e60ebd4e4ecd995d4145eb1e1be78f5217a3516a01a4c\"\n\t},\n\t{\n\t\t\"sql\": [\"ALTER TABLE \\\"workflow_runs\\\" ADD COLUMN \\\"credential_context\\\" jsonb;\"],\n\t\t\"bps\": true,\n\t\t\"folderMillis\": 1783793918401,\n\t\t\"hash\": \"87242495eb0d65f9a8ac45e42091e79826ef837bc2affc19de094b99b9a740b0\"\n\t},\n\t{\n\t\t\"sql\": [\"DROP TABLE IF EXISTS \\\"billing_wallet\\\" CASCADE;\", \"\\nDROP TABLE IF EXISTS \\\"usage_records\\\" CASCADE;\"],\n\t\t\"bps\": true,\n\t\t\"folderMillis\": 1783797342266,\n\t\t\"hash\": \"1a82b767a735fd548bdc399cb2d02f7dc058caac071c33bec5eb00a4a4b2e401\"\n\t}\n];\n//#endregion\n//#region src/migrate/run.ts\nasync function runMigrations(handle, migrationsFolder) {\n\tif (handle.dialect === \"postgres\") {\n\t\tconst migrationsSchema = resolveMigrationsSchema(handle.searchPath);\n\t\tconst config = {\n\t\t\tmigrationsFolder,\n\t\t\tmigrationsSchema\n\t\t};\n\t\tconst loaded = loadMigrations(migrationsFolder, pgMigrations);\n\t\tconst migrations = handle.searchPath || handle.runMigrations ? adaptPgMigrationsForSearchPath(loaded) : loaded;\n\t\tif (handle.runMigrations) {\n\t\t\tawait handle.runMigrations(config, migrations);\n\t\t\treturn;\n\t\t}\n\t\tif (handle.searchPath) {\n\t\t\tawait migratePgTenantSchema(handle.db, { migrationsSchema }, migrations);\n\t\t\treturn;\n\t\t}\n\t\tawait migratePgDatabase(handle.db, config, migrations);\n\t\treturn;\n\t}\n\tmigrate(handle.db, { migrationsFolder });\n}\n//#endregion\n//#region src/client/init.ts\nfunction resolveUrl(url) {\n\tif (url) return url;\n\tconst envUrl = process.env.DATABASE_URL?.trim();\n\tif (envUrl && inferDialect(envUrl) === \"sqlite\") return envUrl;\n\treturn resolveProjectDatabaseUrlFromEnv(process.env) ?? \"file:./data/dev.db\";\n}\nasync function initDatabase(options = {}) {\n\tif (isDatabaseInitialized()) return;\n\tconst url = resolveUrl(options.url);\n\tconst dialect = inferDialect(url, options.dialect);\n\tconst searchPath = resolveSearchPath(url, options.searchPath);\n\tconst next = createConnection({\n\t\turl,\n\t\tdialect,\n\t\tmax: options.max,\n\t\tsearchPath,\n\t\tproxy: options.proxy\n\t});\n\tsetDatabaseHandle(next);\n\tif (options.migrate ?? true) await runMigrations(next, resolveMigrationsFolder(dialect, options.migrationsFolder));\n}\n//#endregion\n//#region src/client/project-database.ts\n/** Bind a Postgres handle for the org's shared runtime schema (all projects in the org). */\nasync function runWithProjectDatabase(options, fn) {\n\tconst poolOptions = {\n\t\turl: options.url,\n\t\tsearchPath: options.searchPath,\n\t\tmax: options.max,\n\t\trole: options.role\n\t};\n\tconst handle = await acquireProjectDatabasePool(poolOptions);\n\tconst closeOnRelease = inferDialect(options.url) !== \"postgres\";\n\treturn runWithRequestDatabaseHandle(handle, async () => {\n\t\ttry {\n\t\t\treturn await fn();\n\t\t} finally {\n\t\t\tif (closeOnRelease) await handle.close();\n\t\t\telse releaseProjectDatabasePool(poolOptions);\n\t\t}\n\t});\n}\n//#endregion\n//#region src/connection/pg/public-scoped-pool.ts\nconst PUBLIC_SEARCH_PATH = \"public\";\nfunction queryText(args) {\n\tconst first = args[0];\n\tif (typeof first === \"string\") return first;\n\treturn first.text;\n}\nfunction normalizeSqlCommand(text) {\n\treturn text?.trim().split(/\\s+/)[0]?.toUpperCase();\n}\nfunction isFullRollback(text) {\n\treturn text?.trim().toUpperCase() === \"ROLLBACK\";\n}\n/** Single multi-statement round trip: BEGIN + SET LOCAL search_path. */\nconst PUBLIC_SCOPE_BEGIN = `BEGIN; SET LOCAL search_path TO ${PUBLIC_SEARCH_PATH}`;\nfunction bindQuery(originalQuery) {\n\treturn (...args) => Promise.resolve(originalQuery(...args));\n}\nfunction createPublicScopedClient(client) {\n\tconst originalQuery = bindQuery(client.query.bind(client));\n\tlet prologueApplied = false;\n\tclient.query = ((...args) => {\n\t\tconst sql = queryText(args);\n\t\tconst command = normalizeSqlCommand(sql);\n\t\tif (command === \"BEGIN\") {\n\t\t\tif (!prologueApplied) {\n\t\t\t\tprologueApplied = true;\n\t\t\t\treturn originalQuery(PUBLIC_SCOPE_BEGIN);\n\t\t\t}\n\t\t\treturn originalQuery(...args);\n\t\t}\n\t\tif (command === \"COMMIT\") {\n\t\t\tprologueApplied = false;\n\t\t\treturn originalQuery(...args);\n\t\t}\n\t\tif (command === \"ROLLBACK\" && isFullRollback(sql)) {\n\t\t\tprologueApplied = false;\n\t\t\treturn originalQuery(...args);\n\t\t}\n\t\tif (command === \"ROLLBACK\") return originalQuery(...args);\n\t\treturn originalQuery(...args);\n\t});\n\treturn client;\n}\nfunction createPublicScopedPool(pool) {\n\tconst scopedPool = Object.create(pool);\n\tscopedPool.query = (async (...args) => {\n\t\tconst client = await pool.connect();\n\t\tconst query = bindQuery(client.query.bind(client));\n\t\ttry {\n\t\t\tawait query(PUBLIC_SCOPE_BEGIN);\n\t\t\tconst result = await query(...args);\n\t\t\tawait query(\"COMMIT\");\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\tawait query(\"ROLLBACK\").catch(() => void 0);\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tclient.release();\n\t\t}\n\t});\n\tscopedPool.connect = ((callback) => {\n\t\tif (callback) return pool.connect((error, client, release) => {\n\t\t\tif (error || !client) {\n\t\t\t\tcallback(error ?? /* @__PURE__ */ new Error(\"failed to connect\"), client, release);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcallback(null, createPublicScopedClient(client), release);\n\t\t});\n\t\treturn pool.connect().then((client) => createPublicScopedClient(client));\n\t});\n\treturn scopedPool;\n}\nfunction createPublicScopedHandle(options) {\n\tconst scopedPool = createPublicScopedPool(options.pool);\n\treturn {\n\t\tdialect: \"postgres\",\n\t\tdb: createPgDb(scopedPool),\n\t\tpool: scopedPool,\n\t\tsearchPath: PUBLIC_SEARCH_PATH,\n\t\tclose: async () => void 0\n\t};\n}\n//#endregion\n//#region src/queries/_internal.ts\n/** Internal: only `queries/**` may call this. */\nfunction getDb() {\n\treturn getDbFromContext();\n}\nfunction rowsFromResult(result) {\n\tif (Array.isArray(result)) return result;\n\tconst rows = result.rows;\n\treturn Array.isArray(rows) ? rows : [];\n}\n//#endregion\n//#region src/queries/list-limit.ts\n/** Safety cap for unbounded account list queries (agents, workflows, skills, …). */\nconst DEFAULT_LIST_LIMIT = 200;\n//#endregion\n//#region src/queries/agents/list-active.ts\n/**\n* List every active agent in the bound org schema (all projects). Not project\n* scoped — the org database schema is itself the tenant boundary.\n*/\nasync function listActiveAgents(options) {\n\tconst db = getDb();\n\tif (options?.projectIds !== void 0 && options.projectIds.length === 0) return [];\n\tconst conditions = [isNull(agents.deletedAt)];\n\tif (options?.projectIds !== void 0) conditions.push(inArray$1(agents.projectId, options.projectIds));\n\treturn db.select().from(agents).where(and$1(...conditions)).orderBy(desc(agents.updatedAt), desc(agents.id)).limit(options?.limit ?? 200);\n}\n//#endregion\n//#region src/queries/_internal/project-scope.ts\nfunction eqProjectScope(table) {\n\treturn eq$1(table.projectId, getProjectScopeId());\n}\nfunction scopedAnd(table, ...conditions) {\n\treturn and$1(eqProjectScope(table), ...conditions);\n}\nfunction projectScopeId() {\n\treturn getProjectScopeId();\n}\n/** Use with left joins on workflowRuns/triggerRuns/agentSessions keyed by trace or ref id. */\nfunction traceRootProjectScopeFilter() {\n\treturn or(eq$1(workflowRuns.projectId, getProjectScopeId()), eq$1(triggerRuns.projectId, getProjectScopeId()), eq$1(agentSessions.projectId, getProjectScopeId()));\n}\n//#endregion\n//#region src/queries/agents/select.ts\nasync function selectAgentBySlug(slug) {\n\treturn (await getDb().select().from(agents).where(scopedAnd(agents, eq$1(agents.slug, slug))).limit(1))[0];\n}\nasync function selectActiveAgentByRoute(route) {\n\treturn (await getDb().select({\n\t\tid: agents.id,\n\t\tslug: agents.slug\n\t}).from(agents).where(scopedAnd(agents, eq$1(agents.route, route), isNull(agents.deletedAt))).limit(1))[0];\n}\n/** Fetch active agents by id from the bound org schema (all projects). */\nasync function selectActiveAgentsByIds(ids) {\n\tif (ids.length === 0) return [];\n\treturn getDb().select().from(agents).where(and$1(inArray$1(agents.id, ids), isNull(agents.deletedAt)));\n}\n/** Fetch a single active agent by id from the bound org schema (all projects). */\nasync function selectActiveAgentById(id) {\n\treturn (await getDb().select().from(agents).where(and$1(eq$1(agents.id, id), isNull(agents.deletedAt))).limit(1))[0];\n}\n//#endregion\n//#region src/queries/agents/resolve-project-id.ts\n/** The agent row is the source of truth for which project it belongs to. */\nasync function resolveAgentProjectId(agentId) {\n\tconst agent = await selectActiveAgentById(agentId);\n\tif (!agent) throw new Error(`Agent not found: ${agentId}`);\n\treturn agent.projectId;\n}\n//#endregion\n//#region src/queries/agents/write.ts\nasync function insertAgent(values) {\n\tawait getDb().insert(agents).values({\n\t\t...values,\n\t\tprojectId: projectScopeId()\n\t});\n}\nasync function updateAgentById(id, values) {\n\tawait getDb().update(agents).set(values).where(scopedAnd(agents, eq$1(agents.id, id)));\n}\nasync function softDeleteAllAgents(now) {\n\tawait getDb().update(agents).set({\n\t\tdeletedAt: now,\n\t\tupdatedAt: now\n\t}).where(scopedAnd(agents, isNull(agents.deletedAt)));\n}\nasync function softDeleteAgentsNotInSlugs(slugs, now) {\n\tawait getDb().update(agents).set({\n\t\tdeletedAt: now,\n\t\tupdatedAt: now\n\t}).where(scopedAnd(agents, isNull(agents.deletedAt), notInArray(agents.slug, slugs)));\n}\n//#endregion\n//#region src/agents/cursor.ts\nfunction encodeAgentSessionCursor(cursor) {\n\treturn Buffer.from(JSON.stringify({\n\t\tupdatedAt: cursor.updatedAt.toISOString(),\n\t\tid: cursor.id\n\t})).toString(\"base64url\");\n}\nfunction decodeAgentSessionCursor(value) {\n\ttry {\n\t\tconst parsed = JSON.parse(Buffer.from(value, \"base64url\").toString(\"utf8\"));\n\t\tif (typeof parsed.updatedAt !== \"string\" || typeof parsed.id !== \"string\") return null;\n\t\tconst updatedAt = new Date(parsed.updatedAt);\n\t\tif (Number.isNaN(updatedAt.getTime())) return null;\n\t\treturn {\n\t\t\tupdatedAt,\n\t\t\tid: parsed.id\n\t\t};\n\t} catch {\n\t\treturn null;\n\t}\n}\n//#endregion\n//#region src/queries/agent-sessions/index.ts\nasync function insertAgentSession(values) {\n\tawait getDb().insert(agentSessions).values({\n\t\t...values,\n\t\tsourceKind: values.sourceKind ?? \"api\",\n\t\tsourceId: values.sourceId ?? null,\n\t\tranByUserId: values.ranByUserId ?? null,\n\t\tprojectId: projectScopeId()\n\t});\n}\nasync function selectActiveAgentSession(sessionId) {\n\treturn (await getDb().select().from(agentSessions).where(scopedAnd(agentSessions, eq$1(agentSessions.id, sessionId), isNull(agentSessions.deletedAt))).limit(1))[0];\n}\nasync function selectAgentSessionById(sessionId) {\n\treturn selectActiveAgentSession(sessionId);\n}\nasync function listAgentSessionsBySourceIds(options) {\n\tif (options.sourceIds.length === 0) return /* @__PURE__ */ new Map();\n\tconst rows = await getDb().select().from(agentSessions).where(scopedAnd(agentSessions, eq$1(agentSessions.sourceKind, options.sourceKind), inArray$1(agentSessions.sourceId, options.sourceIds), isNull(agentSessions.deletedAt)));\n\tconst bySourceId = /* @__PURE__ */ new Map();\n\tfor (const row of rows) if (row.sourceId) {\n\t\tconst bucket = bySourceId.get(row.sourceId) ?? [];\n\t\tbucket.push(row);\n\t\tbySourceId.set(row.sourceId, bucket);\n\t}\n\treturn bySourceId;\n}\nasync function selectAgentSessionForAgent(agentSlug, sessionId) {\n\treturn (await getDb().select({ session: agentSessions }).from(agentSessions).innerJoin(agents, eq$1(agents.id, agentSessions.agentId)).where(and$1(eq$1(agents.slug, agentSlug), eq$1(agents.projectId, projectScopeId()), eq$1(agentSessions.id, sessionId), isNull(agentSessions.deletedAt))).limit(1))[0]?.session;\n}\nasync function touchAgentSession(sessionId, updatedAt) {\n\tawait getDb().update(agentSessions).set({ updatedAt }).where(scopedAnd(agentSessions, eq$1(agentSessions.id, sessionId), isNull(agentSessions.deletedAt)));\n}\nasync function updateAgentSessionTitle(sessionId, title) {\n\tawait getDb().update(agentSessions).set({ title }).where(scopedAnd(agentSessions, eq$1(agentSessions.id, sessionId), isNull(agentSessions.deletedAt)));\n}\nasync function addAgentSessionDuration(sessionId, deltaMs) {\n\tif (deltaMs <= 0) return;\n\tawait getDb().update(agentSessions).set({ totalDurationMs: sql$1`${agentSessions.totalDurationMs} + ${deltaMs}` }).where(scopedAnd(agentSessions, eq$1(agentSessions.id, sessionId), isNull(agentSessions.deletedAt)));\n}\nfunction cursorBefore$2(cursor) {\n\treturn or(lt(agentSessions.updatedAt, cursor.updatedAt), and$1(eq$1(agentSessions.updatedAt, cursor.updatedAt), lt(agentSessions.id, cursor.id)));\n}\nasync function listAgentSessionRowsPaginated(options) {\n\tconst db = getDb();\n\tconst conditions = [\n\t\teq$1(agents.slug, options.agentSlug),\n\t\teq$1(agents.projectId, projectScopeId()),\n\t\tisNull(agentSessions.deletedAt)\n\t];\n\tif (options.source) conditions.push(eq$1(agentSessions.sourceKind, options.source));\n\tif (options.cursor) {\n\t\tconst decoded = decodeAgentSessionCursor(options.cursor);\n\t\tif (!decoded) throw new Error(\"Invalid cursor\");\n\t\tconditions.push(cursorBefore$2(decoded));\n\t}\n\tconst limit = options.limit + 1;\n\tconst sessions = (await db.select({ session: agentSessions }).from(agentSessions).innerJoin(agents, eq$1(agents.id, agentSessions.agentId)).where(and$1(...conditions)).orderBy(desc(agentSessions.updatedAt), desc(agentSessions.id)).limit(limit)).map((row) => row.session);\n\tconst hasMore = sessions.length > options.limit;\n\tconst page = hasMore ? sessions.slice(0, options.limit) : sessions;\n\tconst last = page.at(-1);\n\treturn {\n\t\trows: page,\n\t\tnextCursor: hasMore && last ? encodeAgentSessionCursor({\n\t\t\tupdatedAt: last.updatedAt,\n\t\t\tid: last.id\n\t\t}) : null\n\t};\n}\n/**\n* Explicit session status write. Cancellation wins: once `canceled_at` is set,\n* a late `failed`/`completed` from the aborted run must not overwrite it.\n*/\nasync function updateAgentSessionStatus(sessionId, status) {\n\tawait getDb().update(agentSessions).set({ status }).where(scopedAnd(agentSessions, eq$1(agentSessions.id, sessionId), isNull(agentSessions.deletedAt), status === \"canceled\" || status === \"running\" ? void 0 : isNull(agentSessions.canceledAt)));\n}\nasync function cancelAgentSessionRow(sessionId, canceledAt) {\n\treturn (await getDb().update(agentSessions).set({\n\t\tcanceledAt,\n\t\tupdatedAt: canceledAt,\n\t\tstatus: \"canceled\"\n\t}).where(scopedAnd(agentSessions, eq$1(agentSessions.id, sessionId), isNull(agentSessions.deletedAt), isNull(agentSessions.canceledAt))).returning())[0];\n}\n/**\n* Reactivates a session for a new run by clearing a prior cancellation. Cancellation\n* is per-run: a session is a multi-prompt conversation, so a new prompt must not be blocked\n* (or perpetually shown as \"canceled\") just because an earlier prompt was canceled. No-ops\n* when the session was not canceled.\n*/\nasync function clearAgentSessionCancellation(sessionId) {\n\tawait getDb().update(agentSessions).set({\n\t\tcanceledAt: null,\n\t\tstatus: null\n\t}).where(scopedAnd(agentSessions, eq$1(agentSessions.id, sessionId), isNull(agentSessions.deletedAt), isNotNull(agentSessions.canceledAt)));\n}\n//#endregion\n//#region src/queries/agent-events/index.ts\nasync function maxSeqForSession(sessionId) {\n\treturn (await getDb().select({ value: max$1(agentEvents.seq) }).from(agentEvents).innerJoin(agentSessions, eq$1(agentSessions.id, agentEvents.sessionId)).where(scopedAnd(agentSessions, eq$1(agentEvents.sessionId, sessionId), isNull(agentEvents.deletedAt))))[0]?.value ?? 0;\n}\nasync function insertAgentEvent(values) {\n\tawait getDb().insert(agentEvents).values(values);\n}\nasync function listMessagePayloads(sessionId, messageEventType) {\n\treturn (await listMessageEventsForSession(sessionId, messageEventType)).map((row) => row.payload);\n}\nasync function listMessageEventsForSession(sessionId, messageEventType) {\n\treturn await getDb().select({\n\t\tpayload: agentEvents.payload,\n\t\tcreatedAt: agentEvents.createdAt,\n\t\tseq: agentEvents.seq\n\t}).from(agentEvents).innerJoin(agentSessions, eq$1(agentSessions.id, agentEvents.sessionId)).where(scopedAnd(agentSessions, eq$1(agentEvents.sessionId, sessionId), eq$1(agentEvents.eventType, messageEventType), isNull(agentEvents.deletedAt))).orderBy(asc(agentEvents.seq));\n}\nasync function countMessageEventsForSession(sessionId, messageEventType) {\n\tconst rows = await getDb().select({ count: sql$1`count(*)` }).from(agentEvents).innerJoin(agentSessions, eq$1(agentSessions.id, agentEvents.sessionId)).where(scopedAnd(agentSessions, eq$1(agentEvents.sessionId, sessionId), eq$1(agentEvents.eventType, messageEventType), isNull(agentEvents.deletedAt)));\n\treturn Number(rows[0]?.count ?? 0);\n}\n/** The highest-seq event of one of the given types, without scanning the full log. */\nasync function selectLatestAgentEventByTypes(sessionId, eventTypes) {\n\treturn (await getDb().select({ event: agentEvents }).from(agentEvents).innerJoin(agentSessions, eq$1(agentSessions.id, agentEvents.sessionId)).where(scopedAnd(agentSessions, eq$1(agentEvents.sessionId, sessionId), inArray$1(agentEvents.eventType, eventTypes), isNull(agentEvents.deletedAt))).orderBy(desc(agentEvents.seq)).limit(1))[0]?.event;\n}\nasync function hasAgentEventAfterSeq(sessionId, eventType, afterSeq) {\n\treturn (await getDb().select({ seq: agentEvents.seq }).from(agentEvents).innerJoin(agentSessions, eq$1(agentSessions.id, agentEvents.sessionId)).where(scopedAnd(agentSessions, eq$1(agentEvents.sessionId, sessionId), eq$1(agentEvents.eventType, eventType), gt(agentEvents.seq, afterSeq), isNull(agentEvents.deletedAt))).limit(1)).length > 0;\n}\nasync function listAgentEventsForSession(sessionId) {\n\treturn (await getDb().select({ event: agentEvents }).from(agentEvents).innerJoin(agentSessions, eq$1(agentSessions.id, agentEvents.sessionId)).where(scopedAnd(agentSessions, eq$1(agentEvents.sessionId, sessionId), isNull(agentEvents.deletedAt))).orderBy(asc(agentEvents.seq))).map((row) => row.event);\n}\n//#endregion\n//#region src/triggers/source-slug.ts\n/** Read source slug from persisted JSON (`slug` preferred, legacy `key` fallback). */\nfunction storedTriggerSourceSlug(source) {\n\tconst slug = source.slug?.trim() || source.key?.trim();\n\tif (!slug) throw new Error(\"Stored trigger source requires slug or legacy key\");\n\treturn slug;\n}\n/** Write canonical persisted source JSON (uses `slug`; omits legacy `key`). */\nfunction normalizeStoredTriggerSource(source) {\n\tconst slug = storedTriggerSourceSlug(source);\n\tif (source.kind === \"webhook\") return {\n\t\tkind: \"webhook\",\n\t\tslug,\n\t\tendpoint: source.endpoint,\n\t\trequestSchema: source.requestSchema,\n\t\t...source.filterSchema ? { filterSchema: source.filterSchema } : {}\n\t};\n\tif (source.kind === \"cron\") return {\n\t\tkind: \"cron\",\n\t\tslug,\n\t\tschedule: source.schedule,\n\t\t...source.timezone ? { timezone: source.timezone } : {},\n\t\t...source.payload !== void 0 ? { payload: source.payload } : {}\n\t};\n\treturn {\n\t\tkind: \"poll\",\n\t\tslug,\n\t\tschedule: source.schedule,\n\t\t...source.timezone ? { timezone: source.timezone } : {},\n\t\t...source.code ? { code: source.code } : {},\n\t\t...source.id ? { id: source.id } : {}\n\t};\n}\n//#endregion\n//#region src/triggers/trigger-config.ts\nfunction triggerConfigFromSource(source) {\n\tif (source.kind === \"webhook\") return {\n\t\tendpoint: source.endpoint,\n\t\trequestSchema: source.requestSchema,\n\t\t...source.filterSchema ? { filterSchema: source.filterSchema } : {}\n\t};\n\tif (source.kind === \"poll\") {\n\t\tconst config = {\n\t\t\t...source.code ? { code: source.code } : {},\n\t\t\t...source.id ? { id: source.id } : {},\n\t\t\t...source.timezone ? { timezone: source.timezone } : {}\n\t\t};\n\t\treturn Object.keys(config).length > 0 ? config : null;\n\t}\n\tif (source.kind === \"cron\") {\n\t\tconst config = {\n\t\t\t...source.payload !== void 0 ? { payload: source.payload } : {},\n\t\t\t...source.timezone ? { timezone: source.timezone } : {}\n\t\t};\n\t\treturn Object.keys(config).length > 0 ? config : null;\n\t}\n\treturn null;\n}\nfunction triggerScheduleFromSource(source) {\n\tif (source.kind === \"cron\" || source.kind === \"poll\") return source.schedule;\n\treturn null;\n}\n/** IANA timezone from a cron/poll source, or undefined when schedules evaluate in UTC. */\nfunction triggerTimezoneFromSource(source) {\n\tif (source.kind === \"cron\" || source.kind === \"poll\") return source.timezone;\n}\n/** IANA timezone stored on a trigger row's kind config, if any. */\nfunction triggerTimezoneFromConfig(config) {\n\tif (config && \"timezone\" in config && typeof config.timezone === \"string\") return config.timezone;\n}\n/** Stable key for grouping attachments that share the same trigger source. */\nfunction triggerSourceGroupKeyFromSource(source) {\n\tconst sourceSlug = storedTriggerSourceSlug(source);\n\tif (source.kind === \"poll\" && source.id) return `poll:${source.id}`;\n\treturn `${source.kind}:${sourceSlug}`;\n}\nfunction triggerSlugFromSource(source) {\n\treturn storedTriggerSourceSlug(normalizeStoredTriggerSource(source));\n}\nfunction webhookEndpointFromTriggerConfig(config) {\n\tif (config && \"endpoint\" in config) return config.endpoint;\n\treturn null;\n}\n/** Reconstruct the `StoredTriggerSource` JSON shape from a normalized `triggers` row. */\nfunction storedTriggerSourceFromTrigger(trigger) {\n\tconst meta = {\n\t\tname: trigger.name,\n\t\tdescription: trigger.description\n\t};\n\tif (trigger.kind === \"webhook\") {\n\t\tconst config = trigger.config ?? {};\n\t\treturn {\n\t\t\t...meta,\n\t\t\tkind: \"webhook\",\n\t\t\tslug: trigger.slug,\n\t\t\tendpoint: config.endpoint,\n\t\t\trequestSchema: config.requestSchema,\n\t\t\t...config.filterSchema ? { filterSchema: config.filterSchema } : {}\n\t\t};\n\t}\n\tif (trigger.kind === \"cron\") {\n\t\tconst config = trigger.config ?? null;\n\t\treturn {\n\t\t\t...meta,\n\t\t\tkind: \"cron\",\n\t\t\tslug: trigger.slug,\n\t\t\tschedule: trigger.schedule ?? \"\",\n\t\t\t...config?.timezone ? { timezone: config.timezone } : {},\n\t\t\t...config?.payload !== void 0 ? { payload: config.payload } : {}\n\t\t};\n\t}\n\tconst config = trigger.config ?? {};\n\treturn {\n\t\t...meta,\n\t\tkind: \"poll\",\n\t\tslug: trigger.slug,\n\t\tschedule: trigger.schedule ?? \"\",\n\t\t...config.timezone ? { timezone: config.timezone } : {},\n\t\t...config.code ? { code: config.code } : {},\n\t\t...config.id ? { id: config.id } : {}\n\t};\n}\n//#endregion\n//#region src/queries/triggers/index.ts\nasync function selectTriggerBySlug(slug) {\n\treturn (await getDb().select().from(triggers).where(scopedAnd(triggers, eq$1(triggers.slug, slug))).limit(1))[0];\n}\nasync function selectTriggerById(id) {\n\treturn (await getDb().select().from(triggers).where(scopedAnd(triggers, eq$1(triggers.id, id))).limit(1))[0];\n}\n/** Active project trigger by id across the org schema (no project-scope filter). */\nasync function selectActiveTriggerById(id) {\n\treturn (await getDb().select().from(triggers).where(and$1(eq$1(triggers.id, id), isNull(triggers.deletedAt), eq$1(triggers.origin, \"project\"))).limit(1))[0];\n}\nasync function insertTrigger(values) {\n\tawait getDb().insert(triggers).values({\n\t\t...values,\n\t\tprojectId: projectScopeId(),\n\t\torigin: values.origin ?? \"project\",\n\t\tenabled: values.enabled ?? 1\n\t});\n}\nasync function updateTriggerById(id, values) {\n\tawait getDb().update(triggers).set(values).where(scopedAnd(triggers, eq$1(triggers.id, id)));\n}\nasync function setTriggerOverviewGenerating(id, hash, now = /* @__PURE__ */ new Date()) {\n\tawait getDb().update(triggers).set({\n\t\toverviewStatus: \"generating\",\n\t\toverviewHash: hash,\n\t\tupdatedAt: now\n\t}).where(scopedAnd(triggers, eq$1(triggers.id, id)));\n}\nasync function updateTriggerOverview(id, values, now = /* @__PURE__ */ new Date()) {\n\tconst db = getDb();\n\tconst set = {\n\t\toverviewStatus: values.status,\n\t\tupdatedAt: now\n\t};\n\tif (values.markdown !== void 0) {\n\t\tset.overviewMarkdown = values.markdown;\n\t\tset.overviewGeneratedAt = now;\n\t}\n\tif (values.hash !== void 0) set.overviewHash = values.hash;\n\tif (values.model !== void 0) set.overviewModel = values.model;\n\tawait db.update(triggers).set(set).where(scopedAnd(triggers, eq$1(triggers.id, id)));\n}\nasync function updateTriggerState(id, state, now = /* @__PURE__ */ new Date()) {\n\tawait getDb().update(triggers).set({\n\t\tstate,\n\t\tupdatedAt: now\n\t}).where(scopedAnd(triggers, eq$1(triggers.id, id)));\n}\nasync function softDeleteAllProjectTriggers(now) {\n\tawait getDb().update(triggers).set({\n\t\tdeletedAt: now,\n\t\tupdatedAt: now\n\t}).where(scopedAnd(triggers, isNull(triggers.deletedAt), eq$1(triggers.origin, \"project\")));\n}\nasync function softDeleteProjectTriggersNotInSlugs(slugs, now) {\n\tawait getDb().update(triggers).set({\n\t\tdeletedAt: now,\n\t\tupdatedAt: now\n\t}).where(scopedAnd(triggers, isNull(triggers.deletedAt), eq$1(triggers.origin, \"project\"), notInArray(triggers.slug, slugs)));\n}\nasync function listActiveTriggersByProjectIds(projectIds, options) {\n\tconst db = getDb();\n\tif (projectIds !== void 0 && projectIds.length === 0) return [];\n\tconst conditions = [isNull(triggers.deletedAt), eq$1(triggers.origin, \"project\")];\n\tif (projectIds !== void 0) conditions.push(inArray$1(triggers.projectId, projectIds));\n\tconst query = db.select().from(triggers).where(and$1(...conditions)).orderBy(asc(triggers.registeredAt), asc(triggers.id));\n\tif (options?.limit !== void 0) return query.limit(options.limit);\n\treturn query;\n}\nasync function listActiveEphemeralTriggers() {\n\treturn getDb().select().from(triggers).where(scopedAnd(triggers, isNull(triggers.deletedAt), eq$1(triggers.origin, \"ephemeral\")));\n}\nasync function selectWebhookTriggers() {\n\treturn (await getDb().select().from(triggers).where(scopedAnd(triggers, isNull(triggers.deletedAt)))).filter((row) => row.kind === \"webhook\");\n}\nasync function setTriggerScheduleEnabled(triggerSlug, enabled, now) {\n\tawait getDb().update(triggers).set({\n\t\tenabled: enabled ? 1 : 0,\n\t\tupdatedAt: now\n\t}).where(scopedAnd(triggers, eq$1(triggers.slug, triggerSlug)));\n}\nasync function disableAllTriggerSchedules(now) {\n\tawait getDb().update(triggers).set({\n\t\tenabled: 0,\n\t\tupdatedAt: now\n\t}).where(scopedAnd(triggers, eq$1(triggers.enabled, 1), inArray$1(triggers.kind, [\"cron\", \"poll\"])));\n}\nasync function disableTriggerSchedulesNotInSlugs(triggerSlugs, now) {\n\tawait getDb().update(triggers).set({\n\t\tenabled: 0,\n\t\tupdatedAt: now\n\t}).where(scopedAnd(triggers, eq$1(triggers.enabled, 1), inArray$1(triggers.kind, [\"cron\", \"poll\"]), notInArray(triggers.slug, triggerSlugs)));\n}\nasync function listEnabledScheduledTriggers() {\n\treturn getDb().select().from(triggers).where(scopedAnd(triggers, eq$1(triggers.enabled, 1), inArray$1(triggers.kind, [\"cron\", \"poll\"]), isNull(triggers.deletedAt))).orderBy(asc(triggers.slug));\n}\nasync function claimDueTriggers(now, resolveNextRunAt, limit = 10) {\n\tconst db = getDb();\n\tif (getDatabaseHandle().dialect === \"postgres\") {\n\t\tconst due = await db.select().from(triggers).where(scopedAnd(triggers, eq$1(triggers.enabled, 1), inArray$1(triggers.kind, [\"cron\", \"poll\"]), isNull(triggers.deletedAt), lte(triggers.nextRunAt, now))).orderBy(asc(triggers.nextRunAt)).limit(limit);\n\t\tconst claimed = [];\n\t\tfor (const row of due) {\n\t\t\tif (!row.schedule) continue;\n\t\t\tconst nextRunAt = resolveNextRunAt(row.schedule, triggerTimezoneFromConfig(row.config));\n\t\t\tconst [updated] = await db.update(triggers).set({\n\t\t\t\tnextRunAt,\n\t\t\t\tupdatedAt: now\n\t\t\t}).where(scopedAnd(triggers, eq$1(triggers.id, row.id), lte(triggers.nextRunAt, now))).returning();\n\t\t\tif (updated) claimed.push(updated);\n\t\t}\n\t\treturn claimed;\n\t}\n\tconst due = await db.select().from(triggers).where(scopedAnd(triggers, eq$1(triggers.enabled, 1), inArray$1(triggers.kind, [\"cron\", \"poll\"]), isNull(triggers.deletedAt), lte(triggers.nextRunAt, now))).orderBy(asc(triggers.nextRunAt)).limit(limit);\n\tconst claimed = [];\n\tfor (const row of due) {\n\t\tif (!row.schedule) continue;\n\t\tconst nextRunAt = resolveNextRunAt(row.schedule, triggerTimezoneFromConfig(row.config));\n\t\tawait db.update(triggers).set({\n\t\t\tnextRunAt,\n\t\t\tupdatedAt: now\n\t\t}).where(scopedAnd(triggers, eq$1(triggers.id, row.id), lte(triggers.nextRunAt, now)));\n\t\tconst updated = await selectTriggerById(row.id);\n\t\tif (updated && updated.nextRunAt?.getTime() === nextRunAt.getTime()) claimed.push(updated);\n\t}\n\treturn claimed;\n}\nasync function claimDueTriggersForOrg(now, resolveNextRunAt, limit = 10) {\n\tconst db = getDb();\n\tif (getDatabaseHandle().dialect === \"postgres\") {\n\t\tconst due = await db.select().from(triggers).where(and$1(eq$1(triggers.enabled, 1), inArray$1(triggers.kind, [\"cron\", \"poll\"]), isNull(triggers.deletedAt), lte(triggers.nextRunAt, now))).orderBy(asc(triggers.nextRunAt)).limit(limit);\n\t\tconst claimed = [];\n\t\tfor (const row of due) {\n\t\t\tif (!row.schedule) continue;\n\t\t\tconst nextRunAt = resolveNextRunAt(row.schedule, triggerTimezoneFromConfig(row.config));\n\t\t\tconst [updated] = await db.update(triggers).set({\n\t\t\t\tnextRunAt,\n\t\t\t\tupdatedAt: now\n\t\t\t}).where(and$1(eq$1(triggers.id, row.id), eq$1(triggers.projectId, row.projectId), lte(triggers.nextRunAt, now))).returning();\n\t\t\tif (updated) claimed.push(updated);\n\t\t}\n\t\treturn claimed;\n\t}\n\tconst due = await db.select().from(triggers).where(and$1(eq$1(triggers.enabled, 1), inArray$1(triggers.kind, [\"cron\", \"poll\"]), isNull(triggers.deletedAt), lte(triggers.nextRunAt, now))).orderBy(asc(triggers.nextRunAt)).limit(limit);\n\tconst claimed = [];\n\tfor (const row of due) {\n\t\tif (!row.schedule) continue;\n\t\tconst nextRunAt = resolveNextRunAt(row.schedule, triggerTimezoneFromConfig(row.config));\n\t\tawait db.update(triggers).set({\n\t\t\tnextRunAt,\n\t\t\tupdatedAt: now\n\t\t}).where(and$1(eq$1(triggers.id, row.id), eq$1(triggers.projectId, row.projectId), lte(triggers.nextRunAt, now)));\n\t\tconst trigger = (await db.select().from(triggers).where(and$1(eq$1(triggers.id, row.id), eq$1(triggers.projectId, row.projectId))).limit(1))[0];\n\t\tif (trigger && trigger.nextRunAt?.getTime() === nextRunAt.getTime()) claimed.push(trigger);\n\t}\n\treturn claimed;\n}\nasync function upsertTriggerScheduleFields(options) {\n\tawait getDb().update(triggers).set({\n\t\tschedule: options.schedule,\n\t\tnextRunAt: options.nextRunAt,\n\t\tenabled: options.enabled ? 1 : 0,\n\t\tupdatedAt: options.updatedAt\n\t}).where(scopedAnd(triggers, eq$1(triggers.slug, options.triggerSlug)));\n}\nasync function listTriggersByIds(ids) {\n\tif (ids.length === 0) return [];\n\treturn getDb().select().from(triggers).where(scopedAnd(triggers, inArray$1(triggers.id, ids)));\n}\n//#endregion\n//#region src/queries/trigger-attachments/helpers.ts\n/** Non-deleted and not user-disabled — eligible for trigger execution. */\nfunction isTriggerAttachmentExecutable(row) {\n\treturn row.deletedAt === null && row.disabledAt === null;\n}\nfunction triggerAttachmentStatusFromRow(row) {\n\tif (row.deletedAt !== null || row.disabledAt !== null) return \"disabled\";\n\treturn \"active\";\n}\n//#endregion\n//#region src/queries/trigger-attachments/index.ts\nasync function selectTriggerAttachmentBySlug(slug) {\n\treturn (await getDb().select().from(triggerAttachments).where(scopedAnd(triggerAttachments, eq$1(triggerAttachments.slug, slug))).limit(1))[0];\n}\nasync function selectTriggerAttachmentById(id) {\n\treturn (await getDb().select().from(triggerAttachments).where(scopedAnd(triggerAttachments, eq$1(triggerAttachments.id, id))).limit(1))[0];\n}\nasync function insertTriggerAttachment(values) {\n\tawait getDb().insert(triggerAttachments).values({\n\t\t...values,\n\t\tprojectId: projectScopeId()\n\t});\n}\nasync function updateTriggerAttachmentById(id, values) {\n\tawait getDb().update(triggerAttachments).set(values).where(scopedAnd(triggerAttachments, eq$1(triggerAttachments.id, id)));\n}\nasync function setTriggerAttachmentEnabled(id, enabled, now = /* @__PURE__ */ new Date()) {\n\tawait updateTriggerAttachmentById(id, {\n\t\tdisabledAt: enabled ? null : now,\n\t\tupdatedAt: now\n\t});\n}\nasync function softDeleteAllTriggerAttachments(now) {\n\tconst db = getDb();\n\tconst { triggers } = await Promise.resolve().then(() => pg_exports);\n\tconst ids = (await db.select({ id: triggers.id }).from(triggers).where(scopedAnd(triggers, isNull(triggers.deletedAt), eq$1(triggers.origin, \"project\")))).map((row) => row.id);\n\tif (ids.length === 0) return;\n\tawait db.update(triggerAttachments).set({\n\t\tdeletedAt: now,\n\t\tupdatedAt: now\n\t}).where(scopedAnd(triggerAttachments, isNull(triggerAttachments.deletedAt), inArray$1(triggerAttachments.triggerId, ids)));\n}\nasync function softDeleteTriggerAttachmentsNotInSlugs(slugs, now) {\n\tconst db = getDb();\n\tconst { triggers } = await Promise.resolve().then(() => pg_exports);\n\tconst projectTriggerIds = (await db.select({ id: triggers.id }).from(triggers).where(scopedAnd(triggers, isNull(triggers.deletedAt), eq$1(triggers.origin, \"project\")))).map((row) => row.id);\n\tif (projectTriggerIds.length === 0) return;\n\tawait db.update(triggerAttachments).set({\n\t\tdeletedAt: now,\n\t\tupdatedAt: now\n\t}).where(scopedAnd(triggerAttachments, isNull(triggerAttachments.deletedAt), notInArray(triggerAttachments.slug, slugs), inArray$1(triggerAttachments.triggerId, projectTriggerIds)));\n}\nasync function getTriggerAttachmentBySlug(slug) {\n\treturn selectTriggerAttachmentBySlug(slug);\n}\nasync function listActiveTriggerAttachments() {\n\tconst db = getDb();\n\tconst { triggers } = await Promise.resolve().then(() => pg_exports);\n\treturn (await db.select({ attachment: triggerAttachments }).from(triggerAttachments).innerJoin(triggers, eq$1(triggerAttachments.triggerId, triggers.id)).where(scopedAnd(triggerAttachments, isNull(triggerAttachments.deletedAt), isNull(triggers.deletedAt), eq$1(triggers.origin, \"project\")))).map((row) => row.attachment);\n}\nasync function listAttachmentsByTriggerIds(triggerIds) {\n\tif (triggerIds.length === 0) return [];\n\treturn getDb().select().from(triggerAttachments).where(and$1(isNull(triggerAttachments.deletedAt), inArray$1(triggerAttachments.triggerId, triggerIds)));\n}\n/** Non-deleted attachments that are not user-disabled — for trigger execution. */\nasync function listExecutableAttachmentsByTriggerIds(triggerIds) {\n\tif (triggerIds.length === 0) return [];\n\treturn getDb().select().from(triggerAttachments).where(and$1(isNull(triggerAttachments.deletedAt), isNull(triggerAttachments.disabledAt), inArray$1(triggerAttachments.triggerId, triggerIds)));\n}\nasync function selectEphemeralTriggerAttachmentsByAgentSlug(agentSlug) {\n\tconst db = getDb();\n\tconst { triggers } = await Promise.resolve().then(() => pg_exports);\n\treturn db.select({ attachment: triggerAttachments }).from(triggerAttachments).innerJoin(triggers, eq$1(triggerAttachments.triggerId, triggers.id)).where(scopedAnd(triggerAttachments, isNull(triggerAttachments.deletedAt), isNull(triggers.deletedAt), eq$1(triggers.origin, \"ephemeral\"), eq$1(triggerAttachments.agentSlug, agentSlug))).then((rows) => rows.map((row) => row.attachment));\n}\nasync function selectTriggerAttachmentsByAgentSlug(agentSlug) {\n\treturn getDb().select().from(triggerAttachments).where(scopedAnd(triggerAttachments, isNull(triggerAttachments.deletedAt), eq$1(triggerAttachments.agentSlug, agentSlug)));\n}\nasync function selectEphemeralTriggerAttachments() {\n\tconst db = getDb();\n\tconst { triggers } = await Promise.resolve().then(() => pg_exports);\n\treturn db.select({ attachment: triggerAttachments }).from(triggerAttachments).innerJoin(triggers, eq$1(triggerAttachments.triggerId, triggers.id)).where(scopedAnd(triggerAttachments, isNull(triggerAttachments.deletedAt), isNull(triggers.deletedAt), eq$1(triggers.origin, \"ephemeral\"))).then((rows) => rows.map((row) => row.attachment));\n}\n/** Slugs of non-deleted attachments that are user-disabled. */\nasync function selectDisabledAttachmentSlugs(slugs) {\n\tif (slugs.length === 0) return /* @__PURE__ */ new Set();\n\tconst rows = await getDb().select({ slug: triggerAttachments.slug }).from(triggerAttachments).where(scopedAnd(triggerAttachments, inArray$1(triggerAttachments.slug, slugs), isNull(triggerAttachments.deletedAt), isNotNull(triggerAttachments.disabledAt)));\n\treturn new Set(rows.map((row) => row.slug));\n}\n/** @deprecated Use selectWebhookTriggers + listAttachmentsByTriggerIds */\nasync function selectWebhookTriggerAttachments() {\n\tconst db = getDb();\n\tconst { triggers } = await Promise.resolve().then(() => pg_exports);\n\treturn db.select({ attachment: triggerAttachments }).from(triggerAttachments).innerJoin(triggers, eq$1(triggerAttachments.triggerId, triggers.id)).where(scopedAnd(triggerAttachments, isNull(triggerAttachments.deletedAt), isNull(triggers.deletedAt), eq$1(triggers.kind, \"webhook\"))).then((rows) => rows.map((row) => row.attachment));\n}\n//#endregion\n//#region src/workflows/cursor.ts\nfunction encodeWorkflowRunCursor(cursor) {\n\treturn Buffer.from(JSON.stringify({\n\t\ttriggeredAt: cursor.triggeredAt.toISOString(),\n\t\tid: cursor.id\n\t})).toString(\"base64url\");\n}\nfunction decodeWorkflowRunCursor(value) {\n\ttry {\n\t\tconst parsed = JSON.parse(Buffer.from(value, \"base64url\").toString(\"utf8\"));\n\t\tif (typeof parsed.triggeredAt !== \"string\" || typeof parsed.id !== \"string\") return null;\n\t\tconst triggeredAt = new Date(parsed.triggeredAt);\n\t\tif (Number.isNaN(triggeredAt.getTime())) return null;\n\t\treturn {\n\t\t\ttriggeredAt,\n\t\t\tid: parsed.id\n\t\t};\n\t} catch {\n\t\treturn null;\n\t}\n}\n//#endregion\n//#region src/workflows/serialize.ts\nfunction toIso(value) {\n\tif (!value) return null;\n\treturn value.toISOString();\n}\nfunction workflowRunSummaryFromRow(row) {\n\treturn {\n\t\tid: row.id,\n\t\tstatus: row.status,\n\t\ttrigger: row.trigger,\n\t\ttriggeredAt: row.triggeredAt.toISOString(),\n\t\tstartedAt: toIso(row.startedAt),\n\t\tfinishedAt: toIso(row.finishedAt),\n\t\ttriggerRunId: row.triggerRunId ?? null,\n\t\tattachmentId: row.attachmentId ?? null,\n\t\tsourceKind: row.sourceKind,\n\t\tsourceId: row.sourceId ?? null\n\t};\n}\nfunction workflowRunRecordFromRow(row) {\n\treturn {\n\t\tid: row.id,\n\t\tworkflowSlug: row.workflowSlug,\n\t\tstatus: row.status,\n\t\ttrigger: row.trigger,\n\t\ttriggeredAt: row.triggeredAt.toISOString(),\n\t\tstartedAt: toIso(row.startedAt),\n\t\tfinishedAt: toIso(row.finishedAt),\n\t\tsourceKind: row.sourceKind,\n\t\tsourceId: row.sourceId ?? null,\n\t\ttriggerRunId: row.triggerRunId ?? null,\n\t\tattachmentId: row.attachmentId ?? null,\n\t\tparentWorkflowRunId: row.parentWorkflowRunId ?? null,\n\t\tparentSpanId: row.parentSpanId ?? null,\n\t\tinput: row.input ?? null,\n\t\toutput: row.output ?? null,\n\t\terror: row.error ?? null\n\t};\n}\nfunction triggerRunDetailFromRow(row, attachmentSlug) {\n\treturn {\n\t\tid: row.id,\n\t\ttriggerId: row.triggerId,\n\t\tattachmentSlug,\n\t\ttriggerType: row.triggerType,\n\t\tsourcePath: row.sourcePath ?? null,\n\t\tpayload: row.payload ?? null,\n\t\ttriggeredAt: row.triggeredAt.toISOString()\n\t};\n}\nfunction workflowStepRunFromEvent(row) {\n\treturn {\n\t\tid: row.id,\n\t\tactionKey: row.correlationId ?? row.id,\n\t\toutput: row.data ?? null,\n\t\tcompletedAt: row.createdAt.toISOString()\n\t};\n}\nfunction traceSpanToJson(span) {\n\treturn {\n\t\t...span,\n\t\tstartedAt: span.startedAt.toISOString(),\n\t\tfinishedAt: toIso(span.finishedAt)\n\t};\n}\nfunction traceLogToJson(log) {\n\treturn {\n\t\t...log,\n\t\tcreatedAt: log.createdAt.toISOString()\n\t};\n}\nfunction traceResponseToJson(trace) {\n\treturn {\n\t\ttraceId: trace.traceId,\n\t\ttrigger: trace.trigger,\n\t\tgateway: trace.gateway,\n\t\tspans: trace.spans.map(traceSpanToJson),\n\t\tlogs: trace.logs.map(traceLogToJson)\n\t};\n}\n//#endregion\n//#region src/queries/workflow-runs/index.ts\nasync function insertWorkflowRun(values) {\n\tawait getDb().insert(workflowRuns).values({\n\t\t...values,\n\t\tsourceKind: values.sourceKind ?? \"api\",\n\t\tsourceId: values.sourceId ?? null,\n\t\tranByUserId: values.ranByUserId ?? null,\n\t\tcredentialContext: values.credentialContext ?? null,\n\t\tprojectId: projectScopeId()\n\t});\n}\nasync function markWorkflowRunRunningRow(id, startedAt) {\n\tawait getDb().update(workflowRuns).set({\n\t\tstatus: \"running\",\n\t\tstartedAt,\n\t\terror: null,\n\t\tfinishedAt: null\n\t}).where(scopedAnd(workflowRuns, eq$1(workflowRuns.id, id)));\n}\nasync function setWorkflowRunStatusRow(id, status) {\n\tawait getDb().update(workflowRuns).set({ status }).where(scopedAnd(workflowRuns, eq$1(workflowRuns.id, id)));\n}\nasync function selectWorkflowRunById(id) {\n\treturn (await getDb().select().from(workflowRuns).where(scopedAnd(workflowRuns, eq$1(workflowRuns.id, id))).limit(1))[0];\n}\n/** Resolve the owning project for a run id across the whole org schema. */\nasync function resolveWorkflowRunProjectId(runId) {\n\tconst rows = await getDb().select({ projectId: workflowRuns.projectId }).from(workflowRuns).where(eq$1(workflowRuns.id, runId)).limit(1);\n\tif (!rows[0]) throw new Error(`Workflow run not found: ${runId}`);\n\treturn rows[0].projectId;\n}\nasync function completeWorkflowRunRow(id, output, finishedAt) {\n\tawait getDb().update(workflowRuns).set({\n\t\tstatus: \"completed\",\n\t\toutput,\n\t\tfinishedAt,\n\t\terror: null\n\t}).where(scopedAnd(workflowRuns, eq$1(workflowRuns.id, id), ne(workflowRuns.status, \"canceled\")));\n}\nasync function failWorkflowRunRow(id, error, finishedAt) {\n\tawait getDb().update(workflowRuns).set({\n\t\tstatus: \"failed\",\n\t\terror,\n\t\tfinishedAt\n\t}).where(scopedAnd(workflowRuns, eq$1(workflowRuns.id, id), ne(workflowRuns.status, \"canceled\")));\n}\nconst CANCELABLE_WORKFLOW_STATUSES = [\n\t\"pending\",\n\t\"running\",\n\t\"sleeping\",\n\t\"waiting_hook\",\n\t\"waiting_children\"\n];\nasync function cancelWorkflowRunRow(id, finishedAt) {\n\treturn (await getDb().update(workflowRuns).set({\n\t\tstatus: \"canceled\",\n\t\tfinishedAt\n\t}).where(scopedAnd(workflowRuns, eq$1(workflowRuns.id, id), inArray$1(workflowRuns.status, CANCELABLE_WORKFLOW_STATUSES))).returning())[0];\n}\nasync function listWorkflowRunsByWorkflowSlug(workflowSlug) {\n\treturn getDb().select().from(workflowRuns).where(scopedAnd(workflowRuns, eq$1(workflowRuns.workflowSlug, workflowSlug)));\n}\nasync function listWorkflowRunsByTriggerRunId(triggerRunId) {\n\treturn getDb().select().from(workflowRuns).where(scopedAnd(workflowRuns, eq$1(workflowRuns.triggerRunId, triggerRunId)));\n}\nasync function listWorkflowRunsByTriggerRunIds(triggerRunIds) {\n\tif (triggerRunIds.length === 0) return /* @__PURE__ */ new Map();\n\tconst rows = await getDb().select().from(workflowRuns).where(scopedAnd(workflowRuns, inArray$1(workflowRuns.triggerRunId, triggerRunIds)));\n\tconst byTriggerRunId = /* @__PURE__ */ new Map();\n\tfor (const row of rows) if (row.triggerRunId) {\n\t\tconst bucket = byTriggerRunId.get(row.triggerRunId) ?? [];\n\t\tbucket.push(row);\n\t\tbyTriggerRunId.set(row.triggerRunId, bucket);\n\t}\n\treturn byTriggerRunId;\n}\nasync function listWorkflowRunsByParentRunIds(parentRunIds) {\n\tif (parentRunIds.length === 0) return /* @__PURE__ */ new Map();\n\tconst rows = await getDb().select().from(workflowRuns).where(scopedAnd(workflowRuns, inArray$1(workflowRuns.parentWorkflowRunId, parentRunIds)));\n\tconst byParentRunId = /* @__PURE__ */ new Map();\n\tfor (const row of rows) if (row.parentWorkflowRunId) {\n\t\tconst bucket = byParentRunId.get(row.parentWorkflowRunId) ?? [];\n\t\tbucket.push(row);\n\t\tbyParentRunId.set(row.parentWorkflowRunId, bucket);\n\t}\n\treturn byParentRunId;\n}\nasync function listWorkflowRunsBySourceIds(options) {\n\tif (options.sourceIds.length === 0) return /* @__PURE__ */ new Map();\n\tconst rows = await getDb().select().from(workflowRuns).where(scopedAnd(workflowRuns, eq$1(workflowRuns.sourceKind, options.sourceKind), inArray$1(workflowRuns.sourceId, options.sourceIds)));\n\tconst bySourceId = /* @__PURE__ */ new Map();\n\tfor (const row of rows) if (row.sourceId) {\n\t\tconst bucket = bySourceId.get(row.sourceId) ?? [];\n\t\tbucket.push(row);\n\t\tbySourceId.set(row.sourceId, bucket);\n\t}\n\treturn bySourceId;\n}\nasync function selectWorkflowRunForWorkflow(workflowSlug, runId) {\n\treturn (await getDb().select().from(workflowRuns).where(scopedAnd(workflowRuns, eq$1(workflowRuns.id, runId), eq$1(workflowRuns.workflowSlug, workflowSlug))).limit(1))[0];\n}\nfunction cursorBefore$1(cursor) {\n\treturn or(lt(workflowRuns.triggeredAt, cursor.triggeredAt), and$1(eq$1(workflowRuns.triggeredAt, cursor.triggeredAt), lt(workflowRuns.id, cursor.id)));\n}\nasync function listWorkflowRunsPaginated(options) {\n\tconst db = getDb();\n\tconst conditions = [eq$1(workflowRuns.workflowSlug, options.workflowSlug)];\n\tif (options.status) conditions.push(eq$1(workflowRuns.status, options.status));\n\tif (options.trigger) conditions.push(eq$1(workflowRuns.trigger, options.trigger));\n\tif (options.cursor) {\n\t\tconst decoded = decodeWorkflowRunCursor(options.cursor);\n\t\tif (!decoded) throw new Error(\"Invalid cursor\");\n\t\tconditions.push(cursorBefore$1(decoded));\n\t}\n\tconst limit = options.limit + 1;\n\tconst rows = await db.select().from(workflowRuns).where(scopedAnd(workflowRuns, ...conditions)).orderBy(desc(workflowRuns.triggeredAt), desc(workflowRuns.id)).limit(limit);\n\tconst hasMore = rows.length > options.limit;\n\tconst page = hasMore ? rows.slice(0, options.limit) : rows;\n\tconst last = page.at(-1);\n\treturn {\n\t\titems: page.map(workflowRunSummaryFromRow),\n\t\tnextCursor: hasMore && last ? encodeWorkflowRunCursor({\n\t\t\ttriggeredAt: last.triggeredAt,\n\t\t\tid: last.id\n\t\t}) : null\n\t};\n}\n//#endregion\n//#region src/queries/workflow-events/index.ts\nasync function selectMaxEventSeq(runId) {\n\tconst rows = await getDb().select({ value: max$1(workflowEvents.seq) }).from(workflowEvents).where(scopedAnd(workflowEvents, eq$1(workflowEvents.runId, runId)));\n\treturn Number(rows[0]?.value ?? -1);\n}\n/**\n* Append one event. Allocates the next per-run `seq` (max+1) and is idempotent\n* when an explicit `id` is supplied. Returns true when a row was inserted.\n*/\nasync function appendWorkflowEvent(values) {\n\tconst db = getDb();\n\tconst id = values.id ?? crypto.randomUUID();\n\tconst seq = await selectMaxEventSeq(values.runId) + 1;\n\treturn (await db.insert(workflowEvents).values({\n\t\tid,\n\t\trunId: values.runId,\n\t\tprojectId: projectScopeId(),\n\t\tseq,\n\t\ttype: values.type,\n\t\tcorrelationId: values.correlationId ?? null,\n\t\tdata: values.data ?? null,\n\t\tcreatedAt: /* @__PURE__ */ new Date()\n\t}).onConflictDoNothing({ target: workflowEvents.id }).returning({ id: workflowEvents.id })).length > 0;\n}\nasync function listReplayEvents(runId) {\n\treturn getDb().select().from(workflowEvents).where(scopedAnd(workflowEvents, eq$1(workflowEvents.runId, runId))).orderBy(asc(workflowEvents.seq));\n}\n/** Completed step events for a run, in execution order — backs the run-detail steps view. */\nasync function listStepCompletedEvents(runId) {\n\treturn getDb().select().from(workflowEvents).where(scopedAnd(workflowEvents, eq$1(workflowEvents.runId, runId), eq$1(workflowEvents.type, \"step_completed\"))).orderBy(asc(workflowEvents.seq));\n}\n//#endregion\n//#region src/queries/workflow-hooks/index.ts\n/** Idempotent on `token` so replays don't create duplicate hook rows. */\nasync function insertWorkflowHook(values) {\n\tawait getDb().insert(workflowHooks).values({\n\t\thookId: values.hookId,\n\t\trunId: values.runId,\n\t\tprojectId: projectScopeId(),\n\t\ttoken: values.token,\n\t\tcorrelationId: values.correlationId,\n\t\tstatus: \"waiting\",\n\t\tschema: values.schema ?? null,\n\t\tpayload: values.payload ?? null,\n\t\tcreatedAt: /* @__PURE__ */ new Date(),\n\t\tresumedAt: null\n\t}).onConflictDoNothing({ target: workflowHooks.token });\n}\n/** Hooks for a run (newest-creation last), optionally filtered by status. */\nasync function listWorkflowHooksByRun(runId, options) {\n\tconst db = getDb();\n\tconst conditions = [eq$1(workflowHooks.runId, runId)];\n\tif (options?.status) conditions.push(eq$1(workflowHooks.status, options.status));\n\treturn db.select().from(workflowHooks).where(scopedAnd(workflowHooks, ...conditions)).orderBy(asc(workflowHooks.createdAt));\n}\nasync function selectWorkflowHookByToken(token) {\n\treturn (await getDb().select().from(workflowHooks).where(scopedAnd(workflowHooks, eq$1(workflowHooks.token, token))).limit(1))[0];\n}\nasync function markWorkflowHookResumed(hookId, payload) {\n\tawait getDb().update(workflowHooks).set({\n\t\tstatus: \"resumed\",\n\t\tpayload,\n\t\tresumedAt: /* @__PURE__ */ new Date()\n\t}).where(scopedAnd(workflowHooks, eq$1(workflowHooks.hookId, hookId)));\n}\n//#endregion\n//#region src/triggers/cursor.ts\nfunction encodeTriggerRunCursor(cursor) {\n\treturn Buffer.from(JSON.stringify({\n\t\ttriggeredAt: cursor.triggeredAt.toISOString(),\n\t\tid: cursor.id\n\t})).toString(\"base64url\");\n}\nfunction decodeTriggerRunCursor(value) {\n\ttry {\n\t\tconst parsed = JSON.parse(Buffer.from(value, \"base64url\").toString(\"utf8\"));\n\t\tif (typeof parsed.triggeredAt !== \"string\" || typeof parsed.id !== \"string\") return null;\n\t\tconst triggeredAt = new Date(parsed.triggeredAt);\n\t\tif (Number.isNaN(triggeredAt.getTime())) return null;\n\t\treturn {\n\t\t\ttriggeredAt,\n\t\t\tid: parsed.id\n\t\t};\n\t} catch {\n\t\treturn null;\n\t}\n}\n//#endregion\n//#region src/triggers/serialize.ts\nfunction triggerRunSummaryFromRow(row, options) {\n\treturn {\n\t\tid: row.id,\n\t\ttriggerType: row.triggerType,\n\t\ttriggeredAt: row.triggeredAt.toISOString(),\n\t\tsourcePath: row.sourcePath ?? null,\n\t\toutcome: row.outcome,\n\t\treason: row.reason ?? null,\n\t\tdetail: row.detail ?? null,\n\t\tworkflowRuns: (options?.workflowRuns ?? []).map((workflowRun) => ({\n\t\t\tid: workflowRun.id,\n\t\t\tstatus: workflowRun.status,\n\t\t\tworkflowSlug: workflowRun.workflowSlug\n\t\t})),\n\t\tagentSessions: (options?.agentSessions ?? []).map((session) => ({\n\t\t\tid: session.id,\n\t\t\tagentSlug: session.agentSlug\n\t\t}))\n\t};\n}\nfunction triggerRunRecordFromRow(row, attachmentSlug, triggerId = row.triggerId) {\n\treturn {\n\t\tid: row.id,\n\t\ttriggerId,\n\t\tattachmentSlug,\n\t\ttriggerType: row.triggerType,\n\t\tsourcePath: row.sourcePath ?? null,\n\t\toutcome: row.outcome,\n\t\treason: row.reason ?? null,\n\t\tdetail: row.detail ?? null,\n\t\tpayload: row.payload ?? null,\n\t\ttriggeredAt: row.triggeredAt.toISOString()\n\t};\n}\n//#endregion\n//#region src/queries/trigger-runs/prune-skipped-webhook.ts\n/** Skipped webhook delivery rows are retained for debugging, then pruned. */\nconst SKIPPED_WEBHOOK_TRIGGER_RUN_RETENTION_MS = 10080 * 60 * 1e3;\nconst DEFAULT_PRUNE_LIMIT = 100;\n/**\n* ponytail: opportunistic prune on skipped-row insert — upgrade to a scheduled job if\n* skipped volume grows beyond what insert-path cleanup can keep up with.\n*/\nasync function pruneSkippedWebhookTriggerRuns(options) {\n\tconst cutoff = options?.olderThan ?? /* @__PURE__ */ new Date(Date.now() - 6048e5);\n\tconst limit = options?.limit ?? DEFAULT_PRUNE_LIMIT;\n\tconst db = getDb();\n\tconst rows = await db.select({ id: triggerRuns.id }).from(triggerRuns).where(scopedAnd(triggerRuns, eq$1(triggerRuns.outcome, \"skipped\"), eq$1(triggerRuns.triggerType, \"webhook\"), lt(triggerRuns.triggeredAt, cutoff))).limit(limit);\n\tif (rows.length === 0) return 0;\n\tconst ids = rows.map((row) => row.id);\n\tawait db.delete(triggerRuns).where(scopedAnd(triggerRuns, inArray$1(triggerRuns.id, ids)));\n\treturn ids.length;\n}\n//#endregion\n//#region src/queries/trigger-runs/index.ts\nasync function insertTriggerRun(values) {\n\tawait getDb().insert(triggerRuns).values({\n\t\t...values,\n\t\toutcome: values.outcome ?? \"dispatched\",\n\t\treason: values.reason ?? null,\n\t\tdetail: values.detail ?? null,\n\t\tprojectId: projectScopeId()\n\t});\n}\nasync function selectTriggerRunById(id) {\n\treturn (await getDb().select().from(triggerRuns).where(scopedAnd(triggerRuns, eq$1(triggerRuns.id, id))).limit(1))[0];\n}\nasync function selectTriggerRunForTrigger(triggerId, runId) {\n\treturn (await getDb().select().from(triggerRuns).where(scopedAnd(triggerRuns, eq$1(triggerRuns.id, runId), eq$1(triggerRuns.triggerId, triggerId))).limit(1))[0];\n}\nfunction cursorBefore(cursor) {\n\treturn or(lt(triggerRuns.triggeredAt, cursor.triggeredAt), and$1(eq$1(triggerRuns.triggeredAt, cursor.triggeredAt), lt(triggerRuns.id, cursor.id)));\n}\nasync function listTriggerRunRowsPaginated(options) {\n\tif (options.triggerIds.length === 0) return {\n\t\titems: [],\n\t\tnextCursor: null\n\t};\n\tconst db = getDb();\n\tconst conditions = [inArray$1(triggerRuns.triggerId, options.triggerIds)];\n\tif (options.triggerType) conditions.push(eq$1(triggerRuns.triggerType, options.triggerType));\n\tif (options.outcome) conditions.push(eq$1(triggerRuns.outcome, options.outcome));\n\tif (options.cursor) {\n\t\tconst decoded = decodeTriggerRunCursor(options.cursor);\n\t\tif (!decoded) throw new Error(\"Invalid cursor\");\n\t\tconditions.push(cursorBefore(decoded));\n\t}\n\tconst limit = options.limit + 1;\n\tconst rows = await db.select().from(triggerRuns).where(scopedAnd(triggerRuns, ...conditions)).orderBy(desc(triggerRuns.triggeredAt), desc(triggerRuns.id)).limit(limit);\n\tconst hasMore = rows.length > options.limit;\n\tconst page = hasMore ? rows.slice(0, options.limit) : rows;\n\tconst last = page.at(-1);\n\tconst workflowRunsByTriggerRunId = await listWorkflowRunsByTriggerRunIds(page.map((row) => row.id));\n\treturn {\n\t\titems: page.map((row) => triggerRunSummaryFromRow(row, { workflowRuns: workflowRunsByTriggerRunId.get(row.id) ?? [] })),\n\t\tnextCursor: hasMore && last ? encodeTriggerRunCursor({\n\t\t\ttriggeredAt: last.triggeredAt,\n\t\t\tid: last.id\n\t\t}) : null\n\t};\n}\nasync function selectTriggerLastFiredAtByTriggerIds(triggerIds) {\n\tif (triggerIds.length === 0) return /* @__PURE__ */ new Map();\n\tconst rows = await getDb().select({\n\t\ttriggerId: triggerRuns.triggerId,\n\t\tlastFiredAt: max$1(triggerRuns.triggeredAt)\n\t}).from(triggerRuns).where(inArray$1(triggerRuns.triggerId, triggerIds)).groupBy(triggerRuns.triggerId);\n\tconst result = /* @__PURE__ */ new Map();\n\tfor (const row of rows) if (row.lastFiredAt) result.set(row.triggerId, row.lastFiredAt);\n\treturn result;\n}\nasync function selectTriggerFireCountByTriggerIds(triggerIds) {\n\tif (triggerIds.length === 0) return /* @__PURE__ */ new Map();\n\tconst rows = await getDb().select({\n\t\ttriggerId: triggerRuns.triggerId,\n\t\tfireCount: count()\n\t}).from(triggerRuns).where(inArray$1(triggerRuns.triggerId, triggerIds)).groupBy(triggerRuns.triggerId);\n\tconst result = /* @__PURE__ */ new Map();\n\tfor (const row of rows) result.set(row.triggerId, Number(row.fireCount));\n\treturn result;\n}\n//#endregion\n//#region src/queries/jobs/index.ts\nconst DEFAULT_LEASE_MS = 300 * 1e3;\nasync function insertJob(values) {\n\tawait getDb().insert(jobs).values({\n\t\t...values,\n\t\tprojectId: projectScopeId()\n\t});\n}\nasync function claimPendingJob(workerId, leaseExpiresAt, now) {\n\tconst db = getDb();\n\tconst job = (await db.select().from(jobs).where(scopedAnd(jobs, eq$1(jobs.status, \"pending\"), lte(jobs.scheduledAt, now))).orderBy(asc(jobs.scheduledAt)).limit(1))[0];\n\tif (!job) return;\n\tawait db.update(jobs).set({\n\t\tstatus: \"leased\",\n\t\tleasedBy: workerId,\n\t\tleaseExpiresAt\n\t}).where(scopedAnd(jobs, eq$1(jobs.id, job.id), eq$1(jobs.status, \"pending\")));\n\tconst claimed = await selectJobById(job.id);\n\tif (claimed?.status !== \"leased\" || claimed.leasedBy !== workerId) return;\n\treturn claimed;\n}\nasync function claimNextJobRow(workerId, leaseMs = DEFAULT_LEASE_MS) {\n\tconst db = getDb();\n\tconst dialect = getDatabaseHandle().dialect;\n\tconst now = /* @__PURE__ */ new Date();\n\tconst leaseExpiresAt = new Date(now.getTime() + leaseMs);\n\tif (dialect === \"postgres\") return rowsFromResult(await db.execute(sql$1`\n UPDATE jobs\n SET\n status = 'leased',\n leased_by = ${workerId},\n lease_expires_at = ${leaseExpiresAt}\n WHERE id = (\n SELECT id\n FROM jobs\n WHERE project_id = ${projectScopeId()}\n AND status = 'pending'\n AND scheduled_at <= ${now}\n ORDER BY scheduled_at ASC\n FOR UPDATE SKIP LOCKED\n LIMIT 1\n )\n RETURNING\n id,\n project_id AS \"projectId\",\n kind,\n target_id AS \"targetId\",\n run_id AS \"runId\",\n trigger,\n payload,\n parent,\n status,\n scheduled_at AS \"scheduledAt\",\n attempt,\n max_attempts AS \"maxAttempts\",\n leased_by AS \"leasedBy\",\n lease_expires_at AS \"leaseExpiresAt\",\n completed_at AS \"completedAt\",\n error\n `))[0];\n\treturn claimPendingJob(workerId, leaseExpiresAt, now);\n}\nasync function markJobRunning(id) {\n\tawait getDb().update(jobs).set({ status: \"running\" }).where(scopedAnd(jobs, eq$1(jobs.id, id)));\n}\nasync function completeJobRow(id, completedAt) {\n\tawait getDb().update(jobs).set({\n\t\tstatus: \"completed\",\n\t\tcompletedAt,\n\t\terror: null\n\t}).where(scopedAnd(jobs, eq$1(jobs.id, id)));\n}\nasync function failJobRow(id, error, completedAt) {\n\tawait getDb().update(jobs).set({\n\t\tstatus: \"failed\",\n\t\terror,\n\t\tcompletedAt\n\t}).where(scopedAnd(jobs, eq$1(jobs.id, id)));\n}\nasync function requeueExpiredLeases(now = /* @__PURE__ */ new Date()) {\n\tconst db = getDb();\n\tconst expired = await db.select({ id: jobs.id }).from(jobs).where(scopedAnd(jobs, inArray$1(jobs.status, [\"leased\", \"running\"]), isNotNull(jobs.leaseExpiresAt), lt(jobs.leaseExpiresAt, now)));\n\tif (expired.length === 0) return 0;\n\tawait db.update(jobs).set({\n\t\tstatus: \"pending\",\n\t\tleasedBy: null,\n\t\tleaseExpiresAt: null\n\t}).where(scopedAnd(jobs, inArray$1(jobs.id, expired.map((row) => row.id))));\n\treturn expired.length;\n}\nasync function selectJobById(id) {\n\treturn (await getDb().select().from(jobs).where(scopedAnd(jobs, eq$1(jobs.id, id))).limit(1))[0];\n}\nasync function selectJobByRunId(runId) {\n\treturn (await getDb().select().from(jobs).where(scopedAnd(jobs, eq$1(jobs.runId, runId))).limit(1))[0];\n}\nasync function resetJobForRetry(id, scheduledAt, attempt) {\n\tawait getDb().update(jobs).set({\n\t\tstatus: \"pending\",\n\t\tscheduledAt,\n\t\tattempt,\n\t\tleasedBy: null,\n\t\tleaseExpiresAt: null,\n\t\tcompletedAt: null,\n\t\terror: null\n\t}).where(scopedAnd(jobs, eq$1(jobs.id, id)));\n}\n//#endregion\n//#region src/queries/gateway-attachments/index.ts\nasync function selectGatewayAttachmentBySlug(slug) {\n\treturn (await getDb().select().from(gatewayAttachments).where(scopedAnd(gatewayAttachments, eq$1(gatewayAttachments.slug, slug))).limit(1))[0];\n}\nasync function selectGatewayAttachmentById(id) {\n\treturn (await selectGatewayAttachmentsByIds([id])).get(id);\n}\nasync function selectGatewayAttachmentsByIds(ids) {\n\tif (ids.length === 0) return /* @__PURE__ */ new Map();\n\tconst rows = await getDb().select().from(gatewayAttachments).where(scopedAnd(gatewayAttachments, inArray$1(gatewayAttachments.id, ids)));\n\treturn new Map(rows.map((row) => [row.id, row]));\n}\n/** Thrown when a channel is already bound by a different project in the same organization. */\nvar GatewayChannelConflictError = class extends Error {\n\tplatform;\n\tchannelId;\n\townerProjectId;\n\tconstructor(platform, channelId, ownerProjectId) {\n\t\tsuper(`Channel ${channelId} is already bound to another project in this organization`);\n\t\tthis.platform = platform;\n\t\tthis.channelId = channelId;\n\t\tthis.ownerProjectId = ownerProjectId;\n\t\tthis.name = \"GatewayChannelConflictError\";\n\t}\n};\n/** Project-unscoped active binding for a channel — used to enforce org-unique channel ownership. */\nasync function getActiveOrgGatewayAttachmentByChannel(platform, channelId) {\n\treturn (await getDb().select().from(gatewayAttachments).where(and$1(eq$1(gatewayAttachments.platform, platform), eq$1(gatewayAttachments.channelId, channelId), isNull(gatewayAttachments.deletedAt))).limit(1))[0];\n}\n/** Project-unscoped binding for a Slack workspace channel. */\nasync function getActiveOrgGatewayAttachmentByTeamAndChannel(platform, teamId, channelId) {\n\treturn (await getDb().select().from(gatewayAttachments).where(and$1(eq$1(gatewayAttachments.platform, platform), eq$1(gatewayAttachments.teamId, teamId), eq$1(gatewayAttachments.channelId, channelId), isNull(gatewayAttachments.deletedAt))).limit(1))[0];\n}\nasync function getActiveGatewayAttachmentByChannel(platform, channelId) {\n\treturn (await getDb().select().from(gatewayAttachments).where(scopedAnd(gatewayAttachments, eq$1(gatewayAttachments.platform, platform), eq$1(gatewayAttachments.channelId, channelId), isNull(gatewayAttachments.deletedAt))).limit(1))[0];\n}\nasync function listActiveGatewayAttachments() {\n\treturn getDb().select().from(gatewayAttachments).where(scopedAnd(gatewayAttachments, isNull(gatewayAttachments.deletedAt)));\n}\n/**\n* Project-unscoped: every active attachment for a platform across all projects in the current org\n* schema, joined to its agent's registry id. Used by the platform ingress, which routes by channel\n* before a project scope is known. A single query avoids per-attachment agent lookups.\n*/\nasync function listActiveOrgGatewayBindingsByPlatform(platform) {\n\treturn getDb().select({\n\t\tattachmentId: gatewayAttachments.id,\n\t\tslug: gatewayAttachments.slug,\n\t\tagentSlug: gatewayAttachments.agentSlug,\n\t\tagentId: agents.id,\n\t\tchannelId: gatewayAttachments.channelId,\n\t\tteamId: gatewayAttachments.teamId,\n\t\tsource: gatewayAttachments.source,\n\t\tprojectId: gatewayAttachments.projectId\n\t}).from(gatewayAttachments).innerJoin(agents, and$1(eq$1(agents.projectId, gatewayAttachments.projectId), eq$1(agents.slug, gatewayAttachments.agentSlug), isNull(agents.deletedAt))).where(and$1(eq$1(gatewayAttachments.platform, platform), isNull(gatewayAttachments.deletedAt)));\n}\nasync function listActiveGatewayAttachmentsByAgentSlug(agentSlug) {\n\treturn getDb().select().from(gatewayAttachments).where(scopedAnd(gatewayAttachments, eq$1(gatewayAttachments.agentSlug, agentSlug), isNull(gatewayAttachments.deletedAt)));\n}\nasync function softDeleteGatewayAttachmentsForAgentPlatformTeam(agentSlug, platform, teamId, now) {\n\tconst db = getDb();\n\tconst targets = (await listActiveGatewayAttachmentsByAgentSlug(agentSlug)).filter((row) => row.platform === platform && (teamId === null ? row.teamId == null : row.teamId === teamId));\n\tif (targets.length === 0) return 0;\n\tfor (const row of targets) await db.update(gatewayAttachments).set({\n\t\tdeletedAt: now,\n\t\tupdatedAt: now\n\t}).where(scopedAnd(gatewayAttachments, eq$1(gatewayAttachments.id, row.id)));\n\treturn targets.length;\n}\nasync function listActiveGatewayAttachmentsByPlatform(platform) {\n\treturn getDb().select().from(gatewayAttachments).where(scopedAnd(gatewayAttachments, eq$1(gatewayAttachments.platform, platform), isNull(gatewayAttachments.deletedAt)));\n}\nasync function insertGatewayAttachment(values) {\n\tawait getDb().insert(gatewayAttachments).values({\n\t\t...values,\n\t\tprojectId: projectScopeId()\n\t});\n}\nasync function updateGatewayAttachmentById(id, values) {\n\tawait getDb().update(gatewayAttachments).set(values).where(scopedAnd(gatewayAttachments, eq$1(gatewayAttachments.id, id)));\n}\nasync function softDeleteGatewayAttachmentByChannel(platform, channelId, now) {\n\tconst existing = await getActiveGatewayAttachmentByChannel(platform, channelId);\n\tif (!existing) return false;\n\tawait getDb().update(gatewayAttachments).set({\n\t\tdeletedAt: now,\n\t\tupdatedAt: now\n\t}).where(scopedAnd(gatewayAttachments, eq$1(gatewayAttachments.id, existing.id)));\n\treturn true;\n}\nasync function upsertGatewayAttachmentByChannel(options) {\n\tconst now = /* @__PURE__ */ new Date();\n\tconst slug = gatewayAttachmentKeyForChannel(options.platform, options.channelId);\n\tconst existing = await getActiveGatewayAttachmentByChannel(options.platform, options.channelId);\n\tif (existing) {\n\t\tawait updateGatewayAttachmentById(existing.id, {\n\t\t\tagentSlug: options.agentSlug,\n\t\t\tmoduleFile: \"\",\n\t\t\tplatform: options.platform,\n\t\t\tteamId: options.teamId ?? existing.teamId,\n\t\t\tchannelId: options.channelId,\n\t\t\tsource: options.source,\n\t\t\tupdatedAt: now,\n\t\t\tdeletedAt: null\n\t\t});\n\t\tconst updated = await selectGatewayAttachmentById(existing.id);\n\t\tif (!updated) throw new Error(\"Failed to load gateway attachment after update\");\n\t\treturn updated;\n\t}\n\tconst orgOwned = await getActiveOrgGatewayAttachmentByChannel(options.platform, options.channelId);\n\tif (orgOwned && orgOwned.projectId !== projectScopeId()) throw new GatewayChannelConflictError(options.platform, options.channelId, orgOwned.projectId);\n\tconst softDeleted = await selectGatewayAttachmentBySlug(slug);\n\tif (softDeleted && softDeleted.deletedAt) {\n\t\tawait updateGatewayAttachmentById(softDeleted.id, {\n\t\t\tagentSlug: options.agentSlug,\n\t\t\tmoduleFile: \"\",\n\t\t\tplatform: options.platform,\n\t\t\tteamId: options.teamId ?? softDeleted.teamId,\n\t\t\tchannelId: options.channelId,\n\t\t\tsource: options.source,\n\t\t\tupdatedAt: now,\n\t\t\tdeletedAt: null\n\t\t});\n\t\tconst revived = await selectGatewayAttachmentById(softDeleted.id);\n\t\tif (!revived) throw new Error(\"Failed to load gateway attachment after revive\");\n\t\treturn revived;\n\t}\n\tconst id = crypto.randomUUID();\n\tawait insertGatewayAttachment({\n\t\tid,\n\t\tslug,\n\t\tagentSlug: options.agentSlug,\n\t\tmoduleFile: \"\",\n\t\tplatform: options.platform,\n\t\tteamId: options.teamId ?? null,\n\t\tchannelId: options.channelId,\n\t\tsource: options.source,\n\t\tregisteredAt: now,\n\t\tupdatedAt: now,\n\t\tdeletedAt: null\n\t});\n\tconst inserted = await selectGatewayAttachmentById(id);\n\tif (!inserted) throw new Error(\"Failed to load gateway attachment after insert\");\n\treturn inserted;\n}\nasync function getGatewayAttachmentBySlug(slug) {\n\treturn selectGatewayAttachmentBySlug(slug);\n}\n//#endregion\n//#region src/queries/gateway-thread-sessions/index.ts\nasync function selectGatewayThreadSessionByThreadId(threadId) {\n\treturn (await getDb().select({ session: gatewayThreadSessions }).from(gatewayThreadSessions).innerJoin(gatewayAttachments, eq$1(gatewayAttachments.id, gatewayThreadSessions.attachmentId)).where(scopedAnd(gatewayAttachments, eq$1(gatewayThreadSessions.threadId, threadId))).limit(1))[0]?.session;\n}\nasync function selectGatewayThreadSessionBySessionId(sessionId) {\n\treturn (await selectGatewayThreadSessionsBySessionIds([sessionId])).get(sessionId);\n}\nasync function selectGatewayThreadSessionsBySessionIds(sessionIds) {\n\tif (sessionIds.length === 0) return /* @__PURE__ */ new Map();\n\tconst rows = await getDb().select({ session: gatewayThreadSessions }).from(gatewayThreadSessions).innerJoin(gatewayAttachments, eq$1(gatewayAttachments.id, gatewayThreadSessions.attachmentId)).where(scopedAnd(gatewayAttachments, inArray$1(gatewayThreadSessions.sessionId, sessionIds)));\n\treturn new Map(rows.map((row) => [row.session.sessionId, row.session]));\n}\nasync function upsertGatewayThreadSession(values) {\n\tawait getDb().insert(gatewayThreadSessions).values(values).onConflictDoUpdate({\n\t\ttarget: gatewayThreadSessions.threadId,\n\t\tset: {\n\t\t\tagentId: values.agentId,\n\t\t\tsessionId: values.sessionId,\n\t\t\tattachmentId: values.attachmentId,\n\t\t\tupdatedAt: values.updatedAt\n\t\t}\n\t});\n}\n//#endregion\n//#region src/queries/workflows/list-active.ts\n/**\n* List every active workflow in the bound org schema (all projects). Not project\n* scoped — the org database schema is itself the tenant boundary.\n*/\nasync function listActiveWorkflows(options) {\n\tconst db = getDb();\n\tif (options?.projectIds !== void 0 && options.projectIds.length === 0) return [];\n\tconst conditions = [isNull(workflows.deletedAt)];\n\tif (options?.projectIds !== void 0) conditions.push(inArray$1(workflows.projectId, options.projectIds));\n\treturn db.select().from(workflows).where(and$1(...conditions)).orderBy(desc(workflows.updatedAt), desc(workflows.id)).limit(options?.limit ?? 200);\n}\n//#endregion\n//#region src/queries/workflows/select.ts\nasync function selectWorkflowBySlug(slug) {\n\treturn (await getDb().select().from(workflows).where(scopedAnd(workflows, eq$1(workflows.slug, slug))).limit(1))[0];\n}\nasync function selectActiveWorkflowBySlug(slug) {\n\treturn (await getDb().select().from(workflows).where(scopedAnd(workflows, eq$1(workflows.slug, slug), isNull(workflows.deletedAt))).limit(1))[0];\n}\n/** Fetch active workflows by id from the bound org schema (all projects). */\nasync function selectActiveWorkflowsByIds(ids) {\n\tif (ids.length === 0) return [];\n\treturn getDb().select().from(workflows).where(and$1(inArray$1(workflows.id, ids), isNull(workflows.deletedAt)));\n}\n/** Fetch a single active workflow by id from the bound org schema (all projects). */\nasync function selectActiveWorkflowById(id) {\n\treturn (await getDb().select().from(workflows).where(and$1(eq$1(workflows.id, id), isNull(workflows.deletedAt))).limit(1))[0];\n}\n//#endregion\n//#region src/queries/workflows/write.ts\nasync function insertWorkflow(values) {\n\tawait getDb().insert(workflows).values({\n\t\t...values,\n\t\tprojectId: projectScopeId(),\n\t\tsubscribable: values.subscribable ? 1 : 0\n\t});\n}\nasync function updateWorkflowById(id, values) {\n\tawait getDb().update(workflows).set({\n\t\tname: values.name,\n\t\tdescription: values.description,\n\t\tmoduleFile: values.moduleFile,\n\t\tsubscribable: values.subscribable ? 1 : 0,\n\t\tupdatedAt: values.updatedAt,\n\t\tdeletedAt: values.deletedAt\n\t}).where(scopedAnd(workflows, eq$1(workflows.id, id)));\n}\nasync function softDeleteAllWorkflows(now) {\n\tawait getDb().update(workflows).set({\n\t\tdeletedAt: now,\n\t\tupdatedAt: now\n\t}).where(scopedAnd(workflows, isNull(workflows.deletedAt)));\n}\nasync function softDeleteWorkflowsNotInSlugs(slugs, now) {\n\tawait getDb().update(workflows).set({\n\t\tdeletedAt: now,\n\t\tupdatedAt: now\n\t}).where(scopedAnd(workflows, isNull(workflows.deletedAt), notInArray(workflows.slug, slugs)));\n}\n//#endregion\n//#region src/queries/workflows/run-inputs.ts\nasync function selectWorkflowRunInputValues(workflowId) {\n\treturn (await getDb().select({ runInputValues: workflows.runInputValues }).from(workflows).where(scopedAnd(workflows, eq$1(workflows.id, workflowId))).limit(1))[0]?.runInputValues ?? null;\n}\nasync function updateWorkflowRunInputValues(workflowId, values) {\n\tawait getDb().update(workflows).set({\n\t\trunInputValues: values,\n\t\tupdatedAt: /* @__PURE__ */ new Date()\n\t}).where(scopedAnd(workflows, eq$1(workflows.id, workflowId)));\n}\n//#endregion\n//#region src/queries/workflows/canvas-annotations.ts\nasync function selectWorkflowCanvasAnnotations(workflowId) {\n\tconst row = (await getDb().select({\n\t\tstatus: workflows.canvasAnnotationsStatus,\n\t\thash: workflows.canvasAnnotationsHash,\n\t\tmodel: workflows.canvasAnnotationsModel,\n\t\tannotations: workflows.canvasAnnotationsJson,\n\t\tgeneratedAt: workflows.canvasAnnotationsGeneratedAt\n\t}).from(workflows).where(scopedAnd(workflows, eq$1(workflows.id, workflowId))).limit(1))[0];\n\tif (!row) return;\n\treturn {\n\t\tstatus: row.status,\n\t\thash: row.hash ?? null,\n\t\tmodel: row.model ?? null,\n\t\tannotations: row.annotations ?? null,\n\t\tgeneratedAt: row.generatedAt ?? null\n\t};\n}\nasync function setWorkflowCanvasAnnotationsGenerating(workflowId, hash, now = /* @__PURE__ */ new Date()) {\n\tawait getDb().update(workflows).set({\n\t\tcanvasAnnotationsStatus: \"generating\",\n\t\tcanvasAnnotationsHash: hash,\n\t\tupdatedAt: now\n\t}).where(scopedAnd(workflows, eq$1(workflows.id, workflowId)));\n}\nasync function updateWorkflowCanvasAnnotations(workflowId, values, now = /* @__PURE__ */ new Date()) {\n\tconst db = getDb();\n\tconst set = {\n\t\tcanvasAnnotationsStatus: values.status,\n\t\tupdatedAt: now\n\t};\n\tif (values.annotations !== void 0) {\n\t\tset.canvasAnnotationsJson = values.annotations;\n\t\tset.canvasAnnotationsGeneratedAt = now;\n\t}\n\tif (values.hash !== void 0) set.canvasAnnotationsHash = values.hash;\n\tif (values.model !== void 0) set.canvasAnnotationsModel = values.model;\n\tawait db.update(workflows).set(set).where(scopedAnd(workflows, eq$1(workflows.id, workflowId)));\n}\n//#endregion\n//#region src/queries/workflows/overview.ts\nasync function selectWorkflowOverview(workflowId) {\n\tconst row = (await getDb().select({\n\t\tstatus: workflows.overviewStatus,\n\t\tsummary: workflows.overviewSummary,\n\t\tphases: workflows.overviewPhasesJson,\n\t\thash: workflows.overviewHash,\n\t\tmodel: workflows.overviewModel,\n\t\tgeneratedAt: workflows.overviewGeneratedAt\n\t}).from(workflows).where(scopedAnd(workflows, eq$1(workflows.id, workflowId))).limit(1))[0];\n\tif (!row) return;\n\treturn {\n\t\tstatus: row.status,\n\t\tsummary: row.summary ?? null,\n\t\tphases: row.phases ?? null,\n\t\thash: row.hash ?? null,\n\t\tmodel: row.model ?? null,\n\t\tgeneratedAt: row.generatedAt ?? null\n\t};\n}\nasync function setWorkflowOverviewGenerating(workflowId, hash, now = /* @__PURE__ */ new Date()) {\n\tawait getDb().update(workflows).set({\n\t\toverviewStatus: \"generating\",\n\t\toverviewHash: hash,\n\t\tupdatedAt: now\n\t}).where(scopedAnd(workflows, eq$1(workflows.id, workflowId)));\n}\nasync function updateWorkflowOverview(workflowId, values, now = /* @__PURE__ */ new Date()) {\n\tconst db = getDb();\n\tconst set = {\n\t\toverviewStatus: values.status,\n\t\tupdatedAt: now\n\t};\n\tif (values.summary !== void 0) {\n\t\tset.overviewSummary = values.summary;\n\t\tset.overviewGeneratedAt = now;\n\t}\n\tif (values.phases !== void 0) set.overviewPhasesJson = values.phases;\n\tif (values.hash !== void 0) set.overviewHash = values.hash;\n\tif (values.model !== void 0) set.overviewModel = values.model;\n\tawait db.update(workflows).set(set).where(scopedAnd(workflows, eq$1(workflows.id, workflowId)));\n}\n//#endregion\n//#region src/queries/skills/list-active.ts\n/**\n* List every active skill in the bound org schema (all projects). Not project\n* scoped — the org database schema is itself the tenant boundary.\n*/\nasync function listActiveSkills(options) {\n\tconst db = getDb();\n\tif (options?.projectIds !== void 0 && options.projectIds.length === 0) return [];\n\tconst conditions = [isNull(skills.deletedAt)];\n\tif (options?.projectIds !== void 0) conditions.push(inArray$1(skills.projectId, options.projectIds));\n\treturn db.select().from(skills).where(and$1(...conditions)).orderBy(desc(skills.updatedAt), desc(skills.id)).limit(options?.limit ?? 200);\n}\n//#endregion\n//#region src/queries/skills/select.ts\nasync function selectSkillBySlug(slug) {\n\treturn (await getDb().select().from(skills).where(scopedAnd(skills, eq$1(skills.slug, slug))).limit(1))[0];\n}\n/** Fetch active skills by slug for the current project scope. */\nasync function selectActiveSkillsBySlugs(slugs) {\n\tif (slugs.length === 0) return [];\n\treturn getDb().select().from(skills).where(scopedAnd(skills, inArray$1(skills.slug, slugs), isNull(skills.deletedAt)));\n}\n/** Fetch active skills by id from the bound org schema (all projects). */\nasync function selectActiveSkillsByIds(ids) {\n\tif (ids.length === 0) return [];\n\treturn getDb().select().from(skills).where(and$1(inArray$1(skills.id, ids), isNull(skills.deletedAt)));\n}\n/** Fetch a single active skill by id from the bound org schema (all projects). */\nasync function selectActiveSkillById(id) {\n\treturn (await getDb().select().from(skills).where(and$1(eq$1(skills.id, id), isNull(skills.deletedAt))).limit(1))[0];\n}\n//#endregion\n//#region src/queries/skills/write.ts\nasync function insertSkill(values) {\n\tawait getDb().insert(skills).values({\n\t\t...values,\n\t\tprojectId: projectScopeId()\n\t});\n}\nasync function updateSkillById(id, values) {\n\tawait getDb().update(skills).set({\n\t\tname: values.name,\n\t\tdescription: values.description,\n\t\tmoduleFile: values.moduleFile,\n\t\tupdatedAt: values.updatedAt,\n\t\tdeletedAt: values.deletedAt\n\t}).where(scopedAnd(skills, eq$1(skills.id, id)));\n}\nasync function softDeleteAllSkills(now) {\n\tawait getDb().update(skills).set({\n\t\tdeletedAt: now,\n\t\tupdatedAt: now\n\t}).where(scopedAnd(skills, isNull(skills.deletedAt)));\n}\nasync function softDeleteSkillsNotInSlugs(slugs, now) {\n\tawait getDb().update(skills).set({\n\t\tdeletedAt: now,\n\t\tupdatedAt: now\n\t}).where(scopedAnd(skills, isNull(skills.deletedAt), notInArray(skills.slug, slugs)));\n}\n//#endregion\n//#region src/queries/workflow-subscriptions/index.ts\nasync function selectWorkflowSubscriptionById(id) {\n\treturn (await getDb().select().from(workflowSubscriptions).where(scopedAnd(workflowSubscriptions, eq$1(workflowSubscriptions.id, id))).limit(1))[0];\n}\nasync function selectWorkflowSubscriptionByWorkflowAndUser(workflowSlug, userId) {\n\treturn (await getDb().select().from(workflowSubscriptions).where(scopedAnd(workflowSubscriptions, eq$1(workflowSubscriptions.workflowSlug, workflowSlug), eq$1(workflowSubscriptions.userId, userId))).limit(1))[0];\n}\nasync function listWorkflowSubscriptionsByWorkflowSlug(workflowSlug) {\n\treturn getDb().select().from(workflowSubscriptions).where(scopedAnd(workflowSubscriptions, eq$1(workflowSubscriptions.workflowSlug, workflowSlug)));\n}\nasync function listEnabledWorkflowSubscriptionsByWorkflowSlug(workflowSlug) {\n\treturn getDb().select().from(workflowSubscriptions).where(scopedAnd(workflowSubscriptions, eq$1(workflowSubscriptions.workflowSlug, workflowSlug), eq$1(workflowSubscriptions.enabled, 1)));\n}\nasync function insertWorkflowSubscription(values) {\n\tawait getDb().insert(workflowSubscriptions).values({\n\t\t...values,\n\t\tprojectId: projectScopeId(),\n\t\tenabled: values.enabled ? 1 : 0\n\t});\n}\nasync function updateWorkflowSubscriptionById(id, values) {\n\tawait getDb().update(workflowSubscriptions).set({\n\t\tenabled: values.enabled ? 1 : 0,\n\t\tupdatedAt: values.updatedAt\n\t}).where(scopedAnd(workflowSubscriptions, eq$1(workflowSubscriptions.id, id)));\n}\nasync function deleteWorkflowSubscriptionById(id) {\n\tif (!await selectWorkflowSubscriptionById(id)) return false;\n\tawait getDb().delete(workflowSubscriptions).where(scopedAnd(workflowSubscriptions, eq$1(workflowSubscriptions.id, id)));\n\treturn true;\n}\n//#endregion\n//#region src/queries/resource-activity/index.ts\nasync function selectResourceActivityByUserAndResource(input) {\n\treturn (await getDb().select().from(resourceActivity).where(and$1(eq$1(resourceActivity.projectId, input.projectId), eq$1(resourceActivity.userId, input.userId), eq$1(resourceActivity.resourceKind, input.resourceKind), eq$1(resourceActivity.resourceId, input.resourceId))).limit(1))[0];\n}\nasync function touchResourceActivity(input) {\n\tconst now = /* @__PURE__ */ new Date();\n\tconst existing = await selectResourceActivityByUserAndResource(input);\n\tconst db = getDb();\n\tif (existing) {\n\t\tawait db.update(resourceActivity).set({ lastOpenedAt: now }).where(eq$1(resourceActivity.id, existing.id));\n\t\treturn;\n\t}\n\tawait db.insert(resourceActivity).values({\n\t\tid: crypto.randomUUID(),\n\t\tprojectId: input.projectId,\n\t\tuserId: input.userId,\n\t\tresourceKind: input.resourceKind,\n\t\tresourceId: input.resourceId,\n\t\tlastOpenedAt: now\n\t});\n}\nasync function listRecentResourceActivity(userId, limit) {\n\treturn getDb().select().from(resourceActivity).where(eq$1(resourceActivity.userId, userId)).orderBy(desc(resourceActivity.lastOpenedAt)).limit(limit);\n}\n//#endregion\n//#region src/queries/resource-last-run/index.ts\n/**\n* Last run per workflow id from the bound org schema.\n*\n* Runs are keyed by (projectId, workflowSlug), so join onto the workflows\n* registry to resolve ids. Account pages span all projects in the org, so this\n* intentionally does not use the ALS project scope — the join already matches\n* each run to its own project's workflow row.\n*/\nasync function selectWorkflowLastRunAtByIds(workflowIds) {\n\tif (workflowIds.length === 0) return /* @__PURE__ */ new Map();\n\tconst rows = await getDb().select({\n\t\tworkflowId: workflows.id,\n\t\tlastRunAt: max(workflowRuns.triggeredAt)\n\t}).from(workflowRuns).innerJoin(workflows, and(eq(workflows.projectId, workflowRuns.projectId), eq(workflows.slug, workflowRuns.workflowSlug))).where(inArray(workflows.id, workflowIds)).groupBy(workflows.id);\n\tconst result = /* @__PURE__ */ new Map();\n\tfor (const row of rows) if (row.lastRunAt) result.set(row.workflowId, row.lastRunAt);\n\treturn result;\n}\n/**\n* Last session activity per agent id from the bound org schema.\n*\n* Agent ids are unique within the org schema, so no project scope filter is\n* needed (and the ALS scope is not bound on account routes anyway).\n*/\nasync function selectAgentLastRunAtByIds(agentIds) {\n\tif (agentIds.length === 0) return /* @__PURE__ */ new Map();\n\tconst rows = await getDb().select({\n\t\tagentId: agentSessions.agentId,\n\t\tlastRunAt: max(agentSessions.updatedAt)\n\t}).from(agentSessions).where(inArray(agentSessions.agentId, agentIds)).groupBy(agentSessions.agentId);\n\tconst result = /* @__PURE__ */ new Map();\n\tfor (const row of rows) if (row.lastRunAt) result.set(row.agentId, row.lastRunAt);\n\treturn result;\n}\n//#endregion\n//#region src/queries/project-metrics/select-resource-counts.ts\n/**\n* Active resource counts grouped by project id across the bound org schema. Not\n* project scoped — the org database schema is itself the tenant boundary.\n*/\nasync function selectProjectResourceCounts(options) {\n\tif (options?.projectIds !== void 0 && options.projectIds.length === 0) return {};\n\tconst db = getDb();\n\tconst projectIds = options?.projectIds;\n\tconst agentConditions = [isNull(agents.deletedAt)];\n\tconst workflowConditions = [isNull(workflows.deletedAt)];\n\tconst skillConditions = [isNull(skills.deletedAt)];\n\tconst credentialConditions = [eq$1(credentialInstances.scopeType, \"project\")];\n\tif (projectIds !== void 0) {\n\t\tagentConditions.push(inArray$1(agents.projectId, projectIds));\n\t\tworkflowConditions.push(inArray$1(workflows.projectId, projectIds));\n\t\tskillConditions.push(inArray$1(skills.projectId, projectIds));\n\t\tcredentialConditions.push(inArray$1(credentialInstances.projectId, projectIds));\n\t}\n\tconst [agentRows, workflowRows, skillRows, credentialRows] = await Promise.all([\n\t\tdb.select({\n\t\t\tprojectId: agents.projectId,\n\t\t\tcount: count()\n\t\t}).from(agents).where(and$1(...agentConditions)).groupBy(agents.projectId),\n\t\tdb.select({\n\t\t\tprojectId: workflows.projectId,\n\t\t\tcount: count()\n\t\t}).from(workflows).where(and$1(...workflowConditions)).groupBy(workflows.projectId),\n\t\tdb.select({\n\t\t\tprojectId: skills.projectId,\n\t\t\tcount: count()\n\t\t}).from(skills).where(and$1(...skillConditions)).groupBy(skills.projectId),\n\t\tdb.select({\n\t\t\tprojectId: credentialInstances.projectId,\n\t\t\tcount: count()\n\t\t}).from(credentialInstances).where(and$1(...credentialConditions)).groupBy(credentialInstances.projectId)\n\t]);\n\tconst metrics = {};\n\tconst ensure = (projectId) => {\n\t\tlet entry = metrics[projectId];\n\t\tif (!entry) {\n\t\t\tentry = {\n\t\t\t\tagentCount: 0,\n\t\t\t\tworkflowCount: 0,\n\t\t\t\tskillCount: 0,\n\t\t\t\tcredentialCount: 0\n\t\t\t};\n\t\t\tmetrics[projectId] = entry;\n\t\t}\n\t\treturn entry;\n\t};\n\tfor (const row of agentRows) ensure(row.projectId).agentCount = Number(row.count);\n\tfor (const row of workflowRows) ensure(row.projectId).workflowCount = Number(row.count);\n\tfor (const row of skillRows) ensure(row.projectId).skillCount = Number(row.count);\n\tfor (const row of credentialRows) ensure(row.projectId).credentialCount = Number(row.count);\n\treturn metrics;\n}\n//#endregion\n//#region src/agents/serialize.ts\nfunction agentSessionStatusFromSpan(span, messageCount, canceledAt) {\n\tif (canceledAt) return \"canceled\";\n\tif (span) {\n\t\tif (span.status === \"running\") return \"running\";\n\t\tif (span.status === \"error\") return \"failed\";\n\t\treturn \"completed\";\n\t}\n\treturn messageCount > 0 ? \"completed\" : \"running\";\n}\n/**\n* Session status: the explicit `status` column when written, falling back to\n* trace-span derivation for rows that predate it. Cancellation always wins —\n* a cancel can land while the aborted run's own status writes are in flight.\n*\n* ponytail: the span fallback only exists for rows created before the status\n* column; once those are backfilled (or aged out), drop it and\n* `agentSessionStatusFromSpan` so the column is the single source of truth.\n*/\nfunction agentSessionStatusFromRow(row, span, messageCount) {\n\tif (row.canceledAt) return \"canceled\";\n\treturn row.status ?? agentSessionStatusFromSpan(span, messageCount, null);\n}\nfunction agentSessionSummaryFromParts(options) {\n\treturn {\n\t\tid: options.row.id,\n\t\tstatus: options.status,\n\t\tsource: options.row.sourceKind,\n\t\tsourceId: options.row.sourceId ?? null,\n\t\ttitle: options.row.title ?? null,\n\t\tranByUserName: options.ranByUserName ?? null,\n\t\tgatewayPlatform: options.gatewayPlatform ?? null,\n\t\ttriggerType: options.triggerType ?? null,\n\t\tcreatedAt: options.row.createdAt.toISOString(),\n\t\tupdatedAt: options.row.updatedAt.toISOString(),\n\t\tmessageCount: options.messageCount\n\t};\n}\nfunction agentSessionRecordFromParts(options) {\n\treturn {\n\t\tid: options.row.id,\n\t\tagentSlug: options.agentSlug,\n\t\tstatus: options.status,\n\t\tsource: options.row.sourceKind,\n\t\tsourceId: options.row.sourceId ?? null,\n\t\ttitle: options.row.title ?? null,\n\t\tcreatedAt: options.row.createdAt.toISOString(),\n\t\tupdatedAt: options.row.updatedAt.toISOString(),\n\t\tparentSpanId: options.row.parentSpanId ?? null,\n\t\tmessageCount: options.messageCount,\n\t\terror: options.error,\n\t\ttotalDurationMs: options.row.totalDurationMs\n\t};\n}\nfunction gatewaySessionDetailFromParts(gateway, attachmentSlug) {\n\treturn {\n\t\tthreadId: gateway.threadId,\n\t\tattachmentId: gateway.attachmentId,\n\t\tattachmentSlug\n\t};\n}\nfunction agentEventFromRow(row) {\n\treturn {\n\t\tid: row.id,\n\t\tsessionId: row.sessionId,\n\t\tseq: row.seq,\n\t\teventType: row.eventType,\n\t\tpayload: row.payload,\n\t\tcreatedAt: row.createdAt.toISOString()\n\t};\n}\nfunction sessionErrorFromSpan(span) {\n\tif (!span || span.status !== \"error\") return null;\n\treturn span.error ?? null;\n}\n//#endregion\n//#region src/agents/types.ts\nconst MESSAGE_EVENT_TYPE = \"message\";\n//#endregion\n//#region src/agents/compaction-events.ts\nconst CONTEXT_COMPACTED_EVENT_TYPE = \"context_compacted\";\n/** Sanitize a persisted `context_compacted` payload into the wire marker shape. */\nfunction compactionEventFromRow(event) {\n\tconst payload = typeof event.payload === \"object\" && event.payload !== null ? event.payload : null;\n\tconst checkpoint = payload && typeof payload.checkpoint === \"object\" && payload.checkpoint !== null ? payload.checkpoint : payload;\n\tif (!checkpoint || typeof checkpoint.compactionModel !== \"string\" || typeof checkpoint.sourceModel !== \"string\" || typeof checkpoint.durable !== \"boolean\") return null;\n\treturn {\n\t\tseq: event.seq,\n\t\tcreatedAt: event.createdAt.toISOString(),\n\t\tcompactionModel: checkpoint.compactionModel,\n\t\tsourceModel: checkpoint.sourceModel,\n\t\tdurable: checkpoint.durable,\n\t\t...typeof checkpoint.estimatedBeforeTokens === \"number\" ? { estimatedBeforeTokens: checkpoint.estimatedBeforeTokens } : {},\n\t\t...typeof checkpoint.retainedTailEstimate === \"number\" ? { retainedTailEstimate: checkpoint.retainedTailEstimate } : {}\n\t};\n}\n/**\n* Sanitized compaction markers for a session — an indexed lookup on\n* (session_id, event_type), never a full event-log scan.\n*/\nasync function listCompactionEventsForSession(sessionId) {\n\treturn (await listMessageEventsForSession(sessionId, CONTEXT_COMPACTED_EVENT_TYPE)).flatMap((row) => {\n\t\tconst event = compactionEventFromRow(row);\n\t\treturn event ? [event] : [];\n\t});\n}\n//#endregion\n//#region src/queries/history/internal.ts\nasync function countStepCompletedEventsByRunIds(runIds) {\n\tif (runIds.length === 0) return /* @__PURE__ */ new Map();\n\tconst rows = await getDb().select({\n\t\trunId: workflowEvents.runId,\n\t\tcount: sql$1`count(*)`\n\t}).from(workflowEvents).where(and$1(inArray$1(workflowEvents.runId, runIds), eq$1(workflowEvents.type, \"step_completed\"))).groupBy(workflowEvents.runId);\n\treturn new Map(rows.map((row) => [row.runId, Number(row.count ?? 0)]));\n}\nasync function countStepCompletedEvents(runId) {\n\treturn (await countStepCompletedEventsByRunIds([runId])).get(runId) ?? 0;\n}\nasync function countMessageEventsBySessionIds(sessionIds, messageEventType) {\n\tif (sessionIds.length === 0) return /* @__PURE__ */ new Map();\n\tconst rows = await getDb().select({\n\t\tsessionId: agentEvents.sessionId,\n\t\tcount: sql$1`count(*)`\n\t}).from(agentEvents).innerJoin(agentSessions, eq$1(agentSessions.id, agentEvents.sessionId)).where(and$1(inArray$1(agentEvents.sessionId, sessionIds), eq$1(agentEvents.eventType, messageEventType), isNull(agentEvents.deletedAt))).groupBy(agentEvents.sessionId);\n\treturn new Map(rows.map((row) => [row.sessionId, Number(row.count ?? 0)]));\n}\nasync function selectTriggerTypesByIds(ids) {\n\tif (ids.length === 0) return /* @__PURE__ */ new Map();\n\tconst rows = await getDb().select({\n\t\tid: triggerRuns.id,\n\t\ttriggerType: triggerRuns.triggerType\n\t}).from(triggerRuns).where(inArray$1(triggerRuns.id, ids));\n\treturn new Map(rows.map((row) => [row.id, row.triggerType]));\n}\nfunction resolveWorkflowTriggerRaw(run, triggerTypes) {\n\tif (run.sourceKind === \"gateway\") return \"gateway\";\n\tif (run.sourceKind === \"trigger\" && run.triggerRunId) {\n\t\tconst triggerType = triggerTypes.get(run.triggerRunId);\n\t\tif (triggerType) return triggerType;\n\t}\n\treturn run.trigger;\n}\nfunction resolveAgentTriggerRaw(session, triggerTypes) {\n\tif (session.sourceKind === \"trigger\" && session.sourceId) {\n\t\tconst triggerType = triggerTypes.get(session.sourceId);\n\t\tif (triggerType) return triggerType;\n\t}\n\tif (session.sourceKind === \"gateway\") return \"gateway\";\n\treturn session.sourceKind;\n}\nasync function selectLatestAgentSessionSpansByRefIds(sessionIds) {\n\tif (sessionIds.length === 0) return /* @__PURE__ */ new Map();\n\tconst rows = await getDb().select({\n\t\tspan: traceSpans,\n\t\trefId: traceSpans.refId\n\t}).from(traceSpans).innerJoin(agentSessions, eq$1(agentSessions.id, traceSpans.refId)).where(and$1(inArray$1(traceSpans.refId, sessionIds), eq$1(traceSpans.kind, \"agent_session\"), isNull(agentSessions.deletedAt))).orderBy(desc(traceSpans.startedAt));\n\tconst latestByRefId = /* @__PURE__ */ new Map();\n\tfor (const row of rows) if (!latestByRefId.has(row.refId)) latestByRefId.set(row.refId, row.span);\n\treturn latestByRefId;\n}\nfunction historyProjectConditions(column, filter) {\n\tif (filter?.projectIds !== void 0) {\n\t\tif (filter.projectIds.length === 0) return [];\n\t\treturn [inArray$1(column, filter.projectIds)];\n\t}\n\treturn [];\n}\nfunction resolveFetchLimit(limit, status) {\n\tif (!status) return limit;\n\treturn Math.min(limit * 5, 500);\n}\nfunction matchesStatusFilter(actual, filter) {\n\tif (filter === \"running\") return actual === \"running\" || actual === \"pending\";\n\treturn actual === filter;\n}\n//#endregion\n//#region src/tracing/sink.ts\nconst FLUSH_INTERVAL_MS = 50;\nconst FLUSH_BATCH_SIZE = 100;\nfunction createDatabaseTracingSink() {\n\tconst pending = [];\n\tconst seqByTrace = /* @__PURE__ */ new Map();\n\tlet flushTimer;\n\tasync function flushNow() {\n\t\tif (flushTimer) {\n\t\t\tclearTimeout(flushTimer);\n\t\t\tflushTimer = void 0;\n\t\t}\n\t\tif (pending.length === 0) return;\n\t\tawait insertTraceLogs(pending.splice(0, pending.length));\n\t}\n\tfunction scheduleFlush() {\n\t\tif (flushTimer) return;\n\t\tflushTimer = setTimeout(() => {\n\t\t\tflushTimer = void 0;\n\t\t\tflushNow().catch((error) => {\n\t\t\t\tconsole.error(\"[tracing] failed to flush logs:\", error);\n\t\t\t});\n\t\t}, FLUSH_INTERVAL_MS);\n\t}\n\tasync function nextSeq(traceId) {\n\t\tconst cached = seqByTrace.get(traceId);\n\t\tif (cached !== void 0) {\n\t\t\tconst next = cached + 1;\n\t\t\tseqByTrace.set(traceId, next);\n\t\t\treturn next;\n\t\t}\n\t\tconst next = await maxTraceLogSeq(traceId) + 1;\n\t\tseqByTrace.set(traceId, next);\n\t\treturn next;\n\t}\n\treturn {\n\t\tasync openSpan(span) {\n\t\t\tawait insertTraceSpan({\n\t\t\t\tid: span.id,\n\t\t\t\ttraceId: span.traceId,\n\t\t\t\tparentSpanId: span.parentSpanId ?? null,\n\t\t\t\tkind: span.kind,\n\t\t\t\trefId: span.refId,\n\t\t\t\tname: span.name,\n\t\t\t\tstatus: \"running\",\n\t\t\t\tstartedAt: span.startedAt,\n\t\t\t\tmetadata: span.metadata ?? null\n\t\t\t});\n\t\t},\n\t\tasync closeSpan(spanId, status, finishedAt, error) {\n\t\t\tawait updateTraceSpanStatus(spanId, status, finishedAt, error);\n\t\t\tawait flushNow();\n\t\t},\n\t\tasync appendLog(entry) {\n\t\t\tconst seq = await nextSeq(entry.traceId);\n\t\t\tpending.push({\n\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\ttraceId: entry.traceId,\n\t\t\t\tspanId: entry.spanId,\n\t\t\t\tseq,\n\t\t\t\tlevel: entry.level,\n\t\t\t\tmessage: entry.message,\n\t\t\t\tdata: entry.data,\n\t\t\t\tsource: entry.source,\n\t\t\t\tcreatedAt: entry.createdAt\n\t\t\t});\n\t\t\tif (pending.length >= FLUSH_BATCH_SIZE) {\n\t\t\t\tawait flushNow();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tscheduleFlush();\n\t\t},\n\t\tflushNow\n\t};\n}\n//#endregion\n//#region src/tracing/index.ts\nfunction triggerFromSpans(spans) {\n\tconst triggerSpan = spans.find((span) => span.kind === \"trigger_run\");\n\tif (!triggerSpan?.metadata || typeof triggerSpan.metadata !== \"object\") return null;\n\tconst metadata = triggerSpan.metadata;\n\treturn {\n\t\ttriggerType: String(metadata.triggerType ?? \"unknown\"),\n\t\ttriggerRunId: triggerSpan.refId,\n\t\tworkflowSlug: typeof metadata.workflowSlug === \"string\" ? metadata.workflowSlug : void 0,\n\t\tagentSlug: typeof metadata.agentSlug === \"string\" ? metadata.agentSlug : void 0,\n\t\tattachmentId: typeof metadata.attachmentId === \"string\" ? metadata.attachmentId : null,\n\t\tattachmentSlug: typeof metadata.attachmentSlug === \"string\" ? metadata.attachmentSlug : null,\n\t\troute: typeof metadata.route === \"string\" ? metadata.route : void 0,\n\t\tsourcePath: typeof metadata.sourcePath === \"string\" ? metadata.sourcePath : null\n\t};\n}\nfunction gatewayFromSpans(spans) {\n\tconst gatewaySpan = spans.find((span) => span.kind === \"gateway_event\");\n\tif (!gatewaySpan?.metadata || typeof gatewaySpan.metadata !== \"object\") return null;\n\tconst metadata = gatewaySpan.metadata;\n\tif (typeof metadata.gatewayAttachmentId !== \"string\" || typeof metadata.gatewayAttachmentKey !== \"string\") return null;\n\treturn {\n\t\tgatewayAttachmentId: metadata.gatewayAttachmentId,\n\t\tgatewayAttachmentKey: metadata.gatewayAttachmentKey,\n\t\tthreadId: typeof metadata.threadId === \"string\" ? metadata.threadId : void 0,\n\t\tchannelId: typeof metadata.channelId === \"string\" ? metadata.channelId : void 0,\n\t\tmode: typeof metadata.mode === \"string\" ? metadata.mode : void 0\n\t};\n}\nasync function getTraceForWorkflowRun(workflowRunId) {\n\tconst run = await selectWorkflowRunById(workflowRunId);\n\tif (!run) return null;\n\tlet traceId = workflowRunId;\n\tif (run.triggerRunId) traceId = run.triggerRunId;\n\telse {\n\t\tconst workflowSpan = await selectTraceSpanByRefId(workflowRunId);\n\t\tif (workflowSpan) traceId = workflowSpan.traceId;\n\t}\n\tconst spans = await listTraceSpansByTraceId(traceId);\n\tconst logs = await listTraceLogsByTraceId(traceId);\n\treturn {\n\t\ttraceId,\n\t\ttrigger: triggerFromSpans(spans),\n\t\tgateway: gatewayFromSpans(spans),\n\t\tspans,\n\t\tlogs\n\t};\n}\nasync function getTraceForTriggerRun(triggerRunId) {\n\tconst spans = await listTraceSpansByTraceId(triggerRunId);\n\tif (spans.length === 0) return null;\n\tconst logs = await listTraceLogsByTraceId(triggerRunId);\n\treturn {\n\t\ttraceId: triggerRunId,\n\t\ttrigger: triggerFromSpans(spans),\n\t\tgateway: gatewayFromSpans(spans),\n\t\tspans,\n\t\tlogs\n\t};\n}\nasync function getTraceForAgentSession(sessionId) {\n\tconst traceId = (await selectTraceSpanByRefId(sessionId))?.traceId ?? sessionId;\n\tconst spans = await listTraceSpansByTraceId(traceId);\n\tconst logs = await listTraceLogsByTraceId(traceId);\n\tif (spans.length === 0 && logs.length === 0) return null;\n\treturn {\n\t\ttraceId,\n\t\ttrigger: triggerFromSpans(spans),\n\t\tgateway: gatewayFromSpans(spans),\n\t\tspans,\n\t\tlogs\n\t};\n}\n//#endregion\n//#region src/agents/sanitize-message.ts\nfunction isRecord(value) {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction sanitizeTextPart(part) {\n\tif (part.type !== \"text\" || typeof part.text !== \"string\") return part;\n\treturn {\n\t\t...part,\n\t\ttext: stripPromptContext(part.text)\n\t};\n}\nfunction sanitizeParts(parts) {\n\tif (!Array.isArray(parts)) return typeof parts === \"string\" ? stripPromptContext(parts) : parts;\n\treturn parts.map((part) => isRecord(part) ? sanitizeTextPart(part) : part);\n}\n/** Strip wrapped prompt context from user message payloads for UI-facing reads. */\nfunction sanitizeMessagePayloadContext(payload) {\n\tif (!isRecord(payload) || payload.role !== \"user\") return payload;\n\tif (\"parts\" in payload) return {\n\t\t...payload,\n\t\tparts: sanitizeParts(payload.parts)\n\t};\n\tif (\"content\" in payload) return {\n\t\t...payload,\n\t\tcontent: sanitizeParts(payload.content)\n\t};\n\treturn payload;\n}\n//#endregion\n//#region src/agents/session-api.ts\nasync function enrichSessionRows(rows) {\n\tconst sessionIds = rows.map((row) => row.id);\n\tconst triggerRunIds = rows.map((row) => row.sourceKind === \"trigger\" ? row.sourceId : null).filter((id) => Boolean(id));\n\tconst gatewayAttachmentIds = [...new Set(rows.map((row) => row.sourceKind === \"gateway\" ? row.sourceId : null).filter((id) => Boolean(id)))];\n\tconst [spansBySessionId, messageCounts, triggerTypes, gatewayAttachments] = await Promise.all([\n\t\tselectLatestAgentSessionSpansByRefIds(sessionIds),\n\t\tcountMessageEventsBySessionIds(sessionIds, MESSAGE_EVENT_TYPE),\n\t\tselectTriggerTypesByIds(triggerRunIds),\n\t\tselectGatewayAttachmentsByIds(gatewayAttachmentIds)\n\t]);\n\treturn rows.map((row) => {\n\t\tconst span = spansBySessionId.get(row.id);\n\t\tconst messageCount = messageCounts.get(row.id) ?? 0;\n\t\tconst gatewayPlatform = row.sourceKind === \"gateway\" && row.sourceId ? gatewayAttachments.get(row.sourceId)?.platform ?? null : null;\n\t\tconst triggerType = row.sourceKind === \"trigger\" && row.sourceId ? triggerTypes.get(row.sourceId) ?? null : null;\n\t\treturn {\n\t\t\trow,\n\t\t\tspan,\n\t\t\tmessageCount,\n\t\t\tstatus: agentSessionStatusFromRow(row, span, messageCount),\n\t\t\tgatewayPlatform,\n\t\t\ttriggerType\n\t\t};\n\t});\n}\nasync function buildAgentSessionSummaries(rows, options) {\n\tconst enriched = await enrichSessionRows(rows);\n\tconst userIds = [...new Set(enriched.map((entry) => entry.row.ranByUserId).filter((id) => Boolean(id) && Boolean(options?.resolveUserName)))];\n\tconst userNames = /* @__PURE__ */ new Map();\n\tif (options?.resolveUserName && userIds.length > 0) await Promise.all(userIds.map(async (userId) => {\n\t\tuserNames.set(userId, await options.resolveUserName(userId));\n\t}));\n\treturn enriched.map((entry) => agentSessionSummaryFromParts({\n\t\trow: entry.row,\n\t\tstatus: entry.status,\n\t\tmessageCount: entry.messageCount,\n\t\tgatewayPlatform: entry.gatewayPlatform,\n\t\ttriggerType: entry.triggerType,\n\t\tranByUserName: entry.row.ranByUserId ? userNames.get(entry.row.ranByUserId) ?? null : null\n\t}));\n}\nasync function listAgentSessionsPaginated(options) {\n\tconst items = [];\n\tlet cursor = options.cursor;\n\tlet nextCursor = null;\n\twhile (items.length < options.limit) {\n\t\tconst page = await listAgentSessionRowsPaginated({\n\t\t\tagentSlug: options.agentSlug,\n\t\t\tlimit: options.limit,\n\t\t\tcursor,\n\t\t\tsource: options.source\n\t\t});\n\t\tconst summaries = await buildAgentSessionSummaries(page.rows, { resolveUserName: options.resolveUserName });\n\t\tfor (const summary of summaries) {\n\t\t\tif (options.status && summary.status !== options.status) continue;\n\t\t\titems.push(summary);\n\t\t\tif (items.length >= options.limit) {\n\t\t\t\tnextCursor = page.nextCursor;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (items.length >= options.limit || !page.nextCursor) {\n\t\t\tif (items.length < options.limit) nextCursor = null;\n\t\t\tbreak;\n\t\t}\n\t\tcursor = page.nextCursor;\n\t}\n\treturn {\n\t\titems,\n\t\tnextCursor\n\t};\n}\nasync function buildAgentSessionDetail(options) {\n\tconst row = await selectAgentSessionForAgent(options.agentSlug, options.sessionId);\n\tif (!row) return null;\n\tconst includeGateway = options.include.includes(\"gateway\");\n\tconst includeMessages = options.include.includes(\"messages\");\n\tconst includeEvents = options.include.includes(\"events\");\n\tconst includeTrace = options.include.includes(\"trace\");\n\tconst [enrichedRows, gatewayThread, messages, compactionEvents, events, traceData] = await Promise.all([\n\t\tenrichSessionRows([row]),\n\t\tincludeGateway ? selectGatewayThreadSessionBySessionId(row.id) : Promise.resolve(void 0),\n\t\tincludeMessages ? listMessagePayloads(row.id, MESSAGE_EVENT_TYPE).then((payloads) => payloads.map(sanitizeMessagePayloadContext)) : Promise.resolve([]),\n\t\tincludeMessages ? listCompactionEventsForSession(row.id) : Promise.resolve([]),\n\t\tincludeEvents ? listAgentEventsForSession(row.id).then((rows) => rows.map(agentEventFromRow)) : Promise.resolve([]),\n\t\tincludeTrace ? getTraceForAgentSession(row.id) : Promise.resolve(null)\n\t]);\n\tconst enriched = enrichedRows[0];\n\tlet gateway = null;\n\tif (includeGateway && gatewayThread) gateway = gatewaySessionDetailFromParts(gatewayThread, (await selectGatewayAttachmentById(gatewayThread.attachmentId))?.slug ?? null);\n\treturn {\n\t\tsession: agentSessionRecordFromParts({\n\t\t\trow,\n\t\t\tagentSlug: options.agentSlug,\n\t\t\tstatus: enriched.status,\n\t\t\tmessageCount: enriched.messageCount,\n\t\t\terror: sessionErrorFromSpan(enriched.span)\n\t\t}),\n\t\tgateway,\n\t\tmessages,\n\t\tevents,\n\t\tcompactionEvents,\n\t\ttrace: traceData ? traceResponseToJson(traceData) : null\n\t};\n}\n//#endregion\n//#region src/workflows/run-detail.ts\nasync function buildWorkflowRunDetail(options) {\n\tconst row = await selectWorkflowRunForWorkflow(options.workflowSlug, options.runId);\n\tif (!row) return null;\n\tconst includeTrigger = options.include.includes(\"trigger\");\n\tconst includeSteps = options.include.includes(\"steps\");\n\tconst includeTrace = options.include.includes(\"trace\");\n\tlet trigger = null;\n\tif (includeTrigger && row.triggerRunId) {\n\t\tconst triggerRun = await selectTriggerRunById(row.triggerRunId);\n\t\tif (triggerRun) {\n\t\t\tlet attachmentSlug = null;\n\t\t\tif (row.attachmentId) attachmentSlug = (await selectTriggerAttachmentById(row.attachmentId))?.slug ?? null;\n\t\t\ttrigger = triggerRunDetailFromRow(triggerRun, attachmentSlug);\n\t\t}\n\t}\n\tconst steps = includeSteps ? (await listStepCompletedEvents(row.id)).map(workflowStepRunFromEvent) : [];\n\tlet trace = null;\n\tif (includeTrace) {\n\t\tconst traceData = await getTraceForWorkflowRun(row.id);\n\t\ttrace = traceData ? traceResponseToJson(traceData) : null;\n\t}\n\treturn {\n\t\trun: workflowRunRecordFromRow(row),\n\t\ttrigger,\n\t\tsteps,\n\t\ttrace\n\t};\n}\n//#endregion\n//#region src/history/helpers.ts\nfunction titleCaseResourceName(slug, explicitName) {\n\tif (explicitName?.trim()) return explicitName.trim();\n\tconst normalized = slug.split(/[/_-]+/).filter(Boolean).join(\" \");\n\tif (!normalized) return slug;\n\treturn normalized.replace(/\\b\\w/g, (char) => char.toUpperCase());\n}\nfunction triggerLabelFromRaw(raw) {\n\tif (raw === \"api\") return \"API\";\n\treturn raw.charAt(0).toUpperCase() + raw.slice(1);\n}\nfunction timeInQueueMsBetween(triggeredAt, startedAt) {\n\tif (!startedAt) return null;\n\treturn Math.max(0, startedAt.getTime() - triggeredAt.getTime());\n}\n/**\n* Empty usage block for a `HistoryRunDetail` core. Usage lives in platform\n* `usage_events`; the platform history route overlays the real line items.\n*/\nfunction stubHistoryUsage(durationMs) {\n\treturn {\n\t\trunDurationMs: durationMs,\n\t\tlineItems: [],\n\t\ttotalBilledUsd: 0,\n\t\texternalProviderCostUsd: 0\n\t};\n}\n//#endregion\n//#region src/history/trace-messages.ts\nfunction metadataRecord(metadata) {\n\tif (metadata && typeof metadata === \"object\" && !Array.isArray(metadata)) return metadata;\n\treturn {};\n}\nfunction attachMessagesToAgentSessionSpans(spans, messages) {\n\tconst sessionSpans = spans.filter((span) => span.kind === \"agent_session\").sort((left, right) => Date.parse(left.startedAt) - Date.parse(right.startedAt));\n\tif (sessionSpans.length === 0) return spans;\n\tconst sortedMessages = [...messages].sort((left, right) => left.createdAt.getTime() - right.createdAt.getTime());\n\tconst messagesBySpanId = /* @__PURE__ */ new Map();\n\tfor (let index = 0; index < sessionSpans.length; index += 1) {\n\t\tconst span = sessionSpans[index];\n\t\tconst windowStartMs = Date.parse(span.startedAt);\n\t\tconst windowEndMs = index + 1 < sessionSpans.length ? Date.parse(sessionSpans[index + 1].startedAt) : Number.POSITIVE_INFINITY;\n\t\tconst slice = sortedMessages.filter((message) => {\n\t\t\tconst createdAtMs = message.createdAt.getTime();\n\t\t\treturn createdAtMs >= windowStartMs && createdAtMs < windowEndMs;\n\t\t}).map((message) => message.payload);\n\t\tmessagesBySpanId.set(span.id, slice);\n\t}\n\treturn spans.map((span) => {\n\t\tif (span.kind !== \"agent_session\") return span;\n\t\tconst { messages: _stale, ...rest } = metadataRecord(span.metadata);\n\t\treturn {\n\t\t\t...span,\n\t\t\tmetadata: {\n\t\t\t\t...rest,\n\t\t\t\tmessages: messagesBySpanId.get(span.id) ?? []\n\t\t\t}\n\t\t};\n\t});\n}\n//#endregion\n//#region src/history/serialize.ts\nfunction workflowTriggerRaw(run) {\n\tif (run.sourceKind === \"gateway\") return \"gateway\";\n\treturn run.trigger;\n}\nfunction agentTriggerRaw(session) {\n\treturn session.sourceKind;\n}\nfunction workflowTriggerRawFromParts(run, override) {\n\treturn override ?? workflowTriggerRaw(run);\n}\nfunction agentTriggerRawFromParts(session, override) {\n\treturn override ?? agentTriggerRaw(session);\n}\nfunction durationMsBetween(startedAt, finishedAt) {\n\tif (!startedAt || !finishedAt) return null;\n\treturn Math.max(0, finishedAt.getTime() - startedAt.getTime());\n}\nfunction historyRunFromWorkflow(parts) {\n\tconst { run, workflow, stepCount } = parts;\n\tconst resourceKey = run.workflowSlug;\n\tconst resourceId = workflow?.id ?? run.workflowSlug;\n\tconst resourceName = titleCaseResourceName(resourceKey, workflow?.name);\n\tconst status = run.status;\n\tconst startedAt = run.startedAt ?? run.triggeredAt;\n\tconst triggerRaw = workflowTriggerRawFromParts(run, parts.triggerRaw);\n\treturn {\n\t\tid: run.id,\n\t\tkind: \"workflow\",\n\t\ttraceId: run.triggerRunId ?? run.id,\n\t\tprojectId: run.projectId,\n\t\tresourceKey,\n\t\tresourceId,\n\t\tresourceName,\n\t\tstatus,\n\t\ttriggeredAt: run.triggeredAt.toISOString(),\n\t\ttimeInQueueMs: timeInQueueMsBetween(run.triggeredAt, run.startedAt),\n\t\tstartedAt: startedAt.toISOString(),\n\t\tfinishedAt: run.finishedAt?.toISOString() ?? null,\n\t\tdurationMs: durationMsBetween(startedAt, run.finishedAt),\n\t\ttriggerLabel: triggerLabelFromRaw(triggerRaw),\n\t\ttriggerRaw,\n\t\tranByUserId: run.ranByUserId ?? null,\n\t\tmodelsUsed: parts.modelsUsed ?? [],\n\t\totherServicesUsed: parts.otherServicesUsed ?? [],\n\t\ttotalCostUsd: parts.totalCostUsd ?? 0,\n\t\tstepCount\n\t};\n}\nfunction historyRunFromAgent(parts) {\n\tconst { session, agent, status, messageCount } = parts;\n\tconst resourceKey = agent.slug;\n\tconst triggerRaw = agentTriggerRawFromParts(session, parts.triggerRaw);\n\tconst startedAt = session.createdAt;\n\tconst finishedAt = status === \"running\" ? null : session.canceledAt ?? session.updatedAt;\n\treturn {\n\t\tid: session.id,\n\t\tkind: \"agent\",\n\t\ttraceId: session.id,\n\t\tprojectId: session.projectId,\n\t\tresourceKey,\n\t\tresourceId: agent.id,\n\t\tresourceName: titleCaseResourceName(resourceKey, agent.name),\n\t\tstatus,\n\t\ttriggeredAt: session.createdAt.toISOString(),\n\t\ttimeInQueueMs: null,\n\t\tstartedAt: startedAt.toISOString(),\n\t\tfinishedAt: finishedAt?.toISOString() ?? null,\n\t\tdurationMs: parts.totalDurationMs ?? 0,\n\t\ttriggerLabel: triggerLabelFromRaw(triggerRaw),\n\t\ttriggerRaw,\n\t\tranByUserId: session.ranByUserId ?? null,\n\t\tmodelsUsed: parts.modelsUsed ?? [],\n\t\totherServicesUsed: parts.otherServicesUsed ?? [],\n\t\ttotalCostUsd: parts.totalCostUsd ?? 0,\n\t\tmessageCount\n\t};\n}\nfunction mapTrace(trace, messageEvents = []) {\n\treturn {\n\t\ttraceId: trace.traceId,\n\t\ttrigger: trace.trigger ? {\n\t\t\ttriggerType: trace.trigger.triggerType,\n\t\t\ttriggerRunId: trace.trigger.triggerRunId,\n\t\t\t...trace.trigger.workflowSlug ? { workflowKey: trace.trigger.workflowSlug } : {},\n\t\t\t...trace.trigger.agentSlug ? { agentKey: trace.trigger.agentSlug } : {},\n\t\t\tattachmentId: trace.trigger.attachmentId ?? null,\n\t\t\tattachmentSlug: trace.trigger.attachmentSlug ?? null,\n\t\t\troute: trace.trigger.route,\n\t\t\tsourcePath: trace.trigger.sourcePath ?? null\n\t\t} : null,\n\t\tgateway: trace.gateway,\n\t\tspans: attachMessagesToAgentSessionSpans(trace.spans, messageEvents),\n\t\tlogs: trace.logs\n\t};\n}\nasync function buildHistoryWorkflowRunDetail(workflowSlug, runId) {\n\tconst detail = await buildWorkflowRunDetail({\n\t\tworkflowSlug,\n\t\trunId,\n\t\tinclude: [\n\t\t\t\"trigger\",\n\t\t\t\"steps\",\n\t\t\t\"trace\"\n\t\t]\n\t});\n\tif (!detail) return null;\n\tconst durationMs = durationMsBetween(detail.run.startedAt ? new Date(detail.run.startedAt) : null, detail.run.finishedAt ? new Date(detail.run.finishedAt) : null);\n\treturn {\n\t\tkind: \"workflow\",\n\t\trun: {\n\t\t\tid: detail.run.id,\n\t\t\tworkflowKey: detail.run.workflowSlug,\n\t\t\tstatus: detail.run.status,\n\t\t\ttrigger: detail.run.trigger,\n\t\t\ttriggeredAt: detail.run.triggeredAt,\n\t\t\tstartedAt: detail.run.startedAt,\n\t\t\tfinishedAt: detail.run.finishedAt,\n\t\t\tinput: detail.run.input,\n\t\t\toutput: detail.run.output,\n\t\t\terror: detail.run.error\n\t\t},\n\t\ttrigger: detail.trigger ? {\n\t\t\tid: detail.trigger.id,\n\t\t\tattachmentSlug: detail.trigger.attachmentSlug,\n\t\t\ttriggerType: detail.trigger.triggerType,\n\t\t\tsourcePath: detail.trigger.sourcePath,\n\t\t\tpayload: detail.trigger.payload,\n\t\t\ttriggeredAt: detail.trigger.triggeredAt\n\t\t} : null,\n\t\tsteps: detail.steps,\n\t\ttrace: detail.trace ? mapTrace(detail.trace) : null,\n\t\tusage: stubHistoryUsage(durationMs)\n\t};\n}\nasync function buildHistoryAgentSessionDetail(agentSlug, sessionId) {\n\tconst [detail, messageEvents, compactionEvents] = await Promise.all([\n\t\tbuildAgentSessionDetail({\n\t\t\tagentSlug,\n\t\t\tsessionId,\n\t\t\tinclude: [\"gateway\", \"trace\"]\n\t\t}),\n\t\tlistMessageEventsForSession(sessionId, MESSAGE_EVENT_TYPE),\n\t\tlistCompactionEventsForSession(sessionId)\n\t]);\n\tif (!detail) return null;\n\tconst sanitizedMessageEvents = messageEvents.map((event) => ({\n\t\t...event,\n\t\tpayload: sanitizeMessagePayloadContext(event.payload)\n\t}));\n\treturn {\n\t\tkind: \"agent\",\n\t\trunId: detail.session.id,\n\t\tsession: {\n\t\t\tid: detail.session.id,\n\t\t\tagentKey: detail.session.agentSlug,\n\t\t\tstatus: detail.session.status,\n\t\t\tsource: detail.session.source,\n\t\t\tsourceId: detail.session.sourceId,\n\t\t\tcreatedAt: detail.session.createdAt,\n\t\t\tupdatedAt: detail.session.updatedAt,\n\t\t\tmessageCount: detail.session.messageCount,\n\t\t\terror: detail.session.error\n\t\t},\n\t\tgateway: detail.gateway ? {\n\t\t\tthreadId: detail.gateway.threadId,\n\t\t\tattachmentSlug: detail.gateway.attachmentSlug\n\t\t} : null,\n\t\tmessages: sanitizedMessageEvents.map((event) => {\n\t\t\treturn {\n\t\t\t\t...typeof event.payload === \"object\" && event.payload !== null ? event.payload : { value: event.payload },\n\t\t\t\tseq: event.seq,\n\t\t\t\tsentAt: event.createdAt.toISOString()\n\t\t\t};\n\t\t}),\n\t\tcompactionEvents,\n\t\ttrace: detail.trace ? mapTrace(detail.trace, sanitizedMessageEvents) : null,\n\t\tusage: stubHistoryUsage(detail.session.totalDurationMs ?? null)\n\t};\n}\n//#endregion\n//#region src/queries/history/list-runs.ts\nasync function listWorkflowHistoryRuns(options, fetchLimit) {\n\tconst filter = options.projectIds !== void 0 ? { projectIds: options.projectIds } : void 0;\n\tconst conditions = historyProjectConditions(workflowRuns.projectId, filter);\n\tif (filter?.projectIds !== void 0 && filter.projectIds.length === 0) return [];\n\tif (options.workflow) {\n\t\tconditions.push(eq$1(workflowRuns.projectId, options.workflow.projectId));\n\t\tconditions.push(eq$1(workflowRuns.workflowSlug, options.workflow.slug));\n\t}\n\tif (options.status) if (options.status === \"running\") conditions.push(inArray$1(workflowRuns.status, [\"running\", \"pending\"]));\n\telse conditions.push(eq$1(workflowRuns.status, options.status));\n\tconst db = getDb();\n\tconst rows = await (conditions.length > 0 ? db.select({\n\t\trun: workflowRuns,\n\t\tworkflow: workflows\n\t}).from(workflowRuns).leftJoin(workflows, and$1(eq$1(workflows.projectId, workflowRuns.projectId), eq$1(workflows.slug, workflowRuns.workflowSlug), isNull(workflows.deletedAt))).where(and$1(...conditions)) : db.select({\n\t\trun: workflowRuns,\n\t\tworkflow: workflows\n\t}).from(workflowRuns).leftJoin(workflows, and$1(eq$1(workflows.projectId, workflowRuns.projectId), eq$1(workflows.slug, workflowRuns.workflowSlug), isNull(workflows.deletedAt)))).orderBy(desc(workflowRuns.triggeredAt), desc(workflowRuns.id)).limit(fetchLimit);\n\tconst runIds = rows.map((row) => row.run.id);\n\tconst triggerRunIds = rows.map((row) => row.run.sourceKind === \"trigger\" ? row.run.triggerRunId : null).filter((id) => Boolean(id));\n\tconst [stepCounts, triggerTypes] = await Promise.all([countStepCompletedEventsByRunIds(runIds), selectTriggerTypesByIds(triggerRunIds)]);\n\treturn rows.map((row) => historyRunFromWorkflow({\n\t\trun: row.run,\n\t\tworkflow: row.workflow,\n\t\tstepCount: stepCounts.get(row.run.id) ?? 0,\n\t\ttriggerRaw: resolveWorkflowTriggerRaw(row.run, triggerTypes)\n\t}));\n}\nasync function listAgentHistoryRuns(filter, fetchLimit) {\n\tif (filter?.projectIds !== void 0 && filter.projectIds.length === 0) return [];\n\tconst db = getDb();\n\tconst conditions = [isNull(agentSessions.deletedAt), isNull(agents.deletedAt)];\n\tif (filter?.projectIds !== void 0) conditions.push(inArray$1(agentSessions.projectId, filter.projectIds));\n\tconst rows = await db.select({\n\t\tsession: agentSessions,\n\t\tagent: agents\n\t}).from(agentSessions).innerJoin(agents, eq$1(agents.id, agentSessions.agentId)).where(and$1(...conditions)).orderBy(desc(agentSessions.updatedAt), desc(agentSessions.id)).limit(fetchLimit);\n\tconst sessionIds = rows.map((row) => row.session.id);\n\tconst triggerRunIds = rows.map((row) => row.session.sourceKind === \"trigger\" ? row.session.sourceId : null).filter((id) => Boolean(id));\n\tconst [messageCounts, triggerTypes, spansBySessionId] = await Promise.all([\n\t\tcountMessageEventsBySessionIds(sessionIds, MESSAGE_EVENT_TYPE),\n\t\tselectTriggerTypesByIds(triggerRunIds),\n\t\tselectLatestAgentSessionSpansByRefIds(sessionIds)\n\t]);\n\treturn rows.map((row) => {\n\t\tconst messageCount = messageCounts.get(row.session.id) ?? 0;\n\t\tconst span = spansBySessionId.get(row.session.id);\n\t\treturn historyRunFromAgent({\n\t\t\tsession: row.session,\n\t\t\tagent: row.agent,\n\t\t\tstatus: agentSessionStatusFromSpan(span, messageCount, row.session.canceledAt),\n\t\t\tmessageCount,\n\t\t\ttriggerRaw: resolveAgentTriggerRaw(row.session, triggerTypes),\n\t\t\ttotalDurationMs: row.session.totalDurationMs\n\t\t});\n\t});\n}\nfunction sortHistoryRuns(items) {\n\treturn [...items].sort((a, b) => new Date(b.startedAt).getTime() - new Date(a.startedAt).getTime());\n}\nasync function listHistoryRuns(options = {}) {\n\tconst limit = options.limit ?? 100;\n\tconst workflowFetchLimit = limit;\n\tconst agentFetchLimit = options.status && options.kind !== \"workflow\" ? resolveFetchLimit(limit, options.status) : limit;\n\tconst includeWorkflows = options.kind !== \"agent\";\n\tconst includeAgents = options.kind !== \"workflow\";\n\tconst projectFilter = options.projectIds !== void 0 ? { projectIds: options.projectIds } : void 0;\n\tconst [workflowItems, agentItems] = await Promise.all([includeWorkflows ? listWorkflowHistoryRuns(options, workflowFetchLimit) : Promise.resolve([]), includeAgents ? listAgentHistoryRuns(projectFilter, agentFetchLimit) : Promise.resolve([])]);\n\tlet items = sortHistoryRuns([...workflowItems, ...agentItems]);\n\tif (options.status && includeAgents) items = items.filter((item) => matchesStatusFilter(item.status, options.status));\n\treturn items.slice(0, limit);\n}\n//#endregion\n//#region src/queries/history/find-run-core.ts\nasync function findHistoryRunCore(runId) {\n\tconst db = getDb();\n\tconst workflowRow = (await db.select({\n\t\trun: workflowRuns,\n\t\tworkflow: workflows\n\t}).from(workflowRuns).leftJoin(workflows, and$1(eq$1(workflows.projectId, workflowRuns.projectId), eq$1(workflows.slug, workflowRuns.workflowSlug), isNull(workflows.deletedAt))).where(eq$1(workflowRuns.id, runId)).limit(1))[0];\n\tif (workflowRow) {\n\t\tconst [stepCount, triggerTypes] = await Promise.all([countStepCompletedEvents(workflowRow.run.id), selectTriggerTypesByIds(workflowRow.run.sourceKind === \"trigger\" && workflowRow.run.triggerRunId ? [workflowRow.run.triggerRunId] : [])]);\n\t\treturn historyRunFromWorkflow({\n\t\t\trun: workflowRow.run,\n\t\t\tworkflow: workflowRow.workflow,\n\t\t\tstepCount,\n\t\t\ttriggerRaw: resolveWorkflowTriggerRaw(workflowRow.run, triggerTypes)\n\t\t});\n\t}\n\tconst agentRow = (await db.select({\n\t\tsession: agentSessions,\n\t\tagent: agents\n\t}).from(agentSessions).innerJoin(agents, eq$1(agents.id, agentSessions.agentId)).where(and$1(eq$1(agentSessions.id, runId), isNull(agentSessions.deletedAt), isNull(agents.deletedAt))).limit(1))[0];\n\tif (!agentRow) return null;\n\tconst sessionId = agentRow.session.id;\n\tconst [messageCounts, triggerTypes, spansBySessionId] = await Promise.all([\n\t\tcountMessageEventsBySessionIds([sessionId], MESSAGE_EVENT_TYPE),\n\t\tselectTriggerTypesByIds(agentRow.session.sourceKind === \"trigger\" && agentRow.session.sourceId ? [agentRow.session.sourceId] : []),\n\t\tselectLatestAgentSessionSpansByRefIds([sessionId])\n\t]);\n\tconst messageCount = messageCounts.get(sessionId) ?? 0;\n\tconst span = spansBySessionId.get(sessionId);\n\treturn historyRunFromAgent({\n\t\tsession: agentRow.session,\n\t\tagent: agentRow.agent,\n\t\tstatus: agentSessionStatusFromSpan(span, messageCount, agentRow.session.canceledAt),\n\t\tmessageCount,\n\t\ttriggerRaw: resolveAgentTriggerRaw(agentRow.session, triggerTypes),\n\t\ttotalDurationMs: agentRow.session.totalDurationMs\n\t});\n}\n//#endregion\n//#region src/queries/list-cursor.ts\nfunction encodeCreatedAtIdCursor(cursor) {\n\treturn Buffer.from(JSON.stringify({\n\t\tcreatedAt: cursor.createdAt.toISOString(),\n\t\tid: cursor.id\n\t})).toString(\"base64url\");\n}\nfunction decodeCreatedAtIdCursor(value) {\n\ttry {\n\t\tconst parsed = JSON.parse(Buffer.from(value, \"base64url\").toString(\"utf8\"));\n\t\tif (typeof parsed.createdAt !== \"string\" || typeof parsed.id !== \"string\") return null;\n\t\tconst createdAt = new Date(parsed.createdAt);\n\t\tif (Number.isNaN(createdAt.getTime())) return null;\n\t\treturn {\n\t\t\tcreatedAt,\n\t\t\tid: parsed.id\n\t\t};\n\t} catch {\n\t\treturn null;\n\t}\n}\n//#endregion\n//#region src/queries/credential-instances/index.ts\n/** Org/user credentials live once in the shared org database; project scope stays per-project. */\nfunction credentialScopeAnd(scopeType, ...conditions) {\n\tif (scopeType === \"project\") return scopedAnd(credentialInstances, ...conditions);\n\treturn and$1(...conditions.filter(Boolean));\n}\nfunction resolveCredentialProjectId(scopeType) {\n\tif (scopeType === \"project\") return projectScopeId();\n\treturn getServerTenantScopeId();\n}\nfunction credentialVisibilityCondition(projectIds) {\n\tif (projectIds === void 0) return;\n\tif (projectIds.length === 0) return ne(credentialInstances.scopeType, \"project\");\n\treturn or(ne(credentialInstances.scopeType, \"project\"), inArray$1(credentialInstances.projectId, projectIds), inArray$1(credentialInstances.scopeId, projectIds));\n}\n/** Credential instances in the org database, optionally narrowed to accessible projects. */\nasync function listAllCredentialInstances(options = {}) {\n\tconst db = getDb();\n\tconst limit = options.limit ?? 200;\n\tconst conditions = [];\n\tconst visibility = credentialVisibilityCondition(options.projectIds);\n\tif (visibility) conditions.push(visibility);\n\tif (options.cursor) {\n\t\tconst decoded = decodeCreatedAtIdCursor(options.cursor);\n\t\tif (!decoded) throw new Error(\"Invalid cursor\");\n\t\tconditions.push(or(lt(credentialInstances.createdAt, decoded.createdAt), and$1(eq$1(credentialInstances.createdAt, decoded.createdAt), lt(credentialInstances.id, decoded.id))));\n\t}\n\tconst rows = await db.select().from(credentialInstances).where(conditions.length > 0 ? and$1(...conditions) : void 0).orderBy(desc(credentialInstances.createdAt), desc(credentialInstances.id)).limit(limit + 1);\n\tconst hasMore = rows.length > limit;\n\tconst items = hasMore ? rows.slice(0, limit) : rows;\n\tconst last = items[items.length - 1];\n\treturn {\n\t\titems,\n\t\tnextCursor: hasMore && last ? encodeCreatedAtIdCursor({\n\t\t\tcreatedAt: last.createdAt,\n\t\t\tid: last.id\n\t\t}) : null\n\t};\n}\nasync function listCredentialInstancesByConnectionId(connectionId) {\n\treturn getDb().select().from(credentialInstances).where(eq$1(credentialInstances.connectionId, connectionId));\n}\nasync function selectCredentialInstanceById(id) {\n\treturn (await getDb().select().from(credentialInstances).where(eq$1(credentialInstances.id, id)).limit(1))[0];\n}\nasync function listCredentialInstancesByScope(options) {\n\tconst db = getDb();\n\tconst conditions = [options.scopeId === null ? and$1(eq$1(credentialInstances.scopeType, options.scopeType), isNull(credentialInstances.scopeId)) : and$1(eq$1(credentialInstances.scopeType, options.scopeType), eq$1(credentialInstances.scopeId, options.scopeId))];\n\tif (options.appSlug) conditions.push(eq$1(credentialInstances.appSlug, options.appSlug));\n\treturn db.select().from(credentialInstances).where(credentialScopeAnd(options.scopeType, ...conditions));\n}\nasync function selectCredentialInstancesForScope(appSlug, scopeType, scopeId) {\n\tconst db = getDb();\n\tconst scopeCondition = scopeId === null ? and$1(eq$1(credentialInstances.scopeType, scopeType), isNull(credentialInstances.scopeId)) : and$1(eq$1(credentialInstances.scopeType, scopeType), eq$1(credentialInstances.scopeId, scopeId));\n\treturn db.select().from(credentialInstances).where(credentialScopeAnd(scopeType, eq$1(credentialInstances.appSlug, appSlug), scopeCondition));\n}\n/** Batch fetch instances for many (appSlug, scopeType, scopeId) tuples in one query. */\nasync function selectCredentialInstancesForScopes(scopes) {\n\tif (scopes.length === 0) return [];\n\tconst db = getDb();\n\tconst conditions = scopes.map((scope) => and$1(eq$1(credentialInstances.appSlug, scope.appSlug), eq$1(credentialInstances.scopeType, scope.scopeType), eq$1(credentialInstances.scopeId, scope.scopeId)));\n\treturn db.select().from(credentialInstances).where(or(...conditions));\n}\nasync function selectCredentialInstancesByIds(ids) {\n\tif (ids.length === 0) return [];\n\treturn getDb().select().from(credentialInstances).where(inArray$1(credentialInstances.id, ids));\n}\nasync function insertCredentialInstance(values) {\n\tawait getDb().insert(credentialInstances).values({\n\t\t...values,\n\t\tprojectId: resolveCredentialProjectId(values.scopeType),\n\t\tisDefault: values.isDefault ? 1 : 0,\n\t\tgrantedScopes: values.grantedScopes ?? null\n\t});\n}\nasync function upsertCredentialInstance(values) {\n\tif (await selectCredentialInstanceById(values.id)) {\n\t\tawait getDb().update(credentialInstances).set({\n\t\t\tappSlug: values.appSlug,\n\t\t\tslug: values.slug,\n\t\t\tname: values.name ?? null,\n\t\t\tscopeType: values.scopeType,\n\t\t\tscopeId: values.scopeId,\n\t\t\tlabel: values.label,\n\t\t\tisDefault: values.isDefault ? 1 : 0,\n\t\t\tauthKind: values.authKind,\n\t\t\tciphertext: values.ciphertext,\n\t\t\tconnectionId: values.connectionId,\n\t\t\tsharedConnectionId: values.sharedConnectionId,\n\t\t\t...values.grantedScopes !== void 0 ? { grantedScopes: values.grantedScopes } : {},\n\t\t\tupdatedAt: values.updatedAt\n\t\t}).where(eq$1(credentialInstances.id, values.id));\n\t\treturn;\n\t}\n\tawait insertCredentialInstance(values);\n}\n/** Record that a credential was just resolved/used. Targeted by id; never throws on a missing row. */\nasync function touchCredentialInstanceLastUsed(id) {\n\tawait getDb().update(credentialInstances).set({ lastUsedAt: /* @__PURE__ */ new Date() }).where(eq$1(credentialInstances.id, id));\n}\nasync function deleteCredentialInstanceById(id) {\n\tif (!await selectCredentialInstanceById(id)) return false;\n\tawait getDb().delete(credentialInstances).where(eq$1(credentialInstances.id, id));\n\treturn true;\n}\nasync function clearCredentialInstanceDefaults(options) {\n\tconst db = getDb();\n\tconst scopeCondition = options.scopeId === null ? and$1(eq$1(credentialInstances.scopeType, options.scopeType), isNull(credentialInstances.scopeId)) : and$1(eq$1(credentialInstances.scopeType, options.scopeType), eq$1(credentialInstances.scopeId, options.scopeId));\n\tconst conditions = [\n\t\teq$1(credentialInstances.appSlug, options.appSlug),\n\t\tscopeCondition,\n\t\teq$1(credentialInstances.isDefault, 1)\n\t];\n\tif (options.exceptId) conditions.push(ne(credentialInstances.id, options.exceptId));\n\tawait db.update(credentialInstances).set({\n\t\tisDefault: 0,\n\t\tupdatedAt: /* @__PURE__ */ new Date()\n\t}).where(credentialScopeAnd(options.scopeType, ...conditions));\n}\n//#endregion\n//#region src/queries/credential-assignments/index.ts\nasync function listCredentialAssignmentsByTarget(options) {\n\treturn getDb().select().from(credentialAssignments).where(scopedAnd(credentialAssignments, eq$1(credentialAssignments.targetType, options.targetType), eq$1(credentialAssignments.targetKey, options.targetKey)));\n}\nasync function selectCredentialAssignmentById(id) {\n\treturn (await getDb().select().from(credentialAssignments).where(scopedAnd(credentialAssignments, eq$1(credentialAssignments.id, id))).limit(1))[0];\n}\nasync function upsertCredentialAssignment(values) {\n\tconst db = getDb();\n\tconst id = values.id ?? crypto.randomUUID();\n\tconst now = values.updatedAt;\n\tconst projectId = projectScopeId();\n\treturn (await db.insert(credentialAssignments).values({\n\t\tid,\n\t\tprojectId,\n\t\ttargetType: values.targetType,\n\t\ttargetKey: values.targetKey,\n\t\tconsumerId: values.consumerId,\n\t\tcredentialSlug: values.credentialSlug,\n\t\tinstanceId: values.instanceId,\n\t\tcreatedAt: now,\n\t\tupdatedAt: now\n\t}).onConflictDoUpdate({\n\t\ttarget: [\n\t\t\tcredentialAssignments.projectId,\n\t\t\tcredentialAssignments.targetType,\n\t\t\tcredentialAssignments.targetKey,\n\t\t\tcredentialAssignments.consumerId,\n\t\t\tcredentialAssignments.credentialSlug\n\t\t],\n\t\tset: {\n\t\t\tinstanceId: values.instanceId,\n\t\t\tupdatedAt: now\n\t\t}\n\t}).returning())[0];\n}\nasync function deleteCredentialAssignmentById(id) {\n\tif (!await selectCredentialAssignmentById(id)) return false;\n\tawait getDb().delete(credentialAssignments).where(eq$1(credentialAssignments.id, id));\n\treturn true;\n}\n/**\n* Strip the per-occurrence suffix from a step correlation id so a loop's\n* iterations collapse to one consumer: `step:<callSiteId>#3` → `step:<callSiteId>`.\n* Credential bindings are keyed by the occurrence-independent call-site id, the\n* same key the workflow-canvas credential overlay uses (one binding per node).\n*/\nfunction stepConsumerId(correlationId) {\n\tconst hash = correlationId.lastIndexOf(\"#\");\n\treturn hash === -1 ? correlationId : correlationId.slice(0, hash);\n}\n/**\n* Distinct occurrence-independent step consumer ids (`step:<callSiteId>`) from\n* recent completed workflow runs — the credential-assignment consumer keys.\n*/\nasync function listRecentWorkflowStepConsumers(workflowSlug, runLimit = 5) {\n\tconst db = getDb();\n\tconst runIds = (await db.select({ id: workflowRuns.id }).from(workflowRuns).where(scopedAnd(workflowRuns, eq$1(workflowRuns.workflowSlug, workflowSlug))).orderBy(desc(workflowRuns.triggeredAt)).limit(runLimit)).map((row) => row.id);\n\tif (runIds.length === 0) return [];\n\tconst events = await db.select({ correlationId: workflowEvents.correlationId }).from(workflowEvents).where(scopedAnd(workflowEvents, inArray$1(workflowEvents.runId, runIds), eq$1(workflowEvents.type, \"step_completed\")));\n\tconst seen = /* @__PURE__ */ new Set();\n\tconst consumers = [];\n\tfor (const event of events) {\n\t\tif (!event.correlationId) continue;\n\t\tconst id = stepConsumerId(event.correlationId);\n\t\tif (seen.has(id)) continue;\n\t\tseen.add(id);\n\t\tconsumers.push(id);\n\t}\n\treturn consumers;\n}\n//#endregion\n//#region src/queries/trace-spans/index.ts\nfunction traceRootJoins$1(rootId) {\n\treturn {\n\t\tworkflowRuns: eq$1(workflowRuns.id, rootId),\n\t\ttriggerRuns: eq$1(triggerRuns.id, rootId),\n\t\tagentSessions: eq$1(agentSessions.id, rootId)\n\t};\n}\nasync function insertTraceSpan(values) {\n\tawait getDb().insert(traceSpans).values({\n\t\t...values,\n\t\tparentSpanId: values.parentSpanId ?? null,\n\t\tfinishedAt: values.finishedAt ?? null,\n\t\tmetadata: values.metadata ?? null,\n\t\terror: values.error ?? null\n\t});\n}\nasync function updateTraceSpanStatus(id, status, finishedAt, error) {\n\tif (!await selectTraceSpanById(id)) return;\n\tawait getDb().update(traceSpans).set({\n\t\tstatus,\n\t\tfinishedAt,\n\t\terror: error ?? null\n\t}).where(eq$1(traceSpans.id, id));\n}\nasync function selectTraceSpanById(id) {\n\tconst db = getDb();\n\tconst rows = await db.select({ span: traceSpans }).from(traceSpans).leftJoin(workflowRuns, eq$1(workflowRuns.id, traceSpans.traceId)).leftJoin(triggerRuns, eq$1(triggerRuns.id, traceSpans.traceId)).leftJoin(agentSessions, eq$1(agentSessions.id, traceSpans.traceId)).where(and$1(eq$1(traceSpans.id, id), traceRootProjectScopeFilter())).limit(1);\n\tif (rows[0]) return rows[0].span;\n\treturn (await db.select({ span: traceSpans }).from(traceSpans).leftJoin(workflowRuns, eq$1(workflowRuns.id, traceSpans.refId)).leftJoin(triggerRuns, eq$1(triggerRuns.id, traceSpans.refId)).leftJoin(agentSessions, eq$1(agentSessions.id, traceSpans.refId)).where(and$1(eq$1(traceSpans.id, id), traceRootProjectScopeFilter())).limit(1))[0]?.span;\n}\nasync function selectTraceSpanByRefId(refId) {\n\tconst db = getDb();\n\tconst joins = traceRootJoins$1(refId);\n\treturn (await db.select({ span: traceSpans }).from(traceSpans).leftJoin(workflowRuns, joins.workflowRuns).leftJoin(triggerRuns, joins.triggerRuns).leftJoin(agentSessions, joins.agentSessions).where(and$1(eq$1(traceSpans.refId, refId), traceRootProjectScopeFilter())).limit(1))[0]?.span;\n}\nasync function selectLatestAgentSessionSpanByRefId(refId) {\n\tconst db = getDb();\n\tconst joins = traceRootJoins$1(refId);\n\treturn (await db.select({ span: traceSpans }).from(traceSpans).leftJoin(workflowRuns, joins.workflowRuns).leftJoin(triggerRuns, joins.triggerRuns).leftJoin(agentSessions, joins.agentSessions).where(and$1(eq$1(traceSpans.refId, refId), eq$1(traceSpans.kind, \"agent_session\"), traceRootProjectScopeFilter())).orderBy(desc(traceSpans.startedAt)).limit(1))[0]?.span;\n}\nasync function listTraceSpansByTraceId(traceId) {\n\tconst db = getDb();\n\tconst joins = traceRootJoins$1(traceId);\n\treturn (await db.select({ span: traceSpans }).from(traceSpans).leftJoin(workflowRuns, joins.workflowRuns).leftJoin(triggerRuns, joins.triggerRuns).leftJoin(agentSessions, joins.agentSessions).where(and$1(eq$1(traceSpans.traceId, traceId), traceRootProjectScopeFilter())).orderBy(asc(traceSpans.startedAt))).map((row) => row.span);\n}\nasync function maxTraceLogSeq(traceId) {\n\tconst db = getDb();\n\tconst joins = traceRootJoins$1(traceId);\n\treturn (await db.select({ value: max$1(traceLogs.seq) }).from(traceLogs).leftJoin(workflowRuns, joins.workflowRuns).leftJoin(triggerRuns, joins.triggerRuns).leftJoin(agentSessions, joins.agentSessions).where(and$1(eq$1(traceLogs.traceId, traceId), traceRootProjectScopeFilter())))[0]?.value ?? 0;\n}\n//#endregion\n//#region src/queries/trace-logs/index.ts\nfunction traceRootJoins(rootId) {\n\treturn {\n\t\tworkflowRuns: eq$1(workflowRuns.id, rootId),\n\t\ttriggerRuns: eq$1(triggerRuns.id, rootId),\n\t\tagentSessions: eq$1(agentSessions.id, rootId)\n\t};\n}\nasync function insertTraceLogs(values) {\n\tif (values.length === 0) return;\n\tawait getDb().insert(traceLogs).values(values.map((entry) => ({\n\t\t...entry,\n\t\tdata: entry.data ?? null\n\t})));\n}\nasync function listTraceLogsByTraceId(traceId, options) {\n\tconst db = getDb();\n\tconst joins = traceRootJoins(traceId);\n\tconst conditions = [eq$1(traceLogs.traceId, traceId), traceRootProjectScopeFilter()];\n\tif (options?.spanId) conditions.push(eq$1(traceLogs.spanId, options.spanId));\n\tif (options?.afterSeq !== void 0) conditions.push(gt(traceLogs.seq, options.afterSeq));\n\tlet rows = await db.select({ log: traceLogs }).from(traceLogs).leftJoin(workflowRuns, joins.workflowRuns).leftJoin(triggerRuns, joins.triggerRuns).leftJoin(agentSessions, joins.agentSessions).where(and$1(...conditions)).orderBy(asc(traceLogs.seq));\n\trows = rows.map((row) => ({ log: row.log }));\n\tif (options?.limit !== void 0) rows = rows.slice(0, options.limit);\n\treturn rows.map((row) => row.log);\n}\n//#endregion\n//#region src/runs/source.ts\nfunction runSource(kind, id) {\n\treturn {\n\t\tkind,\n\t\tid: id ?? null\n\t};\n}\nfunction runSourceFromWorkflowRunMetadata(metadata) {\n\tif (metadata && typeof metadata === \"object\" && \"runId\" in metadata) {\n\t\tconst runId = metadata.runId;\n\t\tif (typeof runId === \"string\") return runSource(\"workflow\", runId);\n\t}\n}\nfunction sourceFromSpan(span) {\n\tswitch (span.kind) {\n\t\tcase \"workflow_run\": return runSource(\"workflow\", span.refId);\n\t\tcase \"agent_session\": return runSourceFromWorkflowRunMetadata(span.metadata) ?? runSource(\"agent\", span.refId);\n\t\tcase \"trigger_run\": return runSource(\"trigger\", span.refId);\n\t\tcase \"gateway_event\": {\n\t\t\tconst metadata = span.metadata;\n\t\t\tif (metadata && typeof metadata === \"object\" && \"gatewayAttachmentId\" in metadata) {\n\t\t\t\tconst attachmentId = metadata.gatewayAttachmentId;\n\t\t\t\tif (typeof attachmentId === \"string\") return runSource(\"gateway\", attachmentId);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tcase \"action\": return runSourceFromWorkflowRunMetadata(span.metadata);\n\t\tdefault: return;\n\t}\n}\nasync function resolveRunSourceFromTraceContext() {\n\tconst parent = getTraceContext();\n\tif (!parent?.spanId) return runSource(\"api\");\n\tconst span = await selectTraceSpanById(parent.spanId);\n\tif (!span) return runSource(\"api\");\n\treturn sourceFromSpan(span) ?? runSource(\"api\");\n}\n//#endregion\n//#region src/workflows/runs.ts\nfunction serializeError(error) {\n\tif (error instanceof Error) return {\n\t\tname: error.name,\n\t\tmessage: error.message\n\t};\n\treturn { message: String(error) };\n}\nfunction triggerRunType$1(trigger) {\n\treturn trigger;\n}\nfunction resolveWorkflowRunSource(input) {\n\tif (input.sourceKind) return runSource(input.sourceKind, input.sourceId);\n\tif (input.triggerRunId) return runSource(\"trigger\", input.triggerRunId);\n\tif (input.parentWorkflowRunId) return runSource(\"workflow\", input.parentWorkflowRunId);\n\treturn runSource(\"api\");\n}\nfunction workflowRunInsertValues(input, status) {\n\tconst source = resolveWorkflowRunSource(input);\n\tconst now = status === \"running\" ? /* @__PURE__ */ new Date() : null;\n\treturn {\n\t\tid: input.id,\n\t\tworkflowSlug: input.workflowSlug,\n\t\tattachmentId: input.attachmentId ?? null,\n\t\tsubscriptionId: input.subscriptionId ?? null,\n\t\ttriggerRunId: input.triggerRunId ?? null,\n\t\tparentWorkflowRunId: input.parentWorkflowRunId ?? null,\n\t\tparentSpanId: input.parentSpanId ?? null,\n\t\tsourceKind: source.kind,\n\t\tsourceId: source.id,\n\t\tranByUserId: input.ranByUserId ?? null,\n\t\tcredentialContext: input.credentialContext ?? null,\n\t\tstatus,\n\t\ttrigger: input.trigger,\n\t\ttriggeredAt: input.triggeredAt,\n\t\tstartedAt: now,\n\t\tinput: input.input ?? null,\n\t\toutput: null,\n\t\terror: null,\n\t\tfinishedAt: null\n\t};\n}\nasync function createWorkflowRun(input) {\n\tawait insertWorkflowRun(workflowRunInsertValues(input, \"running\"));\n}\nasync function createPendingWorkflowRun(input) {\n\tawait insertWorkflowRun(workflowRunInsertValues(input, \"pending\"));\n}\nasync function markWorkflowRunRunning(id) {\n\tawait markWorkflowRunRunningRow(id, /* @__PURE__ */ new Date());\n}\nasync function markWorkflowRunSleeping(id) {\n\tawait setWorkflowRunStatusRow(id, \"sleeping\");\n}\nasync function markWorkflowRunWaitingHook(id) {\n\tawait setWorkflowRunStatusRow(id, \"waiting_hook\");\n}\nasync function markWorkflowRunWaitingChildren(id) {\n\tawait setWorkflowRunStatusRow(id, \"waiting_children\");\n}\nasync function completeWorkflowRun(id, output) {\n\tawait completeWorkflowRunRow(id, output, /* @__PURE__ */ new Date());\n}\nasync function failWorkflowRun(id, error) {\n\tawait failWorkflowRunRow(id, serializeError(error), /* @__PURE__ */ new Date());\n}\nasync function finalizeCanceledWorkflowRun(id) {\n\tif (await cancelWorkflowRunRow(id, /* @__PURE__ */ new Date())) await appendWorkflowEvent({\n\t\tid: `run_canceled:${id}`,\n\t\trunId: id,\n\t\ttype: \"run_canceled\"\n\t});\n}\nasync function createAttachmentExecution(input) {\n\tconst triggerRunId = input.triggerRunId ?? crypto.randomUUID();\n\tconst workflowRunId = crypto.randomUUID();\n\tif (!input.triggerRunId) await insertTriggerRun({\n\t\tid: triggerRunId,\n\t\ttriggerId: input.triggerId,\n\t\tsourcePath: input.sourcePath ?? null,\n\t\ttriggerType: triggerRunType$1(input.trigger),\n\t\tpayload: input.payload ?? null,\n\t\ttriggeredAt: input.triggeredAt\n\t});\n\tawait insertWorkflowRun({\n\t\tid: workflowRunId,\n\t\tworkflowSlug: input.workflowSlug,\n\t\tattachmentId: input.attachmentId,\n\t\tsubscriptionId: input.subscriptionId ?? null,\n\t\ttriggerRunId,\n\t\tsourceKind: \"trigger\",\n\t\tsourceId: triggerRunId,\n\t\tstatus: \"running\",\n\t\ttrigger: input.trigger,\n\t\ttriggeredAt: input.triggeredAt,\n\t\tstartedAt: /* @__PURE__ */ new Date(),\n\t\tinput: input.input ?? null,\n\t\toutput: null,\n\t\terror: null,\n\t\tfinishedAt: null\n\t});\n\treturn {\n\t\tworkflowRunId,\n\t\ttriggerRunId\n\t};\n}\nasync function createPendingAttachmentExecution(input) {\n\tconst triggerRunId = input.triggerRunId ?? crypto.randomUUID();\n\tconst workflowRunId = crypto.randomUUID();\n\tif (!input.triggerRunId) await insertTriggerRun({\n\t\tid: triggerRunId,\n\t\ttriggerId: input.triggerId,\n\t\tsourcePath: input.sourcePath ?? null,\n\t\ttriggerType: triggerRunType$1(input.trigger),\n\t\tpayload: input.payload ?? null,\n\t\ttriggeredAt: input.triggeredAt\n\t});\n\tawait insertWorkflowRun({\n\t\tid: workflowRunId,\n\t\tworkflowSlug: input.workflowSlug,\n\t\tattachmentId: input.attachmentId,\n\t\tsubscriptionId: input.subscriptionId ?? null,\n\t\ttriggerRunId,\n\t\tsourceKind: \"trigger\",\n\t\tsourceId: triggerRunId,\n\t\tstatus: \"pending\",\n\t\ttrigger: input.trigger,\n\t\ttriggeredAt: input.triggeredAt,\n\t\tstartedAt: null,\n\t\tinput: input.input ?? null,\n\t\toutput: null,\n\t\terror: null,\n\t\tfinishedAt: null\n\t});\n\treturn {\n\t\tworkflowRunId,\n\t\ttriggerRunId\n\t};\n}\nasync function markAttachmentExecutionRunning(workflowRunId) {\n\tawait markWorkflowRunRunning(workflowRunId);\n}\n//#endregion\n//#region src/history/cancel.ts\nconst CANCELABLE_STATUSES = new Set([\n\t\"pending\",\n\t\"running\",\n\t\"sleeping\",\n\t\"waiting_hook\",\n\t\"waiting_children\"\n]);\nfunction isCancelableWorkflowStatus(status) {\n\treturn CANCELABLE_STATUSES.has(status);\n}\nfunction isCancelableAgentStatus(status, canceledAt) {\n\treturn !canceledAt && status !== \"completed\" && status !== \"failed\" && status !== \"canceled\";\n}\n/**\n* Lists active descendants in depth-first order. Source linkage covers agent\n* tools and subagents; `parentWorkflowRunId` covers workflow composition.\n*/\nasync function collectChildRunCancelTargets(kind, id) {\n\tconst seen = /* @__PURE__ */ new Set();\n\tconst targets = [];\n\tconst visit = async (parentKind, parentId) => {\n\t\tconst sourceKind = parentKind === \"workflow\" ? \"workflow\" : \"agent\";\n\t\tconst [sourcedWorkflows, composedWorkflows, agents] = await Promise.all([\n\t\t\tlistWorkflowRunsBySourceIds({\n\t\t\t\tsourceKind,\n\t\t\t\tsourceIds: [parentId]\n\t\t\t}),\n\t\t\tparentKind === \"workflow\" ? listWorkflowRunsByParentRunIds([parentId]) : Promise.resolve(/* @__PURE__ */ new Map()),\n\t\t\tlistAgentSessionsBySourceIds({\n\t\t\t\tsourceKind,\n\t\t\t\tsourceIds: [parentId]\n\t\t\t})\n\t\t]);\n\t\tconst workflows = [...sourcedWorkflows.get(parentId) ?? [], ...composedWorkflows.get(parentId) ?? []];\n\t\tfor (const run of workflows) {\n\t\t\tconst key = `workflow:${run.id}`;\n\t\t\tif (!seen.has(key) && isCancelableWorkflowStatus(run.status)) {\n\t\t\t\tseen.add(key);\n\t\t\t\ttargets.push({\n\t\t\t\t\tkind: \"workflow\",\n\t\t\t\t\tid: run.id\n\t\t\t\t});\n\t\t\t\tawait visit(\"workflow\", run.id);\n\t\t\t}\n\t\t}\n\t\tfor (const session of agents.get(parentId) ?? []) {\n\t\t\tconst key = `agent:${session.id}`;\n\t\t\tif (!seen.has(key) && isCancelableAgentStatus(session.status, session.canceledAt)) {\n\t\t\t\tseen.add(key);\n\t\t\t\ttargets.push({\n\t\t\t\t\tkind: \"agent\",\n\t\t\t\t\tid: session.id\n\t\t\t\t});\n\t\t\t\tawait visit(\"agent\", session.id);\n\t\t\t}\n\t\t}\n\t};\n\tawait visit(kind, id);\n\treturn targets;\n}\nasync function cancelChildren(kind, id) {\n\tconst children = await collectChildRunCancelTargets(kind, id);\n\tawait Promise.all(children.map(async (child) => {\n\t\tif (child.kind === \"workflow\") await finalizeCanceledWorkflowRun(child.id);\n\t\telse await cancelAgentSessionRow(child.id, /* @__PURE__ */ new Date());\n\t}));\n}\nasync function cancelWorkflowRun(runId) {\n\tconst existing = await findHistoryRunCore(runId);\n\tif (!existing) return null;\n\tif (existing.kind !== \"workflow\") return existing;\n\tif (!CANCELABLE_STATUSES.has(existing.status)) return existing;\n\tawait cancelChildren(\"workflow\", runId);\n\tawait finalizeCanceledWorkflowRun(runId);\n\treturn findHistoryRunCore(runId);\n}\nasync function cancelAgentSession(sessionId) {\n\tconst existing = await findHistoryRunCore(sessionId);\n\tif (!existing) return null;\n\tif (existing.kind !== \"agent\") return existing;\n\tif (existing.status === \"canceled\" || existing.status === \"completed\" || existing.status === \"failed\") return existing;\n\tawait cancelChildren(\"agent\", sessionId);\n\tawait cancelAgentSessionRow(sessionId, /* @__PURE__ */ new Date());\n\treturn findHistoryRunCore(sessionId);\n}\n//#endregion\n//#region src/agents/sync.ts\nfunction agentMetadata(record) {\n\treturn {\n\t\tname: record.name ?? null,\n\t\tdescription: record.description ?? null,\n\t\ttoolCount: record.toolCount ?? null,\n\t\tcredentialCount: record.credentialCount ?? null,\n\t\tappSlugs: record.appSlugs ?? null\n\t};\n}\nasync function syncAgentRegistry(records) {\n\tconst now = /* @__PURE__ */ new Date();\n\tconst slugs = records.map((record) => record.slug);\n\tconst byRoute = /* @__PURE__ */ new Map();\n\tfor (const record of records) {\n\t\tconst existing = await selectAgentBySlug(record.slug);\n\t\tif (existing) {\n\t\t\tawait updateAgentById(existing.id, {\n\t\t\t\troute: record.route,\n\t\t\t\tmoduleFile: record.moduleFile,\n\t\t\t\tmodel: record.model,\n\t\t\t\tsystemPrompt: record.systemPrompt,\n\t\t\t\t...agentMetadata(record),\n\t\t\t\tupdatedAt: now,\n\t\t\t\tdeletedAt: null\n\t\t\t});\n\t\t\tbyRoute.set(record.route, {\n\t\t\t\tid: existing.id,\n\t\t\t\tslug: record.slug\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tconst id = crypto.randomUUID();\n\t\tawait insertAgent({\n\t\t\tid,\n\t\t\tslug: record.slug,\n\t\t\troute: record.route,\n\t\t\tmoduleFile: record.moduleFile,\n\t\t\tmodel: record.model,\n\t\t\tsystemPrompt: record.systemPrompt,\n\t\t\t...agentMetadata(record),\n\t\t\tregisteredAt: now,\n\t\t\tupdatedAt: now,\n\t\t\tdeletedAt: null\n\t\t});\n\t\tbyRoute.set(record.route, {\n\t\t\tid,\n\t\t\tslug: record.slug\n\t\t});\n\t}\n\tif (slugs.length === 0) await softDeleteAllAgents(now);\n\telse await softDeleteAgentsNotInSlugs(slugs, now);\n\treturn byRoute;\n}\nasync function getAgentByRoute(route) {\n\treturn selectActiveAgentByRoute(route);\n}\n//#endregion\n//#region src/agents/sessions.ts\nasync function createSession(agentId, id, source = runSource(\"api\"), options) {\n\tconst now = /* @__PURE__ */ new Date();\n\tconst sessionId = id ?? crypto.randomUUID();\n\tawait insertAgentSession({\n\t\tid: sessionId,\n\t\tagentId,\n\t\tsourceKind: source.kind,\n\t\tsourceId: source.id,\n\t\tranByUserId: options?.ranByUserId ?? null,\n\t\tcreatedAt: now,\n\t\tupdatedAt: now,\n\t\tdeletedAt: null\n\t});\n\treturn {\n\t\tid: sessionId,\n\t\tagentId,\n\t\tcreatedAt: now,\n\t\tupdatedAt: now\n\t};\n}\nasync function getSession(sessionId) {\n\tconst row = await selectActiveAgentSession(sessionId);\n\tif (!row) return;\n\treturn {\n\t\tid: row.id,\n\t\tagentId: row.agentId,\n\t\tcreatedAt: row.createdAt,\n\t\tupdatedAt: row.updatedAt\n\t};\n}\nasync function touchSession(sessionId) {\n\tawait touchAgentSession(sessionId, /* @__PURE__ */ new Date());\n}\nasync function setSessionTitle(sessionId, title) {\n\tawait updateAgentSessionTitle(sessionId, title);\n}\nasync function nextSeq(sessionId) {\n\treturn await maxSeqForSession(sessionId) + 1;\n}\nasync function appendEvent(sessionId, eventType, payload) {\n\tconst seq = await nextSeq(sessionId);\n\tawait insertAgentEvent({\n\t\tid: crypto.randomUUID(),\n\t\tsessionId,\n\t\tseq,\n\t\teventType,\n\t\tpayload,\n\t\tcreatedAt: /* @__PURE__ */ new Date(),\n\t\tdeletedAt: null\n\t});\n\treturn seq;\n}\nasync function listMessageEvents(sessionId) {\n\treturn listMessagePayloads(sessionId, MESSAGE_EVENT_TYPE);\n}\nasync function countMessageEvents(sessionId) {\n\treturn countMessageEventsForSession(sessionId, MESSAGE_EVENT_TYPE);\n}\nasync function listSessionEvents(sessionId) {\n\treturn (await listAgentEventsForSession(sessionId)).map((row) => ({\n\t\tid: row.id,\n\t\tsessionId: row.sessionId,\n\t\tseq: row.seq,\n\t\teventType: row.eventType,\n\t\tpayload: row.payload,\n\t\tcreatedAt: row.createdAt\n\t}));\n}\n/** The highest-seq event of one of the given types — tail lookup, no full-log scan. */\nasync function latestSessionEventByTypes(sessionId, eventTypes) {\n\tconst row = await selectLatestAgentEventByTypes(sessionId, eventTypes);\n\tif (!row) return;\n\treturn {\n\t\tid: row.id,\n\t\tsessionId: row.sessionId,\n\t\tseq: row.seq,\n\t\teventType: row.eventType,\n\t\tpayload: row.payload,\n\t\tcreatedAt: row.createdAt\n\t};\n}\nasync function hasSessionEventAfterSeq(sessionId, eventType, afterSeq) {\n\treturn hasAgentEventAfterSeq(sessionId, eventType, afterSeq);\n}\n/** Explicit status writes: running at prompt start, completed on clean end. */\nasync function setSessionStatus(sessionId, status) {\n\tawait updateAgentSessionStatus(sessionId, status);\n}\n//#endregion\n//#region src/agents/fail-session.ts\nfunction serializeSpanError(error) {\n\tif (error instanceof Error) return {\n\t\tname: error.name,\n\t\tmessage: error.message\n\t};\n\treturn { message: String(error) };\n}\n/**\n* Mark an agent session as failed: sets the explicit `status` column (skipped\n* when the session was canceled — cancellation wins) and closes or inserts its\n* terminal `agent_session` trace span, which legacy rows derive status from.\n*/\nasync function failAgentSession(sessionId, error) {\n\tconst serializedError = serializeSpanError(error);\n\tconst finishedAt = /* @__PURE__ */ new Date();\n\tawait updateAgentSessionStatus(sessionId, \"failed\");\n\tconst span = await selectLatestAgentSessionSpanByRefId(sessionId);\n\tif (span) {\n\t\tif (span.status !== \"running\") return;\n\t\tawait updateTraceSpanStatus(span.id, \"error\", finishedAt, serializedError);\n\t\treturn;\n\t}\n\tconst session = await selectAgentSessionById(sessionId);\n\tif (!session) return;\n\tawait insertTraceSpan({\n\t\tid: crypto.randomUUID(),\n\t\ttraceId: sessionId,\n\t\tkind: \"agent_session\",\n\t\trefId: sessionId,\n\t\tname: session.agentId,\n\t\tstatus: \"error\",\n\t\tstartedAt: finishedAt,\n\t\tfinishedAt,\n\t\tmetadata: {\n\t\t\tagentId: session.agentId,\n\t\t\ttrigger: \"api\"\n\t\t},\n\t\terror: serializedError\n\t});\n}\n//#endregion\n//#region src/skills/sync.ts\nfunction skillMetadata(record) {\n\treturn {\n\t\tname: record.name ?? null,\n\t\tdescription: record.description ?? null\n\t};\n}\nasync function syncSkillRegistry(records) {\n\tconst now = /* @__PURE__ */ new Date();\n\tconst slugs = records.map((record) => record.slug);\n\tconst bySlug = /* @__PURE__ */ new Map();\n\tfor (const record of records) {\n\t\tconst existing = await selectSkillBySlug(record.slug);\n\t\tif (existing) {\n\t\t\tawait updateSkillById(existing.id, {\n\t\t\t\tmoduleFile: record.moduleFile,\n\t\t\t\t...skillMetadata(record),\n\t\t\t\tupdatedAt: now,\n\t\t\t\tdeletedAt: null\n\t\t\t});\n\t\t\tbySlug.set(record.slug, {\n\t\t\t\tid: existing.id,\n\t\t\t\tslug: record.slug\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tconst id = crypto.randomUUID();\n\t\tawait insertSkill({\n\t\t\tid,\n\t\t\tslug: record.slug,\n\t\t\tmoduleFile: record.moduleFile,\n\t\t\t...skillMetadata(record),\n\t\t\tregisteredAt: now,\n\t\t\tupdatedAt: now,\n\t\t\tdeletedAt: null\n\t\t});\n\t\tbySlug.set(record.slug, {\n\t\t\tid,\n\t\t\tslug: record.slug\n\t\t});\n\t}\n\tif (slugs.length === 0) await softDeleteAllSkills(now);\n\telse await softDeleteSkillsNotInSlugs(slugs, now);\n\treturn bySlug;\n}\n//#endregion\n//#region src/triggers/sync.ts\nfunction groupDiscoveredRecords(records) {\n\tconst groups = /* @__PURE__ */ new Map();\n\tfor (const record of records) {\n\t\tconst source = normalizeStoredTriggerSource(record.source);\n\t\tconst groupKey = triggerSourceGroupKeyFromSource(source);\n\t\tconst triggerSlug = triggerSlugFromSource(source);\n\t\tconst existing = groups.get(groupKey);\n\t\tif (existing) {\n\t\t\texisting.records.push(record);\n\t\t\tcontinue;\n\t\t}\n\t\tgroups.set(groupKey, {\n\t\t\tgroupKey,\n\t\t\ttriggerSlug,\n\t\t\trecords: [record]\n\t\t});\n\t}\n\treturn [...groups.values()];\n}\n/** Deterministic JSON with recursively sorted object keys, so the hash is stable. */\nfunction canonicalStringify(value) {\n\tif (Array.isArray(value)) return `[${value.map(canonicalStringify).join(\",\")}]`;\n\tif (value && typeof value === \"object\") return `{${Object.entries(value).filter(([, v]) => v !== void 0).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0).map(([k, v]) => `${JSON.stringify(k)}:${canonicalStringify(v)}`).join(\",\")}}`;\n\treturn JSON.stringify(value ?? null);\n}\n/**\n* Hash of the inputs an LLM overview is derived from. Written to `triggers.triggerHash`\n* on every deploy; the overview is stale (and regenerated) when it diverges from the\n* worker-stamped `overviewHash`.\n*/\nfunction computeTriggerHash(group, source, schedule) {\n\tconst primary = group.records[0];\n\tconst assignments = group.records.map((record) => ({\n\t\ttargetKind: record.targetKind,\n\t\tworkflowSlug: record.workflowSlug ?? null,\n\t\tagentSlug: record.agentSlug ?? null\n\t})).sort((a, b) => canonicalStringify(a).localeCompare(canonicalStringify(b)));\n\treturn createHash(\"sha256\").update(canonicalStringify({\n\t\tname: primary.name,\n\t\tdescription: primary.description,\n\t\tkind: source.kind,\n\t\tschedule,\n\t\tconfig: triggerConfigFromSource(source),\n\t\tmoduleFile: primary.moduleFile,\n\t\tsourceHash: primary.sourceHash ?? null,\n\t\tassignments\n\t})).digest(\"hex\");\n}\nasync function syncTriggerAttachmentRegistry(records, options) {\n\tconst now = /* @__PURE__ */ new Date();\n\tconst attachmentSlugs = records.map((record) => record.slug);\n\tconst triggerSlugs = [...new Set(records.map((record) => triggerSlugFromSource(record.source)))];\n\tconst byKey = /* @__PURE__ */ new Map();\n\tfor (const group of groupDiscoveredRecords(records)) {\n\t\tconst primary = group.records[0];\n\t\tconst source = normalizeStoredTriggerSource(primary.source);\n\t\tconst schedule = triggerScheduleFromSource(source);\n\t\tconst triggerHash = computeTriggerHash(group, source, schedule);\n\t\tconst existingTrigger = await selectTriggerBySlug(group.triggerSlug);\n\t\tlet triggerId;\n\t\tif (existingTrigger) {\n\t\t\ttriggerId = existingTrigger.id;\n\t\t\tawait updateTriggerById(existingTrigger.id, {\n\t\t\t\tname: primary.name,\n\t\t\t\tdescription: primary.description,\n\t\t\t\tmoduleFile: primary.moduleFile,\n\t\t\t\tconfig: triggerConfigFromSource(source),\n\t\t\t\tschedule,\n\t\t\t\ttriggerHash,\n\t\t\t\tupdatedAt: now,\n\t\t\t\tdeletedAt: null\n\t\t\t});\n\t\t} else {\n\t\t\ttriggerId = crypto.randomUUID();\n\t\t\tawait insertTrigger({\n\t\t\t\tid: triggerId,\n\t\t\t\tslug: group.triggerSlug,\n\t\t\t\tkind: source.kind,\n\t\t\t\tname: primary.name,\n\t\t\t\tdescription: primary.description,\n\t\t\t\tmoduleFile: primary.moduleFile,\n\t\t\t\tconfig: triggerConfigFromSource(source),\n\t\t\t\tschedule,\n\t\t\t\ttriggerHash,\n\t\t\t\torigin: \"project\",\n\t\t\t\tregisteredAt: now,\n\t\t\t\tupdatedAt: now,\n\t\t\t\tdeletedAt: null\n\t\t\t});\n\t\t}\n\t\tfor (const record of group.records) {\n\t\t\tconst existingAttachment = await selectTriggerAttachmentBySlug(record.slug);\n\t\t\tif (existingAttachment) {\n\t\t\t\tawait updateTriggerAttachmentById(existingAttachment.id, {\n\t\t\t\t\ttargetKind: record.targetKind,\n\t\t\t\t\tworkflowSlug: record.workflowSlug ?? null,\n\t\t\t\t\tagentSlug: record.agentSlug ?? null,\n\t\t\t\t\tupdatedAt: now,\n\t\t\t\t\tdeletedAt: null\n\t\t\t\t});\n\t\t\t\tbyKey.set(record.slug, {\n\t\t\t\t\tid: existingAttachment.id,\n\t\t\t\t\tslug: record.slug,\n\t\t\t\t\ttriggerId\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst attachmentId = crypto.randomUUID();\n\t\t\tawait insertTriggerAttachment({\n\t\t\t\tid: attachmentId,\n\t\t\t\ttriggerId,\n\t\t\t\tslug: record.slug,\n\t\t\t\ttargetKind: record.targetKind,\n\t\t\t\tworkflowSlug: record.workflowSlug ?? null,\n\t\t\t\tagentSlug: record.agentSlug ?? null,\n\t\t\t\tregisteredAt: now,\n\t\t\t\tupdatedAt: now,\n\t\t\t\tdisabledAt: null,\n\t\t\t\tdeletedAt: null\n\t\t\t});\n\t\t\tbyKey.set(record.slug, {\n\t\t\t\tid: attachmentId,\n\t\t\t\tslug: record.slug,\n\t\t\t\ttriggerId\n\t\t\t});\n\t\t}\n\t\tif (schedule && (source.kind === \"cron\" || source.kind === \"poll\")) {\n\t\t\tconst initialNextRunAt = options?.resolveInitialNextRunAt?.(schedule, source.kind, now, source.timezone) ?? now;\n\t\t\tconst executable = await listExecutableAttachmentsByTriggerIds([triggerId]);\n\t\t\tawait upsertTriggerScheduleFields({\n\t\t\t\ttriggerSlug: group.triggerSlug,\n\t\t\t\tschedule,\n\t\t\t\tnextRunAt: existingTrigger?.nextRunAt ?? initialNextRunAt,\n\t\t\t\tenabled: executable.length > 0,\n\t\t\t\tupdatedAt: now\n\t\t\t});\n\t\t}\n\t}\n\tif (attachmentSlugs.length === 0) {\n\t\tawait softDeleteAllProjectTriggers(now);\n\t\tawait softDeleteAllTriggerAttachments(now);\n\t} else {\n\t\tawait softDeleteTriggerAttachmentsNotInSlugs(attachmentSlugs, now);\n\t\tawait softDeleteProjectTriggersNotInSlugs(triggerSlugs, now);\n\t}\n\treturn byKey;\n}\n//#endregion\n//#region src/triggers/agent-runs.ts\nfunction triggerRunType(trigger) {\n\tif (trigger === \"cron\" || trigger === \"poll\" || trigger === \"webhook\") return trigger;\n\tthrow new Error(`Unexpected trigger type for trigger run: ${trigger}`);\n}\nasync function createAgentAttachmentExecution(input) {\n\tconst triggerRunId = input.triggerRunId ?? crypto.randomUUID();\n\tconst sessionId = crypto.randomUUID();\n\tconst now = /* @__PURE__ */ new Date();\n\tif (!input.triggerRunId) await insertTriggerRun({\n\t\tid: triggerRunId,\n\t\ttriggerId: input.triggerId,\n\t\tsourcePath: input.sourcePath ?? null,\n\t\ttriggerType: triggerRunType(input.trigger),\n\t\tpayload: input.payload ?? null,\n\t\ttriggeredAt: input.triggeredAt\n\t});\n\tawait insertAgentSession({\n\t\tid: sessionId,\n\t\tagentId: input.agentId,\n\t\tsourceKind: \"trigger\",\n\t\tsourceId: triggerRunId,\n\t\tcreatedAt: now,\n\t\tupdatedAt: now,\n\t\tdeletedAt: null\n\t});\n\treturn {\n\t\ttriggerRunId,\n\t\tsessionId\n\t};\n}\nasync function getTriggerRunForAgentSession(sessionId) {\n\tconst session = await selectAgentSessionById(sessionId);\n\tif (session?.sourceKind !== \"trigger\" || !session.sourceId) return;\n\treturn selectTriggerRunById(session.sourceId);\n}\n//#endregion\n//#region src/triggers/fire.ts\n/** Persist a trigger fire that did not dispatch a downstream workflow run or agent session. */\nasync function recordTriggerFire(input) {\n\tconst id = crypto.randomUUID();\n\tawait insertTriggerRun({\n\t\tid,\n\t\ttriggerId: input.triggerId,\n\t\ttriggerType: input.triggerType,\n\t\toutcome: input.outcome,\n\t\treason: input.reason ?? null,\n\t\tdetail: input.detail ?? null,\n\t\tpayload: input.payload ?? null,\n\t\tsourcePath: input.sourcePath ?? null,\n\t\ttriggeredAt: input.triggeredAt ?? /* @__PURE__ */ new Date()\n\t});\n\treturn id;\n}\n//#endregion\n//#region src/triggers/assignments.ts\nfunction triggerStatusFromRow(row, attachments) {\n\tif (row.deletedAt) return \"disabled\";\n\tconst lifecycleStatus = row.lifecycle?.status;\n\tif (lifecycleStatus === \"disabled\" || lifecycleStatus === \"completed\") return \"disabled\";\n\tif (attachments !== void 0) {\n\t\tif (!attachments.some((attachment) => triggerAttachmentStatusFromRow(attachment) === \"active\")) return \"disabled\";\n\t}\n\tif (row.kind === \"cron\" || row.kind === \"poll\") return row.enabled === 1 ? \"active\" : \"disabled\";\n\treturn \"active\";\n}\nfunction assignmentFromRow(row, trigger, target) {\n\treturn {\n\t\tkind: target.kind,\n\t\tid: target.id,\n\t\tslug: target.slug,\n\t\tname: target.name,\n\t\tattachmentId: row.id,\n\t\tattachmentSlug: row.slug,\n\t\tstatus: triggerAttachmentStatusFromRow(row),\n\t\tdisabledAt: row.disabledAt ? row.disabledAt.toISOString() : null\n\t};\n}\nasync function resolveTriggerAssignments(rows, trigger) {\n\tconst assignments = [];\n\tfor (const row of rows) {\n\t\tif (row.targetKind === \"workflow\" && row.workflowSlug) {\n\t\t\tconst workflow = await selectActiveWorkflowBySlug(row.workflowSlug);\n\t\t\tassignments.push(assignmentFromRow(row, trigger, {\n\t\t\t\tkind: \"workflow\",\n\t\t\t\tid: workflow?.id ?? row.id,\n\t\t\t\tslug: row.workflowSlug,\n\t\t\t\tname: workflow?.name?.trim() || trigger?.name?.trim() || row.workflowSlug\n\t\t\t}));\n\t\t\tcontinue;\n\t\t}\n\t\tif (row.targetKind === \"agent\" && row.agentSlug) {\n\t\t\tconst agent = await selectAgentBySlug(row.agentSlug);\n\t\t\tassignments.push(assignmentFromRow(row, trigger, {\n\t\t\t\tkind: \"agent\",\n\t\t\t\tid: agent?.id ?? row.id,\n\t\t\t\tslug: row.agentSlug,\n\t\t\t\tname: agent?.name?.trim() || trigger?.name?.trim() || row.agentSlug\n\t\t\t}));\n\t\t}\n\t}\n\treturn assignments;\n}\n//#endregion\n//#region src/triggers/workspace.ts\nfunction resourceKey(projectId, slug) {\n\treturn `${projectId}:${slug}`;\n}\nfunction assignmentsForGroup(attachments, trigger, workflows, agents) {\n\tconst assignments = [];\n\tconst seen = /* @__PURE__ */ new Set();\n\tfor (const row of attachments) {\n\t\tif (row.targetKind === \"workflow\" && row.workflowSlug) {\n\t\t\tconst key = `workflow:${row.workflowSlug}`;\n\t\t\tif (seen.has(key)) continue;\n\t\t\tseen.add(key);\n\t\t\tconst ref = workflows.get(resourceKey(row.projectId, row.workflowSlug));\n\t\t\tassignments.push({\n\t\t\t\tkind: \"workflow\",\n\t\t\t\tid: ref?.id ?? row.id,\n\t\t\t\tslug: row.workflowSlug,\n\t\t\t\tname: ref?.name?.trim() ?? row.workflowSlug,\n\t\t\t\tattachmentId: row.id,\n\t\t\t\tattachmentSlug: row.slug,\n\t\t\t\tstatus: triggerAttachmentStatusFromRow(row),\n\t\t\t\tdisabledAt: row.disabledAt ? row.disabledAt.toISOString() : null\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (row.targetKind === \"agent\" && row.agentSlug) {\n\t\t\tconst key = `agent:${row.agentSlug}`;\n\t\t\tif (seen.has(key)) continue;\n\t\t\tseen.add(key);\n\t\t\tconst ref = agents.get(resourceKey(row.projectId, row.agentSlug));\n\t\t\tassignments.push({\n\t\t\t\tkind: \"agent\",\n\t\t\t\tid: ref?.id ?? row.id,\n\t\t\t\tslug: row.agentSlug,\n\t\t\t\tname: ref?.name?.trim() ?? row.agentSlug,\n\t\t\t\tattachmentId: row.id,\n\t\t\t\tattachmentSlug: row.slug,\n\t\t\t\tstatus: triggerAttachmentStatusFromRow(row),\n\t\t\t\tdisabledAt: row.disabledAt ? row.disabledAt.toISOString() : null\n\t\t\t});\n\t\t}\n\t}\n\treturn assignments;\n}\nfunction buildRecord(trigger, attachments, workflows, agents, lastFiredAt, fireCount) {\n\tconst lastFired = lastFiredAt.get(trigger.id);\n\tconst fires = fireCount.get(trigger.id) ?? 0;\n\tconst name = titleCaseResourceName(trigger.slug, trigger.name);\n\treturn {\n\t\tid: trigger.id,\n\t\tslug: trigger.slug,\n\t\tname,\n\t\tdescription: trigger.description?.trim() || name,\n\t\ttype: trigger.kind,\n\t\tstatus: triggerStatusFromRow(trigger, attachments),\n\t\tprojectId: trigger.projectId,\n\t\tschedule: trigger.schedule,\n\t\tassignments: assignmentsForGroup(attachments, trigger, workflows, agents),\n\t\tlastFiredAt: lastFired ? lastFired.toISOString() : null,\n\t\tfireCount: fires,\n\t\tcreatedAt: trigger.registeredAt.toISOString(),\n\t\tsourcePath: trigger.moduleFile,\n\t\twebhookEndpoint: webhookEndpointFromTriggerConfig(trigger.config ?? null)\n\t};\n}\nasync function buildResourceMaps(projectIds) {\n\tconst [workflowRows, agentRows] = await Promise.all([listActiveWorkflows(projectIds ? { projectIds } : void 0), listActiveAgents(projectIds ? { projectIds } : void 0)]);\n\tconst workflows = /* @__PURE__ */ new Map();\n\tfor (const row of workflowRows) workflows.set(resourceKey(row.projectId, row.slug), {\n\t\tid: row.id,\n\t\tname: row.name\n\t});\n\tconst agents = /* @__PURE__ */ new Map();\n\tfor (const row of agentRows) agents.set(resourceKey(row.projectId, row.slug), {\n\t\tid: row.id,\n\t\tname: row.name\n\t});\n\treturn {\n\t\tworkflows,\n\t\tagents\n\t};\n}\n/** Workspace triggers across the projects the caller can access. */\nasync function listWorkspaceTriggers(projectIds, options) {\n\tconst triggers = await listActiveTriggersByProjectIds(projectIds, { limit: options?.limit ?? 200 });\n\tif (triggers.length === 0) return [];\n\tconst { workflows, agents } = await buildResourceMaps(projectIds);\n\tconst triggerIds = triggers.map((row) => row.id);\n\tconst [attachments, lastFiredAt, fireCount] = await Promise.all([\n\t\tlistAttachmentsByTriggerIds(triggerIds),\n\t\tselectTriggerLastFiredAtByTriggerIds(triggerIds),\n\t\tselectTriggerFireCountByTriggerIds(triggerIds)\n\t]);\n\tconst attachmentsByTriggerId = /* @__PURE__ */ new Map();\n\tfor (const attachment of attachments) {\n\t\tconst existing = attachmentsByTriggerId.get(attachment.triggerId) ?? [];\n\t\texisting.push(attachment);\n\t\tattachmentsByTriggerId.set(attachment.triggerId, existing);\n\t}\n\treturn triggers.map((trigger) => buildRecord(trigger, attachmentsByTriggerId.get(trigger.id) ?? [], workflows, agents, lastFiredAt, fireCount));\n}\nasync function getWorkspaceTrigger(projectId, triggerId) {\n\treturn getWorkspaceTriggerById(triggerId, [projectId]);\n}\n/**\n* Single workspace trigger by id. Optionally restrict to `projectIds` (caller access set).\n* Loads attachments / fire stats / assignment refs for that trigger only.\n*/\nasync function getWorkspaceTriggerById(triggerId, projectIds) {\n\tif (projectIds !== void 0 && projectIds.length === 0) return null;\n\tconst trigger = await selectActiveTriggerById(triggerId);\n\tif (!trigger) return null;\n\tif (projectIds !== void 0 && !projectIds.includes(trigger.projectId)) return null;\n\tconst [attachments, lastFiredAt, fireCount] = await Promise.all([\n\t\tlistAttachmentsByTriggerIds([trigger.id]),\n\t\tselectTriggerLastFiredAtByTriggerIds([trigger.id]),\n\t\tselectTriggerFireCountByTriggerIds([trigger.id])\n\t]);\n\tconst { workflows, agents } = await buildResourceMaps([trigger.projectId]);\n\treturn buildRecord(trigger, attachments, workflows, agents, lastFiredAt, fireCount);\n}\n/**\n* Run history for a workspace trigger — every fire for the trigger, newest first.\n*/\nasync function listWorkspaceTriggerRunRows(options) {\n\treturn runWithProjectScope(options.projectId, async () => {\n\t\tconst trigger = await selectTriggerById(options.triggerId);\n\t\tif (!trigger || trigger.deletedAt !== null) return null;\n\t\tconst attachments = await listAttachmentsByTriggerIds([trigger.id]);\n\t\tconst result = await listTriggerRunRowsPaginated({\n\t\t\ttriggerIds: [trigger.id],\n\t\t\tlimit: options.limit,\n\t\t\tcursor: options.cursor,\n\t\t\ttriggerType: options.triggerType,\n\t\t\toutcome: options.outcome\n\t\t});\n\t\tif (!attachments.some((row) => row.targetKind === \"agent\" && row.agentSlug)) return result;\n\t\tconst triggerRunIds = result.items.map((item) => item.id);\n\t\tconst [sessionsByTriggerRunId, agents] = await Promise.all([listAgentSessionsBySourceIds({\n\t\t\tsourceKind: \"trigger\",\n\t\t\tsourceIds: triggerRunIds\n\t\t}), listActiveAgents({ projectIds: [options.projectId] })]);\n\t\tconst slugByAgentId = new Map(agents.map((agent) => [agent.id, agent.slug]));\n\t\treturn {\n\t\t\t...result,\n\t\t\titems: result.items.map((item) => {\n\t\t\t\tconst sessions = sessionsByTriggerRunId.get(item.id) ?? [];\n\t\t\t\tif (sessions.length === 0) return item;\n\t\t\t\treturn {\n\t\t\t\t\t...item,\n\t\t\t\t\tagentSessions: sessions.map((session) => ({\n\t\t\t\t\t\tid: session.id,\n\t\t\t\t\t\tagentSlug: slugByAgentId.get(session.agentId) ?? session.agentId\n\t\t\t\t\t}))\n\t\t\t\t};\n\t\t\t})\n\t\t};\n\t});\n}\n//#endregion\n//#region src/triggers/set-attachment-enabled.ts\nasync function syncTriggerScheduleForAttachments(trigger, now) {\n\tif (trigger.kind !== \"cron\" && trigger.kind !== \"poll\") return;\n\tconst executable = await listExecutableAttachmentsByTriggerIds([trigger.id]);\n\tawait setTriggerScheduleEnabled(trigger.slug, executable.length > 0, now);\n}\nasync function setTriggerAttachmentEnabledState(options) {\n\tconst trigger = await selectTriggerById(options.triggerId);\n\tif (!trigger || trigger.deletedAt !== null) return null;\n\tconst attachment = await selectTriggerAttachmentById(options.attachmentId);\n\tif (!attachment || attachment.deletedAt !== null || attachment.triggerId !== trigger.id) return null;\n\tconst now = /* @__PURE__ */ new Date();\n\tif (isTriggerAttachmentExecutable(attachment) === options.enabled) return {\n\t\ttrigger,\n\t\tattachmentId: attachment.id\n\t};\n\tawait setTriggerAttachmentEnabled(attachment.id, options.enabled, now);\n\tawait syncTriggerScheduleForAttachments(trigger, now);\n\treturn {\n\t\ttrigger: await selectTriggerById(trigger.id) ?? trigger,\n\t\tattachmentId: attachment.id\n\t};\n}\n/** Count executable (non-deleted, non-disabled) attachments for a trigger. */\nasync function countExecutableAttachments(triggerId) {\n\treturn (await listExecutableAttachmentsByTriggerIds([triggerId])).length;\n}\n//#endregion\n//#region src/triggers/stored-source-from-row.ts\nfunction storedTriggerSourceFromRow(row) {\n\tconst slug = row.slug;\n\tconst meta = {\n\t\tname: row.name,\n\t\tdescription: row.description\n\t};\n\tif (row.kind === \"webhook\") {\n\t\tconst config = row.config ?? {};\n\t\treturn {\n\t\t\t...meta,\n\t\t\tkind: \"webhook\",\n\t\t\tslug,\n\t\t\tendpoint: config.endpoint,\n\t\t\trequestSchema: config.requestSchema,\n\t\t\t...config.filterSchema ? { filterSchema: config.filterSchema } : {}\n\t\t};\n\t}\n\tif (row.kind === \"cron\") {\n\t\tconst config = row.config ?? null;\n\t\treturn {\n\t\t\t...meta,\n\t\t\tkind: \"cron\",\n\t\t\tslug,\n\t\t\tschedule: row.schedule ?? \"\",\n\t\t\t...config?.timezone ? { timezone: config.timezone } : {},\n\t\t\t...config?.payload !== void 0 ? { payload: config.payload } : {}\n\t\t};\n\t}\n\tconst config = row.config ?? {};\n\treturn {\n\t\t...meta,\n\t\tkind: \"poll\",\n\t\tslug,\n\t\tschedule: row.schedule ?? \"\",\n\t\t...config.timezone ? { timezone: config.timezone } : {},\n\t\t...config.code ? { code: config.code } : {},\n\t\t...config.id ? { id: config.id } : {}\n\t};\n}\n//#endregion\n//#region src/triggers/ephemeral.ts\n/** Sentinel moduleFile for triggers that exist only in the database. */\nconst EPHEMERAL_TRIGGER_MODULE_FILE = \"__ephemeral__\";\nfunction initialLifecycle(input, existing) {\n\treturn {\n\t\t...input.lifecycle?.maxExecutions !== void 0 ? { maxExecutions: input.lifecycle.maxExecutions } : {},\n\t\t...input.lifecycle?.until !== void 0 ? { until: input.lifecycle.until } : {},\n\t\texecutionCount: existing?.executionCount ?? 0,\n\t\tstatus: input.enabled === false ? \"disabled\" : \"active\"\n\t};\n}\n/** Creates or updates a DB-only trigger for an agent; schedule lives on the trigger row. */\nasync function upsertEphemeralTrigger(input) {\n\tconst now = /* @__PURE__ */ new Date();\n\tconst source = normalizeStoredTriggerSource(input.source);\n\tconst triggerSlug = input.slug;\n\tconst sourceSlug = triggerSlugFromSource(source);\n\tconst existingTrigger = await selectTriggerBySlug(triggerSlug);\n\tconst existingProjectTrigger = await selectTriggerBySlug(sourceSlug);\n\tconst existingAttachment = await selectTriggerAttachmentBySlug(input.slug);\n\tif (existingProjectTrigger && existingProjectTrigger.origin !== \"ephemeral\") throw new Error(`Trigger \"${input.slug}\" is defined in the project and cannot be modified`);\n\tif (existingTrigger && existingTrigger.origin !== \"ephemeral\") throw new Error(`Trigger \"${input.slug}\" is defined in the project and cannot be modified`);\n\tif (existingAttachment && existingAttachment.agentSlug !== input.agentSlug) throw new Error(`Trigger \"${input.slug}\" belongs to another agent`);\n\tconst lifecycle = initialLifecycle(input, existingTrigger?.lifecycle);\n\tconst enabled = lifecycle.status === \"active\";\n\tconst schedule = triggerScheduleFromSource(source);\n\tlet triggerId;\n\tif (existingTrigger) {\n\t\ttriggerId = existingTrigger.id;\n\t\tawait updateTriggerById(existingTrigger.id, {\n\t\t\tname: input.name,\n\t\t\tdescription: input.description,\n\t\t\tmoduleFile: EPHEMERAL_TRIGGER_MODULE_FILE,\n\t\t\tconfig: triggerConfigFromSource(source),\n\t\t\tschedule,\n\t\t\tnextRunAt: source.kind === \"cron\" || source.kind === \"poll\" ? input.nextRunAt ?? existingTrigger.nextRunAt ?? now : null,\n\t\t\tenabled: enabled ? 1 : 0,\n\t\t\tlifecycle,\n\t\t\tupdatedAt: now,\n\t\t\tdeletedAt: null\n\t\t});\n\t} else {\n\t\ttriggerId = crypto.randomUUID();\n\t\tawait insertTrigger({\n\t\t\tid: triggerId,\n\t\t\tslug: triggerSlug,\n\t\t\tkind: source.kind,\n\t\t\tname: input.name,\n\t\t\tdescription: input.description,\n\t\t\tmoduleFile: EPHEMERAL_TRIGGER_MODULE_FILE,\n\t\t\torigin: \"ephemeral\",\n\t\t\tconfig: triggerConfigFromSource(source),\n\t\t\tschedule,\n\t\t\tnextRunAt: source.kind === \"cron\" || source.kind === \"poll\" ? input.nextRunAt ?? now : null,\n\t\t\tenabled: enabled ? 1 : 0,\n\t\t\tlifecycle,\n\t\t\tcreatedBySessionId: input.createdBySessionId ?? null,\n\t\t\tregisteredAt: now,\n\t\t\tupdatedAt: now,\n\t\t\tdeletedAt: null\n\t\t});\n\t}\n\tif (source.kind === \"cron\" || source.kind === \"poll\") {\n\t\tif (!input.nextRunAt) throw new Error(`Ephemeral ${source.kind} triggers require nextRunAt`);\n\t}\n\tif (existingAttachment) await updateTriggerAttachmentById(existingAttachment.id, {\n\t\ttargetKind: \"agent\",\n\t\tworkflowSlug: null,\n\t\tagentSlug: input.agentSlug,\n\t\tprompt: input.prompt,\n\t\tupdatedAt: now,\n\t\tdeletedAt: null\n\t});\n\telse await insertTriggerAttachment({\n\t\tid: crypto.randomUUID(),\n\t\ttriggerId,\n\t\tslug: input.slug,\n\t\ttargetKind: \"agent\",\n\t\tworkflowSlug: null,\n\t\tagentSlug: input.agentSlug,\n\t\tprompt: input.prompt,\n\t\tregisteredAt: now,\n\t\tupdatedAt: now,\n\t\tdeletedAt: null\n\t});\n\tconst row = await selectTriggerAttachmentBySlug(input.slug);\n\tif (!row) throw new Error(`Failed to persist ephemeral trigger \"${input.slug}\"`);\n\treturn row;\n}\n/** Soft-deletes an agent-owned ephemeral trigger and disables its schedule. */\nasync function deleteEphemeralTrigger(options) {\n\tconst row = await selectTriggerAttachmentBySlug(options.slug);\n\tif (!row || row.deletedAt !== null) return false;\n\tconst trigger = await selectTriggerById(row.triggerId);\n\tif (!trigger || trigger.origin !== \"ephemeral\") return false;\n\tif (row.agentSlug !== options.agentSlug) throw new Error(`Trigger \"${options.slug}\" belongs to another agent`);\n\tconst now = /* @__PURE__ */ new Date();\n\tawait updateTriggerAttachmentById(row.id, {\n\t\tdeletedAt: now,\n\t\tupdatedAt: now\n\t});\n\tawait updateTriggerById(trigger.id, {\n\t\tdeletedAt: now,\n\t\tupdatedAt: now\n\t});\n\tawait setTriggerScheduleEnabled(trigger.slug, false, now);\n\treturn true;\n}\n/** Returns true when the trigger may fire now (active status and `until` not passed). */\nfunction isEphemeralTriggerActive(row, now = /* @__PURE__ */ new Date()) {\n\tif (row.origin !== \"ephemeral\" || row.deletedAt !== null) return false;\n\tconst lifecycle = row.lifecycle;\n\tif (!lifecycle) return true;\n\tif (lifecycle.status !== \"active\") return false;\n\tif (lifecycle.until && now >= new Date(lifecycle.until)) return false;\n\treturn true;\n}\n/**\n* Increments executionCount after a fire and completes the trigger when either\n* `maxExecutions` or `until` is met (OR semantics). Row is kept for audit.\n*/\nasync function recordEphemeralTriggerExecution(triggerSlug, now = /* @__PURE__ */ new Date()) {\n\tconst trigger = await selectTriggerBySlug(triggerSlug);\n\tif (!trigger || trigger.origin !== \"ephemeral\") return;\n\tconst lifecycle = trigger.lifecycle ?? {\n\t\texecutionCount: 0,\n\t\tstatus: \"active\"\n\t};\n\tlifecycle.executionCount += 1;\n\tconst maxReached = lifecycle.maxExecutions !== void 0 && lifecycle.executionCount >= lifecycle.maxExecutions;\n\tconst untilPassed = lifecycle.until !== void 0 && now >= new Date(lifecycle.until);\n\tif (lifecycle.status === \"active\" && (maxReached || untilPassed)) {\n\t\tlifecycle.status = \"completed\";\n\t\tawait setTriggerScheduleEnabled(triggerSlug, false, now);\n\t}\n\tawait updateTriggerById(trigger.id, {\n\t\tlifecycle,\n\t\tupdatedAt: now\n\t});\n\treturn lifecycle;\n}\n/** Trigger slugs for active ephemeral scheduled triggers — excluded from project schedule sweeps. */\nasync function selectActiveEphemeralScheduledTriggerSlugs() {\n\treturn (await listActiveEphemeralTriggers()).filter((row) => (row.kind === \"cron\" || row.kind === \"poll\") && isEphemeralTriggerActive(row)).map((row) => row.slug);\n}\n/** @deprecated Use {@link selectActiveEphemeralScheduledTriggerSlugs}. */\nasync function selectActiveEphemeralScheduledAttachmentSlugs() {\n\treturn selectActiveEphemeralScheduledTriggerSlugs();\n}\n/** @deprecated Use {@link selectActiveEphemeralScheduledTriggerSlugs}. */\nasync function selectActiveEphemeralCronAttachmentSlugs() {\n\treturn selectActiveEphemeralScheduledTriggerSlugs();\n}\n//#endregion\n//#region src/triggers/agent-list.ts\nfunction triggerLabel(row, attachment) {\n\treturn row.name?.trim() || row.slug || attachment.slug;\n}\nfunction triggerSchedule(source) {\n\tif (source.kind === \"cron\" || source.kind === \"poll\") return source.schedule;\n\treturn null;\n}\nfunction triggerEndpoint(source) {\n\tif (source.kind === \"webhook\") return source.endpoint;\n\treturn null;\n}\nfunction agentTriggerStatus(row, attachment) {\n\tif (row.origin === \"ephemeral\") {\n\t\tconst lifecycleStatus = row.lifecycle?.status;\n\t\tif (lifecycleStatus === \"disabled\" || lifecycleStatus === \"completed\") return lifecycleStatus;\n\t}\n\tif (triggerAttachmentStatusFromRow(attachment) === \"disabled\") return \"disabled\";\n\treturn row.lifecycle?.status ?? \"active\";\n}\nfunction agentTriggerSummaryFromRows(row, attachment) {\n\tconst source = storedTriggerSourceFromRow(row);\n\treturn {\n\t\tid: attachment.slug,\n\t\tlabel: triggerLabel(row, attachment),\n\t\tname: row.name ?? null,\n\t\tdescription: row.description ?? null,\n\t\ttype: row.kind,\n\t\tschedule: triggerSchedule(source),\n\t\tendpoint: triggerEndpoint(source),\n\t\torigin: row.origin,\n\t\tprompt: attachment.prompt ?? null,\n\t\tstatus: agentTriggerStatus(row, attachment),\n\t\texecutionCount: row.lifecycle?.executionCount ?? 0,\n\t\tuntil: row.lifecycle?.until ?? null,\n\t\tattachmentId: attachment.id,\n\t\tattachmentSlug: attachment.slug\n\t};\n}\nasync function listAgentTriggers(agentSlug) {\n\tconst rows = await selectTriggerAttachmentsByAgentSlug(agentSlug);\n\tconst summaries = [];\n\tfor (const attachment of rows) {\n\t\tconst trigger = await selectTriggerById(attachment.triggerId);\n\t\tif (!trigger) continue;\n\t\tsummaries.push(agentTriggerSummaryFromRows(trigger, attachment));\n\t}\n\treturn summaries;\n}\n//#endregion\n//#region src/gateways/thread-sessions.ts\nasync function getOrCreateGatewayThreadSession(options) {\n\tconst existing = await selectGatewayThreadSessionByThreadId(options.threadId);\n\tif (existing) return existing.sessionId;\n\tconst session = await createSession(options.agentId, options.existingSessionId, runSource(\"gateway\", options.attachmentId));\n\tconst now = /* @__PURE__ */ new Date();\n\tawait upsertGatewayThreadSession({\n\t\tthreadId: options.threadId,\n\t\tagentId: options.agentId,\n\t\tsessionId: session.id,\n\t\tattachmentId: options.attachmentId,\n\t\tcreatedAt: now,\n\t\tupdatedAt: now\n\t});\n\treturn session.id;\n}\n//#endregion\n//#region src/workflows/sync.ts\nfunction workflowMetadata(record) {\n\treturn {\n\t\tname: record.name,\n\t\tdescription: record.description\n\t};\n}\nasync function syncWorkflowRegistry(records) {\n\tconst now = /* @__PURE__ */ new Date();\n\tconst slugs = records.map((record) => record.slug);\n\tconst bySlug = /* @__PURE__ */ new Map();\n\tfor (const record of records) {\n\t\tconst existing = await selectWorkflowBySlug(record.slug);\n\t\tif (existing) {\n\t\t\tawait updateWorkflowById(existing.id, {\n\t\t\t\tmoduleFile: record.moduleFile,\n\t\t\t\tsubscribable: record.subscribable,\n\t\t\t\t...workflowMetadata(record),\n\t\t\t\tupdatedAt: now,\n\t\t\t\tdeletedAt: null\n\t\t\t});\n\t\t\tbySlug.set(record.slug, {\n\t\t\t\tid: existing.id,\n\t\t\t\tslug: record.slug,\n\t\t\t\tsubscribable: record.subscribable\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tconst id = crypto.randomUUID();\n\t\tawait insertWorkflow({\n\t\t\tid,\n\t\t\tslug: record.slug,\n\t\t\tmoduleFile: record.moduleFile,\n\t\t\tsubscribable: record.subscribable,\n\t\t\t...workflowMetadata(record),\n\t\t\tregisteredAt: now,\n\t\t\tupdatedAt: now,\n\t\t\tdeletedAt: null\n\t\t});\n\t\tbySlug.set(record.slug, {\n\t\t\tid,\n\t\t\tslug: record.slug,\n\t\t\tsubscribable: record.subscribable\n\t\t});\n\t}\n\tif (slugs.length === 0) await softDeleteAllWorkflows(now);\n\telse await softDeleteWorkflowsNotInSlugs(slugs, now);\n\treturn bySlug;\n}\n//#endregion\n//#region src/workflows/credentials.ts\nasync function getWorkflowSubscription(subscriptionId) {\n\tconst row = await selectWorkflowSubscriptionById(subscriptionId);\n\tif (!row) return;\n\treturn {\n\t\tid: row.id,\n\t\tworkflowSlug: row.workflowSlug,\n\t\tuserId: row.userId,\n\t\tenabled: Boolean(row.enabled)\n\t};\n}\nasync function listCredentialInstancesForAssignment(options) {\n\tconst tenantScopeId = getServerTenantScopeId();\n\tconst projectId = getProjectScopeId();\n\tconst rows = [];\n\tconst appendScope = async (scopeType, scopeId) => {\n\t\trows.push(...await listCredentialInstancesByScope({\n\t\t\t...options.appSlug ? { appSlug: options.appSlug } : {},\n\t\t\tscopeType,\n\t\t\tscopeId\n\t\t}));\n\t};\n\tawait appendScope(\"organization\", tenantScopeId);\n\tawait appendScope(\"project\", projectId);\n\tif (options.userId) await appendScope(\"user\", options.userId);\n\treturn rows;\n}\n//#endregion\n//#region src/workflows/event-log.ts\nfunction createDatabaseEventLog() {\n\treturn {\n\t\tappend(event) {\n\t\t\treturn appendWorkflowEvent(event);\n\t\t},\n\t\tasync listReplay(runId) {\n\t\t\treturn (await listReplayEvents(runId)).map((row) => ({\n\t\t\t\tid: row.id,\n\t\t\t\trunId: row.runId,\n\t\t\t\tseq: row.seq,\n\t\t\t\ttype: row.type,\n\t\t\t\tcorrelationId: row.correlationId,\n\t\t\t\tdata: row.data\n\t\t\t}));\n\t\t}\n\t};\n}\n//#endregion\n//#region src/workflows/hook-store.ts\nfunction hookSummaryFromRow(row) {\n\treturn {\n\t\ttoken: row.token,\n\t\tcorrelationId: row.correlationId,\n\t\tstatus: row.status,\n\t\tcreatedAt: row.createdAt\n\t};\n}\nfunction createDatabaseHookStore() {\n\treturn {\n\t\tcreate(values) {\n\t\t\treturn insertWorkflowHook(values);\n\t\t},\n\t\tasync getByToken(token) {\n\t\t\tconst row = await selectWorkflowHookByToken(token);\n\t\t\tif (!row) return;\n\t\t\treturn {\n\t\t\t\thookId: row.hookId,\n\t\t\t\trunId: row.runId,\n\t\t\t\ttoken: row.token,\n\t\t\t\tcorrelationId: row.correlationId,\n\t\t\t\tstatus: row.status,\n\t\t\t\tschema: row.schema,\n\t\t\t\tpayload: row.payload\n\t\t\t};\n\t\t},\n\t\tasync listByRun(runId, options) {\n\t\t\treturn (await listWorkflowHooksByRun(runId, options)).map(hookSummaryFromRow);\n\t\t},\n\t\tmarkResumed(hookId, payload) {\n\t\t\treturn markWorkflowHookResumed(hookId, payload);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/triggers/run-api.ts\nasync function listTriggerRunsPaginated(options) {\n\tconst attachment = await selectTriggerAttachmentBySlug(options.attachmentSlug);\n\tif (!attachment) return null;\n\tconst result = await listTriggerRunRowsPaginated({\n\t\ttriggerIds: [attachment.triggerId],\n\t\tlimit: options.limit,\n\t\tcursor: options.cursor,\n\t\ttriggerType: options.triggerType,\n\t\toutcome: options.outcome\n\t});\n\tconst triggerRunIds = result.items.map((item) => item.id);\n\tif (triggerRunIds.length === 0) return result;\n\tconst [sessionsByTriggerRunId, agents] = await Promise.all([listAgentSessionsBySourceIds({\n\t\tsourceKind: \"trigger\",\n\t\tsourceIds: triggerRunIds\n\t}), listActiveAgents()]);\n\tconst slugByAgentId = new Map(agents.map((agent) => [agent.id, agent.slug]));\n\treturn {\n\t\t...result,\n\t\titems: result.items.map((item) => {\n\t\t\tconst sessions = sessionsByTriggerRunId.get(item.id) ?? [];\n\t\t\tif (sessions.length === 0) return item;\n\t\t\treturn {\n\t\t\t\t...item,\n\t\t\t\tagentSessions: sessions.map((session) => ({\n\t\t\t\t\tid: session.id,\n\t\t\t\t\tagentSlug: slugByAgentId.get(session.agentId) ?? session.agentId\n\t\t\t\t}))\n\t\t\t};\n\t\t})\n\t};\n}\nasync function buildTriggerRunDetail(options) {\n\tconst attachment = await selectTriggerAttachmentBySlug(options.attachmentSlug);\n\tif (!attachment) return null;\n\tconst row = await selectTriggerRunForTrigger(attachment.triggerId, options.runId);\n\tif (!row) return null;\n\tconst includeWorkflows = options.include.includes(\"workflows\");\n\tconst includeAgents = options.include.includes(\"agents\");\n\tconst includeTrace = options.include.includes(\"trace\");\n\tconst workflowRuns = includeWorkflows ? (await listWorkflowRunsByTriggerRunId(row.id)).map(workflowRunSummaryFromRow) : [];\n\tlet agentSessions = [];\n\tif (includeAgents) {\n\t\tconst sessions = (await listAgentSessionsBySourceIds({\n\t\t\tsourceKind: \"trigger\",\n\t\t\tsourceIds: [row.id]\n\t\t})).get(row.id) ?? [];\n\t\tif (sessions.length > 0) {\n\t\t\tconst agents = await listActiveAgents();\n\t\t\tconst slugByAgentId = new Map(agents.map((agent) => [agent.id, agent.slug]));\n\t\t\tagentSessions = sessions.map((session) => ({\n\t\t\t\tid: session.id,\n\t\t\t\tagentSlug: slugByAgentId.get(session.agentId) ?? session.agentId\n\t\t\t}));\n\t\t}\n\t}\n\tlet trace = null;\n\tif (includeTrace) {\n\t\tconst traceData = await getTraceForTriggerRun(row.id);\n\t\ttrace = traceData ? traceResponseToJson(traceData) : null;\n\t}\n\treturn {\n\t\trun: triggerRunRecordFromRow(row, attachment.slug),\n\t\tworkflowRuns,\n\t\tagentSessions,\n\t\ttrace\n\t};\n}\n//#endregion\n//#region src/credentials/crypto.ts\nconst ALGORITHM = \"aes-256-gcm\";\nconst IV_LENGTH = 12;\nfunction resolveEncryptionKey() {\n\tconst secret = process.env.CREDENTIALS_ENCRYPTION_KEY?.trim();\n\tif (!secret) throw new Error(\"CREDENTIALS_ENCRYPTION_KEY is required\");\n\treturn createHash(\"sha256\").update(secret).digest();\n}\nfunction encryptCredentialPayload(plaintext) {\n\tconst iv = randomBytes(IV_LENGTH);\n\tconst cipher = createCipheriv(ALGORITHM, resolveEncryptionKey(), iv);\n\tconst encrypted = Buffer.concat([cipher.update(plaintext, \"utf8\"), cipher.final()]);\n\tconst tag = cipher.getAuthTag();\n\treturn Buffer.concat([\n\t\tiv,\n\t\ttag,\n\t\tencrypted\n\t]).toString(\"base64\");\n}\nfunction decryptCredentialPayload(ciphertext) {\n\tconst buffer = Buffer.from(ciphertext, \"base64\");\n\tconst iv = buffer.subarray(0, IV_LENGTH);\n\tconst tag = buffer.subarray(IV_LENGTH, 28);\n\tconst encrypted = buffer.subarray(28);\n\tconst decipher = createDecipheriv(ALGORITHM, resolveEncryptionKey(), iv);\n\tdecipher.setAuthTag(tag);\n\treturn Buffer.concat([decipher.update(encrypted), decipher.final()]).toString(\"utf8\");\n}\n//#endregion\n//#region src/credentials/set-instance-value.ts\nasync function setCredentialInstanceValue(options) {\n\tconst now = /* @__PURE__ */ new Date();\n\tconst siblings = await selectCredentialInstancesForScope(options.appSlug, options.scopeType, options.scopeId);\n\tconst isDefault = options.isDefault ?? siblings.length === 0;\n\tconst name = options.name ?? options.label ?? null;\n\tconst slug = options.slug ?? deriveCredentialInstanceSlug({\n\t\tappSlug: options.appSlug,\n\t\tname,\n\t\ttakenSlugs: siblings.map((row) => row.slug)\n\t});\n\tif (isDefault) await clearCredentialInstanceDefaults({\n\t\tappSlug: options.appSlug,\n\t\tscopeType: options.scopeType,\n\t\tscopeId: options.scopeId,\n\t\texceptId: options.id\n\t});\n\tawait upsertCredentialInstance({\n\t\tid: options.id,\n\t\tappSlug: options.appSlug,\n\t\tslug,\n\t\tname,\n\t\tscopeType: options.scopeType,\n\t\tscopeId: options.scopeId,\n\t\tlabel: name,\n\t\tisDefault,\n\t\tauthKind: \"api_key\",\n\t\tciphertext: encryptCredentialPayload(JSON.stringify(options.value)),\n\t\tconnectionId: null,\n\t\tcreatedAt: now,\n\t\tupdatedAt: now\n\t});\n}\n//#endregion\n//#region src/oauth/credential-instance.ts\nfunction resolveOAuthInstanceLabel(options) {\n\tconst appName = displayCredentialAppName(options.credentialKey);\n\treturn resolveUniqueCredentialInstanceLabel({\n\t\tbaseLabel: options.userLabel?.trim() || buildCredentialInstanceLabel({\n\t\t\tscopeType: options.scopeType,\n\t\t\tappName,\n\t\t\tprojectName: options.projectName\n\t\t}),\n\t\ttakenLabels: options.rows.filter((row) => !(row.authKind === \"oauth_managed\" && row.connectionId === options.connectionId)).map((row) => row.label),\n\t\tdisambiguator: options.accountLabel?.trim() || options.externalId\n\t});\n}\nasync function reconnectOAuthCredentialInstance(options) {\n\tconst existing = await selectCredentialInstanceById(options.credentialInstanceId);\n\tif (!existing || existing.appSlug !== options.credentialKey || existing.authKind !== \"oauth_managed\") throw new Error(\"Credential not found\");\n\tconst now = /* @__PURE__ */ new Date();\n\tawait upsertCredentialInstance({\n\t\tid: existing.id,\n\t\tappSlug: existing.appSlug,\n\t\tslug: existing.slug,\n\t\tname: existing.name,\n\t\tscopeType: existing.scopeType,\n\t\tscopeId: existing.scopeId,\n\t\tlabel: existing.label,\n\t\tisDefault: Boolean(existing.isDefault),\n\t\tauthKind: \"oauth_managed\",\n\t\tciphertext: null,\n\t\tconnectionId: options.connectionId,\n\t\tcreatedAt: existing.createdAt,\n\t\tupdatedAt: now\n\t});\n}\nasync function ensureOAuthInstanceForScope(options) {\n\tconst rows = await selectCredentialInstancesForScope(options.credentialKey, options.scopeType, options.scopeId);\n\tconst oauthRow = rows.find((row) => row.authKind === \"oauth_managed\" && row.connectionId === options.connectionId);\n\tconst now = /* @__PURE__ */ new Date();\n\tif (oauthRow) {\n\t\tconst name = oauthRow.name ?? oauthRow.label ?? resolveOAuthInstanceLabel({\n\t\t\trows,\n\t\t\tconnectionId: options.connectionId,\n\t\t\tcredentialKey: options.credentialKey,\n\t\t\tscopeType: options.scopeType,\n\t\t\tprojectName: options.projectName,\n\t\t\taccountLabel: options.accountLabel,\n\t\t\texternalId: options.externalId,\n\t\t\tuserLabel: options.userLabel\n\t\t});\n\t\tawait upsertCredentialInstance({\n\t\t\tid: oauthRow.id,\n\t\t\tappSlug: options.credentialKey,\n\t\t\tslug: oauthRow.slug,\n\t\t\tname,\n\t\t\tscopeType: options.scopeType,\n\t\t\tscopeId: options.scopeId,\n\t\t\tlabel: name,\n\t\t\tisDefault: Boolean(oauthRow.isDefault),\n\t\t\tauthKind: \"oauth_managed\",\n\t\t\tciphertext: null,\n\t\t\tconnectionId: options.connectionId,\n\t\t\tcreatedAt: oauthRow.createdAt,\n\t\t\tupdatedAt: now\n\t\t});\n\t\treturn;\n\t}\n\tconst name = resolveOAuthInstanceLabel({\n\t\trows,\n\t\tconnectionId: options.connectionId,\n\t\tcredentialKey: options.credentialKey,\n\t\tscopeType: options.scopeType,\n\t\tprojectName: options.projectName,\n\t\taccountLabel: options.accountLabel,\n\t\texternalId: options.externalId,\n\t\tuserLabel: options.userLabel\n\t});\n\tconst slug = deriveCredentialInstanceSlug({\n\t\tappSlug: options.credentialKey,\n\t\tname,\n\t\ttakenSlugs: rows.map((row) => row.slug)\n\t});\n\tawait upsertCredentialInstance({\n\t\tid: crypto.randomUUID(),\n\t\tappSlug: options.credentialKey,\n\t\tslug,\n\t\tname,\n\t\tscopeType: options.scopeType,\n\t\tscopeId: options.scopeId,\n\t\tlabel: name,\n\t\tisDefault: rows.length === 0,\n\t\tauthKind: \"oauth_managed\",\n\t\tciphertext: null,\n\t\tconnectionId: options.connectionId,\n\t\tcreatedAt: now,\n\t\tupdatedAt: now\n\t});\n}\n/**\n* Materialize `oauth_managed` credential instances for a connection. Without explicit targets\n* (CLI `keystroke connect`, local server) this keeps the historical behavior of a single\n* org-scoped instance; with targets it fans out one instance per selected scope.\n*\n* Within each scope, instances are keyed by connectionId — the same installation upserts in\n* place; a different external account creates a new labeled row (one default per scope).\n*/\nasync function ensureOAuthCredentialInstance(options) {\n\tconst { credentialKey, connectionId, accountLabel, externalId, userLabel, targets, credentialInstanceId } = options;\n\tif (credentialInstanceId) {\n\t\tconst existing = await selectCredentialInstanceById(credentialInstanceId);\n\t\tif (!existing) throw new Error(\"Credential not found\");\n\t\tconst reconnect = () => reconnectOAuthCredentialInstance({\n\t\t\tcredentialInstanceId,\n\t\t\tcredentialKey,\n\t\t\tconnectionId\n\t\t});\n\t\tif (existing.scopeType === \"project\" && existing.scopeId) {\n\t\t\tawait runWithProjectScope(existing.scopeId, reconnect);\n\t\t\treturn;\n\t\t}\n\t\tawait reconnect();\n\t\treturn;\n\t}\n\tconst hasTargets = Boolean(targets && ((targets.projectIds?.length ?? 0) > 0 || targets.organization || targets.userId));\n\tconst scopeOptions = {\n\t\tcredentialKey,\n\t\tconnectionId,\n\t\taccountLabel,\n\t\texternalId,\n\t\tuserLabel\n\t};\n\tif (!hasTargets || targets?.organization) await ensureOAuthInstanceForScope({\n\t\t...scopeOptions,\n\t\tscopeType: \"organization\",\n\t\tscopeId: getServerTenantScopeId()\n\t});\n\tfor (const projectId of targets?.projectIds ?? []) await runWithProjectScope(projectId, () => ensureOAuthInstanceForScope({\n\t\t...scopeOptions,\n\t\tscopeType: \"project\",\n\t\tscopeId: projectId,\n\t\tprojectName: targets?.projectNamesById?.[projectId]\n\t}));\n\tif (targets?.userId) await ensureOAuthInstanceForScope({\n\t\t...scopeOptions,\n\t\tscopeType: \"user\",\n\t\tscopeId: targets.userId\n\t});\n}\n//#endregion\n//#region src/oauth/keystroke-credential-instance.ts\nfunction resolveKeystrokeInstanceLabel(options) {\n\tconst appName = displayCredentialAppName(options.credentialKey);\n\treturn resolveUniqueCredentialInstanceLabel({\n\t\tbaseLabel: options.accountLabel?.trim() || buildCredentialInstanceLabel({\n\t\t\tscopeType: options.scopeType,\n\t\t\tappName,\n\t\t\tprojectName: options.projectName\n\t\t}),\n\t\ttakenLabels: options.rows.filter((row) => !(row.authKind === \"keystroke\" && row.connectionId === options.connectionId)).map((row) => row.label)\n\t});\n}\nasync function reconnectKeystrokeCredentialInstance(options) {\n\tconst existing = await selectCredentialInstanceById(options.credentialInstanceId);\n\tif (!existing || existing.appSlug !== options.credentialKey || existing.authKind !== \"keystroke\") throw new Error(\"Credential not found\");\n\tconst now = /* @__PURE__ */ new Date();\n\tawait upsertCredentialInstance({\n\t\tid: existing.id,\n\t\tappSlug: existing.appSlug,\n\t\tslug: existing.slug,\n\t\tname: existing.name,\n\t\tscopeType: existing.scopeType,\n\t\tscopeId: existing.scopeId,\n\t\tlabel: existing.label,\n\t\tisDefault: Boolean(existing.isDefault),\n\t\tauthKind: \"keystroke\",\n\t\tciphertext: null,\n\t\tconnectionId: options.connectionId,\n\t\tsharedConnectionId: options.sharedConnectionId,\n\t\tgrantedScopes: options.grantedScopes ?? existing.grantedScopes ?? null,\n\t\tcreatedAt: existing.createdAt,\n\t\tupdatedAt: now\n\t});\n}\nasync function ensureKeystrokeInstanceForScope(options) {\n\tconst rows = await selectCredentialInstancesForScope(options.credentialKey, options.scopeType, options.scopeId);\n\tconst existingByConnection = rows.find((row) => row.authKind === \"keystroke\" && row.connectionId === options.connectionId);\n\tconst now = /* @__PURE__ */ new Date();\n\tconst name = existingByConnection?.name ?? existingByConnection?.label ?? resolveKeystrokeInstanceLabel({\n\t\trows,\n\t\tconnectionId: options.connectionId,\n\t\tcredentialKey: options.credentialKey,\n\t\tscopeType: options.scopeType,\n\t\tprojectName: options.projectName,\n\t\taccountLabel: options.accountLabel\n\t});\n\tconst existing = existingByConnection;\n\tconst slug = existing?.slug ?? deriveCredentialInstanceSlug({\n\t\tappSlug: options.credentialKey,\n\t\tname,\n\t\ttakenSlugs: rows.map((row) => row.slug)\n\t});\n\tawait upsertCredentialInstance({\n\t\tid: existing?.id ?? crypto.randomUUID(),\n\t\tappSlug: options.credentialKey,\n\t\tslug,\n\t\tname,\n\t\tscopeType: options.scopeType,\n\t\tscopeId: options.scopeId,\n\t\tlabel: name,\n\t\tisDefault: existing ? Boolean(existing.isDefault) : rows.length === 0,\n\t\tauthKind: \"keystroke\",\n\t\tciphertext: null,\n\t\tconnectionId: options.connectionId,\n\t\tsharedConnectionId: options.sharedConnectionId,\n\t\tgrantedScopes: options.grantedScopes ?? existing?.grantedScopes ?? null,\n\t\tcreatedAt: existing?.createdAt ?? now,\n\t\tupdatedAt: now\n\t});\n}\nasync function ensureKeystrokeCredentialInstance(options) {\n\tif (options.credentialInstanceId) {\n\t\tconst existing = await selectCredentialInstanceById(options.credentialInstanceId);\n\t\tif (!existing) throw new Error(\"Credential not found\");\n\t\tconst reconnect = () => reconnectKeystrokeCredentialInstance({\n\t\t\tcredentialInstanceId: options.credentialInstanceId,\n\t\t\tcredentialKey: options.credentialKey,\n\t\t\tconnectionId: options.connectionId,\n\t\t\tsharedConnectionId: options.sharedConnectionId,\n\t\t\tgrantedScopes: options.grantedScopes\n\t\t});\n\t\tif (existing.scopeType === \"project\" && existing.scopeId) {\n\t\t\tawait runWithProjectScope(existing.scopeId, reconnect);\n\t\t\treturn;\n\t\t}\n\t\tawait reconnect();\n\t\treturn;\n\t}\n\tconst { scopeType, scopeId, ...scopeOptions } = options;\n\tif (scopeType === \"project\") {\n\t\tawait runWithProjectScope(scopeId, () => ensureKeystrokeInstanceForScope({\n\t\t\t...scopeOptions,\n\t\t\tscopeType,\n\t\t\tscopeId\n\t\t}));\n\t\treturn;\n\t}\n\tawait ensureKeystrokeInstanceForScope({\n\t\t...scopeOptions,\n\t\tscopeType,\n\t\tscopeId\n\t});\n}\n//#endregion\n//#region src/scheduler/jobs.ts\nconst DEFAULT_MAX_ATTEMPTS = 3;\nasync function enqueueJob(input) {\n\tconst id = crypto.randomUUID();\n\tawait insertJob({\n\t\tid,\n\t\tkind: input.kind,\n\t\ttargetId: input.targetId,\n\t\trunId: input.runId,\n\t\ttrigger: input.trigger,\n\t\tpayload: input.payload ?? null,\n\t\tparent: input.parent ?? null,\n\t\tstatus: \"pending\",\n\t\tscheduledAt: input.scheduledAt ?? /* @__PURE__ */ new Date(),\n\t\tattempt: input.attempt ?? 1,\n\t\tmaxAttempts: input.maxAttempts ?? DEFAULT_MAX_ATTEMPTS,\n\t\tleasedBy: null,\n\t\tleaseExpiresAt: null,\n\t\tcompletedAt: null,\n\t\terror: null\n\t});\n\treturn id;\n}\nasync function claimNextJob(workerId) {\n\tconst row = await claimNextJobRow(workerId);\n\tif (!row) return;\n\tawait markJobRunning(row.id);\n\treturn {\n\t\tid: row.id,\n\t\tkind: row.kind,\n\t\ttargetId: row.targetId,\n\t\trunId: row.runId,\n\t\ttrigger: row.trigger,\n\t\tpayload: row.payload ?? {},\n\t\t...row.parent ? { parent: row.parent } : {},\n\t\tattempt: row.attempt,\n\t\tmaxAttempts: row.maxAttempts,\n\t\tscheduledAt: row.scheduledAt\n\t};\n}\nasync function markJobComplete(jobId) {\n\tawait completeJobRow(jobId, /* @__PURE__ */ new Date());\n}\nasync function markJobFailed(jobId, error) {\n\tawait failJobRow(jobId, error instanceof Error ? {\n\t\tname: error.name,\n\t\tmessage: error.message\n\t} : { message: String(error) }, /* @__PURE__ */ new Date());\n}\nasync function scheduleJobRetry(jobId, attempt, delayMs) {\n\tawait resetJobForRetry(jobId, new Date(Date.now() + delayMs), attempt);\n}\nasync function getJobByRunId(runId) {\n\tconst row = await selectJobByRunId(runId);\n\tif (!row) return;\n\treturn {\n\t\tid: row.id,\n\t\tkind: row.kind,\n\t\ttargetId: row.targetId,\n\t\trunId: row.runId,\n\t\tstatus: row.status,\n\t\ttrigger: row.trigger,\n\t\tpayload: row.payload ?? {},\n\t\t...row.parent ? { parent: row.parent } : {},\n\t\tattempt: row.attempt,\n\t\tmaxAttempts: row.maxAttempts,\n\t\tscheduledAt: row.scheduledAt,\n\t\terror: row.error ?? null\n\t};\n}\n//#endregion\nexport { DEFAULT_DATABASE_URL, DEFAULT_LIST_LIMIT, DEFAULT_PG_POOL_MAX, DEFAULT_PROJECT_ID, EPHEMERAL_TRIGGER_MODULE_FILE, GatewayChannelConflictError, MESSAGE_EVENT_TYPE, SKIPPED_WEBHOOK_TRIGGER_RUN_RETENTION_MS, acquireProjectDatabasePool, adaptPgMigrationsForSearchPath, addAgentSessionDuration, appendEvent, assertPgIdent, buildAgentSessionDetail, buildHistoryAgentSessionDetail, buildHistoryWorkflowRunDetail, buildPostgresUrl, buildTriggerRunDetail, buildWorkflowRunDetail, cancelAgentSession, cancelWorkflowRun, claimDueTriggers, claimDueTriggersForOrg, claimNextJob, clearAgentSessionCancellation, clearCredentialInstanceDefaults, closeAllProjectDatabasePools, closeDatabase, collectChildRunCancelTargets, completeWorkflowRun, countExecutableAttachments, countMessageEvents, createAgentAttachmentExecution, createAttachmentExecution, createConnection, createDatabaseEventLog, createDatabaseHookStore, createDatabaseTracingSink, createOrgScopedHandle, createPendingAttachmentExecution, createPendingWorkflowRun, createPgConnection, createPostgresCancelChannel, createPublicScopedHandle, createPublicScopedPool, createSession, createSqliteConnection, createWorkflowRun, decodeCreatedAtIdCursor, decryptCredentialPayload, deleteCredentialAssignmentById, deleteCredentialInstanceById, deleteEphemeralTrigger, deleteWorkflowSubscriptionById, disableAllTriggerSchedules, disableTriggerSchedulesNotInSlugs, encodeCreatedAtIdCursor, encryptCredentialPayload, enqueueJob, ensureKeystrokeCredentialInstance, ensureOAuthCredentialInstance, failAgentSession, failWorkflowRun, finalizeCanceledWorkflowRun, findHistoryRunCore, gatewayAttachmentKeyForChannel, getActiveGatewayAttachmentByChannel, getActiveOrgGatewayAttachmentByChannel, getActiveOrgGatewayAttachmentByTeamAndChannel, getAgentByRoute, getBoundProjectScopeId, getDatabaseHandle, getGatewayAttachmentBySlug, getJobByRunId, getOrCreateGatewayThreadSession, getProjectScopeId, getServerTenantScopeId, getSession, getTraceForAgentSession, getTraceForTriggerRun, getTraceForWorkflowRun, getTriggerAttachmentBySlug, getTriggerRunForAgentSession, getWorkflowSubscription, getWorkspaceTrigger, getWorkspaceTriggerById, hasSessionEventAfterSeq, inferDialect, initDatabase, insertWorkflowSubscription, isDatabaseInitialized, isEphemeralTriggerActive, latestSessionEventByTypes, listActiveAgents, listActiveGatewayAttachments, listActiveGatewayAttachmentsByAgentSlug, listActiveGatewayAttachmentsByPlatform, listActiveOrgGatewayBindingsByPlatform, listActiveSkills, listActiveTriggerAttachments, listActiveWorkflows, listAgentSessionsBySourceIds, listAgentSessionsPaginated, listAgentTriggers, listAllCredentialInstances, listAttachmentsByTriggerIds, listCredentialAssignmentsByTarget, listCredentialInstancesByConnectionId, listCredentialInstancesByScope, listCredentialInstancesForAssignment, listEnabledScheduledTriggers, listEnabledWorkflowSubscriptionsByWorkflowSlug, listExecutableAttachmentsByTriggerIds, listHistoryRuns, listMessageEvents, listRecentResourceActivity, listRecentWorkflowStepConsumers, listReplayEvents, listSessionEvents, listStepCompletedEvents, listTriggerRunsPaginated, listTriggersByIds, listWorkflowRunsByParentRunIds, listWorkflowRunsBySourceIds, listWorkflowRunsByWorkflowSlug, listWorkflowRunsPaginated, listWorkflowSubscriptionsByWorkflowSlug, listWorkspaceTriggerRunRows, listWorkspaceTriggers, loadMigrations, markAttachmentExecutionRunning, markJobComplete, markJobFailed, markWorkflowRunRunning, markWorkflowRunSleeping, markWorkflowRunWaitingChildren, markWorkflowRunWaitingHook, migratePgDatabase, nextSeq, normalizeStoredTriggerSource, parsePostgresUrl, primarySearchPathSchema, pruneSkippedWebhookTriggerRuns, qualifyConnectionUser, quotePgIdent, recordEphemeralTriggerExecution, recordTriggerFire, releaseProjectDatabasePool, requeueExpiredLeases, resolveAgentProjectId, resolveDatabaseUrlFromEnv, resolveMigrationsFolder, resolveMigrationsSchema, resolvePgPoolMax, resolvePostgresConfigFromEnv, resolvePostgresUrlFromEnv, resolveProjectDatabaseUrlFromEnv, resolveRunSourceFromTraceContext, resolveSearchPath, resolveSqlitePath, resolveTriggerAssignments, resolveWorkflowRunProjectId, runMigrations, runSource, runWithProjectDatabase, runWithProjectScope, runWithTenantScope, scheduleJobRetry, selectActiveAgentById, selectActiveAgentsByIds, selectActiveEphemeralCronAttachmentSlugs, selectActiveEphemeralScheduledAttachmentSlugs, selectActiveEphemeralScheduledTriggerSlugs, selectActiveSkillById, selectActiveSkillsByIds, selectActiveSkillsBySlugs, selectActiveTriggerById, selectActiveWorkflowById, selectActiveWorkflowBySlug, selectActiveWorkflowsByIds, selectAgentBySlug, selectAgentLastRunAtByIds, selectAgentSessionById, selectCredentialAssignmentById, selectCredentialInstanceById, selectCredentialInstancesByIds, selectCredentialInstancesForScope, selectCredentialInstancesForScopes, selectDisabledAttachmentSlugs, selectEphemeralTriggerAttachments, selectEphemeralTriggerAttachmentsByAgentSlug, selectGatewayThreadSessionByThreadId, selectProjectResourceCounts, selectTriggerAttachmentsByAgentSlug, selectTriggerById, selectTriggerBySlug, selectWebhookTriggerAttachments, selectWebhookTriggers, selectWorkflowCanvasAnnotations, selectWorkflowLastRunAtByIds, selectWorkflowOverview, selectWorkflowRunById, selectWorkflowRunForWorkflow, selectWorkflowRunInputValues, selectWorkflowSubscriptionById, selectWorkflowSubscriptionByWorkflowAndUser, setCredentialInstanceValue, setSessionStatus, setSessionTitle, setTriggerAttachmentEnabled, setTriggerAttachmentEnabledState, setTriggerOverviewGenerating, setTriggerScheduleEnabled, setWorkflowCanvasAnnotationsGenerating, setWorkflowOverviewGenerating, softDeleteGatewayAttachmentByChannel, softDeleteGatewayAttachmentsForAgentPlatformTeam, sourceFromSpan, storedTriggerSourceFromRow, storedTriggerSourceFromTrigger, storedTriggerSourceSlug, syncAgentRegistry, syncSkillRegistry, syncTriggerAttachmentRegistry, syncWorkflowRegistry, touchCredentialInstanceLastUsed, touchResourceActivity, touchSession, triggerAttachmentStatusFromRow, triggerScheduleFromSource, triggerSourceGroupKeyFromSource, triggerStatusFromRow, triggerTimezoneFromConfig, triggerTimezoneFromSource, updateTriggerOverview, updateTriggerState, updateWorkflowCanvasAnnotations, updateWorkflowOverview, updateWorkflowRunInputValues, updateWorkflowSubscriptionById, upsertCredentialAssignment, upsertCredentialInstance, upsertEphemeralTrigger, upsertGatewayAttachmentByChannel, upsertTriggerScheduleFields };\n\n//# sourceMappingURL=index.mjs.map","// src/errors/ai-sdk-error.ts\nvar marker = \"vercel.ai.error\";\nvar symbol = Symbol.for(marker);\nvar _a, _b;\nvar AISDKError = class _AISDKError extends (_b = Error, _a = symbol, _b) {\n /**\n * Creates an AI SDK Error.\n *\n * @param {Object} params - The parameters for creating the error.\n * @param {string} params.name - The name of the error.\n * @param {string} params.message - The error message.\n * @param {unknown} [params.cause] - The underlying cause of the error.\n */\n constructor({\n name: name15,\n message,\n cause\n }) {\n super(message);\n this[_a] = true;\n this.name = name15;\n this.cause = cause;\n }\n /**\n * Checks if the given error is an AI SDK Error.\n * @param {unknown} error - The error to check.\n * @returns {boolean} True if the error is an AI SDK Error, false otherwise.\n */\n static isInstance(error) {\n return _AISDKError.hasMarker(error, marker);\n }\n static hasMarker(error, marker16) {\n const markerSymbol = Symbol.for(marker16);\n return error != null && typeof error === \"object\" && markerSymbol in error && typeof error[markerSymbol] === \"boolean\" && error[markerSymbol] === true;\n }\n};\n\n// src/errors/api-call-error.ts\nvar name = \"AI_APICallError\";\nvar marker2 = `vercel.ai.error.${name}`;\nvar symbol2 = Symbol.for(marker2);\nvar _a2, _b2;\nvar APICallError = class extends (_b2 = AISDKError, _a2 = symbol2, _b2) {\n constructor({\n message,\n url,\n requestBodyValues,\n statusCode,\n responseHeaders,\n responseBody,\n cause,\n isRetryable = statusCode != null && (statusCode === 408 || // request timeout\n statusCode === 409 || // conflict\n statusCode === 429 || // too many requests\n statusCode >= 500),\n // server error\n data\n }) {\n super({ name, message, cause });\n this[_a2] = true;\n this.url = url;\n this.requestBodyValues = requestBodyValues;\n this.statusCode = statusCode;\n this.responseHeaders = responseHeaders;\n this.responseBody = responseBody;\n this.isRetryable = isRetryable;\n this.data = data;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker2);\n }\n};\n\n// src/errors/empty-response-body-error.ts\nvar name2 = \"AI_EmptyResponseBodyError\";\nvar marker3 = `vercel.ai.error.${name2}`;\nvar symbol3 = Symbol.for(marker3);\nvar _a3, _b3;\nvar EmptyResponseBodyError = class extends (_b3 = AISDKError, _a3 = symbol3, _b3) {\n // used in isInstance\n constructor({ message = \"Empty response body\" } = {}) {\n super({ name: name2, message });\n this[_a3] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker3);\n }\n};\n\n// src/errors/get-error-message.ts\nfunction getErrorMessage(error) {\n if (error == null) {\n return \"unknown error\";\n }\n if (typeof error === \"string\") {\n return error;\n }\n if (error instanceof Error) {\n return error.toString();\n }\n return JSON.stringify(error);\n}\n\n// src/errors/invalid-argument-error.ts\nvar name3 = \"AI_InvalidArgumentError\";\nvar marker4 = `vercel.ai.error.${name3}`;\nvar symbol4 = Symbol.for(marker4);\nvar _a4, _b4;\nvar InvalidArgumentError = class extends (_b4 = AISDKError, _a4 = symbol4, _b4) {\n constructor({\n message,\n cause,\n argument\n }) {\n super({ name: name3, message, cause });\n this[_a4] = true;\n this.argument = argument;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker4);\n }\n};\n\n// src/errors/invalid-prompt-error.ts\nvar name4 = \"AI_InvalidPromptError\";\nvar marker5 = `vercel.ai.error.${name4}`;\nvar symbol5 = Symbol.for(marker5);\nvar _a5, _b5;\nvar InvalidPromptError = class extends (_b5 = AISDKError, _a5 = symbol5, _b5) {\n constructor({\n prompt,\n message,\n cause\n }) {\n super({ name: name4, message: `Invalid prompt: ${message}`, cause });\n this[_a5] = true;\n this.prompt = prompt;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker5);\n }\n};\n\n// src/errors/invalid-response-data-error.ts\nvar name5 = \"AI_InvalidResponseDataError\";\nvar marker6 = `vercel.ai.error.${name5}`;\nvar symbol6 = Symbol.for(marker6);\nvar _a6, _b6;\nvar InvalidResponseDataError = class extends (_b6 = AISDKError, _a6 = symbol6, _b6) {\n constructor({\n data,\n message = `Invalid response data: ${JSON.stringify(data)}.`\n }) {\n super({ name: name5, message });\n this[_a6] = true;\n this.data = data;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker6);\n }\n};\n\n// src/errors/json-parse-error.ts\nvar name6 = \"AI_JSONParseError\";\nvar marker7 = `vercel.ai.error.${name6}`;\nvar symbol7 = Symbol.for(marker7);\nvar _a7, _b7;\nvar JSONParseError = class extends (_b7 = AISDKError, _a7 = symbol7, _b7) {\n constructor({ text, cause }) {\n super({\n name: name6,\n message: `JSON parsing failed: Text: ${text}.\nError message: ${getErrorMessage(cause)}`,\n cause\n });\n this[_a7] = true;\n this.text = text;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker7);\n }\n};\n\n// src/errors/load-api-key-error.ts\nvar name7 = \"AI_LoadAPIKeyError\";\nvar marker8 = `vercel.ai.error.${name7}`;\nvar symbol8 = Symbol.for(marker8);\nvar _a8, _b8;\nvar LoadAPIKeyError = class extends (_b8 = AISDKError, _a8 = symbol8, _b8) {\n // used in isInstance\n constructor({ message }) {\n super({ name: name7, message });\n this[_a8] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker8);\n }\n};\n\n// src/errors/load-setting-error.ts\nvar name8 = \"AI_LoadSettingError\";\nvar marker9 = `vercel.ai.error.${name8}`;\nvar symbol9 = Symbol.for(marker9);\nvar _a9, _b9;\nvar LoadSettingError = class extends (_b9 = AISDKError, _a9 = symbol9, _b9) {\n // used in isInstance\n constructor({ message }) {\n super({ name: name8, message });\n this[_a9] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker9);\n }\n};\n\n// src/errors/no-content-generated-error.ts\nvar name9 = \"AI_NoContentGeneratedError\";\nvar marker10 = `vercel.ai.error.${name9}`;\nvar symbol10 = Symbol.for(marker10);\nvar _a10, _b10;\nvar NoContentGeneratedError = class extends (_b10 = AISDKError, _a10 = symbol10, _b10) {\n // used in isInstance\n constructor({\n message = \"No content generated.\"\n } = {}) {\n super({ name: name9, message });\n this[_a10] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker10);\n }\n};\n\n// src/errors/no-such-model-error.ts\nvar name10 = \"AI_NoSuchModelError\";\nvar marker11 = `vercel.ai.error.${name10}`;\nvar symbol11 = Symbol.for(marker11);\nvar _a11, _b11;\nvar NoSuchModelError = class extends (_b11 = AISDKError, _a11 = symbol11, _b11) {\n constructor({\n errorName = name10,\n modelId,\n modelType,\n message = `No such ${modelType}: ${modelId}`\n }) {\n super({ name: errorName, message });\n this[_a11] = true;\n this.modelId = modelId;\n this.modelType = modelType;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker11);\n }\n};\n\n// src/errors/no-such-provider-reference-error.ts\nvar name11 = \"AI_NoSuchProviderReferenceError\";\nvar marker12 = `vercel.ai.error.${name11}`;\nvar symbol12 = Symbol.for(marker12);\nvar _a12, _b12;\nvar NoSuchProviderReferenceError = class extends (_b12 = AISDKError, _a12 = symbol12, _b12) {\n constructor({\n provider,\n reference,\n message = `No provider reference found for provider '${provider}'. Available providers: ${Object.keys(reference).join(\", \")}`\n }) {\n super({ name: name11, message });\n this[_a12] = true;\n this.provider = provider;\n this.reference = reference;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker12);\n }\n};\n\n// src/errors/too-many-embedding-values-for-call-error.ts\nvar name12 = \"AI_TooManyEmbeddingValuesForCallError\";\nvar marker13 = `vercel.ai.error.${name12}`;\nvar symbol13 = Symbol.for(marker13);\nvar _a13, _b13;\nvar TooManyEmbeddingValuesForCallError = class extends (_b13 = AISDKError, _a13 = symbol13, _b13) {\n constructor(options) {\n super({\n name: name12,\n message: `Too many values for a single embedding call. The ${options.provider} model \"${options.modelId}\" can only embed up to ${options.maxEmbeddingsPerCall} values per call, but ${options.values.length} values were provided.`\n });\n this[_a13] = true;\n this.provider = options.provider;\n this.modelId = options.modelId;\n this.maxEmbeddingsPerCall = options.maxEmbeddingsPerCall;\n this.values = options.values;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker13);\n }\n};\n\n// src/errors/type-validation-error.ts\nvar name13 = \"AI_TypeValidationError\";\nvar marker14 = `vercel.ai.error.${name13}`;\nvar symbol14 = Symbol.for(marker14);\nvar _a14, _b14;\nvar TypeValidationError = class _TypeValidationError extends (_b14 = AISDKError, _a14 = symbol14, _b14) {\n constructor({\n value,\n cause,\n context\n }) {\n let contextPrefix = \"Type validation failed\";\n if (context == null ? void 0 : context.field) {\n contextPrefix += ` for ${context.field}`;\n }\n if ((context == null ? void 0 : context.entityName) || (context == null ? void 0 : context.entityId)) {\n contextPrefix += \" (\";\n const parts = [];\n if (context.entityName) {\n parts.push(context.entityName);\n }\n if (context.entityId) {\n parts.push(`id: \"${context.entityId}\"`);\n }\n contextPrefix += parts.join(\", \");\n contextPrefix += \")\";\n }\n super({\n name: name13,\n message: `${contextPrefix}: Value: ${JSON.stringify(value)}.\nError message: ${getErrorMessage(cause)}`,\n cause\n });\n this[_a14] = true;\n this.value = value;\n this.context = context;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker14);\n }\n /**\n * Wraps an error into a TypeValidationError.\n * If the cause is already a TypeValidationError with the same value and context, it returns the cause.\n * Otherwise, it creates a new TypeValidationError.\n *\n * @param {Object} params - The parameters for wrapping the error.\n * @param {unknown} params.value - The value that failed validation.\n * @param {unknown} params.cause - The original error or cause of the validation failure.\n * @param {TypeValidationContext} params.context - Optional context about what is being validated.\n * @returns {TypeValidationError} A TypeValidationError instance.\n */\n static wrap({\n value,\n cause,\n context\n }) {\n var _a16, _b16, _c;\n if (_TypeValidationError.isInstance(cause) && cause.value === value && ((_a16 = cause.context) == null ? void 0 : _a16.field) === (context == null ? void 0 : context.field) && ((_b16 = cause.context) == null ? void 0 : _b16.entityName) === (context == null ? void 0 : context.entityName) && ((_c = cause.context) == null ? void 0 : _c.entityId) === (context == null ? void 0 : context.entityId)) {\n return cause;\n }\n return new _TypeValidationError({ value, cause, context });\n }\n};\n\n// src/errors/unsupported-functionality-error.ts\nvar name14 = \"AI_UnsupportedFunctionalityError\";\nvar marker15 = `vercel.ai.error.${name14}`;\nvar symbol15 = Symbol.for(marker15);\nvar _a15, _b15;\nvar UnsupportedFunctionalityError = class extends (_b15 = AISDKError, _a15 = symbol15, _b15) {\n constructor({\n functionality,\n message = `'${functionality}' functionality not supported.`\n }) {\n super({ name: name14, message });\n this[_a15] = true;\n this.functionality = functionality;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker15);\n }\n};\n\n// src/json-value/is-json.ts\nfunction isJSONValue(value) {\n if (value === null || typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n return true;\n }\n if (Array.isArray(value)) {\n return value.every(isJSONValue);\n }\n if (typeof value === \"object\") {\n return Object.entries(value).every(\n ([key, val]) => typeof key === \"string\" && (val === void 0 || isJSONValue(val))\n );\n }\n return false;\n}\nfunction isJSONArray(value) {\n return Array.isArray(value) && value.every(isJSONValue);\n}\nfunction isJSONObject(value) {\n return value != null && typeof value === \"object\" && Object.entries(value).every(\n ([key, val]) => typeof key === \"string\" && (val === void 0 || isJSONValue(val))\n );\n}\nexport {\n AISDKError,\n APICallError,\n EmptyResponseBodyError,\n InvalidArgumentError,\n InvalidPromptError,\n InvalidResponseDataError,\n JSONParseError,\n LoadAPIKeyError,\n LoadSettingError,\n NoContentGeneratedError,\n NoSuchModelError,\n NoSuchProviderReferenceError,\n TooManyEmbeddingValuesForCallError,\n TypeValidationError,\n UnsupportedFunctionalityError,\n getErrorMessage,\n isJSONArray,\n isJSONObject,\n isJSONValue\n};\n//# sourceMappingURL=index.js.map","class ParseError extends Error {\n constructor(message, options) {\n super(message), this.name = \"ParseError\", this.type = options.type, this.field = options.field, this.value = options.value, this.line = options.line;\n }\n}\nconst LF = 10, CR = 13, SPACE = 32;\nfunction noop(_arg) {\n}\nfunction createParser(callbacks) {\n if (typeof callbacks == \"function\")\n throw new TypeError(\n \"`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?\"\n );\n const { onEvent = noop, onError = noop, onRetry = noop, onComment } = callbacks, pendingFragments = [];\n let isFirstChunk = !0, id, data = \"\", dataLines = 0, eventType;\n function feed(chunk) {\n if (isFirstChunk && (isFirstChunk = !1, chunk.charCodeAt(0) === 239 && chunk.charCodeAt(1) === 187 && chunk.charCodeAt(2) === 191 && (chunk = chunk.slice(3))), pendingFragments.length === 0) {\n const trailing2 = processLines(chunk);\n trailing2 !== \"\" && pendingFragments.push(trailing2);\n return;\n }\n if (chunk.indexOf(`\n`) === -1 && chunk.indexOf(\"\\r\") === -1) {\n pendingFragments.push(chunk);\n return;\n }\n pendingFragments.push(chunk);\n const input = pendingFragments.join(\"\");\n pendingFragments.length = 0;\n const trailing = processLines(input);\n trailing !== \"\" && pendingFragments.push(trailing);\n }\n function processLines(chunk) {\n let searchIndex = 0;\n if (chunk.indexOf(\"\\r\") === -1) {\n let lfIndex = chunk.indexOf(`\n`, searchIndex);\n for (; lfIndex !== -1; ) {\n if (searchIndex === lfIndex) {\n dataLines > 0 && onEvent({ id, event: eventType, data }), id = void 0, data = \"\", dataLines = 0, eventType = void 0, searchIndex = lfIndex + 1, lfIndex = chunk.indexOf(`\n`, searchIndex);\n continue;\n }\n const firstCharCode = chunk.charCodeAt(searchIndex);\n if (isDataPrefix(chunk, searchIndex, firstCharCode)) {\n const valueStart = chunk.charCodeAt(searchIndex + 5) === SPACE ? searchIndex + 6 : searchIndex + 5, value = chunk.slice(valueStart, lfIndex);\n if (dataLines === 0 && chunk.charCodeAt(lfIndex + 1) === LF) {\n onEvent({ id, event: eventType, data: value }), id = void 0, data = \"\", eventType = void 0, searchIndex = lfIndex + 2, lfIndex = chunk.indexOf(`\n`, searchIndex);\n continue;\n }\n data = dataLines === 0 ? value : `${data}\n${value}`, dataLines++;\n } else isEventPrefix(chunk, searchIndex, firstCharCode) ? eventType = chunk.slice(\n chunk.charCodeAt(searchIndex + 6) === SPACE ? searchIndex + 7 : searchIndex + 6,\n lfIndex\n ) || void 0 : parseLine(chunk, searchIndex, lfIndex);\n searchIndex = lfIndex + 1, lfIndex = chunk.indexOf(`\n`, searchIndex);\n }\n return chunk.slice(searchIndex);\n }\n for (; searchIndex < chunk.length; ) {\n const crIndex = chunk.indexOf(\"\\r\", searchIndex), lfIndex = chunk.indexOf(`\n`, searchIndex);\n let lineEnd = -1;\n if (crIndex !== -1 && lfIndex !== -1 ? lineEnd = crIndex < lfIndex ? crIndex : lfIndex : crIndex !== -1 ? crIndex === chunk.length - 1 ? lineEnd = -1 : lineEnd = crIndex : lfIndex !== -1 && (lineEnd = lfIndex), lineEnd === -1)\n break;\n parseLine(chunk, searchIndex, lineEnd), searchIndex = lineEnd + 1, chunk.charCodeAt(searchIndex - 1) === CR && chunk.charCodeAt(searchIndex) === LF && searchIndex++;\n }\n return chunk.slice(searchIndex);\n }\n function parseLine(chunk, start, end) {\n if (start === end) {\n dispatchEvent();\n return;\n }\n const firstCharCode = chunk.charCodeAt(start);\n if (isDataPrefix(chunk, start, firstCharCode)) {\n const valueStart = chunk.charCodeAt(start + 5) === SPACE ? start + 6 : start + 5, value2 = chunk.slice(valueStart, end);\n data = dataLines === 0 ? value2 : `${data}\n${value2}`, dataLines++;\n return;\n }\n if (isEventPrefix(chunk, start, firstCharCode)) {\n eventType = chunk.slice(chunk.charCodeAt(start + 6) === SPACE ? start + 7 : start + 6, end) || void 0;\n return;\n }\n if (firstCharCode === 105 && chunk.charCodeAt(start + 1) === 100 && chunk.charCodeAt(start + 2) === 58) {\n const value2 = chunk.slice(chunk.charCodeAt(start + 3) === SPACE ? start + 4 : start + 3, end);\n id = value2.includes(\"\\0\") ? void 0 : value2;\n return;\n }\n if (firstCharCode === 58) {\n if (onComment) {\n const line2 = chunk.slice(start, end);\n onComment(line2.slice(chunk.charCodeAt(start + 1) === SPACE ? 2 : 1));\n }\n return;\n }\n const line = chunk.slice(start, end), fieldSeparatorIndex = line.indexOf(\":\");\n if (fieldSeparatorIndex === -1) {\n processField(line, \"\", line);\n return;\n }\n const field = line.slice(0, fieldSeparatorIndex), offset = line.charCodeAt(fieldSeparatorIndex + 1) === SPACE ? 2 : 1, value = line.slice(fieldSeparatorIndex + offset);\n processField(field, value, line);\n }\n function processField(field, value, line) {\n switch (field) {\n case \"event\":\n eventType = value || void 0;\n break;\n case \"data\":\n data = dataLines === 0 ? value : `${data}\n${value}`, dataLines++;\n break;\n case \"id\":\n id = value.includes(\"\\0\") ? void 0 : value;\n break;\n case \"retry\":\n /^\\d+$/.test(value) ? onRetry(parseInt(value, 10)) : onError(\n new ParseError(`Invalid \\`retry\\` value: \"${value}\"`, {\n type: \"invalid-retry\",\n value,\n line\n })\n );\n break;\n default:\n onError(\n new ParseError(\n `Unknown field \"${field.length > 20 ? `${field.slice(0, 20)}\\u2026` : field}\"`,\n { type: \"unknown-field\", field, value, line }\n )\n );\n break;\n }\n }\n function dispatchEvent() {\n dataLines > 0 && onEvent({\n id,\n event: eventType,\n data\n }), id = void 0, data = \"\", dataLines = 0, eventType = void 0;\n }\n function reset(options = {}) {\n if (options.consume && pendingFragments.length > 0) {\n const incompleteLine = pendingFragments.join(\"\");\n parseLine(incompleteLine, 0, incompleteLine.length);\n }\n isFirstChunk = !0, id = void 0, data = \"\", dataLines = 0, eventType = void 0, pendingFragments.length = 0;\n }\n return { feed, reset };\n}\nfunction isDataPrefix(chunk, i, firstCharCode) {\n return firstCharCode === 100 && chunk.charCodeAt(i + 1) === 97 && chunk.charCodeAt(i + 2) === 116 && chunk.charCodeAt(i + 3) === 97 && chunk.charCodeAt(i + 4) === 58;\n}\nfunction isEventPrefix(chunk, i, firstCharCode) {\n return firstCharCode === 101 && chunk.charCodeAt(i + 1) === 118 && chunk.charCodeAt(i + 2) === 101 && chunk.charCodeAt(i + 3) === 110 && chunk.charCodeAt(i + 4) === 116 && chunk.charCodeAt(i + 5) === 58;\n}\nexport {\n ParseError,\n createParser\n};\n//# sourceMappingURL=index.js.map\n","import { createParser } from \"./index.js\";\nimport { ParseError } from \"./index.js\";\nclass EventSourceParserStream extends TransformStream {\n constructor({ onError, onRetry, onComment } = {}) {\n let parser;\n super({\n start(controller) {\n parser = createParser({\n onEvent: (event) => {\n controller.enqueue(event);\n },\n onError(error) {\n onError === \"terminate\" ? controller.error(error) : typeof onError == \"function\" && onError(error);\n },\n onRetry,\n onComment\n });\n },\n transform(chunk) {\n parser.feed(chunk);\n }\n });\n }\n}\nexport {\n EventSourceParserStream,\n ParseError\n};\n//# sourceMappingURL=stream.js.map\n","/**\n * Symbol used to define custom serialization for user-defined class instances.\n * The static method should accept an instance and return serializable data.\n *\n * @example\n * ```ts\n * import { WORKFLOW_SERIALIZE, WORKFLOW_DESERIALIZE } from '@workflow/serde';\n *\n * class MyClass {\n * constructor(public value: string) {}\n *\n * static [WORKFLOW_SERIALIZE](instance: MyClass) {\n * return { value: instance.value };\n * }\n *\n * static [WORKFLOW_DESERIALIZE](data: { value: string }) {\n * return new MyClass(data.value);\n * }\n * }\n * ```\n */\nexport const WORKFLOW_SERIALIZE = Symbol.for('workflow-serialize');\n/**\n * Symbol used to define custom deserialization for user-defined class instances.\n * The static method should accept serialized data and return a class instance.\n *\n * @see WORKFLOW_SERIALIZE for usage example\n */\nexport const WORKFLOW_DESERIALIZE = Symbol.for('workflow-deserialize');\n//# sourceMappingURL=index.js.map","// src/as-array.ts\nfunction asArray(value) {\n return value === void 0 ? [] : Array.isArray(value) ? value : [value];\n}\n\n// src/combine-headers.ts\nfunction combineHeaders(...headers) {\n return headers.reduce(\n (combinedHeaders, currentHeaders) => ({\n ...combinedHeaders,\n ...currentHeaders != null ? currentHeaders : {}\n }),\n {}\n );\n}\n\n// src/convert-async-iterator-to-readable-stream.ts\nfunction convertAsyncIteratorToReadableStream(iterator) {\n let cancelled = false;\n return new ReadableStream({\n /**\n * Called when the consumer wants to pull more data from the stream.\n *\n * @param {ReadableStreamDefaultController<T>} controller - The controller to enqueue data into the stream.\n * @returns {Promise<void>}\n */\n async pull(controller) {\n if (cancelled) return;\n try {\n const { value, done } = await iterator.next();\n if (done) {\n controller.close();\n } else {\n controller.enqueue(value);\n }\n } catch (error) {\n controller.error(error);\n }\n },\n /**\n * Called when the consumer cancels the stream.\n */\n async cancel(reason) {\n cancelled = true;\n if (iterator.return) {\n try {\n await iterator.return(reason);\n } catch (e) {\n }\n }\n }\n });\n}\n\n// src/uint8-utils.ts\nvar { btoa, atob } = globalThis;\nfunction convertBase64ToUint8Array(base64String) {\n const base64Url = base64String.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const latin1string = atob(base64Url);\n return Uint8Array.from(latin1string, (byte) => byte.codePointAt(0));\n}\nfunction convertUint8ArrayToBase64(array) {\n let latin1string = \"\";\n for (let i = 0; i < array.length; i++) {\n latin1string += String.fromCodePoint(array[i]);\n }\n return btoa(latin1string);\n}\nfunction convertToBase64(value) {\n return value instanceof Uint8Array ? convertUint8ArrayToBase64(value) : value;\n}\n\n// src/convert-inline-file-data-to-uint8-array.ts\nfunction convertInlineFileDataToUint8Array(data) {\n if (data.type === \"text\") {\n return new TextEncoder().encode(data.text);\n }\n if (data.data instanceof Uint8Array) {\n return data.data;\n }\n if (data.data instanceof ArrayBuffer) {\n return new Uint8Array(data.data);\n }\n return convertBase64ToUint8Array(data.data);\n}\n\n// src/convert-image-model-file-to-data-uri.ts\nfunction convertImageModelFileToDataUri(file) {\n if (file.type === \"url\") return file.url;\n return `data:${file.mediaType};base64,${typeof file.data === \"string\" ? file.data : convertUint8ArrayToBase64(file.data)}`;\n}\n\n// src/convert-to-form-data.ts\nfunction convertToFormData(input, options = {}) {\n const { useArrayBrackets = true } = options;\n const formData = new FormData();\n for (const [key, value] of Object.entries(input)) {\n if (value == null) {\n continue;\n }\n if (Array.isArray(value)) {\n if (value.length === 1) {\n formData.append(key, value[0]);\n continue;\n }\n const arrayKey = useArrayBrackets ? `${key}[]` : key;\n for (const item of value) {\n formData.append(arrayKey, item);\n }\n continue;\n }\n formData.append(key, value);\n }\n return formData;\n}\n\n// src/create-tool-name-mapping.ts\nfunction createToolNameMapping({\n tools = [],\n providerToolNames\n}) {\n const customToolNameToProviderToolName = {};\n const providerToolNameToCustomToolName = {};\n for (const tool2 of tools) {\n if (tool2.type === \"provider\" && tool2.id in providerToolNames) {\n const providerToolName = providerToolNames[tool2.id];\n customToolNameToProviderToolName[tool2.name] = providerToolName;\n providerToolNameToCustomToolName[providerToolName] = tool2.name;\n }\n }\n return {\n toProviderToolName: (customToolName) => {\n var _a2;\n return (_a2 = customToolNameToProviderToolName[customToolName]) != null ? _a2 : customToolName;\n },\n toCustomToolName: (providerToolName) => {\n var _a2;\n return (_a2 = providerToolNameToCustomToolName[providerToolName]) != null ? _a2 : providerToolName;\n }\n };\n}\n\n// src/delay.ts\nasync function delay(delayInMs, options) {\n if (delayInMs == null) {\n return Promise.resolve();\n }\n const signal = options == null ? void 0 : options.abortSignal;\n return new Promise((resolve2, reject) => {\n if (signal == null ? void 0 : signal.aborted) {\n reject(createAbortError());\n return;\n }\n const timeoutId = setTimeout(() => {\n cleanup();\n resolve2();\n }, delayInMs);\n const cleanup = () => {\n clearTimeout(timeoutId);\n signal == null ? void 0 : signal.removeEventListener(\"abort\", onAbort);\n };\n const onAbort = () => {\n cleanup();\n reject(createAbortError());\n };\n signal == null ? void 0 : signal.addEventListener(\"abort\", onAbort);\n });\n}\nfunction createAbortError() {\n return new DOMException(\"Delay was aborted\", \"AbortError\");\n}\n\n// src/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 _a2;\n this.status = { type: \"resolved\", value };\n if (this._promise) {\n (_a2 = this._resolve) == null ? void 0 : _a2.call(this, value);\n }\n }\n reject(error) {\n var _a2;\n this.status = { type: \"rejected\", error };\n if (this._promise) {\n (_a2 = this._reject) == null ? void 0 : _a2.call(this, error);\n }\n }\n isResolved() {\n return this.status.type === \"resolved\";\n }\n isRejected() {\n return this.status.type === \"rejected\";\n }\n isPending() {\n return this.status.type === \"pending\";\n }\n};\n\n// src/detect-media-type.ts\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 documentMediaTypeSignatures = [\n {\n mediaType: \"application/pdf\",\n bytesPrefix: [37, 80, 68, 70]\n // %PDF\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 videoMediaTypeSignatures = [\n {\n mediaType: \"video/mp4\",\n bytesPrefix: [\n 0,\n 0,\n 0,\n null,\n 102,\n 116,\n 121,\n 112\n // ftyp\n ]\n },\n {\n mediaType: \"video/webm\",\n bytesPrefix: [26, 69, 223, 163]\n // EBML\n },\n {\n mediaType: \"video/quicktime\",\n bytesPrefix: [\n 0,\n 0,\n 0,\n 20,\n 102,\n 116,\n 121,\n 112,\n 113,\n 116\n // ftypqt\n ]\n },\n {\n mediaType: \"video/x-msvideo\",\n bytesPrefix: [82, 73, 70, 70]\n // RIFF (AVI)\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 detectMediaTypeBySignatures({\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}\nvar topLevelSignatureTables = {\n image: imageMediaTypeSignatures,\n audio: audioMediaTypeSignatures,\n video: videoMediaTypeSignatures,\n application: documentMediaTypeSignatures\n};\nfunction detectMediaType({\n data,\n topLevelType\n}) {\n if (topLevelType === void 0) {\n return detectMediaTypeBySignatures({\n data,\n signatures: [\n ...imageMediaTypeSignatures,\n ...documentMediaTypeSignatures,\n ...audioMediaTypeSignatures,\n ...videoMediaTypeSignatures\n ]\n });\n }\n const signatures = topLevelSignatureTables[topLevelType];\n if (signatures === void 0) {\n return void 0;\n }\n return detectMediaTypeBySignatures({ data, signatures });\n}\nfunction getTopLevelMediaType(mediaType) {\n const slashIndex = mediaType.indexOf(\"/\");\n return slashIndex === -1 ? mediaType : mediaType.substring(0, slashIndex);\n}\nfunction isFullMediaType(mediaType) {\n const slashIndex = mediaType.indexOf(\"/\");\n if (slashIndex === -1) {\n return false;\n }\n const subtype = mediaType.substring(slashIndex + 1);\n return subtype.length > 0 && subtype !== \"*\";\n}\n\n// src/cancel-response-body.ts\nasync function cancelResponseBody(response) {\n var _a2;\n try {\n await ((_a2 = response.body) == null ? void 0 : _a2.cancel());\n } catch (e) {\n }\n}\n\n// src/download-error.ts\nimport { AISDKError } from \"@ai-sdk/provider\";\nvar name = \"AI_DownloadError\";\nvar marker = `vercel.ai.error.${name}`;\nvar symbol = Symbol.for(marker);\nvar _a, _b;\nvar DownloadError = class extends (_b = AISDKError, _a = symbol, _b) {\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, message, cause });\n this[_a] = true;\n this.url = url;\n this.statusCode = statusCode;\n this.statusText = statusText;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker);\n }\n};\n\n// src/is-browser-runtime.ts\nfunction isBrowserRuntime(globalThisAny = globalThis) {\n return globalThisAny.window != null;\n}\n\n// src/validate-download-url.ts\nfunction validateDownloadUrl(url) {\n let parsed;\n try {\n parsed = new URL(url);\n } catch (e) {\n throw new DownloadError({\n url,\n message: `Invalid URL: ${url}`\n });\n }\n if (parsed.protocol === \"data:\") {\n return;\n }\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n throw new DownloadError({\n url,\n message: `URL scheme must be http, https, or data, got ${parsed.protocol}`\n });\n }\n const hostname = parsed.hostname.toLowerCase().replace(/\\.+$/, \"\");\n if (!hostname) {\n throw new DownloadError({\n url,\n message: `URL must have a hostname`\n });\n }\n if (hostname === \"localhost\" || hostname.endsWith(\".local\") || hostname.endsWith(\".localhost\")) {\n throw new DownloadError({\n url,\n message: `URL with hostname ${hostname} is not allowed`\n });\n }\n if (hostname.startsWith(\"[\") && hostname.endsWith(\"]\")) {\n const ipv6 = hostname.slice(1, -1);\n if (isPrivateIPv6(ipv6)) {\n throw new DownloadError({\n url,\n message: `URL with IPv6 address ${hostname} is not allowed`\n });\n }\n return;\n }\n if (isIPv4(hostname)) {\n if (isPrivateIPv4(hostname)) {\n throw new DownloadError({\n url,\n message: `URL with IP address ${hostname} is not allowed`\n });\n }\n return;\n }\n}\nfunction isIPv4(hostname) {\n const parts = hostname.split(\".\");\n if (parts.length !== 4) return false;\n return parts.every((part) => {\n const num = Number(part);\n return Number.isInteger(num) && num >= 0 && num <= 255 && String(num) === part;\n });\n}\nfunction isPrivateIPv4(ip) {\n const parts = ip.split(\".\").map(Number);\n const [a, b, c] = parts;\n if (a === 0) return true;\n if (a === 10) return true;\n if (a === 100 && b >= 64 && b <= 127) return true;\n if (a === 127) return true;\n if (a === 169 && b === 254) return true;\n if (a === 172 && b >= 16 && b <= 31) return true;\n if (a === 192 && b === 0 && c === 0) return true;\n if (a === 192 && b === 168) return true;\n if (a === 198 && (b === 18 || b === 19)) return true;\n if (a >= 240) return true;\n return false;\n}\nfunction parseIPv6(ip) {\n let address = ip.toLowerCase();\n const zoneIndex = address.indexOf(\"%\");\n if (zoneIndex !== -1) {\n address = address.slice(0, zoneIndex);\n }\n const halves = address.split(\"::\");\n if (halves.length > 2) return null;\n const toGroups = (segment) => {\n if (segment === \"\") return [];\n const groups = [];\n const parts = segment.split(\":\");\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n if (part.includes(\".\")) {\n if (i !== parts.length - 1 || !isIPv4(part)) return null;\n const [a, b, c, d] = part.split(\".\").map(Number);\n groups.push(a << 8 | b, c << 8 | d);\n continue;\n }\n if (!/^[0-9a-f]{1,4}$/.test(part)) return null;\n groups.push(parseInt(part, 16));\n }\n return groups;\n };\n const head = toGroups(halves[0]);\n if (head === null) return null;\n if (halves.length === 2) {\n const tail = toGroups(halves[1]);\n if (tail === null) return null;\n const fill = 8 - head.length - tail.length;\n if (fill < 0) return null;\n return [...head, ...new Array(fill).fill(0), ...tail];\n }\n return head.length === 8 ? head : null;\n}\nfunction isPrivateIPv6(ip) {\n const groups = parseIPv6(ip);\n if (groups === null) return true;\n const topZero = (count) => groups.slice(0, count).every((group) => group === 0);\n if (topZero(7) && (groups[7] === 0 || groups[7] === 1)) return true;\n if ((groups[0] & 65024) === 64512) return true;\n if ((groups[0] & 65472) === 65152) return true;\n if ((groups[0] & 65472) === 65216) return true;\n if ((groups[0] & 65280) === 65280) return true;\n const embedsIPv4 = (\n // ::/96 — IPv4-compatible (deprecated)\n topZero(6) || // ::ffff:0:0/96 — IPv4-mapped (ffff in group 5)\n topZero(5) && groups[5] === 65535 || // ::ffff:0:0/96 — IPv4-translated form (ffff in group 4, group 5 zero)\n topZero(4) && groups[4] === 65535 && groups[5] === 0 || // 64:ff9b::/96 — NAT64 well-known prefix\n groups[0] === 100 && groups[1] === 65435 && groups[2] === 0 && groups[3] === 0 && groups[4] === 0 && groups[5] === 0 || // 64:ff9b:1::/48 — NAT64 local-use prefix\n groups[0] === 100 && groups[1] === 65435 && groups[2] === 1\n );\n if (embedsIPv4) {\n const a = groups[6] >> 8 & 255;\n const b = groups[6] & 255;\n const c = groups[7] >> 8 & 255;\n const d = groups[7] & 255;\n return isPrivateIPv4(`${a}.${b}.${c}.${d}`);\n }\n return false;\n}\n\n// src/fetch-with-validated-redirects.ts\nvar MAX_DOWNLOAD_REDIRECTS = 10;\nasync function fetchWithValidatedRedirects({\n url,\n headers,\n abortSignal,\n maxRedirects = MAX_DOWNLOAD_REDIRECTS\n}) {\n const baseInit = { signal: abortSignal };\n if (headers !== void 0) {\n baseInit.headers = headers;\n }\n let currentUrl = url;\n for (let redirectCount = 0; redirectCount <= maxRedirects; redirectCount++) {\n validateDownloadUrl(currentUrl);\n const response = await fetch(currentUrl, {\n ...baseInit,\n redirect: \"manual\"\n });\n if (response.type === \"opaqueredirect\") {\n if (!isBrowserRuntime()) {\n throw new DownloadError({\n url,\n message: `Redirect from ${currentUrl} could not be validated and was blocked`\n });\n }\n return await fetch(currentUrl, { ...baseInit, redirect: \"follow\" });\n }\n const location = response.headers.get(\"location\");\n if (response.status >= 300 && response.status < 400 && location) {\n await cancelResponseBody(response);\n currentUrl = new URL(location, currentUrl).toString();\n continue;\n }\n return response;\n }\n throw new DownloadError({\n url,\n message: `Too many redirects (max ${maxRedirects})`\n });\n}\n\n// src/read-response-with-size-limit.ts\nvar DEFAULT_MAX_DOWNLOAD_SIZE = 2 * 1024 * 1024 * 1024;\nasync function readResponseWithSizeLimit({\n response,\n url,\n maxBytes = DEFAULT_MAX_DOWNLOAD_SIZE\n}) {\n const contentLength = response.headers.get(\"content-length\");\n if (contentLength != null) {\n const length = parseInt(contentLength, 10);\n if (!isNaN(length) && length > maxBytes) {\n await cancelResponseBody(response);\n throw new DownloadError({\n url,\n message: `Download of ${url} exceeded maximum size of ${maxBytes} bytes (Content-Length: ${length}).`\n });\n }\n }\n const body = response.body;\n if (body == null) {\n return new Uint8Array(0);\n }\n const reader = body.getReader();\n const chunks = [];\n let totalBytes = 0;\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n totalBytes += value.length;\n if (totalBytes > maxBytes) {\n throw new DownloadError({\n url,\n message: `Download of ${url} exceeded maximum size of ${maxBytes} bytes.`\n });\n }\n chunks.push(value);\n }\n } finally {\n try {\n await reader.cancel();\n } finally {\n reader.releaseLock();\n }\n }\n const result = new Uint8Array(totalBytes);\n let offset = 0;\n for (const chunk of chunks) {\n result.set(chunk, offset);\n offset += chunk.length;\n }\n return result;\n}\n\n// src/download-blob.ts\nasync function downloadBlob(url, options) {\n var _a2, _b2;\n try {\n const response = await fetchWithValidatedRedirects({\n url,\n abortSignal: options == null ? void 0 : options.abortSignal\n });\n if (!response.ok) {\n await cancelResponseBody(response);\n throw new DownloadError({\n url,\n statusCode: response.status,\n statusText: response.statusText\n });\n }\n const data = await readResponseWithSizeLimit({\n response,\n url,\n maxBytes: (_a2 = options == null ? void 0 : options.maxBytes) != null ? _a2 : DEFAULT_MAX_DOWNLOAD_SIZE\n });\n const contentType = (_b2 = response.headers.get(\"content-type\")) != null ? _b2 : void 0;\n return new Blob([data], contentType ? { type: contentType } : void 0);\n } catch (error) {\n if (DownloadError.isInstance(error)) {\n throw error;\n }\n throw new DownloadError({ url, cause: error });\n }\n}\n\n// src/extract-lines.ts\nfunction extractLines({\n text,\n startLine,\n endLine\n}) {\n if (startLine == null && endLine == null) return text;\n const lineEnding = text.includes(\"\\r\\n\") ? \"\\r\\n\" : text.includes(\"\\n\") ? \"\\n\" : text.includes(\"\\r\") ? \"\\r\" : \"\\n\";\n const lines = text.split(lineEnding);\n const start = Math.max(1, startLine != null ? startLine : 1) - 1;\n const end = Math.min(lines.length, endLine != null ? endLine : lines.length);\n return lines.slice(start, end).join(lineEnding);\n}\n\n// src/extract-response-headers.ts\nfunction extractResponseHeaders(response) {\n return Object.fromEntries([...response.headers]);\n}\n\n// src/filter-nullable.ts\nfunction filterNullable(...values) {\n return values.filter((value) => value != null);\n}\n\n// src/generate-id.ts\nimport { InvalidArgumentError } from \"@ai-sdk/provider\";\nvar createIdGenerator = ({\n prefix,\n size = 16,\n alphabet = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\",\n separator = \"-\"\n} = {}) => {\n const generator = () => {\n const alphabetLength = alphabet.length;\n const chars = new Array(size);\n for (let i = 0; i < size; i++) {\n chars[i] = alphabet[Math.random() * alphabetLength | 0];\n }\n return chars.join(\"\");\n };\n if (prefix == null) {\n return generator;\n }\n if (alphabet.includes(separator)) {\n throw new InvalidArgumentError({\n argument: \"separator\",\n message: `The separator \"${separator}\" must not be part of the alphabet \"${alphabet}\".`\n });\n }\n return () => `${prefix}${separator}${generator()}`;\n};\nvar generateId = createIdGenerator();\n\n// src/get-error-message.ts\nimport { getErrorMessage } from \"@ai-sdk/provider\";\n\n// src/get-from-api.ts\nimport { APICallError as APICallError2 } from \"@ai-sdk/provider\";\n\n// src/handle-fetch-error.ts\nimport { APICallError } from \"@ai-sdk/provider\";\n\n// src/is-abort-error.ts\nfunction isAbortError(error) {\n return (error instanceof Error || error instanceof DOMException) && (error.name === \"AbortError\" || error.name === \"ResponseAborted\" || // Next.js\n error.name === \"TimeoutError\");\n}\n\n// src/handle-fetch-error.ts\nvar FETCH_FAILED_ERROR_MESSAGES = [\"fetch failed\", \"failed to fetch\"];\nvar BUN_ERROR_CODES = [\n \"ConnectionRefused\",\n \"ConnectionClosed\",\n \"FailedToOpenSocket\",\n \"ECONNRESET\",\n \"ECONNREFUSED\",\n \"ETIMEDOUT\",\n \"EPIPE\"\n];\nfunction isBunNetworkError(error) {\n if (!(error instanceof Error)) {\n return false;\n }\n const code = error.code;\n if (typeof code === \"string\" && BUN_ERROR_CODES.includes(code)) {\n return true;\n }\n return false;\n}\nfunction handleFetchError({\n error,\n url,\n requestBodyValues\n}) {\n if (isAbortError(error)) {\n return error;\n }\n if (error instanceof TypeError && FETCH_FAILED_ERROR_MESSAGES.includes(error.message.toLowerCase())) {\n const cause = error.cause;\n if (cause != null) {\n return new APICallError({\n message: `Cannot connect to API: ${cause.message}`,\n cause,\n url,\n requestBodyValues,\n isRetryable: true\n // retry when network error\n });\n }\n }\n if (isBunNetworkError(error)) {\n return new APICallError({\n message: `Cannot connect to API: ${error.message}`,\n cause: error,\n url,\n requestBodyValues,\n isRetryable: true\n });\n }\n return error;\n}\n\n// src/get-runtime-environment-user-agent.ts\nfunction getRuntimeEnvironmentUserAgent(globalThisAny = globalThis) {\n var _a2, _b2, _c;\n if (globalThisAny.window) {\n return `runtime/browser`;\n }\n if ((_a2 = globalThisAny.navigator) == null ? void 0 : _a2.userAgent) {\n return `runtime/${globalThisAny.navigator.userAgent.toLowerCase()}`;\n }\n if ((_c = (_b2 = globalThisAny.process) == null ? void 0 : _b2.versions) == null ? void 0 : _c.node) {\n return `runtime/node.js/${globalThisAny.process.version.substring(0)}`;\n }\n if (globalThisAny.EdgeRuntime) {\n return `runtime/vercel-edge`;\n }\n return \"runtime/unknown\";\n}\n\n// src/normalize-headers.ts\nfunction normalizeHeaders(headers) {\n if (headers == null) {\n return {};\n }\n const normalized = {};\n if (headers instanceof Headers) {\n headers.forEach((value, key) => {\n normalized[key.toLowerCase()] = value;\n });\n } else {\n if (!Array.isArray(headers)) {\n headers = Object.entries(headers);\n }\n for (const [key, value] of headers) {\n if (value != null) {\n normalized[key.toLowerCase()] = value;\n }\n }\n }\n return normalized;\n}\n\n// src/with-user-agent-suffix.ts\nfunction withUserAgentSuffix(headers, ...userAgentSuffixParts) {\n const normalizedHeaders = new Headers(normalizeHeaders(headers));\n const currentUserAgentHeader = normalizedHeaders.get(\"user-agent\") || \"\";\n normalizedHeaders.set(\n \"user-agent\",\n [currentUserAgentHeader, ...userAgentSuffixParts].filter(Boolean).join(\" \")\n );\n return Object.fromEntries(normalizedHeaders.entries());\n}\n\n// src/version.ts\nvar VERSION = true ? \"5.0.1\" : \"0.0.0-test\";\n\n// src/get-from-api.ts\nvar getOriginalFetch = () => globalThis.fetch;\nvar getFromApi = async ({\n url,\n headers = {},\n successfulResponseHandler,\n failedResponseHandler,\n abortSignal,\n fetch: fetch2 = getOriginalFetch()\n}) => {\n try {\n const response = await fetch2(url, {\n method: \"GET\",\n headers: withUserAgentSuffix(\n headers,\n `ai-sdk/provider-utils/${VERSION}`,\n getRuntimeEnvironmentUserAgent()\n ),\n signal: abortSignal\n });\n const responseHeaders = extractResponseHeaders(response);\n if (!response.ok) {\n let errorInformation;\n try {\n errorInformation = await failedResponseHandler({\n response,\n url,\n requestBodyValues: {}\n });\n } catch (error) {\n if (isAbortError(error) || APICallError2.isInstance(error)) {\n throw error;\n }\n throw new APICallError2({\n message: \"Failed to process error response\",\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: {}\n });\n }\n throw errorInformation.value;\n }\n try {\n return await successfulResponseHandler({\n response,\n url,\n requestBodyValues: {}\n });\n } catch (error) {\n if (error instanceof Error) {\n if (isAbortError(error) || APICallError2.isInstance(error)) {\n throw error;\n }\n }\n throw new APICallError2({\n message: \"Failed to process successful response\",\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: {}\n });\n }\n } catch (error) {\n throw handleFetchError({ error, url, requestBodyValues: {} });\n }\n};\n\n// src/inject-json-instruction.ts\nvar DEFAULT_SCHEMA_PREFIX = \"JSON schema:\";\nvar DEFAULT_SCHEMA_SUFFIX = \"You MUST answer with a JSON object that matches the JSON schema above.\";\nvar DEFAULT_GENERIC_SUFFIX = \"You MUST answer with JSON.\";\nfunction injectJsonInstruction({\n prompt,\n schema,\n schemaPrefix = schema != null ? DEFAULT_SCHEMA_PREFIX : void 0,\n schemaSuffix = schema != null ? DEFAULT_SCHEMA_SUFFIX : DEFAULT_GENERIC_SUFFIX\n}) {\n return [\n prompt != null && prompt.length > 0 ? prompt : void 0,\n prompt != null && prompt.length > 0 ? \"\" : void 0,\n // add a newline if prompt is not null\n schemaPrefix,\n schema != null ? JSON.stringify(schema) : void 0,\n schemaSuffix\n ].filter((line) => line != null).join(\"\\n\");\n}\nfunction injectJsonInstructionIntoMessages({\n messages,\n schema,\n schemaPrefix,\n schemaSuffix\n}) {\n var _a2, _b2;\n const systemMessage = ((_a2 = messages[0]) == null ? void 0 : _a2.role) === \"system\" ? { ...messages[0] } : { role: \"system\", content: \"\" };\n systemMessage.content = injectJsonInstruction({\n prompt: systemMessage.content,\n schema,\n schemaPrefix,\n schemaSuffix\n });\n return [\n systemMessage,\n ...((_b2 = messages[0]) == null ? void 0 : _b2.role) === \"system\" ? messages.slice(1) : messages\n ];\n}\n\n// src/is-buffer.ts\nfunction isBuffer(value) {\n var _a2, _b2;\n return (_b2 = (_a2 = globalThis.Buffer) == null ? void 0 : _a2.isBuffer(value)) != null ? _b2 : false;\n}\n\n// src/is-same-origin.ts\nfunction isSameOrigin(url, baseUrl) {\n try {\n return new URL(url).origin === new URL(baseUrl).origin;\n } catch (e) {\n return false;\n }\n}\n\n// src/is-non-nullable.ts\nfunction isNonNullable(value) {\n return value != null;\n}\n\n// src/is-provider-reference.ts\nfunction isProviderReference(data) {\n return typeof data === \"object\" && data !== null && !(data instanceof Uint8Array) && !(data instanceof URL) && !(data instanceof ArrayBuffer) && !isBuffer(data) && !(\"type\" in data);\n}\n\n// src/is-url-supported.ts\nfunction isUrlSupported({\n mediaType,\n url,\n supportedUrls\n}) {\n url = url.toLowerCase();\n mediaType = mediaType.toLowerCase();\n const isTopLevelOnly = !mediaType.includes(\"/\");\n return Object.entries(supportedUrls).map(([key, value]) => {\n const mediaType2 = key.toLowerCase();\n return mediaType2 === \"*\" || mediaType2 === \"*/*\" ? { mediaTypePrefix: \"\", regexes: value } : { mediaTypePrefix: mediaType2.replace(/\\*/, \"\"), regexes: value };\n }).filter(({ mediaTypePrefix }) => {\n if (mediaTypePrefix === \"\") {\n return true;\n }\n if (isTopLevelOnly) {\n return `${mediaType}/` === mediaTypePrefix;\n }\n return mediaType.startsWith(mediaTypePrefix);\n }).flatMap(({ regexes }) => regexes).some((pattern) => pattern.test(url));\n}\n\n// src/load-api-key.ts\nimport { LoadAPIKeyError } from \"@ai-sdk/provider\";\nfunction loadApiKey({\n apiKey,\n environmentVariableName,\n apiKeyParameterName = \"apiKey\",\n description\n}) {\n if (typeof apiKey === \"string\") {\n return apiKey;\n }\n if (apiKey != null) {\n throw new LoadAPIKeyError({\n message: `${description} API key must be a string.`\n });\n }\n if (typeof process === \"undefined\") {\n throw new LoadAPIKeyError({\n message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter. Environment variables are not supported in this environment.`\n });\n }\n apiKey = process.env[environmentVariableName];\n if (apiKey == null) {\n throw new LoadAPIKeyError({\n message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter or the ${environmentVariableName} environment variable.`\n });\n }\n if (typeof apiKey !== \"string\") {\n throw new LoadAPIKeyError({\n message: `${description} API key must be a string. The value of the ${environmentVariableName} environment variable is not a string.`\n });\n }\n return apiKey;\n}\n\n// src/load-optional-setting.ts\nfunction loadOptionalSetting({\n settingValue,\n environmentVariableName\n}) {\n if (typeof settingValue === \"string\") {\n return settingValue;\n }\n if (settingValue != null || typeof process === \"undefined\") {\n return void 0;\n }\n settingValue = process.env[environmentVariableName];\n if (settingValue == null || typeof settingValue !== \"string\") {\n return void 0;\n }\n return settingValue;\n}\n\n// src/load-setting.ts\nimport { LoadSettingError } from \"@ai-sdk/provider\";\nfunction loadSetting({\n settingValue,\n environmentVariableName,\n settingName,\n description\n}) {\n if (typeof settingValue === \"string\") {\n return settingValue;\n }\n if (settingValue != null) {\n throw new LoadSettingError({\n message: `${description} setting must be a string.`\n });\n }\n if (typeof process === \"undefined\") {\n throw new LoadSettingError({\n message: `${description} setting is missing. Pass it using the '${settingName}' parameter. Environment variables are not supported in this environment.`\n });\n }\n settingValue = process.env[environmentVariableName];\n if (settingValue == null) {\n throw new LoadSettingError({\n message: `${description} setting is missing. Pass it using the '${settingName}' parameter or the ${environmentVariableName} environment variable.`\n });\n }\n if (typeof settingValue !== \"string\") {\n throw new LoadSettingError({\n message: `${description} setting must be a string. The value of the ${environmentVariableName} environment variable is not a string.`\n });\n }\n return settingValue;\n}\n\n// src/map-reasoning-to-provider.ts\nfunction isCustomReasoning(reasoning) {\n return reasoning !== void 0 && reasoning !== \"provider-default\";\n}\nfunction mapReasoningToProviderEffort({\n reasoning,\n effortMap,\n warnings\n}) {\n const mapped = effortMap[reasoning];\n if (mapped == null) {\n warnings.push({\n type: \"unsupported\",\n feature: \"reasoning\",\n details: `reasoning \"${reasoning}\" is not supported by this model.`\n });\n return void 0;\n }\n if (mapped !== reasoning) {\n warnings.push({\n type: \"compatibility\",\n feature: \"reasoning\",\n details: `reasoning \"${reasoning}\" is not directly supported by this model. mapped to effort \"${mapped}\".`\n });\n }\n return mapped;\n}\nvar DEFAULT_REASONING_BUDGET_PERCENTAGES = {\n minimal: 0.02,\n low: 0.1,\n medium: 0.3,\n high: 0.6,\n xhigh: 0.9\n};\nfunction mapReasoningToProviderBudget({\n reasoning,\n maxOutputTokens,\n maxReasoningBudget,\n minReasoningBudget = 1024,\n budgetPercentages = DEFAULT_REASONING_BUDGET_PERCENTAGES,\n warnings\n}) {\n const pct = budgetPercentages[reasoning];\n if (pct == null) {\n warnings.push({\n type: \"unsupported\",\n feature: \"reasoning\",\n details: `reasoning \"${reasoning}\" is not supported by this model.`\n });\n return void 0;\n }\n return Math.min(\n maxReasoningBudget,\n Math.max(minReasoningBudget, Math.round(maxOutputTokens * pct))\n );\n}\n\n// src/media-type-to-extension.ts\nfunction mediaTypeToExtension(mediaType) {\n var _a2;\n const [_type, subtype = \"\"] = mediaType.toLowerCase().split(\"/\");\n return (_a2 = {\n mpeg: \"mp3\",\n \"x-wav\": \"wav\",\n opus: \"ogg\",\n mp4: \"m4a\",\n \"x-m4a\": \"m4a\"\n }[subtype]) != null ? _a2 : subtype;\n}\n\n// src/parse-json.ts\nimport {\n JSONParseError,\n TypeValidationError as TypeValidationError3\n} from \"@ai-sdk/provider\";\n\n// src/secure-json-parse.ts\nvar suspectProtoRx = /\"(?:_|\\\\u005[Ff])(?:_|\\\\u005[Ff])(?:p|\\\\u0070)(?:r|\\\\u0072)(?:o|\\\\u006[Ff])(?:t|\\\\u0074)(?:o|\\\\u006[Ff])(?:_|\\\\u005[Ff])(?:_|\\\\u005[Ff])\"\\s*:/;\nvar suspectConstructorRx = /\"(?:c|\\\\u0063)(?:o|\\\\u006[Ff])(?:n|\\\\u006[Ee])(?:s|\\\\u0073)(?:t|\\\\u0074)(?:r|\\\\u0072)(?:u|\\\\u0075)(?:c|\\\\u0063)(?:t|\\\\u0074)(?:o|\\\\u006[Ff])(?:r|\\\\u0072)\"\\s*:/;\nfunction _parse(text) {\n const obj = JSON.parse(text);\n if (obj === null || typeof obj !== \"object\") {\n return obj;\n }\n if (suspectProtoRx.test(text) === false && suspectConstructorRx.test(text) === false) {\n return obj;\n }\n return filter(obj);\n}\nfunction filter(obj) {\n let next = [obj];\n while (next.length) {\n const nodes = next;\n next = [];\n for (const node of nodes) {\n if (Object.prototype.hasOwnProperty.call(node, \"__proto__\")) {\n throw new SyntaxError(\"Object contains forbidden prototype property\");\n }\n if (Object.prototype.hasOwnProperty.call(node, \"constructor\") && node.constructor !== null && typeof node.constructor === \"object\" && Object.prototype.hasOwnProperty.call(node.constructor, \"prototype\")) {\n throw new SyntaxError(\"Object contains forbidden prototype property\");\n }\n for (const key in node) {\n const value = node[key];\n if (value && typeof value === \"object\") {\n next.push(value);\n }\n }\n }\n }\n return obj;\n}\nfunction secureJsonParse(text) {\n const { stackTraceLimit } = Error;\n try {\n Error.stackTraceLimit = 0;\n } catch (e) {\n return _parse(text);\n }\n try {\n return _parse(text);\n } finally {\n Error.stackTraceLimit = stackTraceLimit;\n }\n}\n\n// src/validate-types.ts\nimport {\n TypeValidationError as TypeValidationError2\n} from \"@ai-sdk/provider\";\n\n// src/schema.ts\nimport { TypeValidationError } from \"@ai-sdk/provider\";\nimport * as z4 from \"zod/v4\";\n\n// src/add-additional-properties-to-json-schema.ts\nfunction addAdditionalPropertiesToJsonSchema(jsonSchema2) {\n if (jsonSchema2.type === \"object\" || Array.isArray(jsonSchema2.type) && jsonSchema2.type.includes(\"object\")) {\n jsonSchema2.additionalProperties = false;\n const { properties } = jsonSchema2;\n if (properties != null) {\n for (const key of Object.keys(properties)) {\n properties[key] = visit(properties[key]);\n }\n }\n }\n if (jsonSchema2.items != null) {\n jsonSchema2.items = Array.isArray(jsonSchema2.items) ? jsonSchema2.items.map(visit) : visit(jsonSchema2.items);\n }\n if (jsonSchema2.anyOf != null) {\n jsonSchema2.anyOf = jsonSchema2.anyOf.map(visit);\n }\n if (jsonSchema2.allOf != null) {\n jsonSchema2.allOf = jsonSchema2.allOf.map(visit);\n }\n if (jsonSchema2.oneOf != null) {\n jsonSchema2.oneOf = jsonSchema2.oneOf.map(visit);\n }\n const { definitions } = jsonSchema2;\n if (definitions != null) {\n for (const key of Object.keys(definitions)) {\n definitions[key] = visit(definitions[key]);\n }\n }\n return jsonSchema2;\n}\nfunction visit(def) {\n if (typeof def === \"boolean\") return def;\n return addAdditionalPropertiesToJsonSchema(def);\n}\n\n// src/to-json-schema/zod3-to-json-schema/options.ts\nvar ignoreOverride = /* @__PURE__ */ Symbol(\n \"Let zodToJsonSchema decide on which parser to use\"\n);\nvar defaultOptions = {\n name: void 0,\n $refStrategy: \"root\",\n basePath: [\"#\"],\n effectStrategy: \"input\",\n pipeStrategy: \"all\",\n dateStrategy: \"format:date-time\",\n mapStrategy: \"entries\",\n removeAdditionalStrategy: \"passthrough\",\n allowedAdditionalProperties: true,\n rejectedAdditionalProperties: false,\n definitionPath: \"definitions\",\n strictUnions: false,\n definitions: {},\n errorMessages: false,\n patternStrategy: \"escape\",\n applyRegexFlags: false,\n emailStrategy: \"format:email\",\n base64Strategy: \"contentEncoding:base64\",\n nameStrategy: \"ref\"\n};\nvar getDefaultOptions = (options) => typeof options === \"string\" ? {\n ...defaultOptions,\n name: options\n} : {\n ...defaultOptions,\n ...options\n};\n\n// src/to-json-schema/zod3-to-json-schema/select-parser.ts\nimport { ZodFirstPartyTypeKind as ZodFirstPartyTypeKind3 } from \"zod/v3\";\n\n// src/to-json-schema/zod3-to-json-schema/parsers/any.ts\nfunction parseAnyDef() {\n return {};\n}\n\n// src/to-json-schema/zod3-to-json-schema/parsers/array.ts\nimport { ZodFirstPartyTypeKind } from \"zod/v3\";\nfunction parseArrayDef(def, refs) {\n var _a2, _b2, _c;\n const res = {\n type: \"array\"\n };\n if (((_a2 = def.type) == null ? void 0 : _a2._def) && ((_c = (_b2 = def.type) == null ? void 0 : _b2._def) == null ? void 0 : _c.typeName) !== ZodFirstPartyTypeKind.ZodAny) {\n res.items = parseDef(def.type._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\"]\n });\n }\n if (def.minLength) {\n res.minItems = def.minLength.value;\n }\n if (def.maxLength) {\n res.maxItems = def.maxLength.value;\n }\n if (def.exactLength) {\n res.minItems = def.exactLength.value;\n res.maxItems = def.exactLength.value;\n }\n return res;\n}\n\n// src/to-json-schema/zod3-to-json-schema/parsers/bigint.ts\nfunction parseBigintDef(def) {\n const res = {\n type: \"integer\",\n format: \"int64\"\n };\n if (!def.checks) return res;\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n if (check.inclusive) {\n res.minimum = check.value;\n } else {\n res.exclusiveMinimum = check.value;\n }\n break;\n case \"max\":\n if (check.inclusive) {\n res.maximum = check.value;\n } else {\n res.exclusiveMaximum = check.value;\n }\n break;\n case \"multipleOf\":\n res.multipleOf = check.value;\n break;\n }\n }\n return res;\n}\n\n// src/to-json-schema/zod3-to-json-schema/parsers/boolean.ts\nfunction parseBooleanDef() {\n return { type: \"boolean\" };\n}\n\n// src/to-json-schema/zod3-to-json-schema/parsers/branded.ts\nfunction parseBrandedDef(_def, refs) {\n return parseDef(_def.type._def, refs);\n}\n\n// src/to-json-schema/zod3-to-json-schema/parsers/catch.ts\nvar parseCatchDef = (def, refs) => {\n return parseDef(def.innerType._def, refs);\n};\n\n// src/to-json-schema/zod3-to-json-schema/parsers/date.ts\nfunction parseDateDef(def, refs, overrideDateStrategy) {\n const strategy = overrideDateStrategy != null ? overrideDateStrategy : refs.dateStrategy;\n if (Array.isArray(strategy)) {\n return {\n anyOf: strategy.map((item) => parseDateDef(def, refs, item))\n };\n }\n switch (strategy) {\n case \"string\":\n case \"format:date-time\":\n return {\n type: \"string\",\n format: \"date-time\"\n };\n case \"format:date\":\n return {\n type: \"string\",\n format: \"date\"\n };\n case \"integer\":\n return integerDateParser(def);\n }\n}\nvar integerDateParser = (def) => {\n const res = {\n type: \"integer\",\n format: \"unix-time\"\n };\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n res.minimum = check.value;\n break;\n case \"max\":\n res.maximum = check.value;\n break;\n }\n }\n return res;\n};\n\n// src/to-json-schema/zod3-to-json-schema/parsers/default.ts\nfunction parseDefaultDef(_def, refs) {\n return {\n ...parseDef(_def.innerType._def, refs),\n default: _def.defaultValue()\n };\n}\n\n// src/to-json-schema/zod3-to-json-schema/parsers/effects.ts\nfunction parseEffectsDef(_def, refs) {\n return refs.effectStrategy === \"input\" ? parseDef(_def.schema._def, refs) : parseAnyDef();\n}\n\n// src/to-json-schema/zod3-to-json-schema/parsers/enum.ts\nfunction parseEnumDef(def) {\n return {\n type: \"string\",\n enum: Array.from(def.values)\n };\n}\n\n// src/to-json-schema/zod3-to-json-schema/parsers/intersection.ts\nvar isJsonSchema7AllOfType = (type) => {\n if (\"type\" in type && type.type === \"string\") return false;\n return \"allOf\" in type;\n};\nfunction parseIntersectionDef(def, refs) {\n const allOf = [\n parseDef(def.left._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", \"0\"]\n }),\n parseDef(def.right._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", \"1\"]\n })\n ].filter((x) => !!x);\n const mergedAllOf = [];\n allOf.forEach((schema) => {\n if (isJsonSchema7AllOfType(schema)) {\n mergedAllOf.push(...schema.allOf);\n } else {\n let nestedSchema = schema;\n if (\"additionalProperties\" in schema && schema.additionalProperties === false) {\n const { additionalProperties: _additionalProperties, ...rest } = schema;\n nestedSchema = rest;\n }\n mergedAllOf.push(nestedSchema);\n }\n });\n return mergedAllOf.length ? { allOf: mergedAllOf } : void 0;\n}\n\n// src/to-json-schema/zod3-to-json-schema/parsers/literal.ts\nfunction parseLiteralDef(def) {\n const parsedType = typeof def.value;\n if (parsedType !== \"bigint\" && parsedType !== \"number\" && parsedType !== \"boolean\" && parsedType !== \"string\") {\n return {\n type: Array.isArray(def.value) ? \"array\" : \"object\"\n };\n }\n return {\n type: parsedType === \"bigint\" ? \"integer\" : parsedType,\n const: def.value\n };\n}\n\n// src/to-json-schema/zod3-to-json-schema/parsers/record.ts\nimport {\n ZodFirstPartyTypeKind as ZodFirstPartyTypeKind2\n} from \"zod/v3\";\n\n// src/to-json-schema/zod3-to-json-schema/parsers/string.ts\nvar emojiRegex = void 0;\nvar zodPatterns = {\n /**\n * `c` was changed to `[cC]` to replicate /i flag\n */\n cuid: /^[cC][^\\s-]{8,}$/,\n cuid2: /^[0-9a-z]+$/,\n ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/,\n /**\n * `a-z` was added to replicate /i flag\n */\n email: /^(?!\\.)(?!.*\\.\\.)([a-zA-Z0-9_'+\\-\\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+[a-zA-Z]{2,}$/,\n /**\n * Constructed a valid Unicode RegExp\n *\n * Lazily instantiate since this type of regex isn't supported\n * in all envs (e.g. React Native).\n *\n * See:\n * https://github.com/colinhacks/zod/issues/2433\n * Fix in Zod:\n * https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b\n */\n emoji: () => {\n if (emojiRegex === void 0) {\n emojiRegex = RegExp(\n \"^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$\",\n \"u\"\n );\n }\n return emojiRegex;\n },\n /**\n * Unused\n */\n uuid: /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/,\n /**\n * Unused\n */\n ipv4: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,\n ipv4Cidr: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/,\n /**\n * Unused\n */\n ipv6: /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,\n ipv6Cidr: /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,\n base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,\n base64url: /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,\n nanoid: /^[a-zA-Z0-9_-]{21}$/,\n jwt: /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/\n};\nfunction parseStringDef(def, refs) {\n const res = {\n type: \"string\"\n };\n if (def.checks) {\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n res.minLength = typeof res.minLength === \"number\" ? Math.max(res.minLength, check.value) : check.value;\n break;\n case \"max\":\n res.maxLength = typeof res.maxLength === \"number\" ? Math.min(res.maxLength, check.value) : check.value;\n break;\n case \"email\":\n switch (refs.emailStrategy) {\n case \"format:email\":\n addFormat(res, \"email\", check.message, refs);\n break;\n case \"format:idn-email\":\n addFormat(res, \"idn-email\", check.message, refs);\n break;\n case \"pattern:zod\":\n addPattern(res, zodPatterns.email, check.message, refs);\n break;\n }\n break;\n case \"url\":\n addFormat(res, \"uri\", check.message, refs);\n break;\n case \"uuid\":\n addFormat(res, \"uuid\", check.message, refs);\n break;\n case \"regex\":\n addPattern(res, check.regex, check.message, refs);\n break;\n case \"cuid\":\n addPattern(res, zodPatterns.cuid, check.message, refs);\n break;\n case \"cuid2\":\n addPattern(res, zodPatterns.cuid2, check.message, refs);\n break;\n case \"startsWith\":\n addPattern(\n res,\n RegExp(`^${escapeLiteralCheckValue(check.value, refs)}`),\n check.message,\n refs\n );\n break;\n case \"endsWith\":\n addPattern(\n res,\n RegExp(`${escapeLiteralCheckValue(check.value, refs)}$`),\n check.message,\n refs\n );\n break;\n case \"datetime\":\n addFormat(res, \"date-time\", check.message, refs);\n break;\n case \"date\":\n addFormat(res, \"date\", check.message, refs);\n break;\n case \"time\":\n addFormat(res, \"time\", check.message, refs);\n break;\n case \"duration\":\n addFormat(res, \"duration\", check.message, refs);\n break;\n case \"length\":\n res.minLength = typeof res.minLength === \"number\" ? Math.max(res.minLength, check.value) : check.value;\n res.maxLength = typeof res.maxLength === \"number\" ? Math.min(res.maxLength, check.value) : check.value;\n break;\n case \"includes\": {\n addPattern(\n res,\n RegExp(escapeLiteralCheckValue(check.value, refs)),\n check.message,\n refs\n );\n break;\n }\n case \"ip\": {\n if (check.version !== \"v6\") {\n addFormat(res, \"ipv4\", check.message, refs);\n }\n if (check.version !== \"v4\") {\n addFormat(res, \"ipv6\", check.message, refs);\n }\n break;\n }\n case \"base64url\":\n addPattern(res, zodPatterns.base64url, check.message, refs);\n break;\n case \"jwt\":\n addPattern(res, zodPatterns.jwt, check.message, refs);\n break;\n case \"cidr\": {\n if (check.version !== \"v6\") {\n addPattern(res, zodPatterns.ipv4Cidr, check.message, refs);\n }\n if (check.version !== \"v4\") {\n addPattern(res, zodPatterns.ipv6Cidr, check.message, refs);\n }\n break;\n }\n case \"emoji\":\n addPattern(res, zodPatterns.emoji(), check.message, refs);\n break;\n case \"ulid\": {\n addPattern(res, zodPatterns.ulid, check.message, refs);\n break;\n }\n case \"base64\": {\n switch (refs.base64Strategy) {\n case \"format:binary\": {\n addFormat(res, \"binary\", check.message, refs);\n break;\n }\n case \"contentEncoding:base64\": {\n res.contentEncoding = \"base64\";\n break;\n }\n case \"pattern:zod\": {\n addPattern(res, zodPatterns.base64, check.message, refs);\n break;\n }\n }\n break;\n }\n case \"nanoid\": {\n addPattern(res, zodPatterns.nanoid, check.message, refs);\n }\n case \"toLowerCase\":\n case \"toUpperCase\":\n case \"trim\":\n break;\n default:\n /* @__PURE__ */ ((_) => {\n })(check);\n }\n }\n }\n return res;\n}\nfunction escapeLiteralCheckValue(literal, refs) {\n return refs.patternStrategy === \"escape\" ? escapeNonAlphaNumeric(literal) : literal;\n}\nvar ALPHA_NUMERIC = new Set(\n \"ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789\"\n);\nfunction escapeNonAlphaNumeric(source) {\n let result = \"\";\n for (let i = 0; i < source.length; i++) {\n if (!ALPHA_NUMERIC.has(source[i])) {\n result += \"\\\\\";\n }\n result += source[i];\n }\n return result;\n}\nfunction addFormat(schema, value, message, refs) {\n var _a2;\n if (schema.format || ((_a2 = schema.anyOf) == null ? void 0 : _a2.some((x) => x.format))) {\n if (!schema.anyOf) {\n schema.anyOf = [];\n }\n if (schema.format) {\n schema.anyOf.push({\n format: schema.format\n });\n delete schema.format;\n }\n schema.anyOf.push({\n format: value,\n ...message && refs.errorMessages && { errorMessage: { format: message } }\n });\n } else {\n schema.format = value;\n }\n}\nfunction addPattern(schema, regex, message, refs) {\n var _a2;\n if (schema.pattern || ((_a2 = schema.allOf) == null ? void 0 : _a2.some((x) => x.pattern))) {\n if (!schema.allOf) {\n schema.allOf = [];\n }\n if (schema.pattern) {\n schema.allOf.push({\n pattern: schema.pattern\n });\n delete schema.pattern;\n }\n schema.allOf.push({\n pattern: stringifyRegExpWithFlags(regex, refs),\n ...message && refs.errorMessages && { errorMessage: { pattern: message } }\n });\n } else {\n schema.pattern = stringifyRegExpWithFlags(regex, refs);\n }\n}\nfunction stringifyRegExpWithFlags(regex, refs) {\n var _a2;\n if (!refs.applyRegexFlags || !regex.flags) {\n return regex.source;\n }\n const flags = {\n i: regex.flags.includes(\"i\"),\n // Case-insensitive\n m: regex.flags.includes(\"m\"),\n // `^` and `$` matches adjacent to newline characters\n s: regex.flags.includes(\"s\")\n // `.` matches newlines\n };\n const source = flags.i ? regex.source.toLowerCase() : regex.source;\n let pattern = \"\";\n let isEscaped = false;\n let inCharGroup = false;\n let inCharRange = false;\n for (let i = 0; i < source.length; i++) {\n if (isEscaped) {\n pattern += source[i];\n isEscaped = false;\n continue;\n }\n if (flags.i) {\n if (inCharGroup) {\n if (source[i].match(/[a-z]/)) {\n if (inCharRange) {\n pattern += source[i];\n pattern += `${source[i - 2]}-${source[i]}`.toUpperCase();\n inCharRange = false;\n } else if (source[i + 1] === \"-\" && ((_a2 = source[i + 2]) == null ? void 0 : _a2.match(/[a-z]/))) {\n pattern += source[i];\n inCharRange = true;\n } else {\n pattern += `${source[i]}${source[i].toUpperCase()}`;\n }\n continue;\n }\n } else if (source[i].match(/[a-z]/)) {\n pattern += `[${source[i]}${source[i].toUpperCase()}]`;\n continue;\n }\n }\n if (flags.m) {\n if (source[i] === \"^\") {\n pattern += `(^|(?<=[\\r\n]))`;\n continue;\n } else if (source[i] === \"$\") {\n pattern += `($|(?=[\\r\n]))`;\n continue;\n }\n }\n if (flags.s && source[i] === \".\") {\n pattern += inCharGroup ? `${source[i]}\\r\n` : `[${source[i]}\\r\n]`;\n continue;\n }\n pattern += source[i];\n if (source[i] === \"\\\\\") {\n isEscaped = true;\n } else if (inCharGroup && source[i] === \"]\") {\n inCharGroup = false;\n } else if (!inCharGroup && source[i] === \"[\") {\n inCharGroup = true;\n }\n }\n try {\n new RegExp(pattern);\n } catch (e) {\n console.warn(\n `Could not convert regex pattern at ${refs.currentPath.join(\n \"/\"\n )} to a flag-independent form! Falling back to the flag-ignorant source`\n );\n return regex.source;\n }\n return pattern;\n}\n\n// src/to-json-schema/zod3-to-json-schema/parsers/record.ts\nfunction parseRecordDef(def, refs) {\n var _a2, _b2, _c, _d, _e, _f;\n const schema = {\n type: \"object\",\n additionalProperties: (_a2 = parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"additionalProperties\"]\n })) != null ? _a2 : refs.allowedAdditionalProperties\n };\n if (((_b2 = def.keyType) == null ? void 0 : _b2._def.typeName) === ZodFirstPartyTypeKind2.ZodString && ((_c = def.keyType._def.checks) == null ? void 0 : _c.length)) {\n const { type: _type, ...keyType } = parseStringDef(def.keyType._def, refs);\n return {\n ...schema,\n propertyNames: keyType\n };\n } else if (((_d = def.keyType) == null ? void 0 : _d._def.typeName) === ZodFirstPartyTypeKind2.ZodEnum) {\n return {\n ...schema,\n propertyNames: {\n enum: def.keyType._def.values\n }\n };\n } else if (((_e = def.keyType) == null ? void 0 : _e._def.typeName) === ZodFirstPartyTypeKind2.ZodBranded && def.keyType._def.type._def.typeName === ZodFirstPartyTypeKind2.ZodString && ((_f = def.keyType._def.type._def.checks) == null ? void 0 : _f.length)) {\n const { type: _type, ...keyType } = parseBrandedDef(\n def.keyType._def,\n refs\n );\n return {\n ...schema,\n propertyNames: keyType\n };\n }\n return schema;\n}\n\n// src/to-json-schema/zod3-to-json-schema/parsers/map.ts\nfunction parseMapDef(def, refs) {\n if (refs.mapStrategy === \"record\") {\n return parseRecordDef(def, refs);\n }\n const keys = parseDef(def.keyType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", \"items\", \"0\"]\n }) || parseAnyDef();\n const values = parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", \"items\", \"1\"]\n }) || parseAnyDef();\n return {\n type: \"array\",\n maxItems: 125,\n items: {\n type: \"array\",\n items: [keys, values],\n minItems: 2,\n maxItems: 2\n }\n };\n}\n\n// src/to-json-schema/zod3-to-json-schema/parsers/native-enum.ts\nfunction parseNativeEnumDef(def) {\n const object = def.values;\n const actualKeys = Object.keys(def.values).filter((key) => {\n return typeof object[object[key]] !== \"number\";\n });\n const actualValues = actualKeys.map((key) => object[key]);\n const parsedTypes = Array.from(\n new Set(actualValues.map((values) => typeof values))\n );\n return {\n type: parsedTypes.length === 1 ? parsedTypes[0] === \"string\" ? \"string\" : \"number\" : [\"string\", \"number\"],\n enum: actualValues\n };\n}\n\n// src/to-json-schema/zod3-to-json-schema/parsers/never.ts\nfunction parseNeverDef() {\n return { not: parseAnyDef() };\n}\n\n// src/to-json-schema/zod3-to-json-schema/parsers/null.ts\nfunction parseNullDef() {\n return {\n type: \"null\"\n };\n}\n\n// src/to-json-schema/zod3-to-json-schema/parsers/union.ts\nvar primitiveMappings = {\n ZodString: \"string\",\n ZodNumber: \"number\",\n ZodBigInt: \"integer\",\n ZodBoolean: \"boolean\",\n ZodNull: \"null\"\n};\nfunction parseUnionDef(def, refs) {\n const options = def.options instanceof Map ? Array.from(def.options.values()) : def.options;\n if (options.every(\n (x) => x._def.typeName in primitiveMappings && (!x._def.checks || !x._def.checks.length)\n )) {\n const types = options.reduce((types2, x) => {\n const type = primitiveMappings[x._def.typeName];\n return type && !types2.includes(type) ? [...types2, type] : types2;\n }, []);\n return {\n type: types.length > 1 ? types : types[0]\n };\n } else if (options.every((x) => x._def.typeName === \"ZodLiteral\" && !x.description)) {\n const types = options.reduce(\n (acc, x) => {\n const type = typeof x._def.value;\n switch (type) {\n case \"string\":\n case \"number\":\n case \"boolean\":\n return [...acc, type];\n case \"bigint\":\n return [...acc, \"integer\"];\n case \"object\":\n if (x._def.value === null) return [...acc, \"null\"];\n case \"symbol\":\n case \"undefined\":\n case \"function\":\n default:\n return acc;\n }\n },\n []\n );\n if (types.length === options.length) {\n const uniqueTypes = types.filter((x, i, a) => a.indexOf(x) === i);\n return {\n type: uniqueTypes.length > 1 ? uniqueTypes : uniqueTypes[0],\n enum: options.reduce(\n (acc, x) => {\n return acc.includes(x._def.value) ? acc : [...acc, x._def.value];\n },\n []\n )\n };\n }\n } else if (options.every((x) => x._def.typeName === \"ZodEnum\")) {\n return {\n type: \"string\",\n enum: options.reduce(\n (acc, x) => [\n ...acc,\n ...x._def.values.filter((x2) => !acc.includes(x2))\n ],\n []\n )\n };\n }\n return asAnyOf(def, refs);\n}\nvar asAnyOf = (def, refs) => {\n const anyOf = (def.options instanceof Map ? Array.from(def.options.values()) : def.options).map(\n (x, i) => parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"anyOf\", `${i}`]\n })\n ).filter(\n (x) => !!x && (!refs.strictUnions || typeof x === \"object\" && Object.keys(x).length > 0)\n );\n return anyOf.length ? { anyOf } : void 0;\n};\n\n// src/to-json-schema/zod3-to-json-schema/parsers/nullable.ts\nfunction parseNullableDef(def, refs) {\n if ([\"ZodString\", \"ZodNumber\", \"ZodBigInt\", \"ZodBoolean\", \"ZodNull\"].includes(\n def.innerType._def.typeName\n ) && (!def.innerType._def.checks || !def.innerType._def.checks.length)) {\n return {\n type: [\n primitiveMappings[def.innerType._def.typeName],\n \"null\"\n ]\n };\n }\n const base = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"anyOf\", \"0\"]\n });\n return base && { anyOf: [base, { type: \"null\" }] };\n}\n\n// src/to-json-schema/zod3-to-json-schema/parsers/number.ts\nfunction parseNumberDef(def) {\n const res = {\n type: \"number\"\n };\n if (!def.checks) return res;\n for (const check of def.checks) {\n switch (check.kind) {\n case \"int\":\n res.type = \"integer\";\n break;\n case \"min\":\n if (check.inclusive) {\n res.minimum = check.value;\n } else {\n res.exclusiveMinimum = check.value;\n }\n break;\n case \"max\":\n if (check.inclusive) {\n res.maximum = check.value;\n } else {\n res.exclusiveMaximum = check.value;\n }\n break;\n case \"multipleOf\":\n res.multipleOf = check.value;\n break;\n }\n }\n return res;\n}\n\n// src/to-json-schema/zod3-to-json-schema/parsers/object.ts\nfunction parseObjectDef(def, refs) {\n const result = {\n type: \"object\",\n properties: {}\n };\n const required = [];\n const shape = def.shape();\n for (const propName in shape) {\n let propDef = shape[propName];\n if (propDef === void 0 || propDef._def === void 0) {\n continue;\n }\n const propOptional = safeIsOptional(propDef);\n const parsedDef = parseDef(propDef._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"properties\", propName],\n propertyPath: [...refs.currentPath, \"properties\", propName]\n });\n if (parsedDef === void 0) {\n continue;\n }\n result.properties[propName] = parsedDef;\n if (!propOptional) {\n required.push(propName);\n }\n }\n if (required.length) {\n result.required = required;\n }\n const additionalProperties = decideAdditionalProperties(def, refs);\n if (additionalProperties !== void 0) {\n result.additionalProperties = additionalProperties;\n }\n return result;\n}\nfunction decideAdditionalProperties(def, refs) {\n if (def.catchall._def.typeName !== \"ZodNever\") {\n return parseDef(def.catchall._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"additionalProperties\"]\n });\n }\n switch (def.unknownKeys) {\n case \"passthrough\":\n return refs.allowedAdditionalProperties;\n case \"strict\":\n return refs.rejectedAdditionalProperties;\n case \"strip\":\n return refs.removeAdditionalStrategy === \"strict\" ? refs.allowedAdditionalProperties : refs.rejectedAdditionalProperties;\n }\n}\nfunction safeIsOptional(schema) {\n try {\n return schema.isOptional();\n } catch (e) {\n return true;\n }\n}\n\n// src/to-json-schema/zod3-to-json-schema/parsers/optional.ts\nvar parseOptionalDef = (def, refs) => {\n var _a2;\n if (refs.currentPath.toString() === ((_a2 = refs.propertyPath) == null ? void 0 : _a2.toString())) {\n return parseDef(def.innerType._def, refs);\n }\n const innerSchema = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"anyOf\", \"1\"]\n });\n return innerSchema ? { anyOf: [{ not: parseAnyDef() }, innerSchema] } : parseAnyDef();\n};\n\n// src/to-json-schema/zod3-to-json-schema/parsers/pipeline.ts\nvar parsePipelineDef = (def, refs) => {\n if (refs.pipeStrategy === \"input\") {\n return parseDef(def.in._def, refs);\n } else if (refs.pipeStrategy === \"output\") {\n return parseDef(def.out._def, refs);\n }\n const inputSchema = parseDef(def.in._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", \"0\"]\n });\n const outputSchema = parseDef(def.out._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", inputSchema ? \"1\" : \"0\"]\n });\n return {\n allOf: [inputSchema, outputSchema].filter(\n (schema) => schema !== void 0\n )\n };\n};\n\n// src/to-json-schema/zod3-to-json-schema/parsers/promise.ts\nfunction parsePromiseDef(def, refs) {\n return parseDef(def.type._def, refs);\n}\n\n// src/to-json-schema/zod3-to-json-schema/parsers/set.ts\nfunction parseSetDef(def, refs) {\n const items = parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\"]\n });\n const schema = {\n type: \"array\",\n uniqueItems: true,\n items\n };\n if (def.minSize) {\n schema.minItems = def.minSize.value;\n }\n if (def.maxSize) {\n schema.maxItems = def.maxSize.value;\n }\n return schema;\n}\n\n// src/to-json-schema/zod3-to-json-schema/parsers/tuple.ts\nfunction parseTupleDef(def, refs) {\n if (def.rest) {\n return {\n type: \"array\",\n minItems: def.items.length,\n items: def.items.map(\n (x, i) => parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", `${i}`]\n })\n ).reduce(\n (acc, x) => x === void 0 ? acc : [...acc, x],\n []\n ),\n additionalItems: parseDef(def.rest._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"additionalItems\"]\n })\n };\n } else {\n return {\n type: \"array\",\n minItems: def.items.length,\n maxItems: def.items.length,\n items: def.items.map(\n (x, i) => parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", `${i}`]\n })\n ).reduce(\n (acc, x) => x === void 0 ? acc : [...acc, x],\n []\n )\n };\n }\n}\n\n// src/to-json-schema/zod3-to-json-schema/parsers/undefined.ts\nfunction parseUndefinedDef() {\n return {\n not: parseAnyDef()\n };\n}\n\n// src/to-json-schema/zod3-to-json-schema/parsers/unknown.ts\nfunction parseUnknownDef() {\n return parseAnyDef();\n}\n\n// src/to-json-schema/zod3-to-json-schema/parsers/readonly.ts\nvar parseReadonlyDef = (def, refs) => {\n return parseDef(def.innerType._def, refs);\n};\n\n// src/to-json-schema/zod3-to-json-schema/select-parser.ts\nvar selectParser = (def, typeName, refs) => {\n switch (typeName) {\n case ZodFirstPartyTypeKind3.ZodString:\n return parseStringDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodNumber:\n return parseNumberDef(def);\n case ZodFirstPartyTypeKind3.ZodObject:\n return parseObjectDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodBigInt:\n return parseBigintDef(def);\n case ZodFirstPartyTypeKind3.ZodBoolean:\n return parseBooleanDef();\n case ZodFirstPartyTypeKind3.ZodDate:\n return parseDateDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodUndefined:\n return parseUndefinedDef();\n case ZodFirstPartyTypeKind3.ZodNull:\n return parseNullDef();\n case ZodFirstPartyTypeKind3.ZodArray:\n return parseArrayDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodUnion:\n case ZodFirstPartyTypeKind3.ZodDiscriminatedUnion:\n return parseUnionDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodIntersection:\n return parseIntersectionDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodTuple:\n return parseTupleDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodRecord:\n return parseRecordDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodLiteral:\n return parseLiteralDef(def);\n case ZodFirstPartyTypeKind3.ZodEnum:\n return parseEnumDef(def);\n case ZodFirstPartyTypeKind3.ZodNativeEnum:\n return parseNativeEnumDef(def);\n case ZodFirstPartyTypeKind3.ZodNullable:\n return parseNullableDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodOptional:\n return parseOptionalDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodMap:\n return parseMapDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodSet:\n return parseSetDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodLazy:\n return () => def.getter()._def;\n case ZodFirstPartyTypeKind3.ZodPromise:\n return parsePromiseDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodNaN:\n case ZodFirstPartyTypeKind3.ZodNever:\n return parseNeverDef();\n case ZodFirstPartyTypeKind3.ZodEffects:\n return parseEffectsDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodAny:\n return parseAnyDef();\n case ZodFirstPartyTypeKind3.ZodUnknown:\n return parseUnknownDef();\n case ZodFirstPartyTypeKind3.ZodDefault:\n return parseDefaultDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodBranded:\n return parseBrandedDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodReadonly:\n return parseReadonlyDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodCatch:\n return parseCatchDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodPipeline:\n return parsePipelineDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodFunction:\n case ZodFirstPartyTypeKind3.ZodVoid:\n case ZodFirstPartyTypeKind3.ZodSymbol:\n return void 0;\n default:\n return /* @__PURE__ */ ((_) => void 0)(typeName);\n }\n};\n\n// src/to-json-schema/zod3-to-json-schema/get-relative-path.ts\nvar getRelativePath = (pathA, pathB) => {\n let i = 0;\n for (; i < pathA.length && i < pathB.length; i++) {\n if (pathA[i] !== pathB[i]) break;\n }\n return [(pathA.length - i).toString(), ...pathB.slice(i)].join(\"/\");\n};\n\n// src/to-json-schema/zod3-to-json-schema/parse-def.ts\nfunction parseDef(def, refs, forceResolution = false) {\n var _a2;\n const seenItem = refs.seen.get(def);\n if (refs.override) {\n const overrideResult = (_a2 = refs.override) == null ? void 0 : _a2.call(\n refs,\n def,\n refs,\n seenItem,\n forceResolution\n );\n if (overrideResult !== ignoreOverride) {\n return overrideResult;\n }\n }\n if (seenItem && !forceResolution) {\n const seenSchema = get$ref(seenItem, refs);\n if (seenSchema !== void 0) {\n return seenSchema;\n }\n }\n const newItem = { def, path: refs.currentPath, jsonSchema: void 0 };\n refs.seen.set(def, newItem);\n const jsonSchemaOrGetter = selectParser(def, def.typeName, refs);\n const jsonSchema2 = typeof jsonSchemaOrGetter === \"function\" ? parseDef(jsonSchemaOrGetter(), refs) : jsonSchemaOrGetter;\n if (jsonSchema2) {\n addMeta(def, refs, jsonSchema2);\n }\n if (refs.postProcess) {\n const postProcessResult = refs.postProcess(jsonSchema2, def, refs);\n newItem.jsonSchema = jsonSchema2;\n return postProcessResult;\n }\n newItem.jsonSchema = jsonSchema2;\n return jsonSchema2;\n}\nvar get$ref = (item, refs) => {\n switch (refs.$refStrategy) {\n case \"root\":\n return { $ref: item.path.join(\"/\") };\n case \"relative\":\n return { $ref: getRelativePath(refs.currentPath, item.path) };\n case \"none\":\n case \"seen\": {\n if (item.path.length < refs.currentPath.length && item.path.every((value, index) => refs.currentPath[index] === value)) {\n console.warn(\n `Recursive reference detected at ${refs.currentPath.join(\n \"/\"\n )}! Defaulting to any`\n );\n return parseAnyDef();\n }\n return refs.$refStrategy === \"seen\" ? parseAnyDef() : void 0;\n }\n }\n};\nvar addMeta = (def, refs, jsonSchema2) => {\n if (def.description) {\n jsonSchema2.description = def.description;\n }\n return jsonSchema2;\n};\n\n// src/to-json-schema/zod3-to-json-schema/refs.ts\nvar getRefs = (options) => {\n const _options = getDefaultOptions(options);\n const currentPath = _options.name !== void 0 ? [..._options.basePath, _options.definitionPath, _options.name] : _options.basePath;\n return {\n ..._options,\n currentPath,\n propertyPath: void 0,\n seen: new Map(\n Object.entries(_options.definitions).map(([name2, def]) => [\n def._def,\n {\n def: def._def,\n path: [..._options.basePath, _options.definitionPath, name2],\n // Resolution of references will be forced even though seen, so it's ok that the schema is undefined here for now.\n jsonSchema: void 0\n }\n ])\n )\n };\n};\n\n// src/to-json-schema/zod3-to-json-schema/zod3-to-json-schema.ts\nvar zod3ToJsonSchema = (schema, options) => {\n var _a2;\n const refs = getRefs(options);\n let definitions = typeof options === \"object\" && options.definitions ? Object.entries(options.definitions).reduce(\n (acc, [name3, schema2]) => {\n var _a3;\n return {\n ...acc,\n [name3]: (_a3 = parseDef(\n schema2._def,\n {\n ...refs,\n currentPath: [...refs.basePath, refs.definitionPath, name3]\n },\n true\n )) != null ? _a3 : parseAnyDef()\n };\n },\n {}\n ) : void 0;\n const name2 = typeof options === \"string\" ? options : (options == null ? void 0 : options.nameStrategy) === \"title\" ? void 0 : options == null ? void 0 : options.name;\n const main = (_a2 = parseDef(\n schema._def,\n name2 === void 0 ? refs : {\n ...refs,\n currentPath: [...refs.basePath, refs.definitionPath, name2]\n },\n false\n )) != null ? _a2 : parseAnyDef();\n const title = typeof options === \"object\" && options.name !== void 0 && options.nameStrategy === \"title\" ? options.name : void 0;\n if (title !== void 0) {\n main.title = title;\n }\n const combined = name2 === void 0 ? definitions ? {\n ...main,\n [refs.definitionPath]: definitions\n } : main : {\n $ref: [\n ...refs.$refStrategy === \"relative\" ? [] : refs.basePath,\n refs.definitionPath,\n name2\n ].join(\"/\"),\n [refs.definitionPath]: {\n ...definitions,\n [name2]: main\n }\n };\n combined.$schema = \"http://json-schema.org/draft-07/schema#\";\n return combined;\n};\n\n// src/schema.ts\nvar schemaSymbol = /* @__PURE__ */ Symbol.for(\"vercel.ai.schema\");\nfunction lazySchema(createSchema) {\n let schema;\n return () => {\n if (schema == null) {\n schema = createSchema();\n }\n return schema;\n };\n}\nfunction jsonSchema(jsonSchema2, {\n validate\n} = {}) {\n return {\n [schemaSymbol]: true,\n _type: void 0,\n // should never be used directly\n get jsonSchema() {\n if (typeof jsonSchema2 === \"function\") {\n jsonSchema2 = jsonSchema2();\n }\n return jsonSchema2;\n },\n validate\n };\n}\nfunction isSchema(value) {\n return typeof value === \"object\" && value !== null && schemaSymbol in value && value[schemaSymbol] === true && \"jsonSchema\" in value && \"validate\" in value;\n}\nfunction asSchema(schema) {\n return schema == null ? jsonSchema({\n type: \"object\",\n properties: {},\n additionalProperties: false\n }) : isSchema(schema) ? schema : \"~standard\" in schema ? schema[\"~standard\"].vendor === \"zod\" ? zodSchema(schema) : standardSchema(schema) : schema();\n}\nfunction standardSchema(standardSchema2) {\n return jsonSchema(\n () => addAdditionalPropertiesToJsonSchema(\n standardSchema2[\"~standard\"].jsonSchema.input({\n target: \"draft-07\"\n })\n ),\n {\n validate: async (value) => {\n const result = await standardSchema2[\"~standard\"].validate(value);\n return \"value\" in result ? { success: true, value: result.value } : {\n success: false,\n error: new TypeValidationError({\n value,\n cause: result.issues\n })\n };\n }\n }\n );\n}\nfunction zod3Schema(zodSchema2, options) {\n var _a2;\n const useReferences = (_a2 = options == null ? void 0 : options.useReferences) != null ? _a2 : false;\n return jsonSchema(\n // defer json schema creation to avoid unnecessary computation when only validation is needed\n () => zod3ToJsonSchema(zodSchema2, {\n $refStrategy: useReferences ? \"root\" : \"none\"\n }),\n {\n validate: async (value) => {\n const result = await zodSchema2.safeParseAsync(value);\n return result.success ? { success: true, value: result.data } : { success: false, error: result.error };\n }\n }\n );\n}\nfunction zod4Schema(zodSchema2, options) {\n var _a2;\n const useReferences = (_a2 = options == null ? void 0 : options.useReferences) != null ? _a2 : false;\n return jsonSchema(\n // defer json schema creation to avoid unnecessary computation when only validation is needed\n () => addAdditionalPropertiesToJsonSchema(\n z4.toJSONSchema(zodSchema2, {\n target: \"draft-7\",\n io: \"input\",\n reused: useReferences ? \"ref\" : \"inline\"\n })\n ),\n {\n validate: async (value) => {\n const result = await z4.safeParseAsync(zodSchema2, value);\n return result.success ? { success: true, value: result.data } : { success: false, error: result.error };\n }\n }\n );\n}\nfunction isZod4Schema(zodSchema2) {\n return \"_zod\" in zodSchema2;\n}\nfunction zodSchema(zodSchema2, options) {\n if (isZod4Schema(zodSchema2)) {\n return zod4Schema(zodSchema2, options);\n } else {\n return zod3Schema(zodSchema2, options);\n }\n}\n\n// src/validate-types.ts\nasync function validateTypes({\n value,\n schema,\n context\n}) {\n const result = await safeValidateTypes({ value, schema, context });\n if (!result.success) {\n throw TypeValidationError2.wrap({ value, cause: result.error, context });\n }\n return result.value;\n}\nasync function safeValidateTypes({\n value,\n schema,\n context\n}) {\n const actualSchema = asSchema(schema);\n try {\n if (actualSchema.validate == null) {\n return { success: true, value, rawValue: value };\n }\n const result = await actualSchema.validate(value);\n if (result.success) {\n return { success: true, value: result.value, rawValue: value };\n }\n return {\n success: false,\n error: TypeValidationError2.wrap({ value, cause: result.error, context }),\n rawValue: value\n };\n } catch (error) {\n return {\n success: false,\n error: TypeValidationError2.wrap({ value, cause: error, context }),\n rawValue: value\n };\n }\n}\n\n// src/parse-json.ts\nasync function parseJSON({\n text,\n schema\n}) {\n try {\n const value = secureJsonParse(text);\n if (schema == null) {\n return value;\n }\n return await validateTypes({ value, schema });\n } catch (error) {\n if (JSONParseError.isInstance(error) || TypeValidationError3.isInstance(error)) {\n throw error;\n }\n throw new JSONParseError({ text, cause: error });\n }\n}\nasync function safeParseJSON({\n text,\n schema\n}) {\n try {\n const value = secureJsonParse(text);\n if (schema == null) {\n return { success: true, value, rawValue: value };\n }\n return await safeValidateTypes({ value, schema });\n } catch (error) {\n return {\n success: false,\n error: JSONParseError.isInstance(error) ? error : new JSONParseError({ text, cause: error }),\n rawValue: void 0\n };\n }\n}\nfunction isParsableJson(input) {\n try {\n secureJsonParse(input);\n return true;\n } catch (e) {\n return false;\n }\n}\n\n// src/parse-json-event-stream.ts\nimport {\n EventSourceParserStream\n} from \"eventsource-parser/stream\";\nfunction parseJsonEventStream({\n stream,\n schema\n}) {\n return stream.pipeThrough(new TextDecoderStream()).pipeThrough(new EventSourceParserStream()).pipeThrough(\n new TransformStream({\n async transform({ data }, controller) {\n if (data === \"[DONE]\") {\n return;\n }\n controller.enqueue(await safeParseJSON({ text: data, schema }));\n }\n })\n );\n}\n\n// src/parse-provider-options.ts\nimport { InvalidArgumentError as InvalidArgumentError2 } from \"@ai-sdk/provider\";\nasync function parseProviderOptions({\n provider,\n providerOptions,\n schema\n}) {\n if ((providerOptions == null ? void 0 : providerOptions[provider]) == null) {\n return void 0;\n }\n const parsedProviderOptions = await safeValidateTypes({\n value: providerOptions[provider],\n schema\n });\n if (!parsedProviderOptions.success) {\n throw new InvalidArgumentError2({\n argument: \"providerOptions\",\n message: `invalid ${provider} provider options`,\n cause: parsedProviderOptions.error\n });\n }\n return parsedProviderOptions.value;\n}\n\n// src/post-to-api.ts\nimport { APICallError as APICallError3 } from \"@ai-sdk/provider\";\nvar getOriginalFetch2 = () => globalThis.fetch;\nvar postJsonToApi = async ({\n url,\n headers,\n body,\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch: fetch2\n}) => await postToApi({\n url,\n headers: {\n \"Content-Type\": \"application/json\",\n ...headers\n },\n body: {\n content: JSON.stringify(body),\n values: body\n },\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch: fetch2\n});\nvar postFormDataToApi = async ({\n url,\n headers,\n formData,\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch: fetch2\n}) => await postToApi({\n url,\n headers,\n body: {\n content: formData,\n values: Object.fromEntries(formData.entries())\n },\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch: fetch2\n});\nvar postToApi = async ({\n url,\n headers = {},\n body,\n successfulResponseHandler,\n failedResponseHandler,\n abortSignal,\n fetch: fetch2 = getOriginalFetch2()\n}) => {\n try {\n const response = await fetch2(url, {\n method: \"POST\",\n headers: withUserAgentSuffix(\n headers,\n `ai-sdk/provider-utils/${VERSION}`,\n getRuntimeEnvironmentUserAgent()\n ),\n body: body.content,\n signal: abortSignal\n });\n const responseHeaders = extractResponseHeaders(response);\n if (!response.ok) {\n let errorInformation;\n try {\n errorInformation = await failedResponseHandler({\n response,\n url,\n requestBodyValues: body.values\n });\n } catch (error) {\n if (isAbortError(error) || APICallError3.isInstance(error)) {\n throw error;\n }\n throw new APICallError3({\n message: \"Failed to process error response\",\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: body.values\n });\n }\n throw errorInformation.value;\n }\n try {\n return await successfulResponseHandler({\n response,\n url,\n requestBodyValues: body.values\n });\n } catch (error) {\n if (error instanceof Error) {\n if (isAbortError(error) || APICallError3.isInstance(error)) {\n throw error;\n }\n }\n throw new APICallError3({\n message: \"Failed to process successful response\",\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: body.values\n });\n }\n } catch (error) {\n throw handleFetchError({ error, url, requestBodyValues: body.values });\n }\n};\n\n// src/types/tool.ts\nfunction tool(tool2) {\n return tool2;\n}\nfunction dynamicTool(tool2) {\n return { ...tool2, type: \"dynamic\" };\n}\n\n// src/provider-defined-tool-factory.ts\nfunction createProviderDefinedToolFactory({\n id,\n inputSchema\n}) {\n return ({\n execute,\n outputSchema,\n needsApproval,\n toModelOutput,\n onInputStart,\n onInputDelta,\n onInputAvailable,\n ...args\n }) => tool({\n type: \"provider\",\n isProviderExecuted: false,\n id,\n args,\n inputSchema,\n outputSchema,\n execute,\n needsApproval,\n toModelOutput,\n onInputStart,\n onInputDelta,\n onInputAvailable\n });\n}\nfunction createProviderDefinedToolFactoryWithOutputSchema({\n id,\n inputSchema,\n outputSchema\n}) {\n return ({\n execute,\n needsApproval,\n toModelOutput,\n onInputStart,\n onInputDelta,\n onInputAvailable,\n ...args\n }) => tool({\n type: \"provider\",\n isProviderExecuted: false,\n id,\n args,\n inputSchema,\n outputSchema,\n execute,\n needsApproval,\n toModelOutput,\n onInputStart,\n onInputDelta,\n onInputAvailable\n });\n}\n\n// src/provider-executed-tool-factory.ts\nfunction createProviderExecutedToolFactory({\n id,\n inputSchema,\n outputSchema,\n supportsDeferredResults\n}) {\n return ({\n onInputStart,\n onInputDelta,\n onInputAvailable,\n ...args\n }) => tool({\n type: \"provider\",\n isProviderExecuted: true,\n id,\n args,\n inputSchema,\n outputSchema,\n onInputStart,\n onInputDelta,\n onInputAvailable,\n supportsDeferredResults\n });\n}\n\n// src/remove-undefined-entries.ts\nfunction removeUndefinedEntries(record) {\n return Object.fromEntries(\n Object.entries(record).filter(([_key, value]) => value != null)\n );\n}\n\n// src/resolve.ts\nasync function resolve(value) {\n if (typeof value === \"function\") {\n value = value();\n }\n return Promise.resolve(value);\n}\n\n// src/resolve-full-media-type.ts\nimport {\n UnsupportedFunctionalityError\n} from \"@ai-sdk/provider\";\nfunction resolveFullMediaType({\n part\n}) {\n if (isFullMediaType(part.mediaType)) {\n return part.mediaType;\n }\n if (part.data.type === \"data\") {\n const detected = detectMediaType({\n data: part.data.data,\n topLevelType: getTopLevelMediaType(part.mediaType)\n });\n if (detected) {\n return detected;\n }\n throw new UnsupportedFunctionalityError({\n functionality: `file of media type \"${part.mediaType}\" must specify subtype since it could not be auto-detected`\n });\n }\n throw new UnsupportedFunctionalityError({\n functionality: `file of media type \"${part.mediaType}\" must specify subtype since it is not passed as inline bytes`\n });\n}\n\n// src/resolve-provider-reference.ts\nimport {\n NoSuchProviderReferenceError\n} from \"@ai-sdk/provider\";\nfunction resolveProviderReference({\n reference,\n provider\n}) {\n const id = reference[provider];\n if (id != null) {\n return id;\n }\n throw new NoSuchProviderReferenceError({\n provider,\n reference\n });\n}\n\n// src/response-handler.ts\nimport { APICallError as APICallError4, EmptyResponseBodyError } from \"@ai-sdk/provider\";\nvar textDecoder = new TextDecoder();\nasync function readResponseBodyAsText({\n response,\n url\n}) {\n return textDecoder.decode(\n await readResponseWithSizeLimit({\n response,\n url\n })\n );\n}\nvar createJsonErrorResponseHandler = ({\n errorSchema,\n errorToMessage,\n isRetryable\n}) => async ({ response, url, requestBodyValues }) => {\n const responseBody = await readResponseBodyAsText({ response, url });\n const responseHeaders = extractResponseHeaders(response);\n if (responseBody.trim() === \"\") {\n return {\n responseHeaders,\n value: new APICallError4({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n isRetryable: isRetryable == null ? void 0 : isRetryable(response)\n })\n };\n }\n try {\n const parsedError = await parseJSON({\n text: responseBody,\n schema: errorSchema\n });\n return {\n responseHeaders,\n value: new APICallError4({\n message: errorToMessage(parsedError),\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n data: parsedError,\n isRetryable: isRetryable == null ? void 0 : isRetryable(response, parsedError)\n })\n };\n } catch (e) {\n return {\n responseHeaders,\n value: new APICallError4({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n isRetryable: isRetryable == null ? void 0 : isRetryable(response)\n })\n };\n }\n};\nvar createEventSourceResponseHandler = (chunkSchema) => async ({ response }) => {\n const responseHeaders = extractResponseHeaders(response);\n if (response.body == null) {\n throw new EmptyResponseBodyError({});\n }\n return {\n responseHeaders,\n value: parseJsonEventStream({\n stream: response.body,\n schema: chunkSchema\n })\n };\n};\nvar createJsonResponseHandler = (responseSchema) => async ({ response, url, requestBodyValues }) => {\n const responseBody = await readResponseBodyAsText({ response, url });\n const parsedResult = await safeParseJSON({\n text: responseBody,\n schema: responseSchema\n });\n const responseHeaders = extractResponseHeaders(response);\n if (!parsedResult.success) {\n throw new APICallError4({\n message: \"Invalid JSON response\",\n cause: parsedResult.error,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n url,\n requestBodyValues\n });\n }\n return {\n responseHeaders,\n value: parsedResult.value,\n rawValue: parsedResult.rawValue\n };\n};\nvar createBinaryResponseHandler = () => async ({ response, url, requestBodyValues }) => {\n const responseHeaders = extractResponseHeaders(response);\n if (!response.body) {\n throw new APICallError4({\n message: \"Response body is empty\",\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody: void 0\n });\n }\n try {\n const buffer = await response.arrayBuffer();\n return {\n responseHeaders,\n value: new Uint8Array(buffer)\n };\n } catch (error) {\n throw new APICallError4({\n message: \"Failed to read response as array buffer\",\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody: void 0,\n cause: error\n });\n }\n};\nvar createStatusCodeErrorResponseHandler = () => async ({ response, url, requestBodyValues }) => {\n const responseHeaders = extractResponseHeaders(response);\n const responseBody = await readResponseBodyAsText({ response, url });\n return {\n responseHeaders,\n value: new APICallError4({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody\n })\n };\n};\n\n// src/is-json-serializable.ts\nfunction isJSONSerializable(value) {\n if (value === null || value === void 0) return true;\n const type = typeof value;\n if (type === \"string\" || type === \"number\" || type === \"boolean\") return true;\n if (type === \"function\" || type === \"symbol\" || type === \"bigint\")\n return false;\n if (Array.isArray(value)) {\n return value.every(isJSONSerializable);\n }\n if (Object.getPrototypeOf(value) === Object.prototype) {\n return Object.values(value).every(\n isJSONSerializable\n );\n }\n return false;\n}\n\n// src/serialize-model-options.ts\nfunction serializeModelOptions(options) {\n const serializableConfig = {};\n for (const [key, value] of Object.entries(options.config)) {\n if (key === \"headers\") {\n const resolvedHeaders = resolveSync(value);\n if (isJSONSerializable(resolvedHeaders)) {\n serializableConfig[key] = resolvedHeaders;\n }\n } else if (isJSONSerializable(value)) {\n serializableConfig[key] = value;\n }\n }\n return { modelId: options.modelId, config: serializableConfig };\n}\nfunction resolveSync(value) {\n let next = value;\n if (typeof value === \"function\") {\n next = value();\n }\n if (next instanceof Promise) {\n throw new Error(\"Promise returned from resolveSync\");\n }\n return next;\n}\n\n// src/streaming-tool-call-tracker.ts\nimport {\n InvalidResponseDataError\n} from \"@ai-sdk/provider\";\nvar StreamingToolCallTracker = class {\n constructor(controller, options = {}) {\n this.toolCalls = [];\n var _a2, _b2;\n this.controller = controller;\n this._generateId = (_a2 = options.generateId) != null ? _a2 : generateId;\n this.typeValidation = (_b2 = options.typeValidation) != null ? _b2 : \"none\";\n this.extractMetadata = options.extractMetadata;\n this.buildToolCallProviderMetadata = options.buildToolCallProviderMetadata;\n }\n /**\n * Process a tool call delta from a streaming response chunk.\n * Emits tool-input-start, tool-input-delta, tool-input-end, and tool-call\n * events as appropriate.\n */\n processDelta(toolCallDelta) {\n var _a2;\n const index = (_a2 = toolCallDelta.index) != null ? _a2 : this.toolCalls.length;\n if (this.toolCalls[index] == null) {\n this.processNewToolCall(index, toolCallDelta);\n } else {\n this.processExistingToolCall(index, toolCallDelta);\n }\n }\n /**\n * Finalize any unfinished tool calls. Should be called during the stream's\n * flush handler to ensure all tool calls are properly completed.\n */\n flush() {\n for (const toolCall of this.toolCalls) {\n if (!toolCall.hasFinished) {\n this.finishToolCall(toolCall);\n }\n }\n }\n processNewToolCall(index, toolCallDelta) {\n var _a2, _b2, _c;\n if (this.typeValidation === \"required\") {\n if (toolCallDelta.type !== \"function\") {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function' type.`\n });\n }\n } else if (this.typeValidation === \"if-present\") {\n if (toolCallDelta.type != null && toolCallDelta.type !== \"function\") {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function' type.`\n });\n }\n }\n if (toolCallDelta.id == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'id' to be a string.`\n });\n }\n if (((_a2 = toolCallDelta.function) == null ? void 0 : _a2.name) == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function.name' to be a string.`\n });\n }\n this.controller.enqueue({\n type: \"tool-input-start\",\n id: toolCallDelta.id,\n toolName: toolCallDelta.function.name\n });\n const metadata = (_b2 = this.extractMetadata) == null ? void 0 : _b2.call(this, toolCallDelta);\n this.toolCalls[index] = {\n id: toolCallDelta.id,\n type: \"function\",\n function: {\n name: toolCallDelta.function.name,\n arguments: (_c = toolCallDelta.function.arguments) != null ? _c : \"\"\n },\n hasFinished: false,\n metadata\n };\n const toolCall = this.toolCalls[index];\n if (toolCall.function.arguments.length > 0) {\n this.controller.enqueue({\n type: \"tool-input-delta\",\n id: toolCall.id,\n delta: toolCall.function.arguments\n });\n }\n if (isParsableJson(toolCall.function.arguments)) {\n this.finishToolCall(toolCall);\n }\n }\n processExistingToolCall(index, toolCallDelta) {\n var _a2;\n const toolCall = this.toolCalls[index];\n if (toolCall.hasFinished) {\n return;\n }\n if (((_a2 = toolCallDelta.function) == null ? void 0 : _a2.arguments) != null) {\n toolCall.function.arguments += toolCallDelta.function.arguments;\n this.controller.enqueue({\n type: \"tool-input-delta\",\n id: toolCall.id,\n delta: toolCallDelta.function.arguments\n });\n }\n if (isParsableJson(toolCall.function.arguments)) {\n this.finishToolCall(toolCall);\n }\n }\n finishToolCall(toolCall) {\n var _a2, _b2;\n this.controller.enqueue({\n type: \"tool-input-end\",\n id: toolCall.id\n });\n const providerMetadata = (_a2 = this.buildToolCallProviderMetadata) == null ? void 0 : _a2.call(\n this,\n toolCall.metadata\n );\n this.controller.enqueue({\n type: \"tool-call\",\n toolCallId: (_b2 = toolCall.id) != null ? _b2 : this._generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n ...providerMetadata ? { providerMetadata } : {}\n });\n toolCall.hasFinished = true;\n }\n};\n\n// src/strip-file-extension.ts\nfunction stripFileExtension(filename) {\n const firstDotIndex = filename.indexOf(\".\");\n return firstDotIndex === -1 ? filename : filename.slice(0, firstDotIndex);\n}\n\n// src/without-trailing-slash.ts\nfunction withoutTrailingSlash(url) {\n return url == null ? void 0 : url.replace(/\\/$/, \"\");\n}\n\n// src/types/executable-tool.ts\nfunction isExecutableTool(tool2) {\n return tool2 != null && typeof tool2.execute === \"function\";\n}\n\n// src/is-async-iterable.ts\nfunction isAsyncIterable(obj) {\n return obj != null && typeof obj[Symbol.asyncIterator] === \"function\";\n}\n\n// src/types/execute-tool.ts\nasync function* executeTool({\n tool: tool2,\n input,\n options\n}) {\n const result = tool2.execute(input, options);\n if (isAsyncIterable(result)) {\n let lastOutput;\n for await (const output of result) {\n lastOutput = output;\n yield { type: \"preliminary\", output };\n }\n yield { type: \"final\", output: lastOutput };\n } else {\n yield { type: \"final\", output: await result };\n }\n}\n\n// src/index.ts\nimport { WORKFLOW_DESERIALIZE, WORKFLOW_SERIALIZE } from \"@workflow/serde\";\nimport {\n EventSourceParserStream as EventSourceParserStream2\n} from \"eventsource-parser/stream\";\nexport {\n DEFAULT_MAX_DOWNLOAD_SIZE,\n DelayedPromise,\n DownloadError,\n EventSourceParserStream2 as EventSourceParserStream,\n StreamingToolCallTracker,\n VERSION,\n WORKFLOW_DESERIALIZE,\n WORKFLOW_SERIALIZE,\n asArray,\n asSchema,\n cancelResponseBody,\n combineHeaders,\n convertAsyncIteratorToReadableStream,\n convertBase64ToUint8Array,\n convertImageModelFileToDataUri,\n convertInlineFileDataToUint8Array,\n convertToBase64,\n convertToFormData,\n convertUint8ArrayToBase64,\n createBinaryResponseHandler,\n createEventSourceResponseHandler,\n createIdGenerator,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n createProviderDefinedToolFactory,\n createProviderDefinedToolFactoryWithOutputSchema,\n createProviderExecutedToolFactory,\n createStatusCodeErrorResponseHandler,\n createToolNameMapping,\n delay,\n detectMediaType,\n downloadBlob,\n dynamicTool,\n executeTool,\n extractLines,\n extractResponseHeaders,\n fetchWithValidatedRedirects,\n filterNullable,\n generateId,\n getErrorMessage,\n getFromApi,\n getRuntimeEnvironmentUserAgent,\n getTopLevelMediaType,\n injectJsonInstructionIntoMessages,\n isAbortError,\n isBrowserRuntime,\n isBuffer,\n isCustomReasoning,\n isExecutableTool,\n isFullMediaType,\n isNonNullable,\n isParsableJson,\n isProviderReference,\n isSameOrigin,\n isUrlSupported,\n jsonSchema,\n lazySchema,\n loadApiKey,\n loadOptionalSetting,\n loadSetting,\n mapReasoningToProviderBudget,\n mapReasoningToProviderEffort,\n mediaTypeToExtension,\n normalizeHeaders,\n parseJSON,\n parseJsonEventStream,\n parseProviderOptions,\n postFormDataToApi,\n postJsonToApi,\n postToApi,\n readResponseWithSizeLimit,\n removeUndefinedEntries,\n resolve,\n resolveFullMediaType,\n resolveProviderReference,\n safeParseJSON,\n safeValidateTypes,\n serializeModelOptions,\n stripFileExtension,\n tool,\n validateDownloadUrl,\n validateTypes,\n withUserAgentSuffix,\n withoutTrailingSlash,\n zodSchema\n};\n//# sourceMappingURL=index.js.map","\"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","\"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 token_error_exports = {};\n__export(token_error_exports, {\n VercelOidcTokenError: () => VercelOidcTokenError\n});\nmodule.exports = __toCommonJS(token_error_exports);\nclass VercelOidcTokenError extends Error {\n constructor(message, cause) {\n super(message);\n this.name = \"VercelOidcTokenError\";\n this.cause = cause;\n }\n toString() {\n if (this.cause) {\n return `${this.name}: ${this.message}: ${this.cause}`;\n }\n return `${this.name}: ${this.message}`;\n }\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n VercelOidcTokenError\n});\n","\"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(options) {\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), options?.expirationBufferMs)) {\n await refreshToken(options);\n token = getVercelOidcTokenSync();\n }\n } catch (error) {\n let message = err instanceof Error ? err.message : \"\";\n if (error instanceof Error) {\n message = `${message}\n${error.message}`;\n }\n if (message) {\n throw new import_token_error.VercelOidcTokenError(message);\n }\n throw 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","\"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 auth_errors_exports = {};\n__export(auth_errors_exports, {\n AccessTokenMissingError: () => AccessTokenMissingError,\n RefreshAccessTokenFailedError: () => RefreshAccessTokenFailedError\n});\nmodule.exports = __toCommonJS(auth_errors_exports);\nclass AccessTokenMissingError extends Error {\n constructor() {\n super(\n \"No authentication found. Please log in with the Vercel CLI (vercel login).\"\n );\n this.name = \"AccessTokenMissingError\";\n }\n}\nclass RefreshAccessTokenFailedError extends Error {\n constructor(cause) {\n super(\"Failed to refresh authentication token.\", { cause });\n this.name = \"RefreshAccessTokenFailedError\";\n }\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n AccessTokenMissingError,\n RefreshAccessTokenFailedError\n});\n","\"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 token_io_exports = {};\n__export(token_io_exports, {\n findRootDir: () => findRootDir,\n getUserDataDir: () => getUserDataDir\n});\nmodule.exports = __toCommonJS(token_io_exports);\nvar import_path = __toESM(require(\"path\"));\nvar import_fs = __toESM(require(\"fs\"));\nvar import_os = __toESM(require(\"os\"));\nvar import_token_error = require(\"./token-error\");\nfunction findRootDir() {\n try {\n let dir = process.cwd();\n while (dir !== import_path.default.dirname(dir)) {\n const pkgPath = import_path.default.join(dir, \".vercel\");\n if (import_fs.default.existsSync(pkgPath)) {\n return dir;\n }\n dir = import_path.default.dirname(dir);\n }\n } catch (e) {\n throw new import_token_error.VercelOidcTokenError(\n \"Token refresh only supported in node server environments\"\n );\n }\n return null;\n}\nfunction getUserDataDir() {\n if (process.env.XDG_DATA_HOME) {\n return process.env.XDG_DATA_HOME;\n }\n switch (import_os.default.platform()) {\n case \"darwin\":\n return import_path.default.join(import_os.default.homedir(), \"Library/Application Support\");\n case \"linux\":\n return import_path.default.join(import_os.default.homedir(), \".local/share\");\n case \"win32\":\n if (process.env.LOCALAPPDATA) {\n return process.env.LOCALAPPDATA;\n }\n return null;\n default:\n return null;\n }\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n findRootDir,\n getUserDataDir\n});\n","\"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 auth_config_exports = {};\n__export(auth_config_exports, {\n isValidAccessToken: () => isValidAccessToken,\n readAuthConfig: () => readAuthConfig,\n writeAuthConfig: () => writeAuthConfig\n});\nmodule.exports = __toCommonJS(auth_config_exports);\nvar fs = __toESM(require(\"fs\"));\nvar path = __toESM(require(\"path\"));\nvar import_token_util = require(\"./token-util\");\nfunction getAuthConfigPath() {\n const dataDir = (0, import_token_util.getVercelDataDir)();\n if (!dataDir) {\n throw new Error(\n `Unable to find Vercel CLI data directory. Your platform: ${process.platform}. Supported: darwin, linux, win32.`\n );\n }\n return path.join(dataDir, \"auth.json\");\n}\nfunction readAuthConfig() {\n try {\n const authPath = getAuthConfigPath();\n if (!fs.existsSync(authPath)) {\n return null;\n }\n const content = fs.readFileSync(authPath, \"utf8\");\n if (!content) {\n return null;\n }\n return JSON.parse(content);\n } catch (error) {\n return null;\n }\n}\nfunction writeAuthConfig(config) {\n const authPath = getAuthConfigPath();\n const authDir = path.dirname(authPath);\n if (!fs.existsSync(authDir)) {\n fs.mkdirSync(authDir, { mode: 504, recursive: true });\n }\n fs.writeFileSync(authPath, JSON.stringify(config, null, 2), { mode: 384 });\n}\nfunction isValidAccessToken(authConfig, expirationBufferMs = 0) {\n if (!authConfig.token)\n return false;\n if (typeof authConfig.expiresAt !== \"number\")\n return true;\n const nowInSeconds = Math.floor(Date.now() / 1e3);\n const bufferInSeconds = expirationBufferMs / 1e3;\n return authConfig.expiresAt >= nowInSeconds + bufferInSeconds;\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n isValidAccessToken,\n readAuthConfig,\n writeAuthConfig\n});\n","\"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 oauth_exports = {};\n__export(oauth_exports, {\n processTokenResponse: () => processTokenResponse,\n refreshTokenRequest: () => refreshTokenRequest\n});\nmodule.exports = __toCommonJS(oauth_exports);\nvar import_os = require(\"os\");\nconst VERCEL_ISSUER = \"https://vercel.com\";\nconst VERCEL_CLI_CLIENT_ID = \"cl_HYyOPBNtFMfHhaUn9L4QPfTZz6TP47bp\";\nconst userAgent = `@vercel/oidc node-${process.version} ${(0, import_os.platform)()} (${(0, import_os.arch)()}) ${(0, import_os.hostname)()}`;\nlet _tokenEndpoint = null;\nasync function getTokenEndpoint() {\n if (_tokenEndpoint) {\n return _tokenEndpoint;\n }\n const discoveryUrl = `${VERCEL_ISSUER}/.well-known/openid-configuration`;\n const response = await fetch(discoveryUrl, {\n headers: { \"user-agent\": userAgent }\n });\n if (!response.ok) {\n throw new Error(\"Failed to discover OAuth endpoints\");\n }\n const metadata = await response.json();\n if (!metadata || typeof metadata.token_endpoint !== \"string\") {\n throw new Error(\"Invalid OAuth discovery response\");\n }\n const endpoint = metadata.token_endpoint;\n _tokenEndpoint = endpoint;\n return endpoint;\n}\nasync function refreshTokenRequest(options) {\n const tokenEndpoint = await getTokenEndpoint();\n return await fetch(tokenEndpoint, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n \"user-agent\": userAgent\n },\n body: new URLSearchParams({\n client_id: VERCEL_CLI_CLIENT_ID,\n grant_type: \"refresh_token\",\n ...options\n })\n });\n}\nasync function processTokenResponse(response) {\n const json = await response.json();\n if (!response.ok) {\n const errorMsg = typeof json === \"object\" && json && \"error\" in json ? String(json.error) : \"Token refresh failed\";\n return [new Error(errorMsg)];\n }\n if (typeof json !== \"object\" || json === null) {\n return [new Error(\"Invalid token response\")];\n }\n if (typeof json.access_token !== \"string\") {\n return [new Error(\"Missing access_token in response\")];\n }\n if (json.token_type !== \"Bearer\") {\n return [new Error(\"Invalid token_type in response\")];\n }\n if (typeof json.expires_in !== \"number\") {\n return [new Error(\"Missing expires_in in response\")];\n }\n return [null, json];\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n processTokenResponse,\n refreshTokenRequest\n});\n","\"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 token_util_exports = {};\n__export(token_util_exports, {\n assertVercelOidcTokenResponse: () => assertVercelOidcTokenResponse,\n findProjectInfo: () => findProjectInfo,\n getTokenPayload: () => getTokenPayload,\n getVercelDataDir: () => getVercelDataDir,\n getVercelOidcToken: () => getVercelOidcToken,\n getVercelToken: () => getVercelToken,\n isExpired: () => isExpired,\n loadToken: () => loadToken,\n saveToken: () => saveToken\n});\nmodule.exports = __toCommonJS(token_util_exports);\nvar path = __toESM(require(\"path\"));\nvar fs = __toESM(require(\"fs\"));\nvar import_token_error = require(\"./token-error\");\nvar import_token_io = require(\"./token-io\");\nvar import_auth_config = require(\"./auth-config\");\nvar import_oauth = require(\"./oauth\");\nvar import_auth_errors = require(\"./auth-errors\");\nfunction getVercelDataDir() {\n const vercelFolder = \"com.vercel.cli\";\n const dataDir = (0, import_token_io.getUserDataDir)();\n if (!dataDir) {\n return null;\n }\n return path.join(dataDir, vercelFolder);\n}\nasync function getVercelToken(options) {\n const authConfig = (0, import_auth_config.readAuthConfig)();\n if (!authConfig?.token) {\n throw new import_auth_errors.AccessTokenMissingError();\n }\n if ((0, import_auth_config.isValidAccessToken)(authConfig, options?.expirationBufferMs)) {\n return authConfig.token;\n }\n if (!authConfig.refreshToken) {\n (0, import_auth_config.writeAuthConfig)({});\n throw new import_auth_errors.RefreshAccessTokenFailedError(\"No refresh token available\");\n }\n try {\n const tokenResponse = await (0, import_oauth.refreshTokenRequest)({\n refresh_token: authConfig.refreshToken\n });\n const [tokensError, tokens] = await (0, import_oauth.processTokenResponse)(tokenResponse);\n if (tokensError || !tokens) {\n (0, import_auth_config.writeAuthConfig)({});\n throw new import_auth_errors.RefreshAccessTokenFailedError(tokensError);\n }\n const updatedConfig = {\n token: tokens.access_token,\n expiresAt: Math.floor(Date.now() / 1e3) + tokens.expires_in\n };\n if (tokens.refresh_token) {\n updatedConfig.refreshToken = tokens.refresh_token;\n }\n (0, import_auth_config.writeAuthConfig)(updatedConfig);\n return updatedConfig.token;\n } catch (error) {\n (0, import_auth_config.writeAuthConfig)({});\n if (error instanceof import_auth_errors.AccessTokenMissingError || error instanceof import_auth_errors.RefreshAccessTokenFailedError) {\n throw error;\n }\n throw new import_auth_errors.RefreshAccessTokenFailedError(error);\n }\n}\nasync function getVercelOidcToken(authToken, projectId, teamId) {\n const url = `https://api.vercel.com/v1/projects/${projectId}/token?source=vercel-oidc-refresh${teamId ? `&teamId=${teamId}` : \"\"}`;\n const res = await fetch(url, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${authToken}`\n }\n });\n if (!res.ok) {\n throw new import_token_error.VercelOidcTokenError(\n `Failed to refresh OIDC token: ${res.statusText}`\n );\n }\n const tokenRes = await res.json();\n assertVercelOidcTokenResponse(tokenRes);\n return tokenRes;\n}\nfunction assertVercelOidcTokenResponse(res) {\n if (!res || typeof res !== \"object\") {\n throw new TypeError(\n \"Vercel OIDC token is malformed. Expected an object. Please run `vc env pull` and try again\"\n );\n }\n if (!(\"token\" in res) || typeof res.token !== \"string\") {\n throw new TypeError(\n \"Vercel OIDC token is malformed. Expected a string-valued token property. Please run `vc env pull` and try again\"\n );\n }\n}\nfunction findProjectInfo() {\n const dir = (0, import_token_io.findRootDir)();\n if (!dir) {\n throw new import_token_error.VercelOidcTokenError(\n \"Unable to find project root directory. Have you linked your project with `vc link?`\"\n );\n }\n const prjPath = path.join(dir, \".vercel\", \"project.json\");\n if (!fs.existsSync(prjPath)) {\n throw new import_token_error.VercelOidcTokenError(\n \"project.json not found, have you linked your project with `vc link?`\"\n );\n }\n const prj = JSON.parse(fs.readFileSync(prjPath, \"utf8\"));\n if (typeof prj.projectId !== \"string\" && typeof prj.orgId !== \"string\") {\n throw new TypeError(\n \"Expected a string-valued projectId property. Try running `vc link` to re-link your project.\"\n );\n }\n return { projectId: prj.projectId, teamId: prj.orgId };\n}\nfunction saveToken(token, projectId) {\n const dir = (0, import_token_io.getUserDataDir)();\n if (!dir) {\n throw new import_token_error.VercelOidcTokenError(\n \"Unable to find user data directory. Please reach out to Vercel support.\"\n );\n }\n const tokenPath = path.join(dir, \"com.vercel.token\", `${projectId}.json`);\n const tokenJson = JSON.stringify(token);\n fs.mkdirSync(path.dirname(tokenPath), { mode: 504, recursive: true });\n fs.writeFileSync(tokenPath, tokenJson);\n fs.chmodSync(tokenPath, 432);\n return;\n}\nfunction loadToken(projectId) {\n const dir = (0, import_token_io.getUserDataDir)();\n if (!dir) {\n throw new import_token_error.VercelOidcTokenError(\n \"Unable to find user data directory. Please reach out to Vercel support.\"\n );\n }\n const tokenPath = path.join(dir, \"com.vercel.token\", `${projectId}.json`);\n if (!fs.existsSync(tokenPath)) {\n return null;\n }\n const token = JSON.parse(fs.readFileSync(tokenPath, \"utf8\"));\n assertVercelOidcTokenResponse(token);\n return token;\n}\nfunction getTokenPayload(token) {\n const tokenParts = token.split(\".\");\n if (tokenParts.length !== 3) {\n throw new import_token_error.VercelOidcTokenError(\n \"Invalid token. Please run `vc env pull` and try again\"\n );\n }\n const base64 = tokenParts[1].replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padded = base64.padEnd(\n base64.length + (4 - base64.length % 4) % 4,\n \"=\"\n );\n return JSON.parse(Buffer.from(padded, \"base64\").toString(\"utf8\"));\n}\nfunction isExpired(token, bufferMs = 0) {\n return token.exp * 1e3 < Date.now() + bufferMs;\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n assertVercelOidcTokenResponse,\n findProjectInfo,\n getTokenPayload,\n getVercelDataDir,\n getVercelOidcToken,\n getVercelToken,\n isExpired,\n loadToken,\n saveToken\n});\n","\"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 src_exports = {};\n__export(src_exports, {\n AccessTokenMissingError: () => import_auth_errors.AccessTokenMissingError,\n RefreshAccessTokenFailedError: () => import_auth_errors.RefreshAccessTokenFailedError,\n getContext: () => import_get_context.getContext,\n getVercelOidcToken: () => import_get_vercel_oidc_token.getVercelOidcToken,\n getVercelOidcTokenSync: () => import_get_vercel_oidc_token.getVercelOidcTokenSync,\n getVercelToken: () => import_token_util.getVercelToken\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_get_vercel_oidc_token = require(\"./get-vercel-oidc-token\");\nvar import_get_context = require(\"./get-context\");\nvar import_auth_errors = require(\"./auth-errors\");\nvar import_token_util = require(\"./token-util\");\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n AccessTokenMissingError,\n RefreshAccessTokenFailedError,\n getContext,\n getVercelOidcToken,\n getVercelOidcTokenSync,\n getVercelToken\n});\n","// src/gateway-realtime-auth.ts\nvar GATEWAY_REALTIME_SUBPROTOCOL = \"ai-gateway-realtime.v1\";\nvar GATEWAY_AUTH_SUBPROTOCOL_PREFIX = \"ai-gateway-auth.\";\nvar GATEWAY_TEAM_SUBPROTOCOL_PREFIX = \"ai-gateway-team.\";\nfunction getGatewayRealtimeProtocols(token, options) {\n const protocols = [\n GATEWAY_REALTIME_SUBPROTOCOL,\n `${GATEWAY_AUTH_SUBPROTOCOL_PREFIX}${token}`\n ];\n if (options == null ? void 0 : options.teamIdOrSlug) {\n protocols.push(\n `${GATEWAY_TEAM_SUBPROTOCOL_PREFIX}${encodeSubprotocolValue(options.teamIdOrSlug)}`\n );\n }\n return protocols;\n}\nfunction getGatewayRealtimeAuthToken(secWebSocketProtocol) {\n var _a11;\n return ((_a11 = findProtocol(secWebSocketProtocol, GATEWAY_AUTH_SUBPROTOCOL_PREFIX)) == null ? void 0 : _a11.slice(\n GATEWAY_AUTH_SUBPROTOCOL_PREFIX.length\n )) || void 0;\n}\nfunction getGatewayRealtimeTeamIdOrSlug(secWebSocketProtocol) {\n var _a11;\n const encoded = (_a11 = findProtocol(\n secWebSocketProtocol,\n GATEWAY_TEAM_SUBPROTOCOL_PREFIX\n )) == null ? void 0 : _a11.slice(GATEWAY_TEAM_SUBPROTOCOL_PREFIX.length);\n if (!encoded) return void 0;\n try {\n return decodeSubprotocolValue(encoded) || void 0;\n } catch (e) {\n return void 0;\n }\n}\nfunction findProtocol(secWebSocketProtocol, prefix) {\n return secWebSocketProtocol == null ? void 0 : secWebSocketProtocol.split(\",\").map((protocol) => protocol.trim()).find((protocol) => protocol.startsWith(prefix));\n}\nfunction encodeSubprotocolValue(value) {\n const bytes = new TextEncoder().encode(value);\n let binary = \"\";\n for (const byte of bytes) {\n binary += String.fromCharCode(byte);\n }\n return btoa(binary).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/u, \"\");\n}\nfunction decodeSubprotocolValue(value) {\n const base64 = value.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = \"=\".repeat((4 - base64.length % 4) % 4);\n const binary = atob(`${base64}${padding}`);\n const bytes = Uint8Array.from(binary, (char) => char.charCodeAt(0));\n return new TextDecoder().decode(bytes);\n}\n\n// src/gateway-provider.ts\nimport {\n createJsonErrorResponseHandler as createJsonErrorResponseHandler11,\n createJsonResponseHandler as createJsonResponseHandler10,\n loadOptionalSetting,\n postJsonToApi as postJsonToApi8,\n withoutTrailingSlash,\n withUserAgentSuffix\n} from \"@ai-sdk/provider-utils\";\nimport { z as z17 } from \"zod/v4\";\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 generationId,\n isRetryable = statusCode != null && (statusCode === 408 || // request timeout\n statusCode === 409 || // conflict\n statusCode === 429 || // too many requests\n statusCode >= 500)\n // server error\n }) {\n super(generationId ? `${message} [${generationId}]` : message);\n this[_a] = true;\n this.statusCode = statusCode;\n this.cause = cause;\n this.generationId = generationId;\n this.isRetryable = isRetryable;\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 generationId\n } = {}) {\n super({ message, statusCode, cause, generationId });\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 statusCode = 401,\n cause,\n generationId\n }) {\n let contextualMessage;\n if (apiKeyProvided) {\n contextualMessage = `AI Gateway authentication failed: Invalid API key or token.\n\nCreate a new API key: https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai%2Fapi-keys\n\nProvide an API key or Vercel access token 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\nor pass a Vercel access token via the 'apiKey' option.`;\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 - Vercel access token:\nPass a Vercel personal access token or Vercel app access token via the 'apiKey' option.\n\nOption 3 - 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 generationId\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 generationId\n } = {}) {\n super({ message, statusCode, cause, generationId });\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 generationId\n } = {}) {\n super({ message, statusCode, cause, generationId });\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 { lazySchema, zodSchema } from \"@ai-sdk/provider-utils\";\nvar name4 = \"GatewayModelNotFoundError\";\nvar marker5 = `vercel.ai.gateway.error.${name4}`;\nvar symbol5 = Symbol.for(marker5);\nvar modelNotFoundParamSchema = lazySchema(\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 generationId\n } = {}) {\n super({ message, statusCode, cause, generationId });\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 generationId\n } = {}) {\n super({ message, statusCode, cause, generationId });\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-failed-dependency-error.ts\nvar name6 = \"GatewayFailedDependencyError\";\nvar marker7 = `vercel.ai.gateway.error.${name6}`;\nvar symbol7 = Symbol.for(marker7);\nvar _a7, _b7;\nvar GatewayFailedDependencyError = class extends (_b7 = GatewayError, _a7 = symbol7, _b7) {\n constructor({\n message = \"Failed dependency\",\n statusCode = 424,\n cause,\n generationId\n } = {}) {\n super({ message, statusCode, cause, generationId });\n this[_a7] = true;\n // used in isInstance\n this.name = name6;\n this.type = \"failed_dependency\";\n }\n static isInstance(error) {\n return GatewayError.hasMarker(error) && symbol7 in error;\n }\n};\n\n// src/errors/gateway-forbidden-error.ts\nvar name7 = \"GatewayForbiddenError\";\nvar marker8 = `vercel.ai.gateway.error.${name7}`;\nvar symbol8 = Symbol.for(marker8);\nvar _a8, _b8;\nvar GatewayForbiddenError = class extends (_b8 = GatewayError, _a8 = symbol8, _b8) {\n constructor({\n message = \"Forbidden\",\n statusCode = 403,\n cause,\n generationId\n } = {}) {\n super({ message, statusCode, cause, generationId });\n this[_a8] = true;\n // used in isInstance\n this.name = name7;\n this.type = \"forbidden\";\n }\n static isInstance(error) {\n return GatewayError.hasMarker(error) && symbol8 in error;\n }\n};\n\n// src/errors/gateway-response-error.ts\nvar name8 = \"GatewayResponseError\";\nvar marker9 = `vercel.ai.gateway.error.${name8}`;\nvar symbol9 = Symbol.for(marker9);\nvar _a9, _b9;\nvar GatewayResponseError = class extends (_b9 = GatewayError, _a9 = symbol9, _b9) {\n constructor({\n message = \"Invalid response from Gateway\",\n statusCode = 502,\n response,\n validationError,\n cause,\n generationId\n } = {}) {\n super({ message, statusCode, cause, generationId });\n this[_a9] = true;\n // used in isInstance\n this.name = name8;\n this.type = \"response_error\";\n this.response = response;\n this.validationError = validationError;\n }\n static isInstance(error) {\n return GatewayError.hasMarker(error) && symbol9 in error;\n }\n};\n\n// src/errors/create-gateway-error.ts\nimport {\n lazySchema as lazySchema2,\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 var _a11;\n const parseResult = await safeValidateTypes({\n value: response,\n schema: gatewayErrorResponseSchema\n });\n if (!parseResult.success) {\n const rawGenerationId = typeof response === \"object\" && response !== null && \"generationId\" in response ? response.generationId : void 0;\n return new GatewayResponseError({\n message: `Invalid error response format: ${defaultMessage}`,\n statusCode,\n response,\n validationError: parseResult.error,\n cause,\n generationId: rawGenerationId\n });\n }\n const validatedResponse = parseResult.value;\n const errorType = validatedResponse.error.type;\n const message = validatedResponse.error.message;\n const generationId = (_a11 = validatedResponse.generationId) != null ? _a11 : void 0;\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 generationId\n });\n case \"invalid_request_error\":\n return new GatewayInvalidRequestError({\n message,\n statusCode,\n cause,\n generationId\n });\n case \"rate_limit_exceeded\":\n return new GatewayRateLimitError({\n message,\n statusCode,\n cause,\n generationId\n });\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 generationId\n });\n }\n case \"internal_server_error\":\n return new GatewayInternalServerError({\n message,\n statusCode,\n cause,\n generationId\n });\n case \"failed_dependency\":\n return new GatewayFailedDependencyError({\n message,\n statusCode,\n cause,\n generationId\n });\n case \"forbidden\":\n return new GatewayForbiddenError({\n message,\n statusCode,\n cause,\n generationId\n });\n default:\n return new GatewayInternalServerError({\n message,\n statusCode,\n cause,\n generationId\n });\n }\n}\nvar gatewayErrorResponseSchema = lazySchema2(\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 generationId: z2.string().nullish()\n })\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/gateway-timeout-error.ts\nvar name9 = \"GatewayTimeoutError\";\nvar marker10 = `vercel.ai.gateway.error.${name9}`;\nvar symbol10 = Symbol.for(marker10);\nvar _a10, _b10;\nvar GatewayTimeoutError = class _GatewayTimeoutError extends (_b10 = GatewayError, _a10 = symbol10, _b10) {\n constructor({\n message = \"Request timed out\",\n statusCode = 408,\n cause,\n generationId\n } = {}) {\n super({ message, statusCode, cause, generationId });\n this[_a10] = true;\n // used in isInstance\n this.name = name9;\n this.type = \"timeout_error\";\n }\n static isInstance(error) {\n return GatewayError.hasMarker(error) && symbol10 in error;\n }\n /**\n * Creates a helpful timeout error message with troubleshooting guidance\n */\n static createTimeoutError({\n originalMessage,\n statusCode = 408,\n cause,\n generationId\n }) {\n const message = `Gateway request timed out: ${originalMessage}\n\n This is a client-side timeout. To resolve this, increase your timeout configuration: https://vercel.com/docs/ai-gateway/capabilities/video-generation#extending-timeouts-for-node.js`;\n return new _GatewayTimeoutError({\n message,\n statusCode,\n cause,\n generationId\n });\n }\n};\n\n// src/errors/as-gateway-error.ts\nfunction isTimeoutError(error) {\n if (!(error instanceof Error)) {\n return false;\n }\n const errorCode = error.code;\n if (typeof errorCode === \"string\") {\n const undiciTimeoutCodes = [\n \"UND_ERR_HEADERS_TIMEOUT\",\n \"UND_ERR_BODY_TIMEOUT\",\n \"UND_ERR_CONNECT_TIMEOUT\"\n ];\n return undiciTimeoutCodes.includes(errorCode);\n }\n return false;\n}\nasync function asGatewayError(error, authMethod) {\n var _a11;\n if (GatewayError.isInstance(error)) {\n return error;\n }\n if (isTimeoutError(error)) {\n return GatewayTimeoutError.createTimeoutError({\n originalMessage: error instanceof Error ? error.message : \"Unknown error\",\n cause: error\n });\n }\n if (APICallError.isInstance(error)) {\n if (error.cause && isTimeoutError(error.cause)) {\n return GatewayTimeoutError.createTimeoutError({\n originalMessage: error.message,\n cause: error\n });\n }\n return await createGatewayErrorFromResponse({\n response: extractApiCallResponse(error),\n statusCode: (_a11 = error.statusCode) != null ? _a11 : 500,\n defaultMessage: \"Gateway request failed\",\n cause: error,\n authMethod\n });\n }\n return await 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/gateway-headers.ts\nvar GATEWAY_AUTH_METHOD_HEADER = \"ai-gateway-auth-method\";\nvar VERCEL_AI_GATEWAY_TEAM_HEADER = \"x-vercel-ai-gateway-team\";\n\n// src/errors/parse-auth-method.ts\nimport { z as z3 } from \"zod/v4\";\nimport {\n lazySchema as lazySchema3,\n safeValidateTypes as safeValidateTypes2,\n zodSchema as zodSchema3\n} from \"@ai-sdk/provider-utils\";\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 = lazySchema3(\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 lazySchema as lazySchema4,\n resolve,\n zodSchema as zodSchema4\n} from \"@ai-sdk/provider-utils\";\nimport { z as z4 } from \"zod/v4\";\n\n// src/gateway-model-entry.ts\nvar KNOWN_MODEL_TYPES = [\n \"embedding\",\n \"image\",\n \"language\",\n \"realtime\",\n \"reranking\",\n \"speech\",\n \"transcription\",\n \"video\"\n];\n\n// src/gateway-fetch-metadata.ts\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: this.config.headers ? await resolve(this.config.headers) : void 0,\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: this.config.headers ? await resolve(this.config.headers) : void 0,\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 = lazySchema4(\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(\"v4\"),\n provider: z4.string(),\n modelId: z4.string()\n }),\n modelType: z4.string().nullish()\n })\n ).transform(\n (models) => models.filter(\n (m) => m.modelType == null || KNOWN_MODEL_TYPES.includes(m.modelType)\n )\n )\n })\n )\n);\nvar gatewayCreditsResponseSchema = lazySchema4(\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-spend-report.ts\nimport {\n createJsonErrorResponseHandler as createJsonErrorResponseHandler2,\n createJsonResponseHandler as createJsonResponseHandler2,\n getFromApi as getFromApi2,\n lazySchema as lazySchema5,\n resolve as resolve2,\n zodSchema as zodSchema5\n} from \"@ai-sdk/provider-utils\";\nimport { z as z5 } from \"zod/v4\";\nvar GatewaySpendReport = class {\n constructor(config) {\n this.config = config;\n }\n async getSpendReport(params) {\n try {\n const baseUrl = new URL(this.config.baseURL);\n const searchParams = new URLSearchParams();\n searchParams.set(\"start_date\", params.startDate);\n searchParams.set(\"end_date\", params.endDate);\n if (params.groupBy) {\n searchParams.set(\"group_by\", params.groupBy);\n }\n if (params.datePart) {\n searchParams.set(\"date_part\", params.datePart);\n }\n if (params.userId) {\n searchParams.set(\"user_id\", params.userId);\n }\n if (params.model) {\n searchParams.set(\"model\", params.model);\n }\n if (params.provider) {\n searchParams.set(\"provider\", params.provider);\n }\n if (params.credentialType) {\n searchParams.set(\"credential_type\", params.credentialType);\n }\n if (params.tags && params.tags.length > 0) {\n searchParams.set(\"tags\", params.tags.join(\",\"));\n }\n const { value } = await getFromApi2({\n url: `${baseUrl.origin}/v1/report?${searchParams.toString()}`,\n headers: this.config.headers ? await resolve2(this.config.headers) : void 0,\n successfulResponseHandler: createJsonResponseHandler2(\n gatewaySpendReportResponseSchema\n ),\n failedResponseHandler: createJsonErrorResponseHandler2({\n errorSchema: z5.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 gatewaySpendReportResponseSchema = lazySchema5(\n () => zodSchema5(\n z5.object({\n results: z5.array(\n z5.object({\n day: z5.string().optional(),\n hour: z5.string().optional(),\n user: z5.string().optional(),\n model: z5.string().optional(),\n tag: z5.string().optional(),\n provider: z5.string().optional(),\n credential_type: z5.enum([\"byok\", \"system\"]).optional(),\n total_cost: z5.number(),\n market_cost: z5.number().optional(),\n input_tokens: z5.number().optional(),\n output_tokens: z5.number().optional(),\n cached_input_tokens: z5.number().optional(),\n cache_creation_input_tokens: z5.number().optional(),\n reasoning_tokens: z5.number().optional(),\n request_count: z5.number().optional()\n }).transform(\n ({\n credential_type,\n total_cost,\n market_cost,\n input_tokens,\n output_tokens,\n cached_input_tokens,\n cache_creation_input_tokens,\n reasoning_tokens,\n request_count,\n ...rest\n }) => ({\n ...rest,\n ...credential_type !== void 0 ? { credentialType: credential_type } : {},\n totalCost: total_cost,\n ...market_cost !== void 0 ? { marketCost: market_cost } : {},\n ...input_tokens !== void 0 ? { inputTokens: input_tokens } : {},\n ...output_tokens !== void 0 ? { outputTokens: output_tokens } : {},\n ...cached_input_tokens !== void 0 ? { cachedInputTokens: cached_input_tokens } : {},\n ...cache_creation_input_tokens !== void 0 ? { cacheCreationInputTokens: cache_creation_input_tokens } : {},\n ...reasoning_tokens !== void 0 ? { reasoningTokens: reasoning_tokens } : {},\n ...request_count !== void 0 ? { requestCount: request_count } : {}\n })\n )\n )\n })\n )\n);\n\n// src/gateway-generation-info.ts\nimport {\n createJsonErrorResponseHandler as createJsonErrorResponseHandler3,\n createJsonResponseHandler as createJsonResponseHandler3,\n getFromApi as getFromApi3,\n lazySchema as lazySchema6,\n resolve as resolve3,\n zodSchema as zodSchema6\n} from \"@ai-sdk/provider-utils\";\nimport { z as z6 } from \"zod/v4\";\nvar GatewayGenerationInfoFetcher = class {\n constructor(config) {\n this.config = config;\n }\n async getGenerationInfo(params) {\n try {\n const baseUrl = new URL(this.config.baseURL);\n const { value } = await getFromApi3({\n url: `${baseUrl.origin}/v1/generation?id=${encodeURIComponent(params.id)}`,\n headers: this.config.headers ? await resolve3(this.config.headers) : void 0,\n successfulResponseHandler: createJsonResponseHandler3(\n gatewayGenerationInfoResponseSchema\n ),\n failedResponseHandler: createJsonErrorResponseHandler3({\n errorSchema: z6.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 gatewayGenerationInfoResponseSchema = lazySchema6(\n () => zodSchema6(\n z6.object({\n data: z6.object({\n id: z6.string(),\n total_cost: z6.number(),\n upstream_inference_cost: z6.number(),\n usage: z6.number(),\n created_at: z6.string(),\n model: z6.string(),\n is_byok: z6.boolean(),\n provider_name: z6.string(),\n streamed: z6.boolean(),\n finish_reason: z6.string(),\n latency: z6.number(),\n generation_time: z6.number(),\n native_tokens_prompt: z6.number(),\n native_tokens_completion: z6.number(),\n native_tokens_reasoning: z6.number(),\n native_tokens_cached: z6.number(),\n native_tokens_cache_creation: z6.number(),\n billable_web_search_calls: z6.number()\n }).transform(\n ({\n total_cost,\n upstream_inference_cost,\n created_at,\n is_byok,\n provider_name,\n finish_reason,\n generation_time,\n native_tokens_prompt,\n native_tokens_completion,\n native_tokens_reasoning,\n native_tokens_cached,\n native_tokens_cache_creation,\n billable_web_search_calls,\n ...rest\n }) => ({\n ...rest,\n totalCost: total_cost,\n upstreamInferenceCost: upstream_inference_cost,\n createdAt: created_at,\n isByok: is_byok,\n providerName: provider_name,\n finishReason: finish_reason,\n generationTime: generation_time,\n promptTokens: native_tokens_prompt,\n completionTokens: native_tokens_completion,\n reasoningTokens: native_tokens_reasoning,\n cachedTokens: native_tokens_cached,\n cacheCreationTokens: native_tokens_cache_creation,\n billableWebSearchCalls: billable_web_search_calls\n })\n )\n }).transform(({ data }) => data)\n )\n);\n\n// src/gateway-language-model.ts\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonErrorResponseHandler as createJsonErrorResponseHandler4,\n createJsonResponseHandler as createJsonResponseHandler4,\n postJsonToApi,\n resolve as resolve4,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE\n} from \"@ai-sdk/provider-utils\";\nimport { z as z7 } from \"zod/v4\";\nvar GatewayLanguageModel = class _GatewayLanguageModel {\n constructor(modelId, config) {\n this.modelId = modelId;\n this.config = config;\n this.specificationVersion = \"v4\";\n this.supportedUrls = { \"*/*\": [/.*/] };\n }\n static [WORKFLOW_SERIALIZE](model) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config\n });\n }\n static [WORKFLOW_DESERIALIZE](options) {\n return new _GatewayLanguageModel(options.modelId, options.config);\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 = this.config.headers ? await resolve4(this.config.headers) : void 0;\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 resolve4(this.config.o11yHeaders)\n ),\n body: args,\n successfulResponseHandler: createJsonResponseHandler4(z7.any()),\n failedResponseHandler: createJsonErrorResponseHandler4({\n errorSchema: z7.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(\n error,\n await parseAuthMethod(resolvedHeaders != null ? resolvedHeaders : {})\n );\n }\n }\n async doStream(options) {\n const { args, warnings } = await this.getArgs(options);\n const { abortSignal } = options;\n const resolvedHeaders = this.config.headers ? await resolve4(this.config.headers) : void 0;\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 resolve4(this.config.o11yHeaders)\n ),\n body: args,\n successfulResponseHandler: createEventSourceResponseHandler(z7.any()),\n failedResponseHandler: createJsonErrorResponseHandler4({\n errorSchema: z7.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(\n error,\n await parseAuthMethod(resolvedHeaders != null ? resolvedHeaders : {})\n );\n }\n }\n /**\n * Encodes inline `Uint8Array` file data to a base64 string in place.\n * @param options - The options to encode.\n * @returns The options with the file data encoded.\n */\n maybeEncodeFileParts(options) {\n for (const message of options.prompt) {\n if (!Array.isArray(message.content)) {\n continue;\n }\n for (const part of message.content) {\n if (part.type === \"file\" || part.type === \"reasoning-file\") {\n part.data = maybeBase64EncodeFileData(part.data);\n } else if (part.type === \"tool-result\" && part.output.type === \"content\") {\n for (const contentPart of part.output.value) {\n if (contentPart.type === \"file\") {\n contentPart.data = maybeBase64EncodeFileData(contentPart.data);\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\": \"4\",\n \"ai-language-model-id\": modelId,\n \"ai-language-model-streaming\": String(streaming)\n };\n }\n};\nfunction maybeBase64EncodeFileData(data) {\n if (data.type === \"data\") {\n const bytes = data.data;\n if (bytes instanceof Uint8Array) {\n return { ...data, data: Buffer.from(bytes).toString(\"base64\") };\n }\n }\n return data;\n}\n\n// src/gateway-embedding-model.ts\nimport {\n combineHeaders as combineHeaders2,\n createJsonErrorResponseHandler as createJsonErrorResponseHandler5,\n createJsonResponseHandler as createJsonResponseHandler5,\n lazySchema as lazySchema7,\n postJsonToApi as postJsonToApi2,\n resolve as resolve5,\n serializeModelOptions as serializeModelOptions2,\n WORKFLOW_SERIALIZE as WORKFLOW_SERIALIZE2,\n WORKFLOW_DESERIALIZE as WORKFLOW_DESERIALIZE2,\n zodSchema as zodSchema7\n} from \"@ai-sdk/provider-utils\";\nimport { z as z8 } from \"zod/v4\";\nvar GatewayEmbeddingModel = class _GatewayEmbeddingModel {\n constructor(modelId, config) {\n this.modelId = modelId;\n this.config = config;\n this.specificationVersion = \"v4\";\n this.maxEmbeddingsPerCall = 2048;\n this.supportsParallelCalls = true;\n }\n static [WORKFLOW_SERIALIZE2](model) {\n return serializeModelOptions2({\n modelId: model.modelId,\n config: model.config\n });\n }\n static [WORKFLOW_DESERIALIZE2](options) {\n return new _GatewayEmbeddingModel(options.modelId, options.config);\n }\n get provider() {\n return this.config.provider;\n }\n async doEmbed({\n values,\n headers,\n abortSignal,\n providerOptions\n }) {\n var _a11, _b11;\n const resolvedHeaders = this.config.headers ? await resolve5(this.config.headers) : void 0;\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 resolve5(this.config.o11yHeaders)\n ),\n body: {\n values,\n ...providerOptions ? { providerOptions } : {}\n },\n successfulResponseHandler: createJsonResponseHandler5(\n gatewayEmbeddingResponseSchema\n ),\n failedResponseHandler: createJsonErrorResponseHandler5({\n errorSchema: z8.any(),\n errorToMessage: (data) => data\n }),\n ...abortSignal && { abortSignal },\n fetch: this.config.fetch\n });\n return {\n embeddings: responseBody.embeddings,\n usage: (_a11 = responseBody.usage) != null ? _a11 : void 0,\n providerMetadata: responseBody.providerMetadata,\n response: { headers: responseHeaders, body: rawValue },\n warnings: (_b11 = responseBody.warnings) != null ? _b11 : []\n };\n } catch (error) {\n throw await asGatewayError(\n error,\n await parseAuthMethod(resolvedHeaders != null ? resolvedHeaders : {})\n );\n }\n }\n getUrl() {\n return `${this.config.baseURL}/embedding-model`;\n }\n getModelConfigHeaders() {\n return {\n \"ai-embedding-model-specification-version\": \"4\",\n \"ai-model-id\": this.modelId\n };\n }\n};\nvar gatewayEmbeddingWarningSchema = z8.discriminatedUnion(\"type\", [\n z8.object({\n type: z8.literal(\"unsupported\"),\n feature: z8.string(),\n details: z8.string().optional()\n }),\n z8.object({\n type: z8.literal(\"compatibility\"),\n feature: z8.string(),\n details: z8.string().optional()\n }),\n z8.object({\n type: z8.literal(\"deprecated\"),\n setting: z8.string(),\n message: z8.string()\n }),\n z8.object({\n type: z8.literal(\"other\"),\n message: z8.string()\n })\n]);\nvar gatewayEmbeddingResponseSchema = lazySchema7(\n () => zodSchema7(\n z8.object({\n embeddings: z8.array(z8.array(z8.number())),\n usage: z8.object({ tokens: z8.number() }).nullish(),\n warnings: z8.array(gatewayEmbeddingWarningSchema).optional(),\n providerMetadata: z8.record(z8.string(), z8.record(z8.string(), z8.unknown())).optional()\n })\n )\n);\n\n// src/gateway-image-model.ts\nimport {\n combineHeaders as combineHeaders3,\n convertUint8ArrayToBase64,\n createJsonResponseHandler as createJsonResponseHandler6,\n createJsonErrorResponseHandler as createJsonErrorResponseHandler6,\n postJsonToApi as postJsonToApi3,\n resolve as resolve6,\n serializeModelOptions as serializeModelOptions3,\n WORKFLOW_SERIALIZE as WORKFLOW_SERIALIZE3,\n WORKFLOW_DESERIALIZE as WORKFLOW_DESERIALIZE3\n} from \"@ai-sdk/provider-utils\";\nimport { z as z9 } from \"zod/v4\";\nvar GatewayImageModel = class _GatewayImageModel {\n constructor(modelId, config) {\n this.modelId = modelId;\n this.config = config;\n this.specificationVersion = \"v4\";\n // Set a very large number to prevent client-side splitting of requests\n this.maxImagesPerCall = Number.MAX_SAFE_INTEGER;\n }\n static [WORKFLOW_SERIALIZE3](model) {\n return serializeModelOptions3({\n modelId: model.modelId,\n config: model.config\n });\n }\n static [WORKFLOW_DESERIALIZE3](options) {\n return new _GatewayImageModel(options.modelId, options.config);\n }\n get provider() {\n return this.config.provider;\n }\n async doGenerate({\n prompt,\n n,\n size,\n aspectRatio,\n seed,\n files,\n mask,\n providerOptions,\n headers,\n abortSignal\n }) {\n var _a11, _b11, _c, _d;\n const resolvedHeaders = this.config.headers ? await resolve6(this.config.headers) : void 0;\n try {\n const { responseHeaders, value: responseBody } = await postJsonToApi3({\n url: this.getUrl(),\n headers: combineHeaders3(\n resolvedHeaders,\n headers != null ? headers : {},\n this.getModelConfigHeaders(),\n await resolve6(this.config.o11yHeaders)\n ),\n body: {\n prompt,\n n,\n ...size && { size },\n ...aspectRatio && { aspectRatio },\n ...seed && { seed },\n ...providerOptions && { providerOptions },\n ...files && {\n files: files.map((file) => maybeEncodeImageFile(file))\n },\n ...mask && { mask: maybeEncodeImageFile(mask) }\n },\n successfulResponseHandler: createJsonResponseHandler6(\n gatewayImageResponseSchema\n ),\n failedResponseHandler: createJsonErrorResponseHandler6({\n errorSchema: z9.any(),\n errorToMessage: (data) => data\n }),\n ...abortSignal && { abortSignal },\n fetch: this.config.fetch\n });\n return {\n images: responseBody.images,\n // Always base64 strings from server\n warnings: (_a11 = responseBody.warnings) != null ? _a11 : [],\n providerMetadata: responseBody.providerMetadata,\n response: {\n timestamp: /* @__PURE__ */ new Date(),\n modelId: this.modelId,\n headers: responseHeaders\n },\n ...responseBody.usage != null && {\n usage: {\n inputTokens: (_b11 = responseBody.usage.inputTokens) != null ? _b11 : void 0,\n outputTokens: (_c = responseBody.usage.outputTokens) != null ? _c : void 0,\n totalTokens: (_d = responseBody.usage.totalTokens) != null ? _d : void 0\n }\n }\n };\n } catch (error) {\n throw await asGatewayError(\n error,\n await parseAuthMethod(resolvedHeaders != null ? resolvedHeaders : {})\n );\n }\n }\n getUrl() {\n return `${this.config.baseURL}/image-model`;\n }\n getModelConfigHeaders() {\n return {\n \"ai-image-model-specification-version\": \"4\",\n \"ai-model-id\": this.modelId\n };\n }\n};\nfunction maybeEncodeImageFile(file) {\n if (file.type === \"file\" && file.data instanceof Uint8Array) {\n return {\n ...file,\n data: convertUint8ArrayToBase64(file.data)\n };\n }\n return file;\n}\nvar providerMetadataEntrySchema = z9.object({\n images: z9.array(z9.unknown()).optional()\n}).catchall(z9.unknown());\nvar gatewayImageWarningSchema = z9.discriminatedUnion(\"type\", [\n z9.object({\n type: z9.literal(\"unsupported\"),\n feature: z9.string(),\n details: z9.string().optional()\n }),\n z9.object({\n type: z9.literal(\"compatibility\"),\n feature: z9.string(),\n details: z9.string().optional()\n }),\n z9.object({\n type: z9.literal(\"deprecated\"),\n setting: z9.string(),\n message: z9.string()\n }),\n z9.object({\n type: z9.literal(\"other\"),\n message: z9.string()\n })\n]);\nvar gatewayImageUsageSchema = z9.object({\n inputTokens: z9.number().nullish(),\n outputTokens: z9.number().nullish(),\n totalTokens: z9.number().nullish()\n});\nvar gatewayImageResponseSchema = z9.object({\n images: z9.array(z9.string()),\n // Always base64 strings over the wire\n warnings: z9.array(gatewayImageWarningSchema).optional(),\n providerMetadata: z9.record(z9.string(), providerMetadataEntrySchema).optional(),\n usage: gatewayImageUsageSchema.optional()\n});\n\n// src/gateway-video-model.ts\nimport {\n APICallError as APICallError2\n} from \"@ai-sdk/provider\";\nimport {\n combineHeaders as combineHeaders4,\n convertUint8ArrayToBase64 as convertUint8ArrayToBase642,\n createJsonErrorResponseHandler as createJsonErrorResponseHandler7,\n parseJsonEventStream,\n postJsonToApi as postJsonToApi4,\n resolve as resolve7\n} from \"@ai-sdk/provider-utils\";\nimport { z as z10 } from \"zod/v4\";\nvar GatewayVideoModel = class {\n constructor(modelId, config) {\n this.modelId = modelId;\n this.config = config;\n this.specificationVersion = \"v4\";\n // Set a very large number to prevent client-side splitting of requests\n this.maxVideosPerCall = Number.MAX_SAFE_INTEGER;\n }\n get provider() {\n return this.config.provider;\n }\n async doGenerate({\n prompt,\n n,\n aspectRatio,\n resolution,\n duration,\n fps,\n seed,\n generateAudio,\n image,\n providerOptions,\n headers,\n abortSignal\n }) {\n var _a11;\n const resolvedHeaders = this.config.headers ? await resolve7(this.config.headers) : void 0;\n try {\n const { responseHeaders, value: responseBody } = await postJsonToApi4({\n url: this.getUrl(),\n headers: combineHeaders4(\n resolvedHeaders,\n headers != null ? headers : {},\n this.getModelConfigHeaders(),\n await resolve7(this.config.o11yHeaders),\n { accept: \"text/event-stream\" }\n ),\n body: {\n prompt,\n n,\n ...aspectRatio && { aspectRatio },\n ...resolution && { resolution },\n ...duration && { duration },\n ...fps && { fps },\n ...seed && { seed },\n ...generateAudio !== void 0 && { generateAudio },\n ...providerOptions && { providerOptions },\n ...image && { image: maybeEncodeVideoFile(image) }\n },\n successfulResponseHandler: async ({\n response,\n url,\n requestBodyValues\n }) => {\n if (response.body == null) {\n throw new APICallError2({\n message: \"SSE response body is empty\",\n url,\n requestBodyValues,\n statusCode: response.status\n });\n }\n const eventStream = parseJsonEventStream({\n stream: response.body,\n schema: gatewayVideoEventSchema\n });\n const reader = eventStream.getReader();\n const { done, value: parseResult } = await reader.read();\n reader.releaseLock();\n if (done || !parseResult) {\n throw new APICallError2({\n message: \"SSE stream ended without a data event\",\n url,\n requestBodyValues,\n statusCode: response.status\n });\n }\n if (!parseResult.success) {\n throw new APICallError2({\n message: \"Failed to parse video SSE event\",\n cause: parseResult.error,\n url,\n requestBodyValues,\n statusCode: response.status\n });\n }\n const event = parseResult.value;\n if (event.type === \"error\") {\n throw new APICallError2({\n message: event.message,\n statusCode: event.statusCode,\n url,\n requestBodyValues,\n responseHeaders: Object.fromEntries([...response.headers]),\n responseBody: JSON.stringify(event),\n data: {\n error: {\n message: event.message,\n type: event.errorType,\n param: event.param\n }\n }\n });\n }\n return {\n value: {\n videos: event.videos,\n warnings: event.warnings,\n providerMetadata: event.providerMetadata\n },\n responseHeaders: Object.fromEntries([...response.headers])\n };\n },\n failedResponseHandler: createJsonErrorResponseHandler7({\n errorSchema: z10.any(),\n errorToMessage: (data) => data\n }),\n ...abortSignal && { abortSignal },\n fetch: this.config.fetch\n });\n return {\n videos: responseBody.videos,\n warnings: (_a11 = responseBody.warnings) != null ? _a11 : [],\n providerMetadata: responseBody.providerMetadata,\n response: {\n timestamp: /* @__PURE__ */ new Date(),\n modelId: this.modelId,\n headers: responseHeaders\n }\n };\n } catch (error) {\n throw await asGatewayError(\n error,\n await parseAuthMethod(resolvedHeaders != null ? resolvedHeaders : {})\n );\n }\n }\n getUrl() {\n return `${this.config.baseURL}/video-model`;\n }\n getModelConfigHeaders() {\n return {\n \"ai-video-model-specification-version\": \"4\",\n \"ai-model-id\": this.modelId\n };\n }\n};\nfunction maybeEncodeVideoFile(file) {\n if (file.type === \"file\" && file.data instanceof Uint8Array) {\n return {\n ...file,\n data: convertUint8ArrayToBase642(file.data)\n };\n }\n return file;\n}\nvar providerMetadataEntrySchema2 = z10.object({\n videos: z10.array(z10.unknown()).optional()\n}).catchall(z10.unknown());\nvar gatewayVideoDataSchema = z10.union([\n z10.object({\n type: z10.literal(\"url\"),\n url: z10.string(),\n mediaType: z10.string()\n }),\n z10.object({\n type: z10.literal(\"base64\"),\n data: z10.string(),\n mediaType: z10.string()\n })\n]);\nvar gatewayVideoWarningSchema = z10.discriminatedUnion(\"type\", [\n z10.object({\n type: z10.literal(\"unsupported\"),\n feature: z10.string(),\n details: z10.string().optional()\n }),\n z10.object({\n type: z10.literal(\"compatibility\"),\n feature: z10.string(),\n details: z10.string().optional()\n }),\n z10.object({\n type: z10.literal(\"deprecated\"),\n setting: z10.string(),\n message: z10.string()\n }),\n z10.object({\n type: z10.literal(\"other\"),\n message: z10.string()\n })\n]);\nvar gatewayVideoEventSchema = z10.discriminatedUnion(\"type\", [\n z10.object({\n type: z10.literal(\"result\"),\n videos: z10.array(gatewayVideoDataSchema),\n warnings: z10.array(gatewayVideoWarningSchema).optional(),\n providerMetadata: z10.record(z10.string(), providerMetadataEntrySchema2).optional()\n }),\n z10.object({\n type: z10.literal(\"error\"),\n message: z10.string(),\n errorType: z10.string(),\n statusCode: z10.number(),\n param: z10.unknown().nullable()\n })\n]);\n\n// src/gateway-reranking-model.ts\nimport {\n combineHeaders as combineHeaders5,\n createJsonErrorResponseHandler as createJsonErrorResponseHandler8,\n createJsonResponseHandler as createJsonResponseHandler7,\n lazySchema as lazySchema8,\n postJsonToApi as postJsonToApi5,\n resolve as resolve8,\n zodSchema as zodSchema8\n} from \"@ai-sdk/provider-utils\";\nimport { z as z11 } from \"zod/v4\";\nvar GatewayRerankingModel = class {\n constructor(modelId, config) {\n this.modelId = modelId;\n this.config = config;\n this.specificationVersion = \"v4\";\n }\n get provider() {\n return this.config.provider;\n }\n async doRerank({\n documents,\n query,\n topN,\n headers,\n abortSignal,\n providerOptions\n }) {\n var _a11;\n const resolvedHeaders = this.config.headers ? await resolve8(this.config.headers) : void 0;\n try {\n const {\n responseHeaders,\n value: responseBody,\n rawValue\n } = await postJsonToApi5({\n url: this.getUrl(),\n headers: combineHeaders5(\n resolvedHeaders,\n headers != null ? headers : {},\n this.getModelConfigHeaders(),\n await resolve8(this.config.o11yHeaders)\n ),\n body: {\n documents,\n query,\n ...topN != null ? { topN } : {},\n ...providerOptions ? { providerOptions } : {}\n },\n successfulResponseHandler: createJsonResponseHandler7(\n gatewayRerankingResponseSchema\n ),\n failedResponseHandler: createJsonErrorResponseHandler8({\n errorSchema: z11.any(),\n errorToMessage: (data) => data\n }),\n ...abortSignal && { abortSignal },\n fetch: this.config.fetch\n });\n return {\n ranking: responseBody.ranking,\n providerMetadata: responseBody.providerMetadata,\n response: { headers: responseHeaders, body: rawValue },\n warnings: (_a11 = responseBody.warnings) != null ? _a11 : []\n };\n } catch (error) {\n throw await asGatewayError(\n error,\n await parseAuthMethod(resolvedHeaders != null ? resolvedHeaders : {})\n );\n }\n }\n getUrl() {\n return `${this.config.baseURL}/reranking-model`;\n }\n getModelConfigHeaders() {\n return {\n \"ai-reranking-model-specification-version\": \"4\",\n \"ai-model-id\": this.modelId\n };\n }\n};\nvar gatewayRerankingWarningSchema = z11.discriminatedUnion(\"type\", [\n z11.object({\n type: z11.literal(\"unsupported\"),\n feature: z11.string(),\n details: z11.string().optional()\n }),\n z11.object({\n type: z11.literal(\"compatibility\"),\n feature: z11.string(),\n details: z11.string().optional()\n }),\n z11.object({\n type: z11.literal(\"deprecated\"),\n setting: z11.string(),\n message: z11.string()\n }),\n z11.object({\n type: z11.literal(\"other\"),\n message: z11.string()\n })\n]);\nvar gatewayRerankingResponseSchema = lazySchema8(\n () => zodSchema8(\n z11.object({\n ranking: z11.array(\n z11.object({\n index: z11.number(),\n relevanceScore: z11.number()\n })\n ),\n warnings: z11.array(gatewayRerankingWarningSchema).optional(),\n providerMetadata: z11.record(z11.string(), z11.record(z11.string(), z11.unknown())).optional()\n })\n )\n);\n\n// src/gateway-speech-model.ts\nimport {\n combineHeaders as combineHeaders6,\n createJsonErrorResponseHandler as createJsonErrorResponseHandler9,\n createJsonResponseHandler as createJsonResponseHandler8,\n postJsonToApi as postJsonToApi6,\n resolve as resolve9\n} from \"@ai-sdk/provider-utils\";\nimport { z as z12 } from \"zod/v4\";\nvar GatewaySpeechModel = class {\n constructor(modelId, config) {\n this.modelId = modelId;\n this.config = config;\n this.specificationVersion = \"v4\";\n }\n get provider() {\n return this.config.provider;\n }\n async doGenerate({\n text,\n voice,\n outputFormat,\n instructions,\n speed,\n language,\n providerOptions,\n headers,\n abortSignal\n }) {\n var _a11;\n const resolvedHeaders = this.config.headers ? await resolve9(this.config.headers) : void 0;\n try {\n const {\n responseHeaders,\n value: responseBody,\n rawValue\n } = await postJsonToApi6({\n url: this.getUrl(),\n headers: combineHeaders6(\n resolvedHeaders,\n headers != null ? headers : {},\n this.getModelConfigHeaders(),\n await resolve9(this.config.o11yHeaders)\n ),\n body: {\n text,\n ...voice && { voice },\n ...outputFormat && { outputFormat },\n ...instructions && { instructions },\n ...speed != null && { speed },\n ...language && { language },\n ...providerOptions && { providerOptions }\n },\n successfulResponseHandler: createJsonResponseHandler8(\n gatewaySpeechResponseSchema\n ),\n failedResponseHandler: createJsonErrorResponseHandler9({\n errorSchema: z12.any(),\n errorToMessage: (data) => data\n }),\n ...abortSignal && { abortSignal },\n fetch: this.config.fetch\n });\n return {\n audio: responseBody.audio,\n warnings: (_a11 = responseBody.warnings) != null ? _a11 : [],\n providerMetadata: responseBody.providerMetadata,\n response: {\n timestamp: /* @__PURE__ */ new Date(),\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawValue\n }\n };\n } catch (error) {\n throw await asGatewayError(\n error,\n await parseAuthMethod(resolvedHeaders != null ? resolvedHeaders : {})\n );\n }\n }\n getUrl() {\n return `${this.config.baseURL}/speech-model`;\n }\n getModelConfigHeaders() {\n return {\n \"ai-speech-model-specification-version\": \"4\",\n \"ai-model-id\": this.modelId\n };\n }\n};\nvar providerMetadataEntrySchema3 = z12.object({}).catchall(z12.unknown());\nvar gatewaySpeechWarningSchema = z12.discriminatedUnion(\"type\", [\n z12.object({\n type: z12.literal(\"unsupported\"),\n feature: z12.string(),\n details: z12.string().optional()\n }),\n z12.object({\n type: z12.literal(\"compatibility\"),\n feature: z12.string(),\n details: z12.string().optional()\n }),\n z12.object({\n type: z12.literal(\"deprecated\"),\n setting: z12.string(),\n message: z12.string()\n }),\n z12.object({\n type: z12.literal(\"other\"),\n message: z12.string()\n })\n]);\nvar gatewaySpeechResponseSchema = z12.object({\n audio: z12.string(),\n warnings: z12.array(gatewaySpeechWarningSchema).optional(),\n providerMetadata: z12.record(z12.string(), providerMetadataEntrySchema3).optional()\n});\n\n// src/gateway-transcription-model.ts\nimport {\n combineHeaders as combineHeaders7,\n convertUint8ArrayToBase64 as convertUint8ArrayToBase643,\n createJsonErrorResponseHandler as createJsonErrorResponseHandler10,\n createJsonResponseHandler as createJsonResponseHandler9,\n postJsonToApi as postJsonToApi7,\n resolve as resolve10\n} from \"@ai-sdk/provider-utils\";\nimport { z as z13 } from \"zod/v4\";\nvar GatewayTranscriptionModel = class {\n constructor(modelId, config) {\n this.modelId = modelId;\n this.config = config;\n this.specificationVersion = \"v4\";\n }\n get provider() {\n return this.config.provider;\n }\n async doGenerate({\n audio,\n mediaType,\n providerOptions,\n headers,\n abortSignal\n }) {\n var _a11, _b11, _c, _d;\n const resolvedHeaders = this.config.headers ? await resolve10(this.config.headers) : void 0;\n try {\n const {\n responseHeaders,\n value: responseBody,\n rawValue\n } = await postJsonToApi7({\n url: this.getUrl(),\n headers: combineHeaders7(\n resolvedHeaders,\n headers != null ? headers : {},\n this.getModelConfigHeaders(),\n await resolve10(this.config.o11yHeaders)\n ),\n body: {\n audio: audio instanceof Uint8Array ? convertUint8ArrayToBase643(audio) : audio,\n mediaType,\n ...providerOptions && { providerOptions }\n },\n successfulResponseHandler: createJsonResponseHandler9(\n gatewayTranscriptionResponseSchema\n ),\n failedResponseHandler: createJsonErrorResponseHandler10({\n errorSchema: z13.any(),\n errorToMessage: (data) => data\n }),\n ...abortSignal && { abortSignal },\n fetch: this.config.fetch\n });\n return {\n text: responseBody.text,\n segments: (_a11 = responseBody.segments) != null ? _a11 : [],\n language: (_b11 = responseBody.language) != null ? _b11 : void 0,\n durationInSeconds: (_c = responseBody.durationInSeconds) != null ? _c : void 0,\n warnings: (_d = responseBody.warnings) != null ? _d : [],\n providerMetadata: responseBody.providerMetadata,\n response: {\n timestamp: /* @__PURE__ */ new Date(),\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawValue\n }\n };\n } catch (error) {\n throw await asGatewayError(\n error,\n await parseAuthMethod(resolvedHeaders != null ? resolvedHeaders : {})\n );\n }\n }\n getUrl() {\n return `${this.config.baseURL}/transcription-model`;\n }\n getModelConfigHeaders() {\n return {\n \"ai-transcription-model-specification-version\": \"4\",\n \"ai-model-id\": this.modelId\n };\n }\n};\nvar providerMetadataEntrySchema4 = z13.object({}).catchall(z13.unknown());\nvar gatewayTranscriptionWarningSchema = z13.discriminatedUnion(\"type\", [\n z13.object({\n type: z13.literal(\"unsupported\"),\n feature: z13.string(),\n details: z13.string().optional()\n }),\n z13.object({\n type: z13.literal(\"compatibility\"),\n feature: z13.string(),\n details: z13.string().optional()\n }),\n z13.object({\n type: z13.literal(\"deprecated\"),\n setting: z13.string(),\n message: z13.string()\n }),\n z13.object({\n type: z13.literal(\"other\"),\n message: z13.string()\n })\n]);\nvar gatewayTranscriptionResponseSchema = z13.object({\n text: z13.string(),\n segments: z13.array(\n z13.object({\n text: z13.string(),\n startSecond: z13.number(),\n endSecond: z13.number()\n })\n ).optional(),\n language: z13.string().nullish(),\n durationInSeconds: z13.number().nullish(),\n warnings: z13.array(gatewayTranscriptionWarningSchema).optional(),\n providerMetadata: z13.record(z13.string(), providerMetadataEntrySchema4).optional()\n});\n\n// src/gateway-realtime-model.ts\nvar GatewayRealtimeModel = class {\n constructor(modelId, config) {\n this.specificationVersion = \"v4\";\n this.modelId = modelId;\n this.provider = config.provider;\n this.config = config;\n }\n /**\n * Mints a single-use, short-lived client secret (`vcst_`) the browser uses to\n * open the realtime WebSocket without ever holding the long-lived Gateway\n * credential. The customer's server calls this (via\n * `gateway.experimental_realtime.getToken`) and hands the returned token to\n * the browser, which connects with it through the `ai-gateway-auth.<token>`\n * subprotocol. `expiresAfterSeconds` is forwarded to the mint endpoint;\n * `sessionConfig` is intentionally unused here — it is applied later via the\n * normalized `session-update` event.\n */\n async doCreateClientSecret(options) {\n const secret = await this.config.createClientSecret({\n modelId: this.modelId,\n ...(options == null ? void 0 : options.expiresAfterSeconds) != null && {\n expiresAfterSeconds: options.expiresAfterSeconds\n }\n });\n return {\n token: secret.token,\n url: toGatewayRealtimeUrl(this.config.baseURL, this.modelId),\n ...secret.expiresAt != null && { expiresAt: secret.expiresAt }\n };\n }\n getWebSocketConfig(options) {\n return {\n url: options.url,\n protocols: getGatewayRealtimeProtocols(options.token, {\n teamIdOrSlug: this.config.teamIdOrSlug\n })\n };\n }\n parseServerEvent(raw) {\n return raw;\n }\n serializeClientEvent(event) {\n return event;\n }\n buildSessionConfig(config) {\n return config;\n }\n};\nfunction toGatewayRealtimeUrl(baseURL, modelId) {\n const url = new URL(`${baseURL.replace(/^http/, \"ws\")}/realtime-model`);\n url.searchParams.set(\"ai-model-id\", modelId);\n return url.toString();\n}\n\n// src/tool/exa-search.ts\nimport {\n createProviderExecutedToolFactory,\n lazySchema as lazySchema9,\n zodSchema as zodSchema9\n} from \"@ai-sdk/provider-utils\";\nimport { z as z14 } from \"zod\";\nvar exaSearchInputSchema = lazySchema9(\n () => zodSchema9(\n z14.object({\n query: z14.string().describe(\"Natural-language web search query. This is required.\"),\n type: z14.enum([\"auto\", \"fast\", \"instant\"]).optional().describe(\n \"Search method. Use auto for the default balance of speed and quality.\"\n ),\n num_results: z14.number().optional().describe(\"Maximum number of results to return (1-100, default: 10).\"),\n category: z14.enum([\n \"company\",\n \"people\",\n \"research paper\",\n \"news\",\n \"personal site\",\n \"financial report\"\n ]).optional().describe(\"Optional content category to focus results.\"),\n user_location: z14.string().optional().describe(\"Two-letter ISO country code such as 'US'.\"),\n include_domains: z14.array(z14.string()).optional().describe(\"Only return results from these domains.\"),\n exclude_domains: z14.array(z14.string()).optional().describe(\"Exclude results from these domains.\"),\n start_published_date: z14.string().optional().describe(\"Only return links published after this ISO 8601 date.\"),\n end_published_date: z14.string().optional().describe(\"Only return links published before this ISO 8601 date.\"),\n contents: z14.object({\n text: z14.union([\n z14.boolean(),\n z14.object({\n max_characters: z14.number().optional(),\n include_html_tags: z14.boolean().optional(),\n verbosity: z14.enum([\"compact\", \"standard\", \"full\"]).optional(),\n include_sections: z14.array(\n z14.enum([\n \"header\",\n \"navigation\",\n \"banner\",\n \"body\",\n \"sidebar\",\n \"footer\",\n \"metadata\"\n ])\n ).optional(),\n exclude_sections: z14.array(\n z14.enum([\n \"header\",\n \"navigation\",\n \"banner\",\n \"body\",\n \"sidebar\",\n \"footer\",\n \"metadata\"\n ])\n ).optional()\n })\n ]).optional(),\n highlights: z14.union([\n z14.boolean(),\n z14.object({\n query: z14.string().optional(),\n max_characters: z14.number().optional()\n })\n ]).optional(),\n max_age_hours: z14.number().optional(),\n livecrawl_timeout: z14.number().optional(),\n subpages: z14.number().optional(),\n subpage_target: z14.union([z14.string(), z14.array(z14.string())]).optional(),\n extras: z14.object({\n links: z14.number().optional(),\n image_links: z14.number().optional()\n }).optional()\n }).optional().describe(\"Controls extracted page content and freshness.\")\n })\n )\n);\nvar exaSearchOutputSchema = lazySchema9(\n () => zodSchema9(\n z14.union([\n z14.object({\n requestId: z14.string(),\n searchType: z14.string().optional(),\n resolvedSearchType: z14.string().optional(),\n results: z14.array(\n z14.object({\n title: z14.string(),\n url: z14.string(),\n id: z14.string(),\n publishedDate: z14.string().nullable().optional(),\n author: z14.string().nullable().optional(),\n image: z14.string().nullable().optional(),\n favicon: z14.string().nullable().optional(),\n text: z14.string().optional(),\n highlights: z14.array(z14.string()).optional(),\n highlightScores: z14.array(z14.number()).optional(),\n summary: z14.string().optional(),\n subpages: z14.array(z14.any()).optional(),\n extras: z14.object({\n links: z14.array(z14.string()).optional(),\n imageLinks: z14.array(z14.string()).optional()\n }).optional()\n })\n ),\n costDollars: z14.object({\n total: z14.number().optional(),\n search: z14.record(z14.number()).optional()\n }).optional()\n }),\n z14.object({\n error: z14.enum([\n \"api_error\",\n \"rate_limit\",\n \"timeout\",\n \"invalid_input\",\n \"configuration_error\",\n \"execution_error\",\n \"unknown\"\n ]),\n statusCode: z14.number().optional(),\n message: z14.string()\n })\n ])\n )\n);\nvar exaSearchToolFactory = createProviderExecutedToolFactory({\n id: \"gateway.exa_search\",\n inputSchema: exaSearchInputSchema,\n outputSchema: exaSearchOutputSchema\n});\nvar exaSearch = (config = {}) => exaSearchToolFactory(config);\n\n// src/tool/parallel-search.ts\nimport {\n createProviderExecutedToolFactory as createProviderExecutedToolFactory2,\n lazySchema as lazySchema10,\n zodSchema as zodSchema10\n} from \"@ai-sdk/provider-utils\";\nimport { z as z15 } from \"zod\";\nvar parallelSearchInputSchema = lazySchema10(\n () => zodSchema10(\n z15.object({\n objective: z15.string().describe(\n \"Natural-language description of the web research goal, including source or freshness guidance and broader context from the task. Maximum 5000 characters.\"\n ),\n search_queries: z15.array(z15.string()).optional().describe(\n \"Optional search queries to supplement the objective. Maximum 200 characters per query.\"\n ),\n mode: z15.enum([\"one-shot\", \"agentic\"]).optional().describe(\n 'Mode preset: \"one-shot\" for comprehensive results with longer excerpts (default), \"agentic\" for concise, token-efficient results for multi-step workflows.'\n ),\n max_results: z15.number().optional().describe(\n \"Maximum number of results to return (1-20). Defaults to 10 if not specified.\"\n ),\n source_policy: z15.object({\n include_domains: z15.array(z15.string()).optional().describe(\n \"Limit results to these domains. Use plain domain names only \\u2014 e.g. example.com or sub.example.gov, or a bare extension like .edu. Do not include a scheme, path, or port (e.g. not https://example.com/page).\"\n ),\n exclude_domains: z15.array(z15.string()).optional().describe(\n \"Exclude results from these domains. Use plain domain names only \\u2014 e.g. example.com or sub.example.gov, or a bare extension like .edu. Do not include a scheme, path, or port (e.g. not https://example.com/page).\"\n ),\n after_date: z15.string().optional().describe(\n \"Only include results published after this date. Use an ISO 8601 calendar date formatted YYYY-MM-DD (e.g. 2025-01-01); do not include a time.\"\n )\n }).optional().describe(\n \"Source policy for controlling which domains to include/exclude and freshness.\"\n ),\n excerpts: z15.object({\n max_chars_per_result: z15.number().optional().describe(\"Maximum characters per result.\"),\n max_chars_total: z15.number().optional().describe(\"Maximum total characters across all results.\")\n }).optional().describe(\"Excerpt configuration for controlling result length.\"),\n fetch_policy: z15.object({\n max_age_seconds: z15.number().optional().describe(\n \"Maximum age in seconds for cached content. Set to 0 to always fetch fresh content.\"\n )\n }).optional().describe(\"Fetch policy for controlling content freshness.\")\n })\n )\n);\nvar parallelSearchOutputSchema = lazySchema10(\n () => zodSchema10(\n z15.union([\n // Success response\n z15.object({\n searchId: z15.string(),\n results: z15.array(\n z15.object({\n url: z15.string(),\n title: z15.string(),\n excerpt: z15.string(),\n publishDate: z15.string().nullable().optional(),\n relevanceScore: z15.number().optional()\n })\n )\n }),\n // Error response\n z15.object({\n error: z15.enum([\n \"api_error\",\n \"rate_limit\",\n \"timeout\",\n \"invalid_input\",\n \"configuration_error\",\n \"unknown\"\n ]),\n statusCode: z15.number().optional(),\n message: z15.string()\n })\n ])\n )\n);\nvar parallelSearchToolFactory = createProviderExecutedToolFactory2({\n id: \"gateway.parallel_search\",\n inputSchema: parallelSearchInputSchema,\n outputSchema: parallelSearchOutputSchema\n});\nvar parallelSearch = (config = {}) => parallelSearchToolFactory(config);\n\n// src/tool/perplexity-search.ts\nimport {\n createProviderExecutedToolFactory as createProviderExecutedToolFactory3,\n lazySchema as lazySchema11,\n zodSchema as zodSchema11\n} from \"@ai-sdk/provider-utils\";\nimport { z as z16 } from \"zod\";\nvar perplexitySearchInputSchema = lazySchema11(\n () => zodSchema11(\n z16.object({\n query: z16.union([z16.string(), z16.array(z16.string())]).describe(\n \"Search query (string) or multiple queries (array of up to 5 strings). Multi-query searches return combined results from all queries.\"\n ),\n max_results: z16.number().optional().describe(\n \"Maximum number of search results to return (1-20, default: 10)\"\n ),\n max_tokens_per_page: z16.number().optional().describe(\n \"Maximum number of tokens to extract per search result page (256-2048, default: 2048)\"\n ),\n max_tokens: z16.number().optional().describe(\n \"Maximum total tokens across all search results (default: 25000, max: 1000000)\"\n ),\n country: z16.string().optional().describe(\n \"Two-letter ISO 3166-1 alpha-2 country code for regional search results (e.g., 'US', 'GB', 'FR')\"\n ),\n search_domain_filter: z16.array(z16.string()).optional().describe(\n \"List of domains to include or exclude from search results (max 20). To include: ['nature.com', 'science.org']. To exclude: ['-example.com', '-spam.net']\"\n ),\n search_language_filter: z16.array(z16.string()).optional().describe(\n \"List of ISO 639-1 language codes to filter results (max 10, lowercase). Examples: ['en', 'fr', 'de']\"\n ),\n search_after_date: z16.string().optional().describe(\n \"Include only results published after this date. Format: 'MM/DD/YYYY' (e.g., '3/1/2025'). Cannot be used with search_recency_filter.\"\n ),\n search_before_date: z16.string().optional().describe(\n \"Include only results published before this date. Format: 'MM/DD/YYYY' (e.g., '3/15/2025'). Cannot be used with search_recency_filter.\"\n ),\n last_updated_after_filter: z16.string().optional().describe(\n \"Include only results last updated after this date. Format: 'MM/DD/YYYY' (e.g., '3/1/2025'). Cannot be used with search_recency_filter.\"\n ),\n last_updated_before_filter: z16.string().optional().describe(\n \"Include only results last updated before this date. Format: 'MM/DD/YYYY' (e.g., '3/15/2025'). Cannot be used with search_recency_filter.\"\n ),\n search_recency_filter: z16.enum([\"day\", \"week\", \"month\", \"year\"]).optional().describe(\n \"Filter results by relative time period. Cannot be used with search_after_date or search_before_date.\"\n )\n })\n )\n);\nvar perplexitySearchOutputSchema = lazySchema11(\n () => zodSchema11(\n z16.union([\n // Success response\n z16.object({\n results: z16.array(\n z16.object({\n title: z16.string(),\n url: z16.string(),\n snippet: z16.string(),\n date: z16.string().optional(),\n lastUpdated: z16.string().optional()\n })\n ),\n id: z16.string()\n }),\n // Error response\n z16.object({\n error: z16.enum([\n \"api_error\",\n \"rate_limit\",\n \"timeout\",\n \"invalid_input\",\n \"unknown\"\n ]),\n statusCode: z16.number().optional(),\n message: z16.string()\n })\n ])\n )\n);\nvar perplexitySearchToolFactory = createProviderExecutedToolFactory3({\n id: \"gateway.perplexity_search\",\n inputSchema: perplexitySearchInputSchema,\n outputSchema: perplexitySearchOutputSchema\n});\nvar perplexitySearch = (config = {}) => perplexitySearchToolFactory(config);\n\n// src/gateway-tools.ts\nvar gatewayTools = {\n /**\n * Search the web using Exa for current information and token-efficient\n * excerpts optimized for agent workflows.\n *\n * Supports search type, category, domain, date, location, and content\n * extraction controls.\n */\n exaSearch,\n /**\n * Search the web using Parallel AI's Search API for LLM-optimized excerpts.\n *\n * Takes a natural language objective and returns relevant excerpts,\n * replacing multiple keyword searches with a single call for broad\n * or complex queries. Supports different search types for depth vs\n * breadth tradeoffs.\n */\n parallelSearch,\n /**\n * Search the web using Perplexity's Search API for real-time information,\n * news, research papers, and articles.\n *\n * Provides ranked search results with advanced filtering options including\n * domain, language, date range, and recency filters.\n */\n perplexitySearch\n};\n\n// src/vercel-environment.ts\nimport { getContext } from \"@vercel/oidc\";\nimport { getVercelOidcToken } from \"@vercel/oidc\";\nasync function getVercelRequestId() {\n var _a11;\n return (_a11 = getContext().headers) == null ? void 0 : _a11[\"x-vercel-id\"];\n}\n\n// src/version.ts\nvar VERSION = true ? \"4.0.4\" : \"0.0.0-test\";\n\n// src/gateway-provider.ts\nvar AI_GATEWAY_PROTOCOL_VERSION = \"0.0.1\";\nvar gatewayClientSecretResponseSchema = z17.object({\n token: z17.string(),\n expiresAt: z17.number().nullish()\n});\nfunction createGateway(options = {}) {\n var _a11, _b11;\n let pendingMetadata = null;\n let metadataCache = null;\n const cacheRefreshMillis = (_a11 = options.metadataCacheRefreshMillis) != null ? _a11 : 1e3 * 60 * 5;\n let lastFetchTime = 0;\n const baseURL = (_b11 = withoutTrailingSlash(options.baseURL)) != null ? _b11 : \"https://ai-gateway.vercel.sh/v4/ai\";\n const createAuthHeaders = (auth) => 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.teamIdOrSlug != null ? { [VERCEL_AI_GATEWAY_TEAM_HEADER]: options.teamIdOrSlug } : {},\n ...options.headers\n },\n `ai-sdk/gateway/${VERSION}`\n );\n const getHeaders = async () => {\n try {\n return createAuthHeaders(await getGatewayAuthToken(options));\n } catch (error) {\n throw GatewayAuthenticationError.createContextualError({\n apiKeyProvided: false,\n oidcTokenProvided: false,\n statusCode: 401,\n cause: error\n });\n }\n };\n const getRealtimeAuthToken = async () => {\n try {\n return await getGatewayAuthToken(options);\n } catch (error) {\n throw GatewayAuthenticationError.createContextualError({\n apiKeyProvided: false,\n oidcTokenProvided: false,\n statusCode: 401,\n cause: error\n });\n }\n };\n const mintRealtimeClientSecret = async (params) => {\n assertGatewayRealtimeServerEnvironment();\n const auth = await getRealtimeAuthToken();\n const headers = createAuthHeaders(auth);\n const url = new URL(\"/v1/realtime/client-secrets\", baseURL).toString();\n try {\n const { value } = await postJsonToApi8({\n url,\n headers,\n body: {\n model: params.modelId,\n ...params.expiresAfterSeconds != null && {\n expiresIn: params.expiresAfterSeconds\n }\n },\n successfulResponseHandler: createJsonResponseHandler10(\n gatewayClientSecretResponseSchema\n ),\n failedResponseHandler: createJsonErrorResponseHandler11({\n errorSchema: z17.any(),\n errorToMessage: (data) => data\n }),\n fetch: options.fetch\n });\n return {\n token: value.token,\n ...value.expiresAt != null && { expiresAt: value.expiresAt }\n };\n } catch (error) {\n throw await asGatewayError(error, await parseAuthMethod(headers));\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 const projectId = loadOptionalSetting({\n settingValue: void 0,\n environmentVariableName: \"VERCEL_PROJECT_ID\"\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 ...projectId && { \"ai-o11y-project-id\": projectId }\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 _a12, _b12, _c;\n const now = (_c = (_b12 = (_a12 = options._internal) == null ? void 0 : _a12.currentDate) == null ? void 0 : _b12.call(_a12).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 getSpendReport = async (params) => {\n return new GatewaySpendReport({\n baseURL,\n headers: getHeaders,\n fetch: options.fetch\n }).getSpendReport(params).catch(async (error) => {\n throw await asGatewayError(\n error,\n await parseAuthMethod(await getHeaders())\n );\n });\n };\n const getGenerationInfo = async (params) => {\n return new GatewayGenerationInfoFetcher({\n baseURL,\n headers: getHeaders,\n fetch: options.fetch\n }).getGenerationInfo(params).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.specificationVersion = \"v4\";\n provider.getAvailableModels = getAvailableModels;\n provider.getCredits = getCredits;\n provider.getSpendReport = getSpendReport;\n provider.getGenerationInfo = getGenerationInfo;\n provider.imageModel = (modelId) => {\n return new GatewayImageModel(modelId, {\n provider: \"gateway\",\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n o11yHeaders: createO11yHeaders()\n });\n };\n provider.languageModel = createLanguageModel;\n const createEmbeddingModel = (modelId) => {\n return new GatewayEmbeddingModel(modelId, {\n provider: \"gateway\",\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n o11yHeaders: createO11yHeaders()\n });\n };\n provider.embeddingModel = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.videoModel = (modelId) => {\n return new GatewayVideoModel(modelId, {\n provider: \"gateway\",\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n o11yHeaders: createO11yHeaders()\n });\n };\n const createRerankingModel = (modelId) => {\n return new GatewayRerankingModel(modelId, {\n provider: \"gateway\",\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n o11yHeaders: createO11yHeaders()\n });\n };\n provider.rerankingModel = createRerankingModel;\n provider.reranking = createRerankingModel;\n const createSpeechModel = (modelId) => {\n return new GatewaySpeechModel(modelId, {\n provider: \"gateway\",\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n o11yHeaders: createO11yHeaders()\n });\n };\n provider.speechModel = createSpeechModel;\n provider.speech = createSpeechModel;\n const createTranscriptionModel = (modelId) => {\n return new GatewayTranscriptionModel(modelId, {\n provider: \"gateway\",\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n o11yHeaders: createO11yHeaders()\n });\n };\n provider.transcriptionModel = createTranscriptionModel;\n provider.transcription = createTranscriptionModel;\n const createRealtimeModel = (modelId) => new GatewayRealtimeModel(modelId, {\n provider: \"gateway.realtime\",\n baseURL,\n teamIdOrSlug: options.teamIdOrSlug,\n createClientSecret: mintRealtimeClientSecret\n });\n provider.experimental_realtime = Object.assign(\n (modelId) => createRealtimeModel(modelId),\n {\n getToken: async (tokenOptions) => {\n const { model: modelId, ...secretOptions } = tokenOptions;\n const model = createRealtimeModel(modelId);\n const secret = await model.doCreateClientSecret(secretOptions);\n return {\n token: secret.token,\n url: secret.url,\n ...secret.expiresAt != null && { expiresAt: secret.expiresAt }\n };\n }\n }\n );\n provider.chat = provider.languageModel;\n provider.embedding = provider.embeddingModel;\n provider.image = provider.imageModel;\n provider.video = provider.videoModel;\n provider.tools = gatewayTools;\n return provider;\n}\nvar gateway = createGateway();\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 const oidcToken = await getVercelOidcToken();\n return {\n token: oidcToken,\n authMethod: \"oidc\"\n };\n}\nfunction assertGatewayRealtimeServerEnvironment() {\n if (typeof globalThis.window !== \"undefined\") {\n throw new Error(\n \"AI Gateway realtime client secrets must be minted server-side: minting needs your Gateway credential, which must never reach the browser. Call gateway.experimental_realtime.getToken() from your server and pass the returned token to the client.\"\n );\n }\n}\nexport {\n GATEWAY_AUTH_SUBPROTOCOL_PREFIX,\n GATEWAY_REALTIME_SUBPROTOCOL,\n GATEWAY_TEAM_SUBPROTOCOL_PREFIX,\n GatewayAuthenticationError,\n GatewayError,\n GatewayFailedDependencyError,\n GatewayForbiddenError,\n GatewayInternalServerError,\n GatewayInvalidRequestError,\n GatewayModelNotFoundError,\n GatewayRateLimitError,\n GatewayResponseError,\n VERSION,\n createGateway,\n createGateway as createGatewayProvider,\n gateway,\n getGatewayRealtimeAuthToken,\n getGatewayRealtimeProtocols,\n getGatewayRealtimeTeamIdOrSlug\n};\n//# sourceMappingURL=index.js.map","var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name22 in all)\n __defProp(target, name22, { get: all[name22], enumerable: true });\n};\n\n// src/index.ts\nimport { createGateway, gateway as gateway2 } from \"@ai-sdk/gateway\";\nimport {\n asSchema as asSchema7,\n createIdGenerator as createIdGenerator9,\n dynamicTool,\n generateId,\n jsonSchema,\n parseJsonEventStream as parseJsonEventStream3,\n tool,\n zodSchema as zodSchema3\n} from \"@ai-sdk/provider-utils\";\n\n// src/agent/tool-loop-agent.ts\nimport {\n validateTypes as validateTypes3,\n withUserAgentSuffix as withUserAgentSuffix3\n} from \"@ai-sdk/provider-utils\";\n\n// src/generate-text/generate-text.ts\nimport {\n asArray as asArray5,\n createIdGenerator,\n getErrorMessage as getErrorMessage5,\n withUserAgentSuffix as withUserAgentSuffix2\n} from \"@ai-sdk/provider-utils\";\n\n// src/error/index.ts\nimport {\n AISDKError as AISDKError22,\n APICallError,\n EmptyResponseBodyError,\n InvalidPromptError,\n InvalidResponseDataError,\n JSONParseError,\n LoadAPIKeyError,\n LoadSettingError,\n NoContentGeneratedError,\n NoSuchModelError,\n NoSuchProviderReferenceError,\n TooManyEmbeddingValuesForCallError,\n TypeValidationError,\n UnsupportedFunctionalityError\n} from \"@ai-sdk/provider\";\n\n// src/error/invalid-argument-error.ts\nimport { AISDKError } from \"@ai-sdk/provider\";\nvar name = \"AI_InvalidArgumentError\";\nvar marker = `vercel.ai.error.${name}`;\nvar symbol = Symbol.for(marker);\nvar _a;\nvar InvalidArgumentError = class extends AISDKError {\n constructor({\n parameter,\n value,\n message\n }) {\n super({\n name,\n message: `Invalid argument for parameter ${parameter}: ${message}`\n });\n this[_a] = true;\n this.parameter = parameter;\n this.value = value;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker);\n }\n};\n_a = symbol;\n\n// src/error/invalid-stream-part-error.ts\nimport { AISDKError as AISDKError2 } from \"@ai-sdk/provider\";\nvar name2 = \"AI_InvalidStreamPartError\";\nvar marker2 = `vercel.ai.error.${name2}`;\nvar symbol2 = Symbol.for(marker2);\nvar _a2;\nvar InvalidStreamPartError = class extends AISDKError2 {\n constructor({\n chunk,\n message\n }) {\n super({ name: name2, message });\n this[_a2] = true;\n this.chunk = chunk;\n }\n static isInstance(error) {\n return AISDKError2.hasMarker(error, marker2);\n }\n};\n_a2 = symbol2;\n\n// src/error/invalid-tool-approval-error.ts\nimport { AISDKError as AISDKError3 } from \"@ai-sdk/provider\";\nvar name3 = \"AI_InvalidToolApprovalError\";\nvar marker3 = `vercel.ai.error.${name3}`;\nvar symbol3 = Symbol.for(marker3);\nvar _a3;\nvar InvalidToolApprovalError = class extends AISDKError3 {\n constructor({ approvalId }) {\n super({\n name: name3,\n message: `Tool approval response references unknown approvalId: \"${approvalId}\". No matching tool-approval-request found in message history.`\n });\n this[_a3] = true;\n this.approvalId = approvalId;\n }\n static isInstance(error) {\n return AISDKError3.hasMarker(error, marker3);\n }\n};\n_a3 = symbol3;\n\n// src/error/invalid-tool-approval-signature-error.ts\nimport { AISDKError as AISDKError4 } from \"@ai-sdk/provider\";\nvar name4 = \"AI_InvalidToolApprovalSignatureError\";\nvar marker4 = `vercel.ai.error.${name4}`;\nvar symbol4 = Symbol.for(marker4);\nvar _a4;\nvar InvalidToolApprovalSignatureError = class extends AISDKError4 {\n constructor({\n approvalId,\n toolCallId,\n reason\n }) {\n super({\n name: name4,\n message: `Tool approval signature verification failed for approval \"${approvalId}\" (tool call \"${toolCallId}\"): ${reason}`\n });\n this[_a4] = true;\n this.approvalId = approvalId;\n this.toolCallId = toolCallId;\n }\n static isInstance(error) {\n return AISDKError4.hasMarker(error, marker4);\n }\n};\n_a4 = symbol4;\n\n// src/error/invalid-tool-input-error.ts\nimport { AISDKError as AISDKError5, getErrorMessage } from \"@ai-sdk/provider\";\nvar name5 = \"AI_InvalidToolInputError\";\nvar marker5 = `vercel.ai.error.${name5}`;\nvar symbol5 = Symbol.for(marker5);\nvar _a5;\nvar InvalidToolInputError = class extends AISDKError5 {\n constructor({\n toolInput,\n toolName,\n cause,\n message = `Invalid input for tool ${toolName}: ${getErrorMessage(cause)}`\n }) {\n super({ name: name5, message, cause });\n this[_a5] = true;\n this.toolInput = toolInput;\n this.toolName = toolName;\n }\n static isInstance(error) {\n return AISDKError5.hasMarker(error, marker5);\n }\n};\n_a5 = symbol5;\n\n// src/error/tool-call-not-found-for-approval-error.ts\nimport { AISDKError as AISDKError6 } from \"@ai-sdk/provider\";\nvar name6 = \"AI_ToolCallNotFoundForApprovalError\";\nvar marker6 = `vercel.ai.error.${name6}`;\nvar symbol6 = Symbol.for(marker6);\nvar _a6;\nvar ToolCallNotFoundForApprovalError = class extends AISDKError6 {\n constructor({\n toolCallId,\n approvalId\n }) {\n super({\n name: name6,\n message: `Tool call \"${toolCallId}\" not found for approval request \"${approvalId}\".`\n });\n this[_a6] = true;\n this.toolCallId = toolCallId;\n this.approvalId = approvalId;\n }\n static isInstance(error) {\n return AISDKError6.hasMarker(error, marker6);\n }\n};\n_a6 = symbol6;\n\n// src/error/missing-tool-result-error.ts\nimport { AISDKError as AISDKError7 } from \"@ai-sdk/provider\";\nvar name7 = \"AI_MissingToolResultsError\";\nvar marker7 = `vercel.ai.error.${name7}`;\nvar symbol7 = Symbol.for(marker7);\nvar _a7;\nvar MissingToolResultsError = class extends AISDKError7 {\n constructor({ toolCallIds }) {\n super({\n name: name7,\n message: `Tool result${toolCallIds.length > 1 ? \"s are\" : \" is\"} missing for tool call${toolCallIds.length > 1 ? \"s\" : \"\"} ${toolCallIds.join(\n \", \"\n )}.`\n });\n this[_a7] = true;\n this.toolCallIds = toolCallIds;\n }\n static isInstance(error) {\n return AISDKError7.hasMarker(error, marker7);\n }\n};\n_a7 = symbol7;\n\n// src/error/no-image-generated-error.ts\nimport { AISDKError as AISDKError8 } from \"@ai-sdk/provider\";\nvar name8 = \"AI_NoImageGeneratedError\";\nvar marker8 = `vercel.ai.error.${name8}`;\nvar symbol8 = Symbol.for(marker8);\nvar _a8;\nvar NoImageGeneratedError = class extends AISDKError8 {\n constructor({\n message = \"No image generated.\",\n cause,\n responses\n }) {\n super({ name: name8, message, cause });\n this[_a8] = true;\n this.responses = responses;\n }\n static isInstance(error) {\n return AISDKError8.hasMarker(error, marker8);\n }\n};\n_a8 = symbol8;\n\n// src/error/no-object-generated-error.ts\nimport { AISDKError as AISDKError9 } from \"@ai-sdk/provider\";\nvar name9 = \"AI_NoObjectGeneratedError\";\nvar marker9 = `vercel.ai.error.${name9}`;\nvar symbol9 = Symbol.for(marker9);\nvar _a9;\nvar NoObjectGeneratedError = class extends AISDKError9 {\n constructor({\n message = \"No object generated.\",\n cause,\n text: text2,\n response,\n usage,\n finishReason\n }) {\n super({ name: name9, message, cause });\n this[_a9] = true;\n this.text = text2;\n this.response = response;\n this.usage = usage;\n this.finishReason = finishReason;\n }\n static isInstance(error) {\n return AISDKError9.hasMarker(error, marker9);\n }\n};\n_a9 = symbol9;\n\n// src/error/no-output-generated-error.ts\nimport { AISDKError as AISDKError10 } from \"@ai-sdk/provider\";\nvar name10 = \"AI_NoOutputGeneratedError\";\nvar marker10 = `vercel.ai.error.${name10}`;\nvar symbol10 = Symbol.for(marker10);\nvar _a10;\nvar NoOutputGeneratedError = class extends AISDKError10 {\n // used in isInstance\n constructor({\n message = \"No output generated.\",\n cause\n } = {}) {\n super({ name: name10, message, cause });\n this[_a10] = true;\n }\n static isInstance(error) {\n return AISDKError10.hasMarker(error, marker10);\n }\n};\n_a10 = symbol10;\n\n// src/error/no-speech-generated-error.ts\nimport { AISDKError as AISDKError11 } from \"@ai-sdk/provider\";\nvar name11 = \"AI_NoSpeechGeneratedError\";\nvar marker11 = `vercel.ai.error.${name11}`;\nvar symbol11 = Symbol.for(marker11);\nvar _a11;\nvar NoSpeechGeneratedError = class extends AISDKError11 {\n constructor(options) {\n super({\n name: name11,\n message: \"No speech audio generated.\"\n });\n this[_a11] = true;\n this.responses = options.responses;\n }\n static isInstance(error) {\n return AISDKError11.hasMarker(error, marker11);\n }\n};\n_a11 = symbol11;\n\n// src/error/no-transcript-generated-error.ts\nimport { AISDKError as AISDKError12 } from \"@ai-sdk/provider\";\nvar name12 = \"AI_NoTranscriptGeneratedError\";\nvar marker12 = `vercel.ai.error.${name12}`;\nvar symbol12 = Symbol.for(marker12);\nvar _a12;\nvar NoTranscriptGeneratedError = class extends AISDKError12 {\n constructor(options) {\n super({\n name: name12,\n message: \"No transcript generated.\"\n });\n this[_a12] = true;\n this.responses = options.responses;\n }\n static isInstance(error) {\n return AISDKError12.hasMarker(error, marker12);\n }\n};\n_a12 = symbol12;\n\n// src/error/no-video-generated-error.ts\nimport { AISDKError as AISDKError13 } from \"@ai-sdk/provider\";\nvar name13 = \"AI_NoVideoGeneratedError\";\nvar marker13 = `vercel.ai.error.${name13}`;\nvar symbol13 = Symbol.for(marker13);\nvar _a13;\nvar NoVideoGeneratedError = class extends AISDKError13 {\n constructor({\n message = \"No video generated.\",\n cause,\n responses\n }) {\n super({ name: name13, message, cause });\n this[_a13] = true;\n this.responses = responses;\n }\n static isInstance(error) {\n return AISDKError13.hasMarker(error, marker13);\n }\n /**\n * @deprecated use `isInstance` instead\n */\n static isNoVideoGeneratedError(error) {\n return error instanceof Error && error.name === name13 && typeof error.responses !== \"undefined\" ? true : false;\n }\n /**\n * @deprecated Do not use this method. It will be removed in the next major version.\n */\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n stack: this.stack,\n cause: this.cause,\n responses: this.responses\n };\n }\n};\n_a13 = symbol13;\n\n// src/error/no-such-tool-error.ts\nimport { AISDKError as AISDKError14 } from \"@ai-sdk/provider\";\nvar name14 = \"AI_NoSuchToolError\";\nvar marker14 = `vercel.ai.error.${name14}`;\nvar symbol14 = Symbol.for(marker14);\nvar _a14;\nvar NoSuchToolError = class extends AISDKError14 {\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: name14, message });\n this[_a14] = true;\n this.toolName = toolName;\n this.availableTools = availableTools;\n }\n static isInstance(error) {\n return AISDKError14.hasMarker(error, marker14);\n }\n};\n_a14 = symbol14;\n\n// src/error/tool-call-repair-error.ts\nimport { AISDKError as AISDKError15, getErrorMessage as getErrorMessage2 } from \"@ai-sdk/provider\";\nvar name15 = \"AI_ToolCallRepairError\";\nvar marker15 = `vercel.ai.error.${name15}`;\nvar symbol15 = Symbol.for(marker15);\nvar _a15;\nvar ToolCallRepairError = class extends AISDKError15 {\n constructor({\n cause,\n originalError,\n message = `Error repairing tool call: ${getErrorMessage2(cause)}`\n }) {\n super({ name: name15, message, cause });\n this[_a15] = true;\n this.originalError = originalError;\n }\n static isInstance(error) {\n return AISDKError15.hasMarker(error, marker15);\n }\n};\n_a15 = symbol15;\n\n// src/error/unsupported-model-version-error.ts\nimport { AISDKError as AISDKError16 } from \"@ai-sdk/provider\";\nvar UnsupportedModelVersionError = class extends AISDKError16 {\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/error/ui-message-stream-error.ts\nimport { AISDKError as AISDKError17 } from \"@ai-sdk/provider\";\nvar name16 = \"AI_UIMessageStreamError\";\nvar marker16 = `vercel.ai.error.${name16}`;\nvar symbol16 = Symbol.for(marker16);\nvar _a16;\nvar UIMessageStreamError = class extends AISDKError17 {\n constructor({\n chunkType,\n chunkId,\n message\n }) {\n super({ name: name16, message });\n this[_a16] = true;\n this.chunkType = chunkType;\n this.chunkId = chunkId;\n }\n static isInstance(error) {\n return AISDKError17.hasMarker(error, marker16);\n }\n};\n_a16 = symbol16;\n\n// src/prompt/invalid-data-content-error.ts\nimport { AISDKError as AISDKError18 } from \"@ai-sdk/provider\";\nvar name17 = \"AI_InvalidDataContentError\";\nvar marker17 = `vercel.ai.error.${name17}`;\nvar symbol17 = Symbol.for(marker17);\nvar _a17;\nvar InvalidDataContentError = class extends AISDKError18 {\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: name17, message, cause });\n this[_a17] = true;\n this.content = content;\n }\n static isInstance(error) {\n return AISDKError18.hasMarker(error, marker17);\n }\n};\n_a17 = symbol17;\n\n// src/prompt/invalid-message-role-error.ts\nimport { AISDKError as AISDKError19 } from \"@ai-sdk/provider\";\nvar name18 = \"AI_InvalidMessageRoleError\";\nvar marker18 = `vercel.ai.error.${name18}`;\nvar symbol18 = Symbol.for(marker18);\nvar _a18;\nvar InvalidMessageRoleError = class extends AISDKError19 {\n constructor({\n role,\n message = `Invalid message role: '${role}'. Must be one of: \"system\", \"user\", \"assistant\", \"tool\".`\n }) {\n super({ name: name18, message });\n this[_a18] = true;\n this.role = role;\n }\n static isInstance(error) {\n return AISDKError19.hasMarker(error, marker18);\n }\n};\n_a18 = symbol18;\n\n// src/prompt/message-conversion-error.ts\nimport { AISDKError as AISDKError20 } from \"@ai-sdk/provider\";\nvar name19 = \"AI_MessageConversionError\";\nvar marker19 = `vercel.ai.error.${name19}`;\nvar symbol19 = Symbol.for(marker19);\nvar _a19;\nvar MessageConversionError = class extends AISDKError20 {\n constructor({\n originalMessage,\n message\n }) {\n super({ name: name19, message });\n this[_a19] = true;\n this.originalMessage = originalMessage;\n }\n static isInstance(error) {\n return AISDKError20.hasMarker(error, marker19);\n }\n};\n_a19 = symbol19;\n\n// src/error/index.ts\nimport { DownloadError } from \"@ai-sdk/provider-utils\";\n\n// src/util/retry-error.ts\nimport { AISDKError as AISDKError21 } from \"@ai-sdk/provider\";\nvar name20 = \"AI_RetryError\";\nvar marker20 = `vercel.ai.error.${name20}`;\nvar symbol20 = Symbol.for(marker20);\nvar _a20;\nvar RetryError = class extends AISDKError21 {\n constructor({\n message,\n reason,\n errors\n }) {\n super({ name: name20, message });\n this[_a20] = true;\n this.reason = reason;\n this.errors = errors;\n this.lastError = errors[errors.length - 1];\n }\n static isInstance(error) {\n return AISDKError21.hasMarker(error, marker20);\n }\n};\n_a20 = symbol20;\n\n// src/logger/log-warnings.ts\nfunction formatWarning({\n warning,\n provider,\n model\n}) {\n const scope = provider != null && model != null ? ` (${provider} / ${model})` : \"\";\n const prefix = `AI SDK Warning${scope}:`;\n switch (warning.type) {\n case \"unsupported\": {\n let message = `${prefix} The feature \"${warning.feature}\" is not supported.`;\n if (warning.details) {\n message += ` ${warning.details}`;\n }\n return message;\n }\n case \"compatibility\": {\n let message = `${prefix} The feature \"${warning.feature}\" is used in a compatibility mode.`;\n if (warning.details) {\n message += ` ${warning.details}`;\n }\n return message;\n }\n case \"deprecated\": {\n return `${prefix} Deprecated: \"${warning.setting}\". ${warning.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 = (options) => {\n if (options.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(options);\n return;\n }\n if (!hasLoggedBefore) {\n hasLoggedBefore = true;\n console.info(FIRST_WARNING_INFO_MESSAGE);\n }\n for (const warning of options.warnings) {\n const message = formatWarning({\n warning,\n provider: options.provider,\n model: options.model\n });\n if (typeof process !== \"undefined\" && typeof process.emitWarning === \"function\") {\n process.emitWarning(message, {\n type: warning.type === \"deprecated\" ? \"DeprecationWarning\" : \"Warning\"\n });\n } else {\n console.warn(message);\n }\n }\n};\n\n// src/model/resolve-model.ts\nimport { gateway } from \"@ai-sdk/gateway\";\n\n// src/util/log-v2-compatibility-warning.ts\nfunction logV2CompatibilityWarning({\n provider,\n modelId\n}) {\n logWarnings({\n warnings: [\n {\n type: \"compatibility\",\n feature: \"specificationVersion\",\n details: `Using v2 specification compatibility mode. Some features may not be available.`\n }\n ],\n provider,\n model: modelId\n });\n}\n\n// src/model/as-embedding-model-v3.ts\nfunction asEmbeddingModelV3(model) {\n if (model.specificationVersion === \"v3\") {\n return model;\n }\n logV2CompatibilityWarning({\n provider: model.provider,\n modelId: model.modelId\n });\n return new Proxy(model, {\n get(target, prop) {\n if (prop === \"specificationVersion\")\n return \"v3\";\n return target[prop];\n }\n });\n}\n\n// src/model/as-embedding-model-v4.ts\nfunction asEmbeddingModelV4(model) {\n if (model.specificationVersion === \"v4\") {\n return model;\n }\n const v3Model = model.specificationVersion === \"v2\" ? asEmbeddingModelV3(model) : model;\n return new Proxy(v3Model, {\n get(target, prop) {\n if (prop === \"specificationVersion\")\n return \"v4\";\n return target[prop];\n }\n });\n}\n\n// src/model/as-image-model-v3.ts\nfunction asImageModelV3(model) {\n if (model.specificationVersion === \"v3\") {\n return model;\n }\n logV2CompatibilityWarning({\n provider: model.provider,\n modelId: model.modelId\n });\n return new Proxy(model, {\n get(target, prop) {\n if (prop === \"specificationVersion\")\n return \"v3\";\n return target[prop];\n }\n });\n}\n\n// src/model/as-image-model-v4.ts\nfunction asImageModelV4(model) {\n if (model.specificationVersion === \"v4\") {\n return model;\n }\n const v3Model = model.specificationVersion === \"v2\" ? asImageModelV3(model) : model;\n return new Proxy(v3Model, {\n get(target, prop) {\n if (prop === \"specificationVersion\")\n return \"v4\";\n return target[prop];\n }\n });\n}\n\n// src/model/as-language-model-v3.ts\nfunction asLanguageModelV3(model) {\n if (model.specificationVersion === \"v3\") {\n return model;\n }\n logV2CompatibilityWarning({\n provider: model.provider,\n modelId: model.modelId\n });\n return new Proxy(model, {\n get(target, prop) {\n switch (prop) {\n case \"specificationVersion\":\n return \"v3\";\n case \"doGenerate\":\n return async (...args) => {\n const result = await target.doGenerate(...args);\n return {\n ...result,\n finishReason: convertV2FinishReasonToV3(result.finishReason),\n usage: convertV2UsageToV3(result.usage)\n };\n };\n case \"doStream\":\n return async (...args) => {\n const result = await target.doStream(...args);\n return {\n ...result,\n stream: convertV2StreamToV3(result.stream)\n };\n };\n default:\n return target[prop];\n }\n }\n });\n}\nfunction convertV2StreamToV3(stream) {\n return stream.pipeThrough(\n new TransformStream({\n transform(chunk, controller) {\n switch (chunk.type) {\n case \"finish\":\n controller.enqueue({\n ...chunk,\n finishReason: convertV2FinishReasonToV3(chunk.finishReason),\n usage: convertV2UsageToV3(chunk.usage)\n });\n break;\n default:\n controller.enqueue(chunk);\n break;\n }\n }\n })\n );\n}\nfunction convertV2FinishReasonToV3(finishReason) {\n return {\n unified: finishReason === \"unknown\" ? \"other\" : finishReason,\n raw: void 0\n };\n}\nfunction convertV2UsageToV3(usage) {\n return {\n inputTokens: {\n total: usage.inputTokens,\n noCache: void 0,\n cacheRead: usage.cachedInputTokens,\n cacheWrite: void 0\n },\n outputTokens: {\n total: usage.outputTokens,\n text: void 0,\n reasoning: usage.reasoningTokens\n }\n };\n}\n\n// src/model/as-language-model-v4.ts\nfunction asLanguageModelV4(model) {\n if (model.specificationVersion === \"v4\") {\n return model;\n }\n const v3Model = model.specificationVersion === \"v2\" ? asLanguageModelV3(model) : model;\n return new Proxy(v3Model, {\n get(target, prop) {\n if (prop === \"specificationVersion\")\n return \"v4\";\n return target[prop];\n }\n });\n}\n\n// src/model/as-reranking-model-v4.ts\nfunction asRerankingModelV4(model) {\n if (model.specificationVersion === \"v4\") {\n return model;\n }\n return new Proxy(model, {\n get(target, prop) {\n if (prop === \"specificationVersion\")\n return \"v4\";\n return target[prop];\n }\n });\n}\n\n// src/model/as-speech-model-v3.ts\nfunction asSpeechModelV3(model) {\n if (model.specificationVersion === \"v3\") {\n return model;\n }\n logV2CompatibilityWarning({\n provider: model.provider,\n modelId: model.modelId\n });\n return new Proxy(model, {\n get(target, prop) {\n if (prop === \"specificationVersion\")\n return \"v3\";\n return target[prop];\n }\n });\n}\n\n// src/model/as-speech-model-v4.ts\nfunction asSpeechModelV4(model) {\n if (model.specificationVersion === \"v4\") {\n return model;\n }\n const v3Model = model.specificationVersion === \"v2\" ? asSpeechModelV3(model) : model;\n return new Proxy(v3Model, {\n get(target, prop) {\n if (prop === \"specificationVersion\")\n return \"v4\";\n return target[prop];\n }\n });\n}\n\n// src/model/as-transcription-model-v3.ts\nfunction asTranscriptionModelV3(model) {\n if (model.specificationVersion === \"v3\") {\n return model;\n }\n logV2CompatibilityWarning({\n provider: model.provider,\n modelId: model.modelId\n });\n return new Proxy(model, {\n get(target, prop) {\n if (prop === \"specificationVersion\")\n return \"v3\";\n return target[prop];\n }\n });\n}\n\n// src/model/as-transcription-model-v4.ts\nfunction asTranscriptionModelV4(model) {\n if (model.specificationVersion === \"v4\") {\n return model;\n }\n const v3Model = model.specificationVersion === \"v2\" ? asTranscriptionModelV3(model) : model;\n return new Proxy(v3Model, {\n get(target, prop) {\n if (prop === \"specificationVersion\")\n return \"v4\";\n return target[prop];\n }\n });\n}\n\n// src/model/as-video-model-v4.ts\nfunction asVideoModelV4(model) {\n if (model.specificationVersion === \"v4\") {\n return model;\n }\n return new Proxy(model, {\n get(target, prop) {\n if (prop === \"specificationVersion\")\n return \"v4\";\n return target[prop];\n }\n });\n}\n\n// src/model/as-provider-v3.ts\nfunction asProviderV3(provider) {\n if (\"specificationVersion\" in provider && provider.specificationVersion === \"v3\") {\n return provider;\n }\n const v2Provider = provider;\n return {\n specificationVersion: \"v3\",\n languageModel: (modelId) => asLanguageModelV3(v2Provider.languageModel(modelId)),\n embeddingModel: (modelId) => asEmbeddingModelV3(v2Provider.textEmbeddingModel(modelId)),\n imageModel: (modelId) => asImageModelV3(v2Provider.imageModel(modelId)),\n transcriptionModel: v2Provider.transcriptionModel ? (modelId) => asTranscriptionModelV3(v2Provider.transcriptionModel(modelId)) : void 0,\n speechModel: v2Provider.speechModel ? (modelId) => asSpeechModelV3(v2Provider.speechModel(modelId)) : void 0,\n rerankingModel: void 0\n // v2 providers don't have reranking models\n };\n}\n\n// src/model/as-provider-v4.ts\nfunction asProviderV4(provider) {\n if (\"specificationVersion\" in provider && provider.specificationVersion === \"v4\") {\n return provider;\n }\n const v3Provider = !(\"specificationVersion\" in provider) || provider.specificationVersion !== \"v3\" ? asProviderV3(provider) : provider;\n return {\n specificationVersion: \"v4\",\n languageModel: (modelId) => asLanguageModelV4(v3Provider.languageModel(modelId)),\n embeddingModel: (modelId) => asEmbeddingModelV4(v3Provider.embeddingModel(modelId)),\n imageModel: (modelId) => asImageModelV4(v3Provider.imageModel(modelId)),\n transcriptionModel: v3Provider.transcriptionModel ? (modelId) => asTranscriptionModelV4(v3Provider.transcriptionModel(modelId)) : void 0,\n speechModel: v3Provider.speechModel ? (modelId) => asSpeechModelV4(v3Provider.speechModel(modelId)) : void 0,\n rerankingModel: v3Provider.rerankingModel ? (modelId) => asRerankingModelV4(v3Provider.rerankingModel(modelId)) : void 0\n };\n}\n\n// src/model/resolve-model.ts\nfunction resolveLanguageModel(model) {\n if (typeof model === \"string\") {\n return getGlobalProvider().languageModel(model);\n }\n if (![\"v4\", \"v3\", \"v2\"].includes(model.specificationVersion)) {\n const unsupportedModel = model;\n throw new UnsupportedModelVersionError({\n version: unsupportedModel.specificationVersion,\n provider: unsupportedModel.provider,\n modelId: unsupportedModel.modelId\n });\n }\n return asLanguageModelV4(model);\n}\nfunction resolveEmbeddingModel(model) {\n if (typeof model === \"string\") {\n return getGlobalProvider().embeddingModel(model);\n }\n if (![\"v4\", \"v3\", \"v2\"].includes(model.specificationVersion)) {\n const unsupportedModel = model;\n throw new UnsupportedModelVersionError({\n version: unsupportedModel.specificationVersion,\n provider: unsupportedModel.provider,\n modelId: unsupportedModel.modelId\n });\n }\n return asEmbeddingModelV4(model);\n}\nfunction resolveTranscriptionModel(model) {\n var _a22, _b;\n if (typeof model === \"string\") {\n return (_b = (_a22 = getGlobalProvider()).transcriptionModel) == null ? void 0 : _b.call(_a22, model);\n }\n if (![\"v4\", \"v3\", \"v2\"].includes(model.specificationVersion)) {\n const unsupportedModel = model;\n throw new UnsupportedModelVersionError({\n version: unsupportedModel.specificationVersion,\n provider: unsupportedModel.provider,\n modelId: unsupportedModel.modelId\n });\n }\n return asTranscriptionModelV4(model);\n}\nfunction resolveSpeechModel(model) {\n var _a22, _b;\n if (typeof model === \"string\") {\n return (_b = (_a22 = getGlobalProvider()).speechModel) == null ? void 0 : _b.call(_a22, model);\n }\n if (![\"v4\", \"v3\", \"v2\"].includes(model.specificationVersion)) {\n const unsupportedModel = model;\n throw new UnsupportedModelVersionError({\n version: unsupportedModel.specificationVersion,\n provider: unsupportedModel.provider,\n modelId: unsupportedModel.modelId\n });\n }\n return asSpeechModelV4(model);\n}\nfunction resolveImageModel(model) {\n if (typeof model === \"string\") {\n return getGlobalProvider().imageModel(model);\n }\n if (![\"v4\", \"v3\", \"v2\"].includes(model.specificationVersion)) {\n const unsupportedModel = model;\n throw new UnsupportedModelVersionError({\n version: unsupportedModel.specificationVersion,\n provider: unsupportedModel.provider,\n modelId: unsupportedModel.modelId\n });\n }\n return asImageModelV4(model);\n}\nfunction resolveVideoModel(model) {\n var _a22;\n if (typeof model === \"string\") {\n const provider = (_a22 = globalThis.AI_SDK_DEFAULT_PROVIDER) != null ? _a22 : gateway;\n const videoModel = provider.videoModel;\n if (!videoModel) {\n throw new Error(\n 'The default provider does not support video models. Please use a Experimental_VideoModelV4 object from a provider (e.g., vertex.video(\"model-id\")).'\n );\n }\n return videoModel(model);\n }\n if (![\"v4\", \"v3\"].includes(model.specificationVersion)) {\n const unsupportedModel = model;\n throw new UnsupportedModelVersionError({\n version: unsupportedModel.specificationVersion,\n provider: unsupportedModel.provider,\n modelId: unsupportedModel.modelId\n });\n }\n return asVideoModelV4(model);\n}\nfunction resolveRerankingModel(model) {\n if (typeof model === \"string\") {\n const provider = getGlobalProvider();\n const rerankingModel = provider.rerankingModel;\n if (!rerankingModel) {\n throw new Error(\n 'The default provider does not support reranking models. Please use a RerankingModel object from a provider (e.g., gateway.rerankingModel(\"model-id\")).'\n );\n }\n return rerankingModel(model);\n }\n if (model.specificationVersion !== \"v4\" && model.specificationVersion !== \"v3\") {\n const unsupportedModel = model;\n throw new UnsupportedModelVersionError({\n version: unsupportedModel.specificationVersion,\n provider: unsupportedModel.provider,\n modelId: unsupportedModel.modelId\n });\n }\n return asRerankingModelV4(model);\n}\nfunction getGlobalProvider() {\n var _a22;\n const provider = (_a22 = globalThis.AI_SDK_DEFAULT_PROVIDER) != null ? _a22 : gateway;\n return asProviderV4(provider);\n}\n\n// src/prompt/clone-model-message.ts\nfunction cloneModelMessages(messages) {\n return messages.map((message) => cloneValue(message));\n}\nfunction cloneValue(value) {\n if (value instanceof URL) {\n return new URL(value.href);\n }\n if (Array.isArray(value)) {\n return value.map((item) => cloneValue(item));\n }\n if (value instanceof Uint8Array) {\n return new Uint8Array(value);\n }\n if (value instanceof ArrayBuffer) {\n return value.slice(0);\n }\n if (value instanceof Date) {\n return new Date(value);\n }\n if (value != null && typeof value === \"object\") {\n return Object.fromEntries(\n Object.entries(value).map(([key, value2]) => [key, cloneValue(value2)])\n );\n }\n return value;\n}\n\n// src/prompt/convert-to-language-model-prompt.ts\nimport {\n asArray,\n detectMediaType,\n isFullMediaType,\n isUrlSupported\n} from \"@ai-sdk/provider-utils\";\n\n// src/util/download/download.ts\nimport {\n cancelResponseBody,\n DownloadError as DownloadError2,\n readResponseWithSizeLimit,\n DEFAULT_MAX_DOWNLOAD_SIZE,\n fetchWithValidatedRedirects,\n withUserAgentSuffix,\n getRuntimeEnvironmentUserAgent\n} from \"@ai-sdk/provider-utils\";\n\n// src/version.ts\nvar VERSION = true ? \"7.0.4\" : \"0.0.0-test\";\n\n// src/util/download/download.ts\nvar download = async ({\n url,\n maxBytes,\n abortSignal\n}) => {\n var _a22;\n const urlText = url.toString();\n try {\n const headers = withUserAgentSuffix(\n {},\n `ai-sdk/${VERSION}`,\n getRuntimeEnvironmentUserAgent()\n );\n const response = await fetchWithValidatedRedirects({\n url: urlText,\n headers,\n abortSignal\n });\n if (!response.ok) {\n await cancelResponseBody(response);\n throw new DownloadError2({\n url: urlText,\n statusCode: response.status,\n statusText: response.statusText\n });\n }\n const data = await readResponseWithSizeLimit({\n response,\n url: urlText,\n maxBytes: maxBytes != null ? maxBytes : DEFAULT_MAX_DOWNLOAD_SIZE\n });\n return {\n data,\n mediaType: (_a22 = response.headers.get(\"content-type\")) != null ? _a22 : void 0\n };\n } catch (error) {\n if (DownloadError2.isInstance(error)) {\n throw error;\n }\n throw new DownloadError2({ 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 : await download2(requestedDownload)\n )\n);\n\n// src/prompt/file-part-data.ts\nimport {\n isBuffer,\n isProviderReference\n} from \"@ai-sdk/provider-utils\";\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 (e) {\n return {\n mediaType: void 0,\n base64Content: void 0\n };\n }\n}\n\n// src/prompt/file-part-data.ts\nfunction isTaggedFileData(value) {\n if (typeof value !== \"object\" || value === null)\n return false;\n const type = value.type;\n return type === \"data\" || type === \"url\" || type === \"reference\" || type === \"text\";\n}\nfunction convertUrlToFilePartData(url) {\n if (url.protocol === \"data:\") {\n const { mediaType, base64Content } = splitDataUrl(url.toString());\n if (mediaType == null || base64Content == null) {\n throw new InvalidDataContentError({\n content: url,\n message: `Invalid data URL format in content ${url.toString()}`\n });\n }\n return { data: { type: \"data\", data: base64Content }, mediaType };\n }\n return { data: { type: \"url\", url }, mediaType: void 0 };\n}\nfunction convertInlineDataToFilePartData(content) {\n if (content instanceof Uint8Array) {\n return { data: { type: \"data\", data: content }, mediaType: void 0 };\n }\n if (content instanceof ArrayBuffer) {\n return {\n data: { type: \"data\", data: new Uint8Array(content) },\n mediaType: void 0\n };\n }\n if (isBuffer(content)) {\n return {\n data: { type: \"data\", data: new Uint8Array(content) },\n mediaType: void 0\n };\n }\n return {\n data: { type: \"data\", data: content },\n mediaType: void 0\n };\n}\nfunction convertToLanguageModelV4FilePart(content) {\n if (isTaggedFileData(content)) {\n switch (content.type) {\n case \"data\":\n if (typeof content.data === \"string\" && content.data.startsWith(\"data:\")) {\n throw new InvalidDataContentError({\n content: content.data,\n message: 'Data URLs are not valid inline data. Pass them as { type: \"url\", url } instead.'\n });\n }\n return convertInlineDataToFilePartData(content.data);\n case \"url\":\n return convertUrlToFilePartData(content.url);\n case \"reference\":\n return {\n data: { type: \"reference\", reference: content.reference },\n mediaType: void 0\n };\n case \"text\":\n return {\n data: { type: \"text\", text: content.text },\n mediaType: void 0\n };\n }\n }\n if (content instanceof URL) {\n return convertUrlToFilePartData(content);\n }\n if (typeof content === \"string\") {\n try {\n return convertUrlToFilePartData(new URL(content));\n } catch (e) {\n return convertInlineDataToFilePartData(content);\n }\n }\n if (isProviderReference(content)) {\n return {\n data: { type: \"reference\", reference: content },\n mediaType: void 0\n };\n }\n return convertInlineDataToFilePartData(content);\n}\n\n// src/prompt/convert-to-language-model-prompt.ts\nasync function convertToLanguageModelPrompt({\n prompt,\n supportedUrls,\n download: download2 = createDefaultDownloadFunction(),\n // `provider` is only needed here to convert legacy tool output types via `mapToolResultOutput`.\n // TODO: remove in v8 when \"file-id\" and \"image-file-id\" types are removed\n provider\n}) {\n const downloadedAssets = await downloadAssets(\n prompt.messages,\n download2,\n supportedUrls\n );\n const approvalIdToToolCallId = /* @__PURE__ */ new Map();\n for (const message of prompt.messages) {\n if (message.role === \"assistant\" && Array.isArray(message.content)) {\n for (const part of message.content) {\n if (part.type === \"tool-approval-request\" && \"approvalId\" in part && \"toolCallId\" in part) {\n approvalIdToToolCallId.set(\n part.approvalId,\n part.toolCallId\n );\n }\n }\n }\n }\n const approvedToolCallIds = /* @__PURE__ */ new Set();\n for (const message of prompt.messages) {\n if (message.role === \"tool\") {\n for (const part of message.content) {\n if (part.type === \"tool-approval-response\") {\n const toolCallId = approvalIdToToolCallId.get(part.approvalId);\n if (toolCallId) {\n approvedToolCallIds.add(toolCallId);\n }\n }\n }\n }\n }\n const messages = [\n ...prompt.instructions != null ? typeof prompt.instructions === \"string\" ? [{ role: \"system\", content: prompt.instructions }] : asArray(prompt.instructions).map((message) => ({\n role: \"system\",\n content: message.content,\n providerOptions: message.providerOptions\n })) : [],\n ...prompt.messages.map(\n (message) => convertToLanguageModelMessage({ message, downloadedAssets, provider })\n )\n ];\n const combinedMessages = [];\n for (const message of messages) {\n if (message.role !== \"tool\") {\n combinedMessages.push(message);\n continue;\n }\n const lastCombinedMessage = combinedMessages.at(-1);\n if ((lastCombinedMessage == null ? void 0 : lastCombinedMessage.role) === \"tool\") {\n lastCombinedMessage.content.push(...message.content);\n } else {\n combinedMessages.push(message);\n }\n }\n const toolCallIds = /* @__PURE__ */ new Set();\n for (const message of combinedMessages) {\n switch (message.role) {\n case \"assistant\": {\n for (const content of message.content) {\n if (content.type === \"tool-call\" && !content.providerExecuted) {\n toolCallIds.add(content.toolCallId);\n }\n }\n break;\n }\n case \"tool\": {\n for (const content of message.content) {\n if (content.type === \"tool-result\") {\n toolCallIds.delete(content.toolCallId);\n }\n }\n break;\n }\n case \"user\":\n case \"system\":\n for (const id of approvedToolCallIds) {\n toolCallIds.delete(id);\n }\n if (toolCallIds.size > 0) {\n throw new MissingToolResultsError({\n toolCallIds: Array.from(toolCallIds)\n });\n }\n break;\n }\n }\n for (const id of approvedToolCallIds) {\n toolCallIds.delete(id);\n }\n if (toolCallIds.size > 0) {\n throw new MissingToolResultsError({ toolCallIds: Array.from(toolCallIds) });\n }\n return combinedMessages.filter(\n // Filter out empty tool messages (e.g. if they only contained\n // tool-approval-response parts that were removed).\n // This prevents sending invalid empty messages to the provider.\n // Note: provider-executed tool-approval-response parts are preserved.\n (message) => message.role !== \"tool\" || message.content.length > 0\n );\n}\nfunction convertToLanguageModelMessage({\n message,\n downloadedAssets,\n // `provider` is only needed here to convert legacy tool output types via `mapToolResultOutput`.\n // TODO: remove in v8 when \"file-id\" and \"image-file-id\" types are removed\n provider\n}) {\n const warnings = [];\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 const converted = {\n role: \"user\",\n content: message.content.map((part) => {\n if (part.type === \"image\") {\n warnings.push({\n type: \"deprecated\",\n setting: '\"image\" content part',\n message: `The \"image\" content part type is deprecated. Use a \"file\" part with mediaType: 'image' (or a more specific image/* subtype) instead.`\n });\n }\n return convertImagePartToFilePart(part);\n }).map((part) => convertPartToLanguageModelPart(part, downloadedAssets)).filter((part) => part.type !== \"text\" || part.text !== \"\"),\n providerOptions: message.providerOptions\n };\n if (warnings.length > 0) {\n logWarnings({ warnings });\n }\n return converted;\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 const converted = {\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 ).filter(\n (part) => part.type !== \"tool-approval-request\"\n ).map((part) => {\n const providerOptions = part.providerOptions;\n switch (part.type) {\n case \"custom\": {\n return {\n type: \"custom\",\n kind: part.kind,\n providerOptions\n };\n }\n case \"file\": {\n const { data, mediaType } = convertToLanguageModelV4FilePart(\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 \"reasoning-file\": {\n const { data, mediaType } = convertToLanguageModelV4FilePart(\n part.data\n );\n if (data.type !== \"data\" && data.type !== \"url\") {\n throw new Error(\n `Unsupported reasoning-file data type: ${data.type}`\n );\n }\n return {\n type: \"reasoning-file\",\n data,\n mediaType: mediaType != null ? mediaType : part.mediaType,\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: mapToolResultOutput({\n output: part.output,\n provider,\n warnings,\n downloadedAssets\n }),\n providerOptions\n };\n }\n }\n }),\n providerOptions: message.providerOptions\n };\n if (warnings.length > 0) {\n logWarnings({ warnings });\n }\n return converted;\n }\n case \"tool\": {\n const converted = {\n role: \"tool\",\n content: message.content.filter(\n // Only include tool-approval-response for provider-executed tools\n (part) => part.type !== \"tool-approval-response\" || part.providerExecuted\n ).map((part) => {\n switch (part.type) {\n case \"tool-result\": {\n return {\n type: \"tool-result\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n output: mapToolResultOutput({\n output: part.output,\n provider,\n warnings,\n downloadedAssets\n }),\n providerOptions: part.providerOptions\n };\n }\n case \"tool-approval-response\": {\n return {\n type: \"tool-approval-response\",\n approvalId: part.approvalId,\n approved: part.approved,\n reason: part.reason\n };\n }\n }\n }),\n providerOptions: message.providerOptions\n };\n if (warnings.length > 0) {\n logWarnings({ warnings });\n }\n return converted;\n }\n default: {\n const _exhaustiveCheck = role;\n throw new InvalidMessageRoleError({ role: _exhaustiveCheck });\n }\n }\n}\nfunction convertImagePartToFilePart(part) {\n var _a22;\n if (part.type !== \"image\") {\n return part;\n }\n return {\n type: \"file\",\n data: part.image,\n mediaType: (_a22 = part.mediaType) != null ? _a22 : \"image\",\n providerOptions: part.providerOptions\n };\n}\nasync function downloadAssets(messages, download2, supportedUrls) {\n const downloadableFiles = [];\n for (const message of messages) {\n if (message.role === \"user\" && Array.isArray(message.content)) {\n for (const part of message.content) {\n const filePart = convertImagePartToFilePart(part);\n if (filePart.type === \"file\") {\n downloadableFiles.push(filePart);\n }\n }\n }\n if (message.role === \"tool\") {\n for (const part of message.content) {\n if (part.type !== \"tool-result\") {\n continue;\n }\n if (part.output.type !== \"content\") {\n continue;\n }\n for (const contentPart of part.output.value) {\n if (contentPart.type === \"file\") {\n downloadableFiles.push(contentPart);\n }\n }\n }\n }\n if (message.role === \"assistant\" && Array.isArray(message.content)) {\n for (const part of message.content) {\n if (part.type !== \"tool-result\") {\n continue;\n }\n if (part.output.type !== \"content\") {\n continue;\n }\n for (const contentPart of part.output.value) {\n if (contentPart.type === \"file\") {\n downloadableFiles.push(contentPart);\n }\n }\n }\n }\n }\n const plannedDownloads = downloadableFiles.map((part) => {\n const mediaType = part.mediaType;\n const { data } = convertToLanguageModelV4FilePart(part.data);\n return { mediaType, data };\n }).filter((part) => part.data.type === \"url\").map((part) => ({\n url: part.data.url,\n isUrlSupportedByModel: part.mediaType != null && isUrlSupported({\n url: part.data.url.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 if (part.type === \"text\") {\n return {\n type: \"text\",\n text: part.text,\n providerOptions: part.providerOptions\n };\n }\n const { data: normalizedData, mediaType: dataUrlMediaType } = convertToLanguageModelV4FilePart(part.data);\n let mediaType = dataUrlMediaType != null ? dataUrlMediaType : part.mediaType;\n let data = normalizedData;\n if (data.type === \"url\") {\n const downloadedFile = downloadedAssets[data.url.toString()];\n if (downloadedFile) {\n data = { type: \"data\", data: downloadedFile.data };\n if (downloadedFile.mediaType != null && (mediaType == null || !isFullMediaType(mediaType))) {\n mediaType = downloadedFile.mediaType;\n }\n }\n }\n if (data.type === \"data\" && (data.data instanceof Uint8Array || typeof data.data === \"string\")) {\n const imageMediaType = detectMediaType({\n data: data.data,\n topLevelType: \"image\"\n });\n if (imageMediaType != null) {\n mediaType = imageMediaType;\n }\n }\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}\nfunction mapToolResultOutput({\n output,\n // `provider` is only needed here to convert legacy \"file-id\" and \"image-file-id\" types to provider references, in case they are using string ID values.\n // TODO: remove in v8 when \"file-id\" and \"image-file-id\" types are removed\n provider,\n warnings = [],\n downloadedAssets\n}) {\n if (output.type !== \"content\") {\n return output;\n }\n return {\n type: \"content\",\n value: output.value.map((item) => {\n var _a22;\n switch (item.type) {\n case \"file\": {\n const convertedPart = convertPartToLanguageModelPart(\n item,\n downloadedAssets\n );\n if (convertedPart.type !== \"file\") {\n throw new Error(\n \"Expected tool result file content to convert to file.\"\n );\n }\n return convertedPart;\n }\n case \"file-data\": {\n warnings.push({\n type: \"deprecated\",\n setting: '\"tool-result\" content of type \"file-data\"',\n message: `The \"file-data\" type for tool result content is deprecated. Use the \"file\" type with mediaType and { type: 'data', data } instead.`\n });\n return {\n type: \"file\",\n data: { type: \"data\", data: item.data },\n filename: item.filename,\n mediaType: item.mediaType,\n providerOptions: item.providerOptions\n };\n }\n case \"file-url\": {\n const mediaType = (_a22 = item.mediaType) != null ? _a22 : getMediaTypeFromUrl(item.url);\n let message = `The \"file-url\" type for tool result content is deprecated. Use the \"file\" type with mediaType and { type: 'url', url } instead.`;\n if (!item.mediaType) {\n const inferenceSuffix = mediaType === \"application/octet-stream\" ? `Unable to infer media type from URL. Defaulting to 'application/octet-stream'.` : `Inferred media type '${mediaType}' from URL.`;\n message = `The \"file-url\" tool result content part with URL \"${item.url}\" is missing a \"mediaType\". ${inferenceSuffix} ${message}`;\n }\n warnings.push({\n type: \"deprecated\",\n setting: '\"tool-result\" content of type \"file-url\"',\n message\n });\n return {\n type: \"file\",\n data: { type: \"url\", url: new URL(item.url) },\n mediaType,\n providerOptions: item.providerOptions\n };\n }\n case \"file-id\": {\n warnings.push({\n type: \"deprecated\",\n setting: '\"tool-result\" content of type \"file-id\"',\n message: `The \"file-id\" type for tool result content is deprecated. Use the \"file\" type with mediaType and { type: 'reference', reference } instead.`\n });\n return {\n type: \"file\",\n data: {\n type: \"reference\",\n reference: convertFileIdToProviderReference({\n fileId: item.fileId,\n provider\n })\n },\n mediaType: \"application\",\n providerOptions: item.providerOptions\n };\n }\n case \"file-reference\": {\n warnings.push({\n type: \"deprecated\",\n setting: '\"tool-result\" content of type \"file-reference\"',\n message: `The \"file-reference\" type for tool result content is deprecated. Use the \"file\" type with mediaType and { type: 'reference', reference } instead.`\n });\n return {\n type: \"file\",\n data: {\n type: \"reference\",\n reference: item.providerReference\n },\n mediaType: \"application\",\n providerOptions: item.providerOptions\n };\n }\n case \"image-data\": {\n warnings.push({\n type: \"deprecated\",\n setting: '\"tool-result\" content of type \"image-data\"',\n message: `The \"image-data\" type for tool result content is deprecated. Use the \"file\" type with mediaType and { type: 'data', data } instead.`\n });\n return {\n type: \"file\",\n data: { type: \"data\", data: item.data },\n mediaType: item.mediaType,\n providerOptions: item.providerOptions\n };\n }\n case \"image-url\": {\n warnings.push({\n type: \"deprecated\",\n setting: '\"tool-result\" content of type \"image-url\"',\n message: `The \"image-url\" type for tool result content is deprecated. Use the \"file\" type with mediaType 'image' (or a specific image/* subtype) and { type: 'url', url } instead.`\n });\n return {\n type: \"file\",\n data: { type: \"url\", url: new URL(item.url) },\n mediaType: \"image\",\n providerOptions: item.providerOptions\n };\n }\n case \"image-file-id\": {\n warnings.push({\n type: \"deprecated\",\n setting: '\"tool-result\" content of type \"image-file-id\"',\n message: `The \"image-file-id\" type for tool result content is deprecated. Use the \"file\" type with mediaType and { type: 'reference', reference } instead.`\n });\n return {\n type: \"file\",\n data: {\n type: \"reference\",\n reference: convertFileIdToProviderReference({\n fileId: item.fileId,\n provider\n })\n },\n mediaType: \"image\",\n providerOptions: item.providerOptions\n };\n }\n case \"image-file-reference\": {\n warnings.push({\n type: \"deprecated\",\n setting: '\"tool-result\" content of type \"image-file-reference\"',\n message: `The \"image-file-reference\" type for tool result content is deprecated. Use the \"file\" type with mediaType and { type: 'reference', reference } instead.`\n });\n return {\n type: \"file\",\n data: {\n type: \"reference\",\n reference: item.providerReference\n },\n mediaType: \"image\",\n providerOptions: item.providerOptions\n };\n }\n default:\n return item;\n }\n })\n };\n}\nfunction convertFileIdToProviderReference({\n fileId,\n provider\n}) {\n if (typeof fileId === \"object\") {\n return fileId;\n }\n if (provider == null) {\n throw new Error(\n \"Cannot convert string fileId to provider reference without a provider ID. Use a Record<string, string> fileId or switch to the file-reference type.\"\n );\n }\n return { [provider]: fileId };\n}\nvar URL_EXTENSION_TO_MEDIA_TYPE = {\n jpg: \"image/jpeg\",\n jpeg: \"image/jpeg\",\n png: \"image/png\",\n gif: \"image/gif\",\n webp: \"image/webp\",\n svg: \"image/svg+xml\",\n avif: \"image/avif\",\n heic: \"image/heic\",\n bmp: \"image/bmp\",\n tiff: \"image/tiff\",\n tif: \"image/tiff\",\n pdf: \"application/pdf\",\n mp4: \"video/mp4\",\n webm: \"video/webm\",\n mp3: \"audio/mpeg\",\n wav: \"audio/wav\",\n ogg: \"audio/ogg\"\n};\nfunction getMediaTypeFromUrl(url, fallbackMediaType = \"application/octet-stream\") {\n var _a22;\n try {\n const pathname = new URL(url).pathname;\n const fileExtension = (_a22 = pathname.split(\".\").pop()) == null ? void 0 : _a22.toLowerCase();\n if (fileExtension && Object.hasOwn(URL_EXTENSION_TO_MEDIA_TYPE, fileExtension)) {\n return URL_EXTENSION_TO_MEDIA_TYPE[fileExtension];\n }\n } catch (e) {\n }\n return fallbackMediaType;\n}\n\n// src/prompt/create-tool-model-output.ts\nimport { getErrorMessage as getErrorMessage3 } from \"@ai-sdk/provider\";\nasync function createToolModelOutput({\n toolCallId,\n input,\n output,\n tool: tool2,\n errorMode\n}) {\n if (errorMode === \"text\") {\n return { type: \"error-text\", value: getErrorMessage3(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 await tool2.toModelOutput({ toolCallId, input, 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/prompt/prepare-language-model-call-options.ts\nfunction prepareLanguageModelCallOptions({\n maxOutputTokens,\n temperature,\n topP,\n topK,\n presencePenalty,\n frequencyPenalty,\n seed,\n stopSequences,\n reasoning\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 reasoning\n };\n}\n\n// src/prompt/prepare-tool-choice.ts\nfunction prepareToolChoice({\n toolChoice\n}) {\n return toolChoice == null ? { type: \"auto\" } : typeof toolChoice === \"string\" ? { type: toolChoice } : { type: \"tool\", toolName: toolChoice.toolName };\n}\n\n// src/prompt/prepare-tools.ts\nimport {\n asSchema\n} 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.ts\nasync function prepareTools({\n tools,\n toolOrder,\n toolsContext = {},\n experimental_sandbox: sandbox\n}) {\n if (!isNonEmptyObject(tools)) {\n return void 0;\n }\n const languageModelTools = [];\n for (const [name22, tool2] of orderToolEntries({ tools, toolOrder })) {\n const toolType = tool2.type;\n switch (toolType) {\n case void 0:\n case \"dynamic\":\n case \"function\": {\n const description = resolveToolDescription({\n tool: tool2,\n toolName: name22,\n toolsContext,\n experimental_sandbox: sandbox\n });\n const providerOptions = tool2.providerOptions;\n const inputExamples = tool2.inputExamples;\n const strict = tool2.strict;\n languageModelTools.push({\n type: \"function\",\n name: name22,\n inputSchema: await asSchema(tool2.inputSchema).jsonSchema,\n ...description != null ? { description } : {},\n ...inputExamples != null ? { inputExamples } : {},\n ...providerOptions != null ? { providerOptions } : {},\n ...strict != null ? { strict } : {}\n });\n break;\n }\n case \"provider\": {\n languageModelTools.push({\n type: \"provider\",\n name: name22,\n id: tool2.id,\n args: tool2.args\n });\n break;\n }\n default: {\n const exhaustiveCheck = toolType;\n throw new Error(`Unsupported tool type: ${exhaustiveCheck}`);\n }\n }\n }\n return languageModelTools;\n}\nfunction orderToolEntries({\n tools,\n toolOrder\n}) {\n if (toolOrder == null) {\n return Object.entries(tools);\n }\n const toolEntries = Object.entries(tools);\n const orderedTools = toolEntries.filter(([name22]) => toolOrder.includes(name22)).sort(\n ([nameA], [nameB]) => toolOrder.indexOf(nameA) - toolOrder.indexOf(nameB)\n );\n const unorderedTools = toolEntries.filter(([name22]) => !toolOrder.includes(name22)).sort(([nameA], [nameB]) => nameA < nameB ? -1 : nameA > nameB ? 1 : 0);\n return [...orderedTools, ...unorderedTools];\n}\nfunction resolveToolDescription({\n tool: tool2,\n toolName,\n toolsContext,\n experimental_sandbox: sandbox\n}) {\n return tool2.description === void 0 ? void 0 : typeof tool2.description === \"string\" ? tool2.description : tool2.description({\n context: toolsContext[toolName],\n experimental_sandbox: sandbox\n });\n}\n\n// src/prompt/request-options.ts\nfunction getTotalTimeoutMs(timeout) {\n if (timeout == null) {\n return void 0;\n }\n if (typeof timeout === \"number\") {\n return timeout;\n }\n return timeout.totalMs;\n}\nfunction getStepTimeoutMs(timeout) {\n if (timeout == null || typeof timeout === \"number\") {\n return void 0;\n }\n return timeout.stepMs;\n}\nfunction getChunkTimeoutMs(timeout) {\n if (timeout == null || typeof timeout === \"number\") {\n return void 0;\n }\n return timeout.chunkMs;\n}\nfunction getToolTimeoutMs(timeout, toolName) {\n var _a22, _b;\n if (timeout == null || typeof timeout === \"number\") {\n return void 0;\n }\n return (_b = (_a22 = timeout.tools) == null ? void 0 : _a22[`${toolName}Ms`]) != null ? _b : timeout.toolMs;\n}\n\n// src/prompt/standardize-prompt.ts\nimport { InvalidPromptError as InvalidPromptError2 } from \"@ai-sdk/provider\";\nimport {\n asArray as asArray2,\n safeValidateTypes\n} from \"@ai-sdk/provider-utils\";\nimport { z as z5 } from \"zod/v4\";\n\n// src/prompt/message.ts\nimport { z as z4 } from \"zod/v4\";\n\n// src/types/provider-metadata.ts\nimport { z as z2 } from \"zod/v4\";\n\n// src/types/json-value.ts\nimport { z } from \"zod/v4\";\nvar jsonValueSchema = z.lazy(\n () => z.union([\n z.null(),\n z.string(),\n z.number(),\n z.boolean(),\n z.record(z.string(), jsonValueSchema.optional()),\n z.array(jsonValueSchema)\n ])\n);\n\n// src/types/provider-metadata.ts\nvar providerMetadataSchema = z2.record(\n z2.string(),\n z2.record(z2.string(), jsonValueSchema.optional())\n);\n\n// src/prompt/content-part.ts\nimport {\n isBuffer as isBuffer2\n} from \"@ai-sdk/provider-utils\";\nimport { z as z3 } from \"zod/v4\";\nvar fileInlineDataSchema = z3.union([\n z3.string(),\n z3.instanceof(Uint8Array),\n z3.instanceof(ArrayBuffer),\n z3.custom(isBuffer2, { message: \"Must be a Buffer\" })\n]);\nvar providerReferenceSchema = z3.record(z3.string(), z3.string());\nvar textPartSchema = z3.object({\n type: z3.literal(\"text\"),\n text: z3.string(),\n providerOptions: providerMetadataSchema.optional()\n});\nvar imagePartSchema = z3.object({\n type: z3.literal(\"image\"),\n image: z3.union([\n fileInlineDataSchema,\n z3.instanceof(URL),\n providerReferenceSchema\n ]),\n mediaType: z3.string().optional(),\n providerOptions: providerMetadataSchema.optional()\n});\nvar taggedFileDataSchema = z3.discriminatedUnion(\"type\", [\n z3.object({ type: z3.literal(\"data\"), data: fileInlineDataSchema }),\n z3.object({ type: z3.literal(\"url\"), url: z3.instanceof(URL) }),\n z3.object({\n type: z3.literal(\"reference\"),\n reference: providerReferenceSchema\n }),\n z3.object({ type: z3.literal(\"text\"), text: z3.string() })\n]);\nvar taggedReasoningFileDataSchema = z3.discriminatedUnion(\"type\", [\n z3.object({ type: z3.literal(\"data\"), data: fileInlineDataSchema }),\n z3.object({ type: z3.literal(\"url\"), url: z3.instanceof(URL) })\n]);\nvar filePartSchema = z3.object({\n type: z3.literal(\"file\"),\n data: z3.union([\n taggedFileDataSchema,\n fileInlineDataSchema,\n z3.instanceof(URL),\n providerReferenceSchema\n ]),\n filename: z3.string().optional(),\n mediaType: z3.string(),\n providerOptions: providerMetadataSchema.optional()\n});\nvar reasoningPartSchema = z3.object({\n type: z3.literal(\"reasoning\"),\n text: z3.string(),\n providerOptions: providerMetadataSchema.optional()\n});\nvar customPartSchema = z3.object({\n type: z3.literal(\"custom\"),\n kind: z3.string().transform((value) => value),\n providerOptions: providerMetadataSchema.optional()\n});\nvar reasoningFilePartSchema = z3.object({\n type: z3.literal(\"reasoning-file\"),\n data: z3.union([\n taggedReasoningFileDataSchema,\n fileInlineDataSchema,\n z3.instanceof(URL)\n ]),\n mediaType: z3.string(),\n providerOptions: providerMetadataSchema.optional()\n});\nvar toolCallPartSchema = z3.object({\n type: z3.literal(\"tool-call\"),\n toolCallId: z3.string(),\n toolName: z3.string(),\n input: z3.unknown(),\n providerOptions: providerMetadataSchema.optional(),\n providerExecuted: z3.boolean().optional()\n});\nvar outputSchema = z3.discriminatedUnion(\n \"type\",\n [\n z3.object({\n type: z3.literal(\"text\"),\n value: z3.string(),\n providerOptions: providerMetadataSchema.optional()\n }),\n z3.object({\n type: z3.literal(\"json\"),\n value: jsonValueSchema,\n providerOptions: providerMetadataSchema.optional()\n }),\n z3.object({\n type: z3.literal(\"execution-denied\"),\n reason: z3.string().optional(),\n providerOptions: providerMetadataSchema.optional()\n }),\n z3.object({\n type: z3.literal(\"error-text\"),\n value: z3.string(),\n providerOptions: providerMetadataSchema.optional()\n }),\n z3.object({\n type: z3.literal(\"error-json\"),\n value: jsonValueSchema,\n providerOptions: providerMetadataSchema.optional()\n }),\n z3.object({\n type: z3.literal(\"content\"),\n value: z3.array(\n z3.union([\n z3.object({\n type: z3.literal(\"text\"),\n text: z3.string(),\n providerOptions: providerMetadataSchema.optional()\n }),\n z3.object({\n type: z3.literal(\"file\"),\n data: taggedFileDataSchema,\n mediaType: z3.string(),\n filename: z3.string().optional(),\n providerOptions: providerMetadataSchema.optional()\n }),\n z3.object({\n // Deprecated.\n type: z3.literal(\"file-data\"),\n data: z3.string(),\n mediaType: z3.string(),\n filename: z3.string().optional(),\n providerOptions: providerMetadataSchema.optional()\n }),\n z3.object({\n // Deprecated.\n type: z3.literal(\"file-url\"),\n url: z3.string(),\n mediaType: z3.string().optional(),\n providerOptions: providerMetadataSchema.optional()\n }),\n z3.object({\n // Deprecated.\n type: z3.literal(\"file-id\"),\n fileId: z3.union([z3.string(), z3.record(z3.string(), z3.string())]),\n providerOptions: providerMetadataSchema.optional()\n }),\n z3.object({\n // Deprecated.\n type: z3.literal(\"file-reference\"),\n providerReference: z3.record(z3.string(), z3.string()),\n providerOptions: providerMetadataSchema.optional()\n }),\n z3.object({\n // Deprecated.\n type: z3.literal(\"image-data\"),\n data: z3.string(),\n mediaType: z3.string(),\n providerOptions: providerMetadataSchema.optional()\n }),\n z3.object({\n // Deprecated.\n type: z3.literal(\"image-url\"),\n url: z3.string(),\n providerOptions: providerMetadataSchema.optional()\n }),\n z3.object({\n // Deprecated.\n type: z3.literal(\"image-file-id\"),\n fileId: z3.union([z3.string(), z3.record(z3.string(), z3.string())]),\n providerOptions: providerMetadataSchema.optional()\n }),\n z3.object({\n // Deprecated.\n type: z3.literal(\"image-file-reference\"),\n providerReference: z3.record(z3.string(), z3.string()),\n providerOptions: providerMetadataSchema.optional()\n }),\n z3.object({\n type: z3.literal(\"custom\"),\n providerOptions: providerMetadataSchema.optional()\n })\n ])\n )\n })\n ]\n);\nvar toolResultPartSchema = z3.object({\n type: z3.literal(\"tool-result\"),\n toolCallId: z3.string(),\n toolName: z3.string(),\n output: outputSchema,\n providerOptions: providerMetadataSchema.optional()\n});\nvar toolApprovalRequestSchema = z3.object({\n type: z3.literal(\"tool-approval-request\"),\n approvalId: z3.string(),\n toolCallId: z3.string()\n});\nvar toolApprovalResponseSchema = z3.object({\n type: z3.literal(\"tool-approval-response\"),\n approvalId: z3.string(),\n approved: z3.boolean(),\n reason: z3.string().optional()\n});\n\n// src/prompt/message.ts\nvar systemModelMessageSchema = z4.object(\n {\n role: z4.literal(\"system\"),\n content: z4.string(),\n providerOptions: providerMetadataSchema.optional()\n }\n);\nvar userModelMessageSchema = z4.object({\n role: z4.literal(\"user\"),\n content: z4.union([\n z4.string(),\n z4.array(z4.union([textPartSchema, imagePartSchema, filePartSchema]))\n ]),\n providerOptions: providerMetadataSchema.optional()\n});\nvar assistantModelMessageSchema = z4.object({\n role: z4.literal(\"assistant\"),\n content: z4.union([\n z4.string(),\n z4.array(\n z4.union([\n textPartSchema,\n customPartSchema,\n filePartSchema,\n reasoningPartSchema,\n reasoningFilePartSchema,\n toolCallPartSchema,\n toolResultPartSchema,\n toolApprovalRequestSchema\n ])\n )\n ]),\n providerOptions: providerMetadataSchema.optional()\n});\nvar toolModelMessageSchema = z4.object({\n role: z4.literal(\"tool\"),\n content: z4.array(z4.union([toolResultPartSchema, toolApprovalResponseSchema])),\n providerOptions: providerMetadataSchema.optional()\n});\nvar modelMessageSchema = z4.union([\n systemModelMessageSchema,\n userModelMessageSchema,\n assistantModelMessageSchema,\n toolModelMessageSchema\n]);\n\n// src/prompt/standardize-prompt.ts\nasync function standardizePrompt({\n allowSystemInMessages = false,\n system,\n instructions = system,\n prompt,\n messages\n}) {\n if (prompt == null && messages == null) {\n throw new InvalidPromptError2({\n prompt,\n message: \"prompt or messages must be defined\"\n });\n }\n if (prompt != null && messages != null) {\n throw new InvalidPromptError2({\n prompt,\n message: \"prompt and messages cannot be defined at the same time\"\n });\n }\n if (typeof instructions !== \"string\" && !asArray2(instructions).every((message) => message.role === \"system\")) {\n throw new InvalidPromptError2({\n prompt,\n message: \"instructions must be a string, SystemModelMessage, or array of SystemModelMessage\"\n });\n }\n if (prompt != null && typeof prompt === \"string\") {\n messages = [{ role: \"user\", content: prompt }];\n } else if (prompt != null && Array.isArray(prompt)) {\n messages = prompt;\n } else if (messages == null) {\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 if (!allowSystemInMessages && messages.some((message) => message.role === \"system\")) {\n throw new InvalidPromptError2({\n prompt,\n message: \"System messages are not allowed in the prompt or messages fields. Use the instructions option instead.\"\n });\n }\n const validationResult = await safeValidateTypes({\n value: messages,\n schema: z5.array(modelMessageSchema)\n });\n if (!validationResult.success) {\n throw new InvalidPromptError2({\n prompt,\n message: \"The messages do not match the ModelMessage[] schema.\",\n cause: validationResult.error\n });\n }\n return { messages, instructions };\n}\n\n// src/prompt/wrap-gateway-error.ts\nimport { GatewayAuthenticationError } from \"@ai-sdk/gateway\";\nimport { AISDKError as AISDKError23 } from \"@ai-sdk/provider\";\nfunction wrapGatewayError(error) {\n if (!GatewayAuthenticationError.isInstance(error))\n return error;\n const isProductionEnv = (process == null ? void 0 : process.env.NODE_ENV) === \"production\";\n const moreInfoURL = \"https://ai-sdk.dev/unauthenticated-ai-gateway\";\n if (isProductionEnv) {\n return new AISDKError23({\n name: \"GatewayError\",\n message: `Unauthenticated. Configure AI_GATEWAY_API_KEY or use a provider module. Learn more: ${moreInfoURL}`\n });\n }\n return Object.assign(\n new Error(`\\x1B[1m\\x1B[31mUnauthenticated request to AI Gateway.\\x1B[0m\n\nTo authenticate, set the \\x1B[33mAI_GATEWAY_API_KEY\\x1B[0m environment variable with your API key.\n\nAlternatively, you can use a provider module instead of the AI Gateway.\n\nLearn more: \\x1B[34m${moreInfoURL}\\x1B[0m\n\n`),\n { name: \"GatewayAuthenticationError\" }\n );\n}\n\n// src/types/usage.ts\nfunction asLanguageModelUsage(usage) {\n return {\n inputTokens: usage.inputTokens.total,\n inputTokenDetails: {\n noCacheTokens: usage.inputTokens.noCache,\n cacheReadTokens: usage.inputTokens.cacheRead,\n cacheWriteTokens: usage.inputTokens.cacheWrite\n },\n outputTokens: usage.outputTokens.total,\n outputTokenDetails: {\n textTokens: usage.outputTokens.text,\n reasoningTokens: usage.outputTokens.reasoning\n },\n totalTokens: addTokenCounts(\n usage.inputTokens.total,\n usage.outputTokens.total\n ),\n raw: usage.raw\n };\n}\nfunction createNullLanguageModelUsage() {\n return {\n inputTokens: void 0,\n inputTokenDetails: {\n noCacheTokens: void 0,\n cacheReadTokens: void 0,\n cacheWriteTokens: void 0\n },\n outputTokens: void 0,\n outputTokenDetails: {\n textTokens: void 0,\n reasoningTokens: void 0\n },\n totalTokens: void 0,\n raw: void 0\n };\n}\nfunction addLanguageModelUsage(usage1, usage2) {\n var _a22, _b, _c, _d, _e, _f, _g, _h, _i, _j;\n return {\n inputTokens: addTokenCounts(usage1.inputTokens, usage2.inputTokens),\n inputTokenDetails: {\n noCacheTokens: addTokenCounts(\n (_a22 = usage1.inputTokenDetails) == null ? void 0 : _a22.noCacheTokens,\n (_b = usage2.inputTokenDetails) == null ? void 0 : _b.noCacheTokens\n ),\n cacheReadTokens: addTokenCounts(\n (_c = usage1.inputTokenDetails) == null ? void 0 : _c.cacheReadTokens,\n (_d = usage2.inputTokenDetails) == null ? void 0 : _d.cacheReadTokens\n ),\n cacheWriteTokens: addTokenCounts(\n (_e = usage1.inputTokenDetails) == null ? void 0 : _e.cacheWriteTokens,\n (_f = usage2.inputTokenDetails) == null ? void 0 : _f.cacheWriteTokens\n )\n },\n outputTokens: addTokenCounts(usage1.outputTokens, usage2.outputTokens),\n outputTokenDetails: {\n textTokens: addTokenCounts(\n (_g = usage1.outputTokenDetails) == null ? void 0 : _g.textTokens,\n (_h = usage2.outputTokenDetails) == null ? void 0 : _h.textTokens\n ),\n reasoningTokens: addTokenCounts(\n (_i = usage1.outputTokenDetails) == null ? void 0 : _i.reasoningTokens,\n (_j = usage2.outputTokenDetails) == null ? void 0 : _j.reasoningTokens\n )\n },\n totalTokens: addTokenCounts(usage1.totalTokens, usage2.totalTokens)\n };\n}\nfunction addTokenCounts(tokenCount1, tokenCount2) {\n return tokenCount1 == null && tokenCount2 == null ? void 0 : (tokenCount1 != null ? tokenCount1 : 0) + (tokenCount2 != null ? tokenCount2 : 0);\n}\nfunction addImageModelUsage(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 };\n}\n\n// src/util/merge-abort-signals.ts\nimport { filterNullable } from \"@ai-sdk/provider-utils\";\nfunction mergeAbortSignals(...signals) {\n const validSignals = filterNullable(...signals).map(\n (signal) => signal instanceof AbortSignal ? signal : AbortSignal.timeout(signal)\n );\n return validSignals.length === 0 ? void 0 : validSignals.length === 1 ? validSignals[0] : AbortSignal.any(validSignals);\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 (key === \"__proto__\" || key === \"constructor\" || key === \"prototype\") {\n continue;\n }\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/now.ts\nfunction now() {\n var _a22, _b;\n return (_b = (_a22 = globalThis == null ? void 0 : globalThis.performance) == null ? void 0 : _a22.now()) != null ? _b : Date.now();\n}\n\n// src/util/notify.ts\nimport { asArray as asArray3 } from \"@ai-sdk/provider-utils\";\nasync function notify(options) {\n await Promise.all(\n asArray3(options.callbacks).map(async (callback) => {\n try {\n await (callback == null ? void 0 : callback(options.event));\n } catch (e) {\n }\n })\n );\n}\n\n// src/util/retry-with-exponential-backoff.ts\nimport { APICallError as APICallError2 } from \"@ai-sdk/provider\";\nimport { GatewayError } from \"@ai-sdk/gateway\";\nimport { delay, getErrorMessage as getErrorMessage4, isAbortError } from \"@ai-sdk/provider-utils\";\nfunction getRetryDelayInMs({\n error,\n exponentialBackoffDelay\n}) {\n const headers = APICallError2.isInstance(error) ? error.responseHeaders : APICallError2.isInstance(error.cause) ? error.cause.responseHeaders : void 0;\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 = getErrorMessage4(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 || GatewayError.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/util/set-abort-timeout.ts\nfunction setAbortTimeout({\n abortController,\n label,\n timeoutMs\n}) {\n if (abortController == null || timeoutMs == null) {\n return void 0;\n }\n return setTimeout(\n () => abortController.abort(\n new DOMException(\n `${label} timeout of ${timeoutMs}ms exceeded`,\n \"TimeoutError\"\n )\n ),\n timeoutMs\n );\n}\n\n// src/generate-text/calculate-tokens-per-second.ts\nfunction calculateTokensPerSecond({\n tokens,\n durationMs\n}) {\n const tokenRate = 1e3 * (tokens != null ? tokens : 0) / (durationMs != null ? durationMs : 0);\n return Number.isFinite(tokenRate) ? tokenRate : 0;\n}\n\n// src/generate-text/collect-tool-approvals.ts\nfunction collectToolApprovals({\n messages\n}) {\n const lastMessage = messages.at(-1);\n if ((lastMessage == null ? void 0 : lastMessage.role) != \"tool\") {\n return {\n approvedToolApprovals: [],\n deniedToolApprovals: []\n };\n }\n const toolCallsByToolCallId = {};\n for (const message of messages) {\n if (message.role === \"assistant\" && typeof message.content !== \"string\") {\n const content = message.content;\n for (const part of content) {\n if (part.type === \"tool-call\") {\n toolCallsByToolCallId[part.toolCallId] = part;\n }\n }\n }\n }\n const toolApprovalRequestsByApprovalId = {};\n for (const message of messages) {\n if (message.role === \"assistant\" && typeof message.content !== \"string\") {\n const content = message.content;\n for (const part of content) {\n if (part.type === \"tool-approval-request\") {\n toolApprovalRequestsByApprovalId[part.approvalId] = part;\n }\n }\n }\n }\n const toolResults = {};\n for (const part of lastMessage.content) {\n if (part.type === \"tool-result\") {\n toolResults[part.toolCallId] = part;\n }\n }\n const approvedToolApprovals = [];\n const deniedToolApprovals = [];\n const approvalResponses = lastMessage.content.filter(\n (part) => part.type === \"tool-approval-response\"\n );\n for (const approvalResponse of approvalResponses) {\n const approvalRequest = toolApprovalRequestsByApprovalId[approvalResponse.approvalId];\n if (approvalRequest == null) {\n throw new InvalidToolApprovalError({\n approvalId: approvalResponse.approvalId\n });\n }\n if (toolResults[approvalRequest.toolCallId] != null) {\n continue;\n }\n const toolCall = toolCallsByToolCallId[approvalRequest.toolCallId];\n if (toolCall == null) {\n throw new ToolCallNotFoundForApprovalError({\n toolCallId: approvalRequest.toolCallId,\n approvalId: approvalRequest.approvalId\n });\n }\n const approval = {\n approvalRequest,\n approvalResponse,\n toolCall\n };\n if (approvalResponse.approved) {\n approvedToolApprovals.push(approval);\n } else {\n deniedToolApprovals.push(approval);\n }\n }\n return { approvedToolApprovals, deniedToolApprovals };\n}\n\n// src/generate-text/execute-tool-call.ts\nimport {\n executeTool,\n isExecutableTool\n} from \"@ai-sdk/provider-utils\";\n\n// src/generate-text/validate-tool-context.ts\nimport { validateTypes } from \"@ai-sdk/provider-utils\";\nasync function validateToolContext({\n toolName,\n context,\n contextSchema\n}) {\n if (contextSchema == null) {\n return context;\n }\n return await validateTypes({\n value: context,\n schema: contextSchema,\n context: {\n field: \"tool context\",\n entityName: toolName\n }\n });\n}\n\n// src/generate-text/execute-tool-call.ts\nasync function executeToolCall({\n toolCall,\n tools,\n toolsContext,\n callId,\n messages,\n abortSignal,\n timeout,\n experimental_sandbox: sandbox,\n onPreliminaryToolResult,\n onToolExecutionStart,\n onToolExecutionEnd,\n executeToolInTelemetryContext = async ({ execute }) => await execute(),\n runInTracingChannelSpan = async ({ execute }) => await execute()\n}) {\n const { toolName, toolCallId, input } = toolCall;\n const tool2 = tools == null ? void 0 : tools[toolName];\n if (!isExecutableTool(tool2)) {\n return void 0;\n }\n const context = await validateToolContext({\n toolName,\n context: toolsContext == null ? void 0 : toolsContext[toolName],\n contextSchema: tool2.contextSchema\n });\n const toolExecutionContext = {\n toolCall,\n messages,\n toolContext: context\n };\n const baseCallbackEvent = {\n callId,\n ...toolExecutionContext\n };\n return await runInTracingChannelSpan({\n type: \"executeTool\",\n event: baseCallbackEvent,\n execute: async () => {\n let output;\n await notify({\n event: baseCallbackEvent,\n callbacks: onToolExecutionStart\n });\n const toolTimeoutMs = getToolTimeoutMs(timeout, toolName);\n const toolAbortSignal = mergeAbortSignals(abortSignal, toolTimeoutMs);\n let toolExecutionMs = 0;\n try {\n await executeToolInTelemetryContext({\n callId,\n toolCallId,\n ...toolExecutionContext,\n execute: async () => {\n const startTime = now();\n try {\n const stream = executeTool({\n tool: tool2,\n input,\n options: {\n toolCallId,\n messages,\n abortSignal: toolAbortSignal,\n context,\n experimental_sandbox: sandbox\n }\n });\n for await (const part of stream) {\n if (part.type === \"preliminary\") {\n onPreliminaryToolResult == null ? void 0 : onPreliminaryToolResult({\n ...toolCall,\n type: \"tool-result\",\n output: part.output,\n preliminary: true\n });\n } else {\n output = part.output;\n }\n }\n } finally {\n toolExecutionMs = now() - startTime;\n }\n }\n });\n } catch (error) {\n const toolError = {\n type: \"tool-error\",\n toolCallId,\n toolName,\n input,\n error,\n dynamic: tool2.type === \"dynamic\",\n ...toolCall.providerMetadata != null ? { providerMetadata: toolCall.providerMetadata } : {},\n ...toolCall.toolMetadata != null ? { toolMetadata: toolCall.toolMetadata } : {}\n };\n await notify({\n event: {\n ...baseCallbackEvent,\n toolOutput: toolError,\n toolExecutionMs\n },\n callbacks: onToolExecutionEnd\n });\n return {\n output: toolError,\n toolExecutionMs\n };\n }\n const toolResult = {\n type: \"tool-result\",\n toolCallId,\n toolName,\n input,\n output,\n dynamic: tool2.type === \"dynamic\",\n ...toolCall.providerMetadata != null ? { providerMetadata: toolCall.providerMetadata } : {},\n ...toolCall.toolMetadata != null ? { toolMetadata: toolCall.toolMetadata } : {}\n };\n await notify({\n event: {\n ...baseCallbackEvent,\n toolOutput: toolResult,\n toolExecutionMs\n },\n callbacks: onToolExecutionEnd\n });\n return {\n output: toolResult,\n toolExecutionMs\n };\n }\n });\n}\n\n// src/generate-text/filter-active-tools.ts\nfunction filterActiveTools({\n tools,\n activeTools\n}) {\n if (tools == null || activeTools == null) {\n return tools;\n }\n return Object.fromEntries(\n Object.entries(tools).filter(([name22]) => activeTools.includes(name22))\n );\n}\n\n// src/generate-text/generated-file.ts\nimport {\n convertBase64ToUint8Array,\n convertUint8ArrayToBase64\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 = convertUint8ArrayToBase64(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 = convertBase64ToUint8Array(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/output.ts\nvar output_exports = {};\n__export(output_exports, {\n array: () => array,\n choice: () => choice,\n json: () => json,\n object: () => object,\n text: () => text\n});\nimport {\n TypeValidationError as TypeValidationError2\n} from \"@ai-sdk/provider\";\nimport {\n asSchema as asSchema2,\n resolve,\n safeParseJSON as safeParseJSON2,\n safeValidateTypes as safeValidateTypes2\n} from \"@ai-sdk/provider-utils\";\n\n// src/util/parse-partial-json.ts\nimport { safeParseJSON } 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 let unicodeEscapeDigits = 0;\n function isHexDigit(char) {\n return char >= \"0\" && char <= \"9\" || char >= \"A\" && char <= \"F\" || char >= \"a\" && char <= \"f\";\n }\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 if (char === \"u\") {\n unicodeEscapeDigits = 0;\n stack.push(\"INSIDE_STRING_UNICODE_ESCAPE\");\n } else {\n lastValidIndex = i;\n }\n break;\n }\n case \"INSIDE_STRING_UNICODE_ESCAPE\": {\n if (isHexDigit(char)) {\n unicodeEscapeDigits++;\n if (unicodeEscapeDigits === 4) {\n stack.pop();\n lastValidIndex = i;\n }\n }\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 safeParseJSON({ text: jsonText });\n if (result.success) {\n return { value: result.value, state: \"successful-parse\" };\n }\n result = await safeParseJSON({ 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/generate-text/output.ts\nvar text = () => ({\n name: \"text\",\n responseFormat: Promise.resolve({ type: \"text\" }),\n async parseCompleteOutput({ text: text2 }) {\n return text2;\n },\n async parsePartialOutput({ text: text2 }) {\n return { partial: text2 };\n },\n createElementStreamTransform() {\n return void 0;\n }\n});\nvar object = ({\n schema: inputSchema,\n name: name22,\n description\n}) => {\n const schema = asSchema2(inputSchema);\n return {\n name: \"object\",\n responseFormat: resolve(schema.jsonSchema).then((jsonSchema2) => ({\n type: \"json\",\n schema: jsonSchema2,\n ...name22 != null && { name: name22 },\n ...description != null && { description }\n })),\n async parseCompleteOutput({ text: text2 }, context) {\n const parseResult = await safeParseJSON2({ 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 safeValidateTypes2({\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 async parsePartialOutput({ 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 }\n case \"repaired-parse\":\n case \"successful-parse\": {\n return {\n // Note: currently no validation of partial results:\n partial: result.value\n };\n }\n }\n },\n createElementStreamTransform() {\n return void 0;\n }\n };\n};\nvar array = ({\n element: inputElementSchema,\n name: name22,\n description\n}) => {\n const elementSchema = asSchema2(inputElementSchema);\n return {\n name: \"array\",\n // JSON schema that describes an array of elements:\n responseFormat: resolve(elementSchema.jsonSchema).then((jsonSchema2) => {\n const { $schema: _$schema, ...itemSchema } = jsonSchema2;\n return {\n type: \"json\",\n schema: {\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 ...name22 != null && { name: name22 },\n ...description != null && { description }\n };\n }),\n async parseCompleteOutput({ text: text2 }, context) {\n const parseResult = await safeParseJSON2({ 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 outerValue = parseResult.value;\n if (outerValue == null || typeof outerValue !== \"object\" || !(\"elements\" in outerValue) || !Array.isArray(outerValue.elements)) {\n throw new NoObjectGeneratedError({\n message: \"No object generated: response did not match schema.\",\n cause: new TypeValidationError2({\n value: outerValue,\n cause: \"response must be an object with an elements array\"\n }),\n text: text2,\n response: context.response,\n usage: context.usage,\n finishReason: context.finishReason\n });\n }\n const validatedElements = [];\n for (const element of outerValue.elements) {\n const validationResult = await safeValidateTypes2({\n value: element,\n schema: elementSchema\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 validatedElements.push(validationResult.value);\n }\n return validatedElements;\n },\n async parsePartialOutput({ 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 }\n case \"repaired-parse\":\n case \"successful-parse\": {\n const outerValue = result.value;\n if (outerValue == null || typeof outerValue !== \"object\" || !(\"elements\" in outerValue) || !Array.isArray(outerValue.elements)) {\n return void 0;\n }\n const rawElements = result.state === \"repaired-parse\" && outerValue.elements.length > 0 ? outerValue.elements.slice(0, -1) : outerValue.elements;\n const parsedElements = [];\n for (const rawElement of rawElements) {\n const validationResult = await safeValidateTypes2({\n value: rawElement,\n schema: elementSchema\n });\n if (validationResult.success) {\n parsedElements.push(validationResult.value);\n }\n }\n return { partial: parsedElements };\n }\n }\n },\n createElementStreamTransform() {\n let publishedElements = 0;\n return new TransformStream({\n transform({ partialOutput }, controller) {\n if (partialOutput != null) {\n for (; publishedElements < partialOutput.length; publishedElements++) {\n controller.enqueue(partialOutput[publishedElements]);\n }\n }\n }\n });\n }\n };\n};\nvar choice = ({\n options: choiceOptions,\n name: name22,\n description\n}) => {\n return {\n name: \"choice\",\n // JSON schema that describes an enumeration:\n responseFormat: Promise.resolve({\n type: \"json\",\n schema: {\n $schema: \"http://json-schema.org/draft-07/schema#\",\n type: \"object\",\n properties: {\n result: { type: \"string\", enum: choiceOptions }\n },\n required: [\"result\"],\n additionalProperties: false\n },\n ...name22 != null && { name: name22 },\n ...description != null && { description }\n }),\n async parseCompleteOutput({ text: text2 }, context) {\n const parseResult = await safeParseJSON2({ 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 outerValue = parseResult.value;\n if (outerValue == null || typeof outerValue !== \"object\" || !(\"result\" in outerValue) || typeof outerValue.result !== \"string\" || !choiceOptions.includes(outerValue.result)) {\n throw new NoObjectGeneratedError({\n message: \"No object generated: response did not match schema.\",\n cause: new TypeValidationError2({\n value: outerValue,\n cause: \"response must be an object that contains a choice value.\"\n }),\n text: text2,\n response: context.response,\n usage: context.usage,\n finishReason: context.finishReason\n });\n }\n return outerValue.result;\n },\n async parsePartialOutput({ 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 }\n case \"repaired-parse\":\n case \"successful-parse\": {\n const outerValue = result.value;\n if (outerValue == null || typeof outerValue !== \"object\" || !(\"result\" in outerValue) || typeof outerValue.result !== \"string\") {\n return void 0;\n }\n const potentialMatches = choiceOptions.filter(\n (choiceOption) => choiceOption.startsWith(outerValue.result)\n );\n if (result.state === \"successful-parse\") {\n return potentialMatches.includes(outerValue.result) ? { partial: outerValue.result } : void 0;\n } else {\n return potentialMatches.length === 1 ? { partial: potentialMatches[0] } : void 0;\n }\n }\n }\n },\n createElementStreamTransform() {\n return void 0;\n }\n };\n};\nvar json = ({\n name: name22,\n description\n} = {}) => {\n return {\n name: \"json\",\n responseFormat: Promise.resolve({\n type: \"json\",\n ...name22 != null && { name: name22 },\n ...description != null && { description }\n }),\n async parseCompleteOutput({ text: text2 }, context) {\n const parseResult = await safeParseJSON2({ 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 return parseResult.value;\n },\n async parsePartialOutput({ 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 }\n case \"repaired-parse\":\n case \"successful-parse\": {\n return result.value === void 0 ? void 0 : { partial: result.value };\n }\n }\n },\n createElementStreamTransform() {\n return void 0;\n }\n };\n};\n\n// src/generate-text/parse-tool-call.ts\nimport {\n asSchema as asSchema3,\n safeParseJSON as safeParseJSON3,\n safeValidateTypes as safeValidateTypes3\n} from \"@ai-sdk/provider-utils\";\nasync function parseToolCall({\n toolCall,\n tools,\n repairToolCall,\n refineToolInput,\n messages,\n instructions\n}) {\n try {\n if (tools == null) {\n if (toolCall.providerExecuted && toolCall.dynamic) {\n return await refineParsedToolCallInput({\n toolCall: await parseProviderExecutedDynamicToolCall(toolCall),\n refineToolInput\n });\n }\n throw new NoSuchToolError({ toolName: toolCall.toolName });\n }\n try {\n return await refineParsedToolCallInput({\n toolCall: await doParseToolCall({ toolCall, tools }),\n refineToolInput\n });\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: async ({ toolName }) => {\n const { inputSchema } = tools[toolName];\n return await asSchema3(inputSchema).jsonSchema;\n },\n instructions,\n system: instructions,\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 refineParsedToolCallInput({\n toolCall: await doParseToolCall({ toolCall: repairedToolCall, tools }),\n refineToolInput\n });\n }\n } catch (error) {\n const parsedInput = await safeParseJSON3({ text: toolCall.input });\n const input = parsedInput.success ? parsedInput.value : toolCall.input;\n const tool2 = tools == null ? void 0 : tools[toolCall.toolName];\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 title: tool2 == null ? void 0 : tool2.title,\n providerExecuted: toolCall.providerExecuted,\n providerMetadata: toolCall.providerMetadata,\n ...(tool2 == null ? void 0 : tool2.metadata) != null ? { toolMetadata: tool2.metadata } : {}\n };\n }\n}\nasync function refineParsedToolCallInput({\n toolCall,\n refineToolInput\n}) {\n const refine = refineToolInput == null ? void 0 : refineToolInput[toolCall.toolName];\n if (refine == null) {\n return toolCall;\n }\n return {\n ...toolCall,\n input: await refine(toolCall.input)\n };\n}\nasync function parseProviderExecutedDynamicToolCall(toolCall) {\n const parseResult = toolCall.input.trim() === \"\" ? { success: true, value: {} } : await safeParseJSON3({ text: toolCall.input });\n if (parseResult.success === false) {\n throw new InvalidToolInputError({\n toolName: toolCall.toolName,\n toolInput: toolCall.input,\n cause: parseResult.error\n });\n }\n return {\n type: \"tool-call\",\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input: parseResult.value,\n providerExecuted: true,\n dynamic: true,\n providerMetadata: toolCall.providerMetadata\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 if (toolCall.providerExecuted && toolCall.dynamic) {\n return await parseProviderExecutedDynamicToolCall(toolCall);\n }\n throw new NoSuchToolError({\n toolName: toolCall.toolName,\n availableTools: Object.keys(tools)\n });\n }\n const schema = asSchema3(tool2.inputSchema);\n const parseResult = toolCall.input.trim() === \"\" ? await safeValidateTypes3({ value: {}, schema }) : await safeParseJSON3({ 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 ...tool2.metadata != null ? { toolMetadata: tool2.metadata } : {},\n dynamic: true,\n title: tool2.title\n } : {\n type: \"tool-call\",\n toolCallId: toolCall.toolCallId,\n toolName,\n input: parseResult.value,\n providerExecuted: toolCall.providerExecuted,\n providerMetadata: toolCall.providerMetadata,\n ...tool2.metadata != null ? { toolMetadata: tool2.metadata } : {},\n title: tool2.title\n };\n}\n\n// src/generate-text/reasoning-output.ts\nfunction unwrapReasoningFileData(data) {\n if (typeof data === \"object\" && data !== null && \"type\" in data) {\n return data.type === \"data\" ? data.data : data.url;\n }\n return data;\n}\nfunction convertFromReasoningOutputs(parts) {\n return parts.map((part) => {\n if (part.type === \"reasoning\") {\n return {\n type: \"reasoning\",\n text: part.text,\n ...part.providerMetadata != null ? { providerOptions: part.providerMetadata } : {}\n };\n }\n return {\n type: \"reasoning-file\",\n data: part.file.base64,\n mediaType: part.file.mediaType,\n ...part.providerMetadata != null ? { providerOptions: part.providerMetadata } : {}\n };\n });\n}\nfunction convertToReasoningOutputs(parts) {\n return parts.map((part) => {\n if (part.type === \"reasoning\") {\n return {\n type: \"reasoning\",\n text: part.text,\n ...part.providerOptions != null ? { providerMetadata: part.providerOptions } : {}\n };\n }\n const rawData = unwrapReasoningFileData(part.data);\n const fileData = rawData instanceof ArrayBuffer ? new Uint8Array(rawData) : rawData instanceof URL ? rawData.toString() : rawData;\n return {\n type: \"reasoning-file\",\n file: new DefaultGeneratedFile({\n data: fileData,\n mediaType: part.mediaType\n }),\n ...part.providerOptions != null ? { providerMetadata: part.providerOptions } : {}\n };\n });\n}\n\n// src/generate-text/resolve-tool-approval.ts\nasync function resolveToolApproval({\n tools,\n toolCall,\n toolApproval,\n messages,\n toolsContext,\n runtimeContext\n}) {\n if (toolApproval != null && typeof toolApproval === \"function\") {\n return normalizeToolApprovalStatus(\n await toolApproval({\n toolCall,\n tools,\n toolsContext,\n messages,\n runtimeContext\n })\n );\n }\n const toolName = toolCall.toolName;\n const tool2 = tools == null ? void 0 : tools[toolName];\n const input = toolCall.input;\n const userDefinedToolApprovalStatus = toolApproval == null ? void 0 : toolApproval[toolName];\n if (userDefinedToolApprovalStatus != null) {\n const approvalStatus = typeof userDefinedToolApprovalStatus === \"function\" ? await userDefinedToolApprovalStatus(input, {\n toolCallId: toolCall.toolCallId,\n messages,\n toolContext: await validateToolContext({\n toolName,\n context: toolsContext == null ? void 0 : toolsContext[toolName],\n contextSchema: tool2 == null ? void 0 : tool2.contextSchema\n }),\n runtimeContext\n }) : userDefinedToolApprovalStatus;\n return normalizeToolApprovalStatus(approvalStatus);\n }\n if ((tool2 == null ? void 0 : tool2.needsApproval) == null) {\n return { type: \"not-applicable\" };\n }\n const needsApproval = typeof tool2.needsApproval === \"function\" ? await tool2.needsApproval(input, {\n toolCallId: toolCall.toolCallId,\n messages,\n context: await validateToolContext({\n toolName,\n context: toolsContext == null ? void 0 : toolsContext[toolName],\n contextSchema: tool2 == null ? void 0 : tool2.contextSchema\n })\n }) : tool2.needsApproval;\n return needsApproval ? { type: \"user-approval\" } : { type: \"not-applicable\" };\n}\nfunction normalizeToolApprovalStatus(status) {\n return status === void 0 ? { type: \"not-applicable\" } : typeof status === \"string\" ? { type: status } : status;\n}\n\n// src/telemetry/create-telemetry-dispatcher.ts\nimport { asArray as asArray4 } from \"@ai-sdk/provider-utils\";\n\n// src/util/merge-callbacks.ts\nfunction mergeCallbacks(...callbacks) {\n return async (event) => {\n await Promise.allSettled(\n callbacks.map(async (callback) => {\n await (callback == null ? void 0 : callback(event));\n })\n );\n };\n}\n\n// src/telemetry/tracing-channel.ts\nvar AI_SDK_TELEMETRY_TRACING_CHANNEL = \"ai:telemetry\";\n\n// src/util/is-node-runtime.ts\nfunction isNodeRuntime() {\n var _a22;\n return typeof process !== \"undefined\" && ((_a22 = process.release) == null ? void 0 : _a22.name) === \"node\";\n}\n\n// src/telemetry/tracing-channel-publisher.ts\nvar diagnosticsChannelPromise;\nasync function loadDiagnosticsChannel() {\n if (!isNodeRuntime()) {\n return void 0;\n }\n if (diagnosticsChannelPromise == null) {\n diagnosticsChannelPromise = import(\n /* webpackIgnore: true */\n \"diagnostics_channel\"\n ).catch(() => void 0);\n }\n return diagnosticsChannelPromise;\n}\nfunction loadBuiltinModule(id) {\n var _a22;\n const processWithBuiltins = globalThis.process;\n try {\n return (_a22 = processWithBuiltins == null ? void 0 : processWithBuiltins.getBuiltinModule) == null ? void 0 : _a22.call(processWithBuiltins, id);\n } catch (e) {\n return void 0;\n }\n}\nasync function runWithTracingChannelSpan(message, execute) {\n var _a22;\n const diagnosticsChannel = await loadDiagnosticsChannel();\n const tracingChannel = (_a22 = diagnosticsChannel == null ? void 0 : diagnosticsChannel.tracingChannel) == null ? void 0 : _a22.call(\n diagnosticsChannel,\n AI_SDK_TELEMETRY_TRACING_CHANNEL\n );\n if (tracingChannel == null || tracingChannel.hasSubscribers === false) {\n return await execute();\n }\n let executePromise;\n let executionResult;\n let executionError;\n let hasExecutionResult = false;\n let hasExecutionError = false;\n const tracedExecute = () => {\n try {\n executePromise = Promise.resolve(execute());\n } catch (error) {\n executePromise = Promise.reject(error);\n }\n executePromise = executePromise.then(\n (result) => {\n executionResult = result;\n hasExecutionResult = true;\n return result;\n },\n (error) => {\n executionError = error;\n hasExecutionError = true;\n throw error;\n }\n );\n return executePromise;\n };\n try {\n return await tracingChannel.tracePromise(tracedExecute, message);\n } catch (e) {\n if (hasExecutionError) {\n throw executionError;\n }\n if (hasExecutionResult) {\n return executionResult;\n }\n if (executePromise != null) {\n return await executePromise;\n }\n return await execute();\n }\n}\nfunction openTelemetryChannelSpanContext({\n message,\n completion\n}) {\n var _a22;\n if (!isNodeRuntime()) {\n return void 0;\n }\n const diagnosticsChannel = loadBuiltinModule(\n \"node:diagnostics_channel\"\n );\n const asyncHooks = loadBuiltinModule(\"node:async_hooks\");\n const tracingChannel = (_a22 = diagnosticsChannel == null ? void 0 : diagnosticsChannel.tracingChannel) == null ? void 0 : _a22.call(\n diagnosticsChannel,\n AI_SDK_TELEMETRY_TRACING_CHANNEL\n );\n if (tracingChannel == null || tracingChannel.hasSubscribers === false || asyncHooks == null) {\n Promise.resolve(completion).catch(() => {\n });\n return void 0;\n }\n const context = message;\n let asyncResource;\n let asyncEndPublished = false;\n const safePublish = (publish) => {\n try {\n publish();\n } catch (e) {\n }\n };\n const publishAsyncEnd = ({\n result,\n error\n }) => {\n if (asyncEndPublished) {\n return;\n }\n asyncEndPublished = true;\n if (error !== void 0) {\n context.error = error;\n safePublish(() => tracingChannel.error.publish(context));\n }\n if (result !== void 0) {\n context.result = result;\n }\n safePublish(() => tracingChannel.asyncEnd.publish(context));\n };\n safePublish(() => {\n tracingChannel.start.runStores(context, () => {\n asyncResource = new asyncHooks.AsyncResource(\"ai.telemetry\");\n });\n });\n safePublish(() => tracingChannel.end.publish(context));\n void Promise.resolve(completion).then(\n (result) => publishAsyncEnd({ result }),\n (error) => publishAsyncEnd({ error })\n );\n return {\n run: (execute) => asyncResource == null ? execute() : asyncResource.runInAsyncScope(execute)\n };\n}\n\n// src/telemetry/telemetry-registry.ts\nfunction registerTelemetry(...integrations) {\n if (!globalThis.AI_SDK_TELEMETRY_INTEGRATIONS) {\n globalThis.AI_SDK_TELEMETRY_INTEGRATIONS = [];\n }\n globalThis.AI_SDK_TELEMETRY_INTEGRATIONS.push(...integrations);\n}\nfunction getGlobalTelemetryIntegrations() {\n var _a22;\n return (_a22 = globalThis.AI_SDK_TELEMETRY_INTEGRATIONS) != null ? _a22 : [];\n}\n\n// src/telemetry/create-telemetry-dispatcher.ts\nfunction augmentEvent(event, telemetry) {\n return Object.assign(\n Object.create(Object.getPrototypeOf(event)),\n event,\n telemetry\n );\n}\nfunction createTelemetryDispatcher({\n telemetry\n}) {\n if ((telemetry == null ? void 0 : telemetry.isEnabled) === false) {\n return {};\n }\n const localIntegrations = telemetry == null ? void 0 : telemetry.integrations;\n const integrations = localIntegrations != null ? asArray4(localIntegrations) : getGlobalTelemetryIntegrations();\n const telemetryMetadata = {\n recordInputs: telemetry == null ? void 0 : telemetry.recordInputs,\n recordOutputs: telemetry == null ? void 0 : telemetry.recordOutputs,\n functionId: telemetry == null ? void 0 : telemetry.functionId\n };\n const mergeTelemetryCallback = (key) => {\n const integrationCallbacks = integrations.map((integration) => {\n var _a22;\n return (_a22 = integration[key]) == null ? void 0 : _a22.bind(integration);\n }).filter(Boolean).map(\n (callback) => (event) => callback(augmentEvent(event, telemetryMetadata))\n );\n const mergedIntegrationCallback = mergeCallbacks(...integrationCallbacks);\n return async (event) => {\n await mergedIntegrationCallback(event);\n };\n };\n const executeLanguageModelCallWrappers = integrations.map((integration) => {\n var _a22;\n return (_a22 = integration.executeLanguageModelCall) == null ? void 0 : _a22.bind(integration);\n }).filter(Boolean);\n const executeToolWrappers = integrations.map((integration) => {\n var _a22;\n return (_a22 = integration.executeTool) == null ? void 0 : _a22.bind(integration);\n }).filter(Boolean);\n return {\n runInTracingChannelSpan: async ({ type, event, execute }) => await runWithTracingChannelSpan(\n {\n type,\n event: augmentEvent(event, telemetryMetadata)\n },\n execute\n ),\n startTracingChannelContext: ({ type, event, completion }) => openTelemetryChannelSpanContext({\n message: {\n type,\n event: augmentEvent(event, telemetryMetadata)\n },\n completion\n }),\n onStart: mergeTelemetryCallback(\"onStart\"),\n onStepStart: mergeTelemetryCallback(\"onStepStart\"),\n onLanguageModelCallStart: mergeTelemetryCallback(\n \"onLanguageModelCallStart\"\n ),\n onLanguageModelCallEnd: mergeTelemetryCallback(\"onLanguageModelCallEnd\"),\n onToolExecutionStart: mergeTelemetryCallback(\"onToolExecutionStart\"),\n onToolExecutionEnd: mergeTelemetryCallback(\"onToolExecutionEnd\"),\n // Fan out step-end events to both the new `onStepEnd` callback and the\n // deprecated `onStepFinish` callback so integrations that still implement\n // only `onStepFinish` keep receiving step-end events during the deprecation\n // window.\n onStepEnd: mergeCallbacks(\n mergeTelemetryCallback(\"onStepEnd\"),\n mergeTelemetryCallback(\"onStepFinish\")\n ),\n onObjectStepStart: mergeTelemetryCallback(\"onObjectStepStart\"),\n onObjectStepEnd: mergeTelemetryCallback(\"onObjectStepEnd\"),\n onEmbedStart: mergeTelemetryCallback(\"onEmbedStart\"),\n onEmbedEnd: mergeTelemetryCallback(\"onEmbedEnd\"),\n onRerankStart: mergeTelemetryCallback(\"onRerankStart\"),\n onRerankEnd: mergeTelemetryCallback(\"onRerankEnd\"),\n onEnd: mergeTelemetryCallback(\"onEnd\"),\n onAbort: mergeTelemetryCallback(\"onAbort\"),\n onError: mergeTelemetryCallback(\"onError\"),\n /**\n * Runs provider calls inside integration-specific context so\n * auto-instrumented provider requests can be associated with model work.\n */\n executeLanguageModelCall: async ({ execute, ...event }) => {\n const augmentedEvent = augmentEvent(event, telemetryMetadata);\n let wrappedExecute = execute;\n for (const executeWrapper of executeLanguageModelCallWrappers) {\n const innerExecute = wrappedExecute;\n wrappedExecute = () => executeWrapper({ ...augmentedEvent, execute: innerExecute });\n }\n return await runWithTracingChannelSpan(\n { type: \"languageModelCall\", event: augmentedEvent },\n wrappedExecute\n );\n },\n /**\n * Composes all `executeTool` wrappers around the original tool execution.\n * Each wrapper receives an `execute` function that calls the next wrapper in\n * the chain, so integrations can establish nested telemetry context before\n * delegating to the underlying tool.\n */\n executeTool: async ({ execute, ...event }) => {\n const augmentedEvent = augmentEvent(event, telemetryMetadata);\n let wrappedExecute = execute;\n for (const executeWrapper of executeToolWrappers) {\n const innerExecute = wrappedExecute;\n wrappedExecute = () => executeWrapper({ ...augmentedEvent, execute: innerExecute });\n }\n return await wrappedExecute();\n }\n };\n}\n\n// src/generate-text/reasoning.ts\nfunction asReasoningText(reasoningParts) {\n const reasoningText = reasoningParts.map((part) => \"text\" in part ? part.text : \"\").join(\"\");\n return reasoningText.length > 0 ? reasoningText : void 0;\n}\n\n// src/generate-text/step-result.ts\nvar DefaultStepResult = class {\n constructor({\n callId,\n stepNumber,\n provider,\n modelId,\n runtimeContext,\n toolsContext,\n content,\n finishReason,\n rawFinishReason,\n usage,\n performance,\n warnings,\n request,\n response,\n providerMetadata\n }) {\n this.callId = callId;\n this.stepNumber = stepNumber;\n this.model = { provider, modelId };\n this.runtimeContext = runtimeContext;\n this.toolsContext = toolsContext;\n this.content = content;\n this.finishReason = finishReason;\n this.rawFinishReason = rawFinishReason;\n this.usage = usage;\n this.performance = performance;\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 convertFromReasoningOutputs(\n this.content.filter(\n (part) => part.type === \"reasoning\" || part.type === \"reasoning-file\"\n )\n );\n }\n get reasoningText() {\n return asReasoningText(this.reasoning);\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/restricted-telemetry-dispatcher.ts\nfunction filterIncludedContext({\n context,\n includeContext\n}) {\n if (context == null) {\n return {};\n }\n return Object.fromEntries(\n Object.entries(context).filter(\n ([key]) => (includeContext == null ? void 0 : includeContext[key]) === true\n )\n );\n}\nfunction restrictStepResult({\n step,\n includeRuntimeContext,\n includeToolsContext\n}) {\n return new DefaultStepResult({\n callId: step.callId,\n stepNumber: step.stepNumber,\n provider: step.model.provider,\n modelId: step.model.modelId,\n runtimeContext: filterIncludedContext({\n context: step.runtimeContext,\n includeContext: includeRuntimeContext\n }),\n toolsContext: filterToolsContext({\n toolsContext: step.toolsContext,\n includeToolsContext\n }),\n content: step.content,\n finishReason: step.finishReason,\n rawFinishReason: step.rawFinishReason,\n usage: step.usage,\n performance: step.performance,\n warnings: step.warnings,\n request: step.request,\n response: step.response,\n providerMetadata: step.providerMetadata\n });\n}\nfunction filterToolsContext({\n toolsContext,\n includeToolsContext\n}) {\n if (includeToolsContext == null) {\n return {};\n }\n return Object.fromEntries(\n Object.entries(toolsContext).map(([toolName, toolContext]) => [\n toolName,\n filterToolContext({\n toolName,\n toolContext,\n includeToolsContext\n })\n ])\n );\n}\nfunction filterToolContext({\n toolName,\n toolContext,\n includeToolsContext\n}) {\n const includeToolContext = includeToolsContext == null ? void 0 : includeToolsContext[toolName];\n return filterIncludedContext({\n context: toolContext,\n includeContext: includeToolContext\n });\n}\nfunction createRestrictedTelemetryDispatcher({\n telemetry,\n includeRuntimeContext,\n includeToolsContext\n}) {\n const telemetryDispatcher = createTelemetryDispatcher({ telemetry });\n return {\n ...telemetryDispatcher,\n onStart: (event) => {\n var _a22;\n return (_a22 = telemetryDispatcher.onStart) == null ? void 0 : _a22.call(telemetryDispatcher, {\n ...event,\n runtimeContext: filterIncludedContext({\n context: event.runtimeContext,\n includeContext: includeRuntimeContext\n }),\n toolsContext: filterToolsContext({\n toolsContext: event.toolsContext,\n includeToolsContext\n })\n });\n },\n onStepStart: (event) => {\n var _a22;\n return (_a22 = telemetryDispatcher.onStepStart) == null ? void 0 : _a22.call(telemetryDispatcher, {\n ...event,\n runtimeContext: filterIncludedContext({\n context: event.runtimeContext,\n includeContext: includeRuntimeContext\n }),\n steps: event.steps.map(\n (step) => restrictStepResult({\n step,\n includeRuntimeContext,\n includeToolsContext\n })\n ),\n toolsContext: filterToolsContext({\n toolsContext: event.toolsContext,\n includeToolsContext\n })\n });\n },\n onStepEnd: (event) => {\n var _a22;\n return (_a22 = telemetryDispatcher.onStepEnd) == null ? void 0 : _a22.call(\n telemetryDispatcher,\n restrictStepResult({\n step: event,\n includeRuntimeContext,\n includeToolsContext\n })\n );\n },\n onStepFinish: (event) => {\n var _a22;\n return (_a22 = telemetryDispatcher.onStepEnd) == null ? void 0 : _a22.call(\n telemetryDispatcher,\n restrictStepResult({\n step: event,\n includeRuntimeContext,\n includeToolsContext\n })\n );\n },\n onEnd: (event) => {\n var _a22;\n return (_a22 = telemetryDispatcher.onEnd) == null ? void 0 : _a22.call(\n telemetryDispatcher,\n ((restrictedSteps) => {\n return {\n ...event,\n runtimeContext: filterIncludedContext({\n context: event.runtimeContext,\n includeContext: includeRuntimeContext\n }),\n steps: restrictedSteps,\n finalStep: restrictedSteps.at(-1),\n toolsContext: filterToolsContext({\n toolsContext: event.toolsContext,\n includeToolsContext\n })\n };\n })(\n event.steps.map(\n (step) => restrictStepResult({\n step,\n includeRuntimeContext,\n includeToolsContext\n })\n )\n )\n );\n },\n onAbort: (event) => {\n var _a22;\n return (_a22 = telemetryDispatcher.onAbort) == null ? void 0 : _a22.call(telemetryDispatcher, {\n ...event,\n steps: event.steps.map(\n (step) => restrictStepResult({\n step,\n includeRuntimeContext,\n includeToolsContext\n })\n )\n });\n },\n onToolExecutionStart: (event) => {\n var _a22;\n return (_a22 = telemetryDispatcher.onToolExecutionStart) == null ? void 0 : _a22.call(telemetryDispatcher, {\n ...event,\n toolContext: filterToolContext({\n toolName: event.toolCall.toolName,\n toolContext: event.toolContext,\n includeToolsContext\n })\n });\n },\n onToolExecutionEnd: (event) => {\n var _a22;\n return (_a22 = telemetryDispatcher.onToolExecutionEnd) == null ? void 0 : _a22.call(telemetryDispatcher, {\n ...event,\n toolContext: filterToolContext({\n toolName: event.toolCall.toolName,\n toolContext: event.toolContext,\n includeToolsContext\n })\n });\n }\n };\n}\n\n// src/generate-text/stop-condition.ts\nfunction isStepCount(stepCount) {\n return ({ steps }) => steps.length === stepCount;\n}\nfunction isLoopFinished() {\n return () => false;\n}\nfunction hasToolCall(...toolName) {\n return ({ steps }) => {\n var _a22, _b, _c;\n return (_c = (_b = (_a22 = steps[steps.length - 1]) == null ? void 0 : _a22.toolCalls) == null ? void 0 : _b.some(\n (toolCall) => toolName.includes(toolCall.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/generate-text/sum-token-counts.ts\nfunction sumTokenCounts(tokenCount1, tokenCount2) {\n return tokenCount1 == null && tokenCount2 == null ? void 0 : (tokenCount1 != null ? tokenCount1 : 0) + (tokenCount2 != null ? tokenCount2 : 0);\n}\n\n// src/generate-text/to-response-messages.ts\nasync function toResponseMessages({\n content: inputContent,\n tools\n}) {\n const responseMessages = [];\n const content = [];\n for (const part of inputContent) {\n if (part.type === \"source\") {\n continue;\n }\n if ((part.type === \"tool-result\" || part.type === \"tool-error\") && !part.providerExecuted) {\n continue;\n }\n if (part.type === \"text\" && part.text.length === 0) {\n continue;\n }\n switch (part.type) {\n case \"text\":\n content.push({\n type: \"text\",\n text: part.text,\n providerOptions: part.providerMetadata\n });\n break;\n case \"custom\":\n content.push({\n type: \"custom\",\n kind: part.kind,\n providerOptions: part.providerMetadata\n });\n break;\n case \"reasoning\":\n content.push({\n type: \"reasoning\",\n text: part.text,\n providerOptions: part.providerMetadata\n });\n break;\n case \"file\":\n content.push({\n type: \"file\",\n data: part.file.base64,\n mediaType: part.file.mediaType,\n providerOptions: part.providerMetadata\n });\n break;\n case \"reasoning-file\":\n content.push({\n type: \"reasoning-file\",\n data: part.file.base64,\n mediaType: part.file.mediaType,\n providerOptions: part.providerMetadata\n });\n break;\n case \"tool-call\":\n content.push({\n type: \"tool-call\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n input: part.invalid && typeof part.input !== \"object\" ? {} : part.input,\n providerExecuted: part.providerExecuted,\n providerOptions: part.providerMetadata\n });\n break;\n case \"tool-result\": {\n const output = await createToolModelOutput({\n toolCallId: part.toolCallId,\n input: part.input,\n tool: tools == null ? void 0 : tools[part.toolName],\n output: part.output,\n errorMode: \"none\"\n });\n content.push({\n type: \"tool-result\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n output,\n providerOptions: part.providerMetadata\n });\n break;\n }\n case \"tool-error\": {\n const output = await createToolModelOutput({\n toolCallId: part.toolCallId,\n input: part.input,\n tool: tools == null ? void 0 : tools[part.toolName],\n output: part.error,\n errorMode: \"json\"\n });\n content.push({\n type: \"tool-result\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n output,\n providerOptions: part.providerMetadata\n });\n break;\n }\n case \"tool-approval-request\":\n content.push({\n type: \"tool-approval-request\",\n approvalId: part.approvalId,\n toolCallId: part.toolCall.toolCallId,\n isAutomatic: part.isAutomatic,\n ...part.signature != null ? { signature: part.signature } : {}\n });\n break;\n }\n }\n if (content.length > 0) {\n responseMessages.push({\n role: \"assistant\",\n content\n });\n }\n const toolResultContent = [];\n for (const part of inputContent) {\n if (part.type !== \"tool-approval-response\" && part.type !== \"tool-result\" && part.type !== \"tool-error\") {\n continue;\n }\n if (part.type === \"tool-approval-response\") {\n toolResultContent.push({\n type: \"tool-approval-response\",\n approvalId: part.approvalId,\n approved: part.approved,\n reason: part.reason,\n providerExecuted: part.providerExecuted\n });\n if (part.approved === false) {\n toolResultContent.push({\n type: \"tool-result\",\n toolCallId: part.toolCall.toolCallId,\n toolName: part.toolCall.toolName,\n output: {\n type: \"execution-denied\",\n reason: part.reason\n }\n });\n }\n continue;\n }\n if (part.providerExecuted) {\n continue;\n }\n const output = await createToolModelOutput({\n toolCallId: part.toolCallId,\n input: part.input,\n tool: tools == null ? void 0 : tools[part.toolName],\n output: part.type === \"tool-result\" ? part.output : part.error,\n errorMode: part.type === \"tool-error\" ? \"text\" : \"none\"\n });\n toolResultContent.push({\n type: \"tool-result\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n output,\n ...part.providerMetadata != null ? { providerOptions: part.providerMetadata } : {}\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/tool-approval-signature.ts\nimport {\n convertBase64ToUint8Array as convertBase64ToUint8Array2,\n convertUint8ArrayToBase64 as convertUint8ArrayToBase642\n} from \"@ai-sdk/provider-utils\";\nvar encoder = new TextEncoder();\nfunction canonicalJSON(value) {\n if (value === null || value === void 0) {\n return JSON.stringify(value);\n }\n if (typeof value !== \"object\") {\n return JSON.stringify(value);\n }\n if (Array.isArray(value)) {\n return `[${value.map(canonicalJSON).join(\",\")}]`;\n }\n const keys = Object.keys(value).sort();\n const entries = keys.map(\n (k) => `${JSON.stringify(k)}:${canonicalJSON(value[k])}`\n );\n return `{${entries.join(\",\")}}`;\n}\nfunction toBase64url(bytes) {\n return convertUint8ArrayToBase642(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/g, \"\");\n}\nfunction fromBase64url(str) {\n return convertBase64ToUint8Array2(str);\n}\nasync function importKey(secret) {\n const keyData = typeof secret === \"string\" ? encoder.encode(secret) : secret;\n return crypto.subtle.importKey(\n \"raw\",\n keyData,\n { name: \"HMAC\", hash: \"SHA-256\" },\n false,\n [\"sign\", \"verify\"]\n );\n}\nasync function hashInput(input) {\n const canonical = canonicalJSON(input);\n const digest = await crypto.subtle.digest(\n \"SHA-256\",\n encoder.encode(canonical)\n );\n return toBase64url(new Uint8Array(digest));\n}\nfunction buildPayload(approvalId, toolCallId, toolName, inputDigest) {\n return encoder.encode(\n `${approvalId}\n${toolCallId}\n${toolName}\n${inputDigest}`\n );\n}\nasync function signToolApproval({\n secret,\n approvalId,\n toolCallId,\n toolName,\n input\n}) {\n const key = await importKey(secret);\n const inputDigest = await hashInput(input);\n const payload = buildPayload(approvalId, toolCallId, toolName, inputDigest);\n const sig = await crypto.subtle.sign(\"HMAC\", key, payload);\n return toBase64url(new Uint8Array(sig));\n}\nasync function verifyToolApprovalSignature({\n secret,\n signature,\n approvalId,\n toolCallId,\n toolName,\n input\n}) {\n const key = await importKey(secret);\n const inputDigest = await hashInput(input);\n const payload = buildPayload(approvalId, toolCallId, toolName, inputDigest);\n const sigBytes = fromBase64url(signature);\n return crypto.subtle.verify(\"HMAC\", key, sigBytes, payload);\n}\nasync function maybeSignApproval({\n secret,\n approvalId,\n toolCallId,\n toolName,\n input\n}) {\n if (secret == null)\n return void 0;\n return signToolApproval({ secret, approvalId, toolCallId, toolName, input });\n}\n\n// src/generate-text/validate-tool-approvals.ts\nimport {\n asSchema as asSchema4,\n isExecutableTool as isExecutableTool2,\n safeValidateTypes as safeValidateTypes4\n} from \"@ai-sdk/provider-utils\";\nasync function validateApprovedToolApprovals({\n approvedToolApprovals,\n tools,\n toolApproval,\n messages,\n toolsContext,\n runtimeContext,\n toolApprovalSecret\n}) {\n var _a22;\n const approved = [];\n const denied = [];\n for (const approval of approvedToolApprovals) {\n const { toolCall, approvalRequest } = approval;\n const tool2 = tools == null ? void 0 : tools[toolCall.toolName];\n if (toolApprovalSecret != null) {\n if (approvalRequest.signature == null) {\n throw new InvalidToolApprovalSignatureError({\n approvalId: approvalRequest.approvalId,\n toolCallId: toolCall.toolCallId,\n reason: \"missing signature\"\n });\n }\n const valid = await verifyToolApprovalSignature({\n secret: toolApprovalSecret,\n signature: approvalRequest.signature,\n approvalId: approvalRequest.approvalId,\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input: toolCall.input\n });\n if (!valid) {\n throw new InvalidToolApprovalSignatureError({\n approvalId: approvalRequest.approvalId,\n toolCallId: toolCall.toolCallId,\n reason: \"invalid signature\"\n });\n }\n }\n if (isExecutableTool2(tool2) && tool2.inputSchema != null) {\n const validation = await safeValidateTypes4({\n value: toolCall.input,\n schema: asSchema4(tool2.inputSchema)\n });\n if (!validation.success) {\n throw new InvalidToolInputError({\n toolName: toolCall.toolName,\n toolInput: JSON.stringify(toolCall.input),\n cause: validation.error\n });\n }\n }\n const approvalStatus = await resolveToolApproval({\n tools,\n toolApproval,\n toolCall,\n messages,\n toolsContext,\n runtimeContext\n });\n if (approvalStatus.type === \"denied\") {\n denied.push({\n ...approval,\n approvalResponse: {\n ...approval.approvalResponse,\n approved: false,\n reason: (_a22 = approvalStatus.reason) != null ? _a22 : approval.approvalResponse.reason\n }\n });\n } else {\n approved.push(approval);\n }\n }\n return { approvedToolApprovals: approved, deniedToolApprovals: denied };\n}\n\n// src/generate-text/generate-text.ts\nvar originalGenerateId = createIdGenerator({\n prefix: \"aitxt\",\n size: 24\n});\nvar originalGenerateCallId = createIdGenerator({\n prefix: \"call\",\n size: 24\n});\nasync function generateText({\n model: modelArg,\n tools,\n toolChoice,\n instructions,\n system,\n prompt,\n messages,\n allowSystemInMessages,\n maxRetries: maxRetriesArg,\n abortSignal,\n timeout,\n headers,\n stopWhen = isStepCount(1),\n experimental_sandbox: sandbox,\n output,\n toolApproval,\n experimental_toolApprovalSecret,\n experimental_telemetry,\n telemetry = experimental_telemetry,\n providerOptions,\n activeTools,\n toolOrder,\n prepareStep,\n experimental_repairToolCall: repairToolCall,\n experimental_refineToolInput: refineToolInput,\n experimental_download: download2,\n runtimeContext = {},\n toolsContext = {},\n experimental_include,\n include = experimental_include,\n _internal: {\n generateId: generateId2 = originalGenerateId,\n generateCallId = originalGenerateCallId,\n now: now2 = now\n } = {},\n onStart,\n experimental_onStart,\n onStepStart,\n experimental_onStepStart,\n onLanguageModelCallStart,\n experimental_onLanguageModelCallStart,\n onLanguageModelCallEnd,\n experimental_onLanguageModelCallEnd,\n onToolExecutionStart,\n onToolExecutionEnd,\n experimental_onToolCallStart,\n experimental_onToolCallFinish,\n onStepEnd,\n onStepFinish,\n onFinish,\n onEnd = onFinish,\n ...settings\n}) {\n var _a22, _b, _c, _d;\n include = {\n requestBody: (_a22 = include == null ? void 0 : include.requestBody) != null ? _a22 : false,\n requestMessages: (_b = include == null ? void 0 : include.requestMessages) != null ? _b : false,\n responseBody: (_c = include == null ? void 0 : include.responseBody) != null ? _c : false\n };\n const model = resolveLanguageModel(modelArg);\n const stopConditions = asArray5(stopWhen);\n const resolvedOnStart = onStart != null ? onStart : experimental_onStart;\n const resolvedOnStepStart = onStepStart != null ? onStepStart : experimental_onStepStart;\n const resolvedOnLanguageModelCallStart = onLanguageModelCallStart != null ? onLanguageModelCallStart : experimental_onLanguageModelCallStart;\n const resolvedOnLanguageModelCallEnd = onLanguageModelCallEnd != null ? onLanguageModelCallEnd : experimental_onLanguageModelCallEnd;\n const resolvedOnToolExecutionStart = onToolExecutionStart != null ? onToolExecutionStart : experimental_onToolCallStart;\n const resolvedOnToolExecutionEnd = onToolExecutionEnd != null ? onToolExecutionEnd : experimental_onToolCallFinish;\n const resolvedOnStepEnd = onStepEnd != null ? onStepEnd : onStepFinish;\n const totalTimeoutMs = getTotalTimeoutMs(timeout);\n const stepTimeoutMs = getStepTimeoutMs(timeout);\n const stepAbortController = stepTimeoutMs != null ? new AbortController() : void 0;\n const mergedAbortSignal = mergeAbortSignals(\n abortSignal,\n totalTimeoutMs,\n stepAbortController == null ? void 0 : stepAbortController.signal\n );\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal: mergedAbortSignal\n });\n const callSettings = prepareLanguageModelCallOptions(settings);\n const headersWithUserAgent = withUserAgentSuffix2(\n headers != null ? headers : {},\n `ai/${VERSION}`\n );\n const initialPrompt = await standardizePrompt({\n instructions,\n system,\n prompt,\n messages,\n allowSystemInMessages\n });\n const callId = generateCallId();\n const telemetryDispatcher = createRestrictedTelemetryDispatcher({\n telemetry,\n includeRuntimeContext: telemetry == null ? void 0 : telemetry.includeRuntimeContext,\n includeToolsContext: telemetry == null ? void 0 : telemetry.includeToolsContext\n });\n const runInTracingChannelSpan = (_d = telemetryDispatcher.runInTracingChannelSpan) != null ? _d : async ({ execute }) => await execute();\n const generateTextStartEvent = {\n callId,\n operationId: \"ai.generateText\",\n provider: model.provider,\n modelId: model.modelId,\n instructions: initialPrompt.instructions,\n messages: initialPrompt.messages,\n tools,\n toolChoice,\n activeTools,\n toolOrder,\n maxOutputTokens: callSettings.maxOutputTokens,\n temperature: callSettings.temperature,\n topP: callSettings.topP,\n topK: callSettings.topK,\n presencePenalty: callSettings.presencePenalty,\n frequencyPenalty: callSettings.frequencyPenalty,\n stopSequences: callSettings.stopSequences,\n seed: callSettings.seed,\n reasoning: callSettings.reasoning,\n maxRetries,\n timeout,\n headers: headersWithUserAgent,\n providerOptions,\n output,\n runtimeContext,\n toolsContext\n };\n const executeGenerateText = async () => {\n var _a23;\n await notify({\n event: generateTextStartEvent,\n callbacks: [resolvedOnStart, telemetryDispatcher.onStart]\n });\n try {\n const initialMessages = initialPrompt.messages;\n const initialResponseMessages = [];\n const {\n approvedToolApprovals,\n deniedToolApprovals: collectedDeniedToolApprovals\n } = collectToolApprovals({ messages: initialMessages });\n const {\n approvedToolApprovals: localApprovedToolApprovals,\n deniedToolApprovals: revalidationDeniedToolApprovals\n } = await validateApprovedToolApprovals({\n approvedToolApprovals: approvedToolApprovals.filter(\n (toolApproval2) => !toolApproval2.toolCall.providerExecuted\n ),\n tools,\n toolApproval,\n messages: initialMessages,\n toolsContext,\n runtimeContext,\n toolApprovalSecret: experimental_toolApprovalSecret\n });\n const deniedToolApprovals = [\n ...collectedDeniedToolApprovals,\n ...revalidationDeniedToolApprovals\n ];\n if (deniedToolApprovals.length > 0 || localApprovedToolApprovals.length > 0) {\n const toolResults2 = await executeTools({\n toolCalls: localApprovedToolApprovals.map(\n (toolApproval2) => toolApproval2.toolCall\n ),\n tools,\n callId,\n messages: initialMessages,\n abortSignal: mergedAbortSignal,\n timeout,\n experimental_sandbox: sandbox,\n toolsContext,\n onToolExecutionStart: (event) => notify({\n event,\n callbacks: [\n resolvedOnToolExecutionStart,\n telemetryDispatcher.onToolExecutionStart\n ]\n }),\n onToolExecutionEnd: (event) => notify({\n event,\n callbacks: [\n resolvedOnToolExecutionEnd,\n telemetryDispatcher.onToolExecutionEnd\n ]\n }),\n executeToolInTelemetryContext: telemetryDispatcher.executeTool,\n runInTracingChannelSpan\n });\n const toolContent = [];\n for (const result of toolResults2) {\n const output2 = result.output;\n const modelOutput = await createToolModelOutput({\n toolCallId: output2.toolCallId,\n input: output2.input,\n tool: tools == null ? void 0 : tools[output2.toolName],\n output: output2.type === \"tool-result\" ? output2.output : output2.error,\n errorMode: output2.type === \"tool-error\" ? \"text\" : \"none\"\n });\n toolContent.push({\n type: \"tool-result\",\n toolCallId: output2.toolCallId,\n toolName: output2.toolName,\n output: modelOutput\n });\n }\n for (const toolApproval2 of deniedToolApprovals) {\n toolContent.push({\n type: \"tool-result\",\n toolCallId: toolApproval2.toolCall.toolCallId,\n toolName: toolApproval2.toolCall.toolName,\n output: {\n type: \"execution-denied\",\n reason: toolApproval2.approvalResponse.reason,\n // For provider-executed tools, include approvalId so provider can correlate\n ...toolApproval2.toolCall.providerExecuted && {\n providerOptions: {\n openai: {\n approvalId: toolApproval2.approvalResponse.approvalId\n }\n }\n }\n }\n });\n }\n initialResponseMessages.push({\n role: \"tool\",\n content: toolContent\n });\n }\n const callSettings2 = prepareLanguageModelCallOptions(settings);\n let currentModelResponse;\n let clientToolCalls = [];\n let clientToolOutputs = [];\n let toolApprovalResponses = [];\n let deniedToolApprovalResponses = [];\n const steps = [];\n let instructionsForNextStep = initialPrompt.instructions;\n let messagesForNextStep = [\n ...initialMessages,\n ...initialResponseMessages\n ];\n const pendingDeferredToolCalls = /* @__PURE__ */ new Map();\n do {\n const stepTimeoutId = setAbortTimeout({\n abortController: stepAbortController,\n label: \"Step\",\n timeoutMs: stepTimeoutMs\n });\n const stepNumber = steps.length;\n try {\n await runInTracingChannelSpan({\n type: \"step\",\n event: { callId, stepNumber },\n execute: async () => {\n var _a24, _b2, _c2, _d2, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q;\n const accumulatedResponseMessages = [\n ...initialResponseMessages,\n ...steps.flatMap((step) => step.response.messages)\n ];\n const stepInputMessages = messagesForNextStep;\n const prepareStepResult = await (prepareStep == null ? void 0 : prepareStep({\n model,\n steps,\n stepNumber: steps.length,\n instructions: instructionsForNextStep,\n initialInstructions: initialPrompt.instructions,\n messages: stepInputMessages,\n initialMessages,\n responseMessages: accumulatedResponseMessages,\n runtimeContext,\n toolsContext,\n experimental_sandbox: sandbox\n }));\n const stepSandbox = (_a24 = prepareStepResult == null ? void 0 : prepareStepResult.experimental_sandbox) != null ? _a24 : sandbox;\n const stepModel = resolveLanguageModel(\n (_b2 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _b2 : model\n );\n const stepInstructions = (_d2 = (_c2 = prepareStepResult == null ? void 0 : prepareStepResult.instructions) != null ? _c2 : prepareStepResult == null ? void 0 : prepareStepResult.system) != null ? _d2 : instructionsForNextStep;\n const promptMessages = await convertToLanguageModelPrompt({\n prompt: {\n instructions: stepInstructions,\n messages: (_e = prepareStepResult == null ? void 0 : prepareStepResult.messages) != null ? _e : stepInputMessages\n },\n supportedUrls: await stepModel.supportedUrls,\n download: download2,\n provider: stepModel.provider.split(\".\")[0]\n });\n runtimeContext = (_f = prepareStepResult == null ? void 0 : prepareStepResult.runtimeContext) != null ? _f : runtimeContext;\n toolsContext = (_g = prepareStepResult == null ? void 0 : prepareStepResult.toolsContext) != null ? _g : toolsContext;\n const stepActiveTools = filterActiveTools({\n tools,\n activeTools: (_h = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _h : activeTools\n });\n const stepToolOrder = (_i = prepareStepResult == null ? void 0 : prepareStepResult.toolOrder) != null ? _i : toolOrder;\n const stepTools = await prepareTools({\n tools: stepActiveTools,\n toolOrder: stepToolOrder,\n // active tools context is a subset of the tools context, so we can cast to the unknown type\n toolsContext,\n experimental_sandbox: stepSandbox\n });\n const stepToolChoice = prepareToolChoice({\n toolChoice: (_j = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _j : toolChoice\n });\n const stepMessages = (_k = prepareStepResult == null ? void 0 : prepareStepResult.messages) != null ? _k : stepInputMessages;\n const stepProviderOptions = mergeObjects(\n providerOptions,\n prepareStepResult == null ? void 0 : prepareStepResult.providerOptions\n );\n await notify({\n event: {\n callId,\n provider: stepModel.provider,\n modelId: stepModel.modelId,\n stepNumber,\n instructions: stepInstructions,\n messages: stepMessages,\n tools,\n toolChoice: (_l = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _l : toolChoice,\n activeTools: (_m = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _m : activeTools,\n toolOrder: stepToolOrder,\n steps: [...steps],\n providerOptions: stepProviderOptions,\n output,\n runtimeContext,\n promptMessages,\n stepTools,\n stepToolChoice,\n toolsContext\n },\n callbacks: [\n resolvedOnStepStart,\n telemetryDispatcher.onStepStart\n ]\n });\n const languageModelCallContext = {\n provider: stepModel.provider,\n modelId: stepModel.modelId,\n instructions: stepInstructions,\n messages: stepMessages,\n tools: stepTools,\n ...callSettings2\n };\n const languageModelCallStartEvent = {\n callId,\n ...languageModelCallContext\n };\n const stepStartTimestampMs = now2();\n await notify({\n event: languageModelCallStartEvent,\n callbacks: [\n resolvedOnLanguageModelCallStart,\n telemetryDispatcher.onLanguageModelCallStart\n ]\n });\n const executeLanguageModelCallInTelemetryContext = (_n = telemetryDispatcher.executeLanguageModelCall) != null ? _n : async ({ execute }) => await execute();\n currentModelResponse = await retry(async () => {\n var _a25, _b3, _c3, _d3, _e2, _f2, _g2, _h2;\n const result = await executeLanguageModelCallInTelemetryContext(\n {\n ...languageModelCallStartEvent,\n execute: async () => await stepModel.doGenerate({\n ...callSettings2,\n tools: stepTools,\n toolChoice: stepToolChoice,\n responseFormat: await (output == null ? void 0 : output.responseFormat),\n prompt: promptMessages,\n providerOptions: stepProviderOptions,\n abortSignal: mergedAbortSignal,\n headers: headersWithUserAgent\n })\n }\n );\n const responseData = {\n id: (_b3 = (_a25 = result.response) == null ? void 0 : _a25.id) != null ? _b3 : generateId2(),\n timestamp: (_d3 = (_c3 = result.response) == null ? void 0 : _c3.timestamp) != null ? _d3 : /* @__PURE__ */ new Date(),\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: (_h2 = result.response) == null ? void 0 : _h2.body\n };\n return { ...result, response: responseData };\n });\n const responseTimeMs = now2() - stepStartTimestampMs;\n const stepUsage = asLanguageModelUsage(\n currentModelResponse.usage\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 refineToolInput,\n instructions: stepInstructions,\n messages: stepMessages\n })\n )\n );\n const toolApprovalRequests = {};\n const stepToolApprovalResponses = {};\n const blockedToolCallIds = /* @__PURE__ */ new Set();\n const modelCallContent = asContent({\n content: currentModelResponse.content,\n toolCalls: stepToolCalls,\n toolOutputs: [],\n toolApprovalRequests: [],\n toolApprovalResponses: [],\n tools\n });\n await notify({\n event: {\n callId,\n provider: stepModel.provider,\n modelId: stepModel.modelId,\n finishReason: currentModelResponse.finishReason.unified,\n usage: stepUsage,\n content: modelCallContent,\n responseId: currentModelResponse.response.id,\n performance: {\n responseTimeMs,\n effectiveOutputTokensPerSecond: calculateTokensPerSecond({\n tokens: stepUsage.outputTokens,\n durationMs: responseTimeMs\n }),\n outputTokensPerSecond: void 0,\n inputTokensPerSecond: void 0,\n effectiveTotalTokensPerSecond: calculateTokensPerSecond({\n tokens: sumTokenCounts(\n stepUsage.inputTokens,\n stepUsage.outputTokens\n ),\n durationMs: responseTimeMs\n }),\n timeToFirstOutputMs: void 0\n }\n },\n callbacks: [\n resolvedOnLanguageModelCallEnd,\n telemetryDispatcher.onLanguageModelCallEnd\n ]\n });\n for (const toolCall of stepToolCalls) {\n if (toolCall.invalid) {\n continue;\n }\n const tool2 = tools == null ? void 0 : tools[toolCall.toolName];\n if (tool2 == null) {\n continue;\n }\n if ((tool2 == null ? void 0 : tool2.onInputAvailable) != null) {\n await tool2.onInputAvailable({\n input: toolCall.input,\n toolCallId: toolCall.toolCallId,\n messages: stepMessages,\n abortSignal: mergedAbortSignal,\n context: runtimeContext\n });\n }\n const toolApprovalStatus = await resolveToolApproval({\n tools,\n toolApproval,\n toolCall,\n messages: stepMessages,\n toolsContext,\n runtimeContext\n });\n if (toolApprovalStatus.type === \"not-applicable\") {\n continue;\n }\n const approvalId = generateId2();\n const signature = await maybeSignApproval({\n secret: experimental_toolApprovalSecret,\n approvalId,\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input: toolCall.input\n });\n switch (toolApprovalStatus.type) {\n case \"user-approval\": {\n toolApprovalRequests[toolCall.toolCallId] = {\n type: \"tool-approval-request\",\n approvalId,\n toolCall,\n ...signature != null ? { signature } : {}\n };\n blockedToolCallIds.add(toolCall.toolCallId);\n break;\n }\n case \"approved\": {\n toolApprovalRequests[toolCall.toolCallId] = {\n type: \"tool-approval-request\",\n approvalId,\n toolCall,\n isAutomatic: true,\n ...signature != null ? { signature } : {}\n };\n stepToolApprovalResponses[toolCall.toolCallId] = {\n type: \"tool-approval-response\",\n approvalId,\n toolCall,\n approved: true,\n reason: toolApprovalStatus.reason,\n providerExecuted: toolCall.providerExecuted\n };\n break;\n }\n case \"denied\": {\n toolApprovalRequests[toolCall.toolCallId] = {\n type: \"tool-approval-request\",\n approvalId,\n toolCall,\n isAutomatic: true,\n ...signature != null ? { signature } : {}\n };\n stepToolApprovalResponses[toolCall.toolCallId] = {\n type: \"tool-approval-response\",\n approvalId,\n toolCall,\n approved: false,\n reason: toolApprovalStatus.reason,\n providerExecuted: toolCall.providerExecuted\n };\n blockedToolCallIds.add(toolCall.toolCallId);\n break;\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 toolApprovalResponses = Object.values(stepToolApprovalResponses);\n deniedToolApprovalResponses = toolApprovalResponses.filter(\n (toolApprovalResponse) => toolApprovalResponse.approved === false\n );\n const toolExecutionMs = {};\n if (tools != null) {\n const toolExecutionResults = await executeTools({\n toolCalls: clientToolCalls.filter(\n (toolCall) => !toolCall.invalid && !blockedToolCallIds.has(toolCall.toolCallId)\n ),\n tools,\n callId,\n messages: stepMessages,\n abortSignal: mergedAbortSignal,\n timeout,\n experimental_sandbox: stepSandbox,\n toolsContext,\n onToolExecutionStart: (event) => notify({\n event,\n callbacks: [\n resolvedOnToolExecutionStart,\n telemetryDispatcher.onToolExecutionStart\n ]\n }),\n onToolExecutionEnd: (event) => notify({\n event,\n callbacks: [\n resolvedOnToolExecutionEnd,\n telemetryDispatcher.onToolExecutionEnd\n ]\n }),\n executeToolInTelemetryContext: telemetryDispatcher.executeTool,\n runInTracingChannelSpan\n });\n for (const result of toolExecutionResults) {\n toolExecutionMs[result.output.toolCallId] = result.toolExecutionMs;\n clientToolOutputs.push(result.output);\n }\n }\n const stepTimeMs = now2() - stepStartTimestampMs;\n const stepPerformance = {\n effectiveOutputTokensPerSecond: calculateTokensPerSecond({\n tokens: stepUsage.outputTokens,\n durationMs: responseTimeMs\n }),\n outputTokensPerSecond: void 0,\n inputTokensPerSecond: void 0,\n effectiveTotalTokensPerSecond: calculateTokensPerSecond({\n tokens: sumTokenCounts(\n stepUsage.inputTokens,\n stepUsage.outputTokens\n ),\n durationMs: responseTimeMs\n }),\n stepTimeMs,\n responseTimeMs,\n toolExecutionMs,\n timeToFirstOutputMs: void 0\n };\n for (const toolCall of stepToolCalls) {\n if (!toolCall.providerExecuted)\n continue;\n const tool2 = tools == null ? void 0 : tools[toolCall.toolName];\n if ((tool2 == null ? void 0 : tool2.type) === \"provider\" && tool2.supportsDeferredResults) {\n const hasResultInResponse = currentModelResponse.content.some(\n (part) => part.type === \"tool-result\" && part.toolCallId === toolCall.toolCallId\n );\n if (!hasResultInResponse) {\n pendingDeferredToolCalls.set(toolCall.toolCallId, {\n toolName: toolCall.toolName\n });\n }\n }\n }\n for (const part of currentModelResponse.content) {\n if (part.type === \"tool-result\") {\n pendingDeferredToolCalls.delete(part.toolCallId);\n }\n }\n const stepContent = asContent({\n content: currentModelResponse.content,\n toolCalls: stepToolCalls,\n toolOutputs: clientToolOutputs,\n toolApprovalRequests: Object.values(toolApprovalRequests),\n toolApprovalResponses,\n tools\n });\n const stepResponseMessages = await toResponseMessages({\n content: stepContent,\n tools\n });\n const stepRequest = {\n ...currentModelResponse.request,\n body: include.requestBody ? (_o = currentModelResponse.request) == null ? void 0 : _o.body : void 0,\n messages: include.requestMessages ? cloneModelMessages(stepMessages) : void 0\n };\n const stepResponse = {\n ...currentModelResponse.response,\n // deep clone msgs to avoid mutating step results in multi-step:\n messages: cloneModelMessages(stepResponseMessages),\n // Conditionally include response body:\n body: include.responseBody ? (_p = currentModelResponse.response) == null ? void 0 : _p.body : void 0\n };\n const currentStepResult = new DefaultStepResult({\n callId,\n stepNumber,\n provider: stepModel.provider,\n modelId: stepModel.modelId,\n runtimeContext,\n content: stepContent,\n finishReason: currentModelResponse.finishReason.unified,\n rawFinishReason: currentModelResponse.finishReason.raw,\n usage: stepUsage,\n performance: stepPerformance,\n warnings: currentModelResponse.warnings,\n providerMetadata: currentModelResponse.providerMetadata,\n request: stepRequest,\n response: stepResponse,\n toolsContext\n });\n logWarnings({\n warnings: (_q = currentModelResponse.warnings) != null ? _q : [],\n provider: stepModel.provider,\n model: stepModel.modelId\n });\n steps.push(currentStepResult);\n instructionsForNextStep = stepInstructions;\n messagesForNextStep = [...stepMessages, ...stepResponseMessages];\n await notify({\n event: currentStepResult,\n callbacks: [resolvedOnStepEnd, telemetryDispatcher.onStepEnd]\n });\n return currentStepResult;\n }\n });\n } finally {\n if (stepTimeoutId != null) {\n clearTimeout(stepTimeoutId);\n }\n }\n } while (\n // Continue if:\n // 1. There are client tool calls that have all been executed or denied, OR\n // 2. There are pending deferred results from provider-executed tools\n (clientToolCalls.length > 0 && clientToolOutputs.length + deniedToolApprovalResponses.length === clientToolCalls.length || pendingDeferredToolCalls.size > 0) && // continue until a stop condition is met:\n !await isStopConditionMet({ stopConditions, steps })\n );\n const lastStep = steps[steps.length - 1];\n const totalUsage = steps.reduce(\n (totalUsage2, step) => {\n return addLanguageModelUsage(totalUsage2, step.usage);\n },\n {\n inputTokens: void 0,\n inputTokenDetails: {\n noCacheTokens: void 0,\n cacheReadTokens: void 0,\n cacheWriteTokens: void 0\n },\n outputTokens: void 0,\n outputTokenDetails: {\n textTokens: void 0,\n reasoningTokens: void 0\n },\n totalTokens: void 0\n }\n );\n const files = steps.flatMap((step) => step.files);\n const sources = steps.flatMap((step) => step.sources);\n const toolCalls = steps.flatMap((step) => step.toolCalls);\n const staticToolCalls = steps.flatMap((step) => step.staticToolCalls);\n const dynamicToolCalls = steps.flatMap((step) => step.dynamicToolCalls);\n const toolResults = steps.flatMap((step) => step.toolResults);\n const staticToolResults = steps.flatMap((step) => step.staticToolResults);\n const dynamicToolResults = steps.flatMap((step) => step.dynamicToolResults);\n const warnings = steps.flatMap((step) => {\n var _a24;\n return (_a24 = step.warnings) != null ? _a24 : [];\n });\n const onEndEvent = {\n callId,\n stepNumber: lastStep.stepNumber,\n model: lastStep.model,\n runtimeContext: lastStep.runtimeContext,\n finishReason: lastStep.finishReason,\n rawFinishReason: lastStep.rawFinishReason,\n usage: totalUsage,\n totalUsage,\n content: steps.flatMap((step) => step.content),\n text: lastStep.text,\n reasoning: lastStep.reasoning,\n reasoningText: lastStep.reasoningText,\n files,\n sources,\n toolCalls,\n staticToolCalls,\n dynamicToolCalls,\n toolResults,\n staticToolResults,\n dynamicToolResults,\n responseMessages: [\n ...initialResponseMessages,\n ...steps.flatMap((step) => step.response.messages)\n ],\n warnings,\n request: lastStep.request,\n response: lastStep.response,\n providerMetadata: lastStep.providerMetadata,\n steps,\n finalStep: lastStep,\n toolsContext\n };\n await notify({\n event: onEndEvent,\n callbacks: [onEnd, telemetryDispatcher.onEnd]\n });\n let resolvedOutput;\n if (lastStep.finishReason === \"stop\") {\n const outputSpecification = output != null ? output : text();\n resolvedOutput = await outputSpecification.parseCompleteOutput(\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 initialResponseMessages,\n steps,\n totalUsage,\n output: resolvedOutput\n });\n } catch (error) {\n await ((_a23 = telemetryDispatcher.onError) == null ? void 0 : _a23.call(telemetryDispatcher, { callId, error }));\n throw wrapGatewayError(error);\n }\n };\n return await runInTracingChannelSpan({\n type: \"generateText\",\n event: generateTextStartEvent,\n execute: executeGenerateText\n });\n}\nasync function executeTools({\n toolCalls,\n tools,\n callId,\n messages,\n abortSignal,\n timeout,\n experimental_sandbox: sandbox,\n toolsContext,\n onToolExecutionStart,\n onToolExecutionEnd,\n executeToolInTelemetryContext,\n runInTracingChannelSpan\n}) {\n const toolResults = await Promise.all(\n toolCalls.map(\n async (toolCall) => await executeToolCall({\n toolCall,\n tools,\n callId,\n messages,\n abortSignal,\n timeout,\n experimental_sandbox: sandbox,\n toolsContext,\n onToolExecutionStart,\n onToolExecutionEnd,\n executeToolInTelemetryContext,\n runInTracingChannelSpan\n })\n )\n );\n return toolResults.filter(\n (result) => result != null\n );\n}\nvar DefaultGenerateTextResult = class {\n constructor(options) {\n this.initialResponseMessages = options.initialResponseMessages;\n this.steps = options.steps;\n this._output = options.output;\n this.totalUsage = options.totalUsage;\n }\n get finalStep() {\n return this.steps.at(-1);\n }\n get content() {\n return this.steps.flatMap((step) => step.content);\n }\n get text() {\n return this.finalStep.text;\n }\n get files() {\n return this.steps.flatMap((step) => step.files);\n }\n get reasoningText() {\n return this.finalStep.reasoningText;\n }\n get reasoning() {\n return convertToReasoningOutputs(this.finalStep.reasoning);\n }\n get toolCalls() {\n return this.steps.flatMap((step) => step.toolCalls);\n }\n get staticToolCalls() {\n return this.steps.flatMap((step) => step.staticToolCalls);\n }\n get dynamicToolCalls() {\n return this.steps.flatMap((step) => step.dynamicToolCalls);\n }\n get toolResults() {\n return this.steps.flatMap((step) => step.toolResults);\n }\n get staticToolResults() {\n return this.steps.flatMap((step) => step.staticToolResults);\n }\n get dynamicToolResults() {\n return this.steps.flatMap((step) => step.dynamicToolResults);\n }\n get sources() {\n return this.steps.flatMap((step) => step.sources);\n }\n get finishReason() {\n return this.finalStep.finishReason;\n }\n get rawFinishReason() {\n return this.finalStep.rawFinishReason;\n }\n get warnings() {\n return this.steps.flatMap((step) => {\n var _a22;\n return (_a22 = step.warnings) != null ? _a22 : [];\n });\n }\n get providerMetadata() {\n return this.finalStep.providerMetadata;\n }\n get response() {\n return this.finalStep.response;\n }\n get responseMessages() {\n return [\n ...this.initialResponseMessages,\n ...this.steps.flatMap((step) => step.response.messages)\n ];\n }\n get request() {\n return this.finalStep.request;\n }\n get usage() {\n return this.totalUsage;\n }\n get output() {\n if (this._output == null) {\n throw new NoOutputGeneratedError();\n }\n return this._output;\n }\n};\nfunction asContent({\n content,\n toolCalls,\n toolOutputs,\n toolApprovalRequests,\n toolApprovalResponses,\n tools\n}) {\n const contentParts = [];\n const toolOutputsWithApprovalResponses = [];\n const toolOutputsWithoutApprovalResponses = [];\n const toolCallIdsWithApprovalResponses = new Set(\n toolApprovalResponses.map(\n (toolApprovalResponse) => toolApprovalResponse.toolCall.toolCallId\n )\n );\n for (const part of content) {\n switch (part.type) {\n case \"text\":\n case \"reasoning\":\n case \"custom\":\n case \"source\":\n contentParts.push(part);\n break;\n case \"file\":\n case \"reasoning-file\": {\n contentParts.push({\n type: part.type,\n file: new DefaultGeneratedFile({\n data: part.data.type === \"data\" ? part.data.data : part.data.url.toString(),\n mediaType: part.mediaType\n }),\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n });\n break;\n }\n case \"tool-call\": {\n contentParts.push(\n toolCalls.find((toolCall) => toolCall.toolCallId === part.toolCallId)\n );\n break;\n }\n case \"tool-result\": {\n const toolCall = toolCalls.find(\n (toolCall2) => toolCall2.toolCallId === part.toolCallId\n );\n if (toolCall == null) {\n const tool2 = tools == null ? void 0 : tools[part.toolName];\n const supportsDeferredResults = (tool2 == null ? void 0 : tool2.type) === \"provider\" && tool2.supportsDeferredResults;\n if (!supportsDeferredResults) {\n throw new Error(`Tool call ${part.toolCallId} not found.`);\n }\n if (part.isError) {\n contentParts.push({\n type: \"tool-error\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n input: void 0,\n error: part.result,\n providerExecuted: true,\n dynamic: part.dynamic,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {},\n ...(tool2 == null ? void 0 : tool2.metadata) != null ? { toolMetadata: tool2.metadata } : {}\n });\n } else {\n contentParts.push({\n type: \"tool-result\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n input: void 0,\n output: part.result,\n providerExecuted: true,\n dynamic: part.dynamic,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {},\n ...(tool2 == null ? void 0 : tool2.metadata) != null ? { toolMetadata: tool2.metadata } : {}\n });\n }\n break;\n }\n if (part.isError) {\n contentParts.push({\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 ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {},\n ...toolCall.toolMetadata != null ? { toolMetadata: toolCall.toolMetadata } : {}\n });\n } else {\n contentParts.push({\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 ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {},\n ...toolCall.toolMetadata != null ? { toolMetadata: toolCall.toolMetadata } : {}\n });\n }\n break;\n }\n case \"tool-approval-request\": {\n const toolCall = toolCalls.find(\n (toolCall2) => toolCall2.toolCallId === part.toolCallId\n );\n if (toolCall == null) {\n throw new ToolCallNotFoundForApprovalError({\n toolCallId: part.toolCallId,\n approvalId: part.approvalId\n });\n }\n contentParts.push({\n type: \"tool-approval-request\",\n approvalId: part.approvalId,\n toolCall\n });\n break;\n }\n }\n }\n for (const toolOutput of toolOutputs) {\n if (toolCallIdsWithApprovalResponses.has(toolOutput.toolCallId)) {\n toolOutputsWithApprovalResponses.push(toolOutput);\n } else {\n toolOutputsWithoutApprovalResponses.push(toolOutput);\n }\n }\n return [\n ...contentParts,\n ...toolOutputsWithoutApprovalResponses,\n ...toolApprovalRequests,\n ...toolApprovalResponses,\n ...toolOutputsWithApprovalResponses\n ];\n}\n\n// src/generate-text/stream-text.ts\nimport {\n getErrorMessage as getErrorMessage7,\n UnsupportedFunctionalityError as UnsupportedFunctionalityError2\n} from \"@ai-sdk/provider\";\nimport {\n asArray as asArray6,\n createIdGenerator as createIdGenerator3,\n DelayedPromise,\n filterNullable as filterNullable2,\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 stream\n}) {\n return new Response(stream.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 const statusCode = status != null ? status : 200;\n if (statusText !== void 0) {\n response.writeHead(statusCode, statusText, headers);\n } else {\n response.writeHead(statusCode, headers);\n }\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((resolve3) => {\n response.once(\"drain\", resolve3);\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 stream\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: stream.pipeThrough(new TextEncoderStream())\n });\n}\n\n// src/text-stream/to-text-stream.ts\nfunction toTextStream({\n stream\n}) {\n return stream.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// 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/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/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 { validateTypes as validateTypes2 } from \"@ai-sdk/provider-utils\";\n\n// src/ui-message-stream/ui-message-chunks.ts\nimport { z as z6 } from \"zod/v4\";\nimport { lazySchema, zodSchema } from \"@ai-sdk/provider-utils\";\nvar toolMetadataSchema = z6.record(\n z6.string(),\n jsonValueSchema.optional()\n);\nvar uiMessageChunkSchema = lazySchema(\n () => zodSchema(\n z6.union([\n z6.strictObject({\n type: z6.literal(\"text-start\"),\n id: z6.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z6.strictObject({\n type: z6.literal(\"text-delta\"),\n id: z6.string(),\n delta: z6.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z6.strictObject({\n type: z6.literal(\"text-end\"),\n id: z6.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z6.strictObject({\n type: z6.literal(\"error\"),\n errorText: z6.string()\n }),\n z6.strictObject({\n type: z6.literal(\"tool-input-start\"),\n toolCallId: z6.string(),\n toolName: z6.string(),\n providerExecuted: z6.boolean().optional(),\n providerMetadata: providerMetadataSchema.optional(),\n toolMetadata: toolMetadataSchema.optional(),\n dynamic: z6.boolean().optional(),\n title: z6.string().optional()\n }),\n z6.strictObject({\n type: z6.literal(\"tool-input-delta\"),\n toolCallId: z6.string(),\n inputTextDelta: z6.string()\n }),\n z6.strictObject({\n type: z6.literal(\"tool-input-available\"),\n toolCallId: z6.string(),\n toolName: z6.string(),\n input: z6.unknown(),\n providerExecuted: z6.boolean().optional(),\n providerMetadata: providerMetadataSchema.optional(),\n toolMetadata: toolMetadataSchema.optional(),\n dynamic: z6.boolean().optional(),\n title: z6.string().optional()\n }),\n z6.strictObject({\n type: z6.literal(\"tool-input-error\"),\n toolCallId: z6.string(),\n toolName: z6.string(),\n input: z6.unknown(),\n providerExecuted: z6.boolean().optional(),\n providerMetadata: providerMetadataSchema.optional(),\n toolMetadata: toolMetadataSchema.optional(),\n dynamic: z6.boolean().optional(),\n errorText: z6.string(),\n title: z6.string().optional()\n }),\n z6.strictObject({\n type: z6.literal(\"tool-approval-request\"),\n approvalId: z6.string(),\n toolCallId: z6.string(),\n isAutomatic: z6.boolean().optional(),\n signature: z6.string().optional()\n }),\n z6.strictObject({\n type: z6.literal(\"tool-approval-response\"),\n approvalId: z6.string(),\n approved: z6.boolean(),\n reason: z6.string().optional(),\n providerExecuted: z6.boolean().optional(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z6.strictObject({\n type: z6.literal(\"tool-output-available\"),\n toolCallId: z6.string(),\n output: z6.unknown(),\n providerExecuted: z6.boolean().optional(),\n providerMetadata: providerMetadataSchema.optional(),\n toolMetadata: toolMetadataSchema.optional(),\n dynamic: z6.boolean().optional(),\n preliminary: z6.boolean().optional()\n }),\n z6.strictObject({\n type: z6.literal(\"tool-output-error\"),\n toolCallId: z6.string(),\n errorText: z6.string(),\n providerExecuted: z6.boolean().optional(),\n providerMetadata: providerMetadataSchema.optional(),\n toolMetadata: toolMetadataSchema.optional(),\n dynamic: z6.boolean().optional()\n }),\n z6.strictObject({\n type: z6.literal(\"tool-output-denied\"),\n toolCallId: z6.string()\n }),\n z6.strictObject({\n type: z6.literal(\"reasoning-start\"),\n id: z6.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z6.strictObject({\n type: z6.literal(\"reasoning-delta\"),\n id: z6.string(),\n delta: z6.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z6.strictObject({\n type: z6.literal(\"reasoning-end\"),\n id: z6.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z6.strictObject({\n type: z6.literal(\"custom\"),\n kind: z6.string().transform((value) => value),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z6.strictObject({\n type: z6.literal(\"source-url\"),\n sourceId: z6.string(),\n url: z6.string(),\n title: z6.string().optional(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z6.strictObject({\n type: z6.literal(\"source-document\"),\n sourceId: z6.string(),\n mediaType: z6.string(),\n title: z6.string(),\n filename: z6.string().optional(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z6.strictObject({\n type: z6.literal(\"file\"),\n url: z6.string(),\n mediaType: z6.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z6.strictObject({\n type: z6.literal(\"reasoning-file\"),\n url: z6.string(),\n mediaType: z6.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z6.strictObject({\n type: z6.custom(\n (value) => typeof value === \"string\" && value.startsWith(\"data-\"),\n { message: 'Type must start with \"data-\"' }\n ),\n id: z6.string().optional(),\n data: z6.unknown(),\n transient: z6.boolean().optional()\n }),\n z6.strictObject({\n type: z6.literal(\"start-step\")\n }),\n z6.strictObject({\n type: z6.literal(\"finish-step\")\n }),\n z6.strictObject({\n type: z6.literal(\"start\"),\n messageId: z6.string().optional(),\n messageMetadata: z6.unknown().optional()\n }),\n z6.strictObject({\n type: z6.literal(\"finish\"),\n finishReason: z6.enum([\n \"stop\",\n \"length\",\n \"content-filter\",\n \"tool-calls\",\n \"error\",\n \"other\"\n ]).optional(),\n messageMetadata: z6.unknown().optional()\n }),\n z6.strictObject({\n type: z6.literal(\"abort\"),\n reason: z6.string().optional()\n }),\n z6.strictObject({\n type: z6.literal(\"message-metadata\"),\n messageMetadata: z6.unknown()\n })\n ])\n )\n);\nfunction isDataUIMessageChunk(chunk) {\n return chunk.type.startsWith(\"data-\");\n}\n\n// src/util/create-id-map.ts\nfunction createIdMap() {\n return /* @__PURE__ */ Object.create(null);\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 isCustomContentUIPart(part) {\n return part.type === \"custom\";\n}\nfunction isFileUIPart(part) {\n return part.type === \"file\";\n}\nfunction isReasoningFileUIPart(part) {\n return part.type === \"reasoning-file\";\n}\nfunction isReasoningUIPart(part) {\n return part.type === \"reasoning\";\n}\nfunction isStaticToolUIPart(part) {\n return part.type.startsWith(\"tool-\");\n}\nfunction isDynamicToolUIPart(part) {\n return part.type === \"dynamic-tool\";\n}\nfunction isToolUIPart(part) {\n return isStaticToolUIPart(part) || isDynamicToolUIPart(part);\n}\nfunction getStaticToolName(part) {\n return part.type.split(\"-\").slice(1).join(\"-\");\n}\nfunction getToolName(part) {\n return isDynamicToolUIPart(part) ? part.toolName : getStaticToolName(part);\n}\nvar getToolOrDynamicToolName = getToolName;\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: createIdMap(),\n activeReasoningParts: createIdMap(),\n partialToolCalls: createIdMap()\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 _a22, _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 UIMessageStreamError({\n chunkType: \"tool-invocation\",\n chunkId: toolCallId,\n message: `No tool invocation found for tool call ID \"${toolCallId}\".`\n });\n }\n return toolInvocation;\n }\n function getToolInvocationByApprovalId(approvalId) {\n const toolInvocations = state.message.parts.filter(isToolUIPart);\n const toolInvocation = toolInvocations.find(\n (invocation) => {\n var _a23;\n return ((_a23 = invocation.approval) == null ? void 0 : _a23.id) === approvalId;\n }\n );\n if (toolInvocation == null) {\n throw new UIMessageStreamError({\n chunkType: \"tool-approval-response\",\n chunkId: approvalId,\n message: `No tool invocation found for approval ID \"${approvalId}\".`\n });\n }\n return toolInvocation;\n }\n function updateToolPart(options) {\n var _a23;\n const part = state.message.parts.find(\n (part2) => isStaticToolUIPart(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 if (options.title !== void 0) {\n anyPart.title = options.title;\n }\n if (options.toolMetadata !== void 0) {\n anyPart.toolMetadata = options.toolMetadata;\n }\n anyPart.providerExecuted = (_a23 = anyOptions.providerExecuted) != null ? _a23 : part.providerExecuted;\n const providerMetadata = anyOptions.providerMetadata;\n if (providerMetadata != null) {\n if (options.state === \"output-available\" || options.state === \"output-error\") {\n const resultPart = part;\n resultPart.resultProviderMetadata = providerMetadata;\n } else {\n part.callProviderMetadata = providerMetadata;\n }\n }\n } else {\n state.message.parts.push({\n type: `tool-${options.toolName}`,\n toolCallId: options.toolCallId,\n state: options.state,\n title: options.title,\n ...options.toolMetadata !== void 0 ? { toolMetadata: options.toolMetadata } : {},\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 && (options.state === \"output-available\" || options.state === \"output-error\") ? { resultProviderMetadata: anyOptions.providerMetadata } : {},\n ...anyOptions.providerMetadata != null && !(options.state === \"output-available\" || options.state === \"output-error\") ? { callProviderMetadata: anyOptions.providerMetadata } : {}\n });\n }\n }\n function updateDynamicToolPart(options) {\n var _a23, _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 = (_a23 = anyOptions.rawInput) != null ? _a23 : anyPart.rawInput;\n anyPart.preliminary = anyOptions.preliminary;\n if (options.title !== void 0) {\n anyPart.title = options.title;\n }\n if (options.toolMetadata !== void 0) {\n anyPart.toolMetadata = options.toolMetadata;\n }\n anyPart.providerExecuted = (_b2 = anyOptions.providerExecuted) != null ? _b2 : part.providerExecuted;\n const providerMetadata = anyOptions.providerMetadata;\n if (providerMetadata != null) {\n if (options.state === \"output-available\" || options.state === \"output-error\") {\n const resultPart = part;\n resultPart.resultProviderMetadata = providerMetadata;\n } else {\n part.callProviderMetadata = providerMetadata;\n }\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 title: options.title,\n ...options.toolMetadata !== void 0 ? { toolMetadata: options.toolMetadata } : {},\n ...anyOptions.providerMetadata != null && (options.state === \"output-available\" || options.state === \"output-error\") ? { resultProviderMetadata: anyOptions.providerMetadata } : {},\n ...anyOptions.providerMetadata != null && !(options.state === \"output-available\" || options.state === \"output-error\") ? { 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 validateTypes2({\n value: mergedMetadata,\n schema: messageMetadataSchema,\n context: {\n field: \"message.metadata\",\n entityId: state.message.id\n }\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 if (textPart == null) {\n throw new UIMessageStreamError({\n chunkType: \"text-delta\",\n chunkId: chunk.id,\n message: `Received text-delta for missing text part with ID \"${chunk.id}\". Ensure a \"text-start\" chunk is sent before any \"text-delta\" chunks.`\n });\n }\n textPart.text += chunk.delta;\n textPart.providerMetadata = (_a22 = chunk.providerMetadata) != null ? _a22 : textPart.providerMetadata;\n write();\n break;\n }\n case \"text-end\": {\n const textPart = state.activeTextParts[chunk.id];\n if (textPart == null) {\n throw new UIMessageStreamError({\n chunkType: \"text-end\",\n chunkId: chunk.id,\n message: `Received text-end for missing text part with ID \"${chunk.id}\". Ensure a \"text-start\" chunk is sent before any \"text-end\" chunks.`\n });\n }\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 \"custom\": {\n const customPart = {\n type: \"custom\",\n kind: chunk.kind,\n providerMetadata: chunk.providerMetadata\n };\n state.message.parts.push(customPart);\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 if (reasoningPart == null) {\n throw new UIMessageStreamError({\n chunkType: \"reasoning-delta\",\n chunkId: chunk.id,\n message: `Received reasoning-delta for missing reasoning part with ID \"${chunk.id}\". Ensure a \"reasoning-start\" chunk is sent before any \"reasoning-delta\" chunks.`\n });\n }\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 if (reasoningPart == null) {\n throw new UIMessageStreamError({\n chunkType: \"reasoning-end\",\n chunkId: chunk.id,\n message: `Received reasoning-end for missing reasoning part with ID \"${chunk.id}\". Ensure a \"reasoning-start\" chunk is sent before any \"reasoning-end\" chunks.`\n });\n }\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 case \"reasoning-file\": {\n state.message.parts.push({\n type: chunk.type,\n mediaType: chunk.mediaType,\n url: chunk.url,\n ...chunk.providerMetadata != null ? { providerMetadata: chunk.providerMetadata } : {}\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(isStaticToolUIPart);\n state.partialToolCalls[chunk.toolCallId] = {\n text: \"\",\n toolName: chunk.toolName,\n index: toolInvocations.length,\n dynamic: chunk.dynamic,\n title: chunk.title,\n toolMetadata: chunk.toolMetadata\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 title: chunk.title,\n toolMetadata: chunk.toolMetadata,\n providerMetadata: chunk.providerMetadata\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 title: chunk.title,\n toolMetadata: chunk.toolMetadata,\n providerMetadata: chunk.providerMetadata\n });\n }\n write();\n break;\n }\n case \"tool-input-delta\": {\n const partialToolCall = state.partialToolCalls[chunk.toolCallId];\n if (partialToolCall == null) {\n throw new UIMessageStreamError({\n chunkType: \"tool-input-delta\",\n chunkId: chunk.toolCallId,\n message: `Received tool-input-delta for missing tool call with ID \"${chunk.toolCallId}\". Ensure a \"tool-input-start\" chunk is sent before any \"tool-input-delta\" chunks.`\n });\n }\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 title: partialToolCall.title,\n toolMetadata: partialToolCall.toolMetadata\n });\n } else {\n updateToolPart({\n toolCallId: chunk.toolCallId,\n toolName: partialToolCall.toolName,\n state: \"input-streaming\",\n input: partialArgs,\n title: partialToolCall.title,\n toolMetadata: partialToolCall.toolMetadata\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 title: chunk.title,\n toolMetadata: chunk.toolMetadata\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 title: chunk.title,\n toolMetadata: chunk.toolMetadata\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 const existingPart = state.message.parts.filter(isToolUIPart).find((p) => p.toolCallId === chunk.toolCallId);\n const isDynamic = existingPart != null ? existingPart.type === \"dynamic-tool\" : !!chunk.dynamic;\n if (isDynamic) {\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 toolMetadata: chunk.toolMetadata\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 toolMetadata: chunk.toolMetadata\n });\n }\n write();\n break;\n }\n case \"tool-approval-request\": {\n const toolInvocation = getToolInvocation(chunk.toolCallId);\n toolInvocation.state = \"approval-requested\";\n toolInvocation.approval = {\n id: chunk.approvalId,\n ...chunk.isAutomatic === true ? { isAutomatic: true } : {},\n ...chunk.signature != null ? { signature: chunk.signature } : {}\n };\n write();\n break;\n }\n case \"tool-approval-response\": {\n const toolInvocation = getToolInvocationByApprovalId(\n chunk.approvalId\n );\n const approval = toolInvocation.approval == null ? { id: chunk.approvalId } : toolInvocation.approval;\n toolInvocation.state = \"approval-responded\";\n toolInvocation.approval = {\n id: chunk.approvalId,\n approved: chunk.approved,\n ...chunk.reason != null ? { reason: chunk.reason } : {},\n ...approval.isAutomatic === true ? { isAutomatic: true } : {}\n };\n if (chunk.providerExecuted != null) {\n toolInvocation.providerExecuted = chunk.providerExecuted;\n }\n if (chunk.providerMetadata != null) {\n toolInvocation.callProviderMetadata = chunk.providerMetadata;\n }\n write();\n break;\n }\n case \"tool-output-denied\": {\n const toolInvocation = getToolInvocation(chunk.toolCallId);\n toolInvocation.state = \"output-denied\";\n write();\n break;\n }\n case \"tool-output-available\": {\n const toolInvocation = getToolInvocation(chunk.toolCallId);\n if (toolInvocation.type === \"dynamic-tool\") {\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 providerExecuted: chunk.providerExecuted,\n providerMetadata: chunk.providerMetadata,\n title: toolInvocation.title,\n toolMetadata: toolInvocation.toolMetadata\n });\n } else {\n updateToolPart({\n toolCallId: chunk.toolCallId,\n toolName: getStaticToolName(toolInvocation),\n state: \"output-available\",\n input: toolInvocation.input,\n output: chunk.output,\n providerExecuted: chunk.providerExecuted,\n preliminary: chunk.preliminary,\n providerMetadata: chunk.providerMetadata,\n title: toolInvocation.title,\n toolMetadata: toolInvocation.toolMetadata\n });\n }\n write();\n break;\n }\n case \"tool-output-error\": {\n const toolInvocation = getToolInvocation(chunk.toolCallId);\n if (toolInvocation.type === \"dynamic-tool\") {\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 providerMetadata: chunk.providerMetadata,\n title: toolInvocation.title,\n toolMetadata: toolInvocation.toolMetadata\n });\n } else {\n updateToolPart({\n toolCallId: chunk.toolCallId,\n toolName: getStaticToolName(toolInvocation),\n state: \"output-error\",\n input: toolInvocation.input,\n rawInput: toolInvocation.rawInput,\n errorText: chunk.errorText,\n providerExecuted: chunk.providerExecuted,\n providerMetadata: chunk.providerMetadata,\n title: toolInvocation.title,\n toolMetadata: toolInvocation.toolMetadata\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 = createIdMap();\n state.activeReasoningParts = createIdMap();\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 if (chunk.finishReason != null) {\n state.finishReason = chunk.finishReason;\n }\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 const partIdx = state.message.parts.findIndex(\n (p) => \"id\" in p && \"data\" in p && p.id === chunk.id && p.type === chunk.type\n );\n const actualPartIdx = partIdx >= 0 ? partIdx : state.message.parts.length;\n await validateTypes2({\n value: chunk.data,\n schema: dataPartSchemas[chunk.type],\n context: {\n field: `message.parts[${actualPartIdx}].data`,\n entityName: chunk.type,\n entityId: chunk.id\n }\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 onStepEnd,\n onStepFinish,\n onEnd,\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 const resolvedOnStepEnd = onStepEnd != null ? onStepEnd : onStepFinish;\n const resolvedOnEnd = onEnd != null ? onEnd : onFinish;\n if (resolvedOnEnd == null && resolvedOnStepEnd == 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 callOnEnd = async () => {\n if (finishCalled || !resolvedOnEnd) {\n return;\n }\n finishCalled = true;\n const isContinuation = state.message.id === (lastMessage == null ? void 0 : lastMessage.id);\n await resolvedOnEnd({\n isAborted,\n isContinuation,\n responseMessage: state.message,\n messages: [\n ...isContinuation ? originalMessages.slice(0, -1) : originalMessages,\n state.message\n ],\n finishReason: state.finishReason\n });\n };\n const callOnStepFinish = async () => {\n if (!resolvedOnStepEnd) {\n return;\n }\n const isContinuation = state.message.id === (lastMessage == null ? void 0 : lastMessage.id);\n try {\n await resolvedOnStepEnd({\n isContinuation,\n responseMessage: structuredClone(state.message),\n messages: [\n ...isContinuation ? originalMessages.slice(0, -1) : originalMessages,\n structuredClone(state.message)\n ]\n });\n } catch (error) {\n onError(error);\n }\n };\n return processUIMessageStream({\n stream: idInjectedStream,\n runUpdateMessageJob,\n onError\n }).pipeThrough(\n new TransformStream({\n async transform(chunk, controller) {\n if (chunk.type === \"finish-step\") {\n await callOnStepFinish();\n }\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 callOnEnd();\n },\n async flush() {\n await callOnEnd();\n }\n })\n );\n}\n\n// src/ui-message-stream/to-ui-message-chunk.ts\nfunction toUIMessageChunk(part, {\n tools,\n sendReasoning = true,\n sendSources = false,\n sendStart = true,\n sendFinish = true,\n onError = () => \"An error occurred.\",\n // prevent leaking server error details to the client by default\n messageMetadata,\n responseMessageId\n} = {}) {\n const isDynamic = (toolPart) => {\n const tool2 = tools == null ? void 0 : tools[toolPart.toolName];\n if (tool2 == null) {\n return toolPart.dynamic;\n }\n return (tool2 == null ? void 0 : tool2.type) === \"dynamic\" ? true : void 0;\n };\n const partType = part.type;\n switch (partType) {\n case \"text-start\": {\n return {\n type: \"text-start\",\n id: part.id,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n };\n }\n case \"text-delta\": {\n return {\n type: \"text-delta\",\n id: part.id,\n delta: part.text,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n };\n }\n case \"text-end\": {\n return {\n type: \"text-end\",\n id: part.id,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n };\n }\n case \"reasoning-start\":\n case \"reasoning-end\": {\n if (!sendReasoning) {\n return void 0;\n }\n return {\n type: partType,\n id: part.id,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n };\n }\n case \"reasoning-delta\": {\n if (!sendReasoning) {\n return void 0;\n }\n return {\n type: \"reasoning-delta\",\n id: part.id,\n delta: part.text,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n };\n }\n case \"file\":\n case \"reasoning-file\": {\n if (partType === \"reasoning-file\" && !sendReasoning) {\n return void 0;\n }\n return {\n type: part.type,\n mediaType: part.file.mediaType,\n url: `data:${part.file.mediaType};base64,${part.file.base64}`,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n };\n }\n case \"source\": {\n if (!sendSources) {\n return void 0;\n }\n if (part.sourceType === \"url\") {\n return {\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 (part.sourceType === \"document\") {\n return {\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 return void 0;\n }\n case \"custom\": {\n return {\n type: \"custom\",\n kind: part.kind,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n };\n }\n case \"tool-input-start\": {\n const dynamic = isDynamic(part);\n return {\n type: \"tool-input-start\",\n toolCallId: part.id,\n toolName: part.toolName,\n ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {},\n ...part.toolMetadata != null ? { toolMetadata: part.toolMetadata } : {},\n ...dynamic != null ? { dynamic } : {},\n ...part.title != null ? { title: part.title } : {}\n };\n }\n case \"tool-input-delta\": {\n return {\n type: \"tool-input-delta\",\n toolCallId: part.id,\n inputTextDelta: part.delta\n };\n }\n case \"tool-call\": {\n const dynamic = isDynamic(part);\n if (part.invalid) {\n return {\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 ...part.toolMetadata != null ? { toolMetadata: part.toolMetadata } : {},\n ...dynamic != null ? { dynamic } : {},\n errorText: onError(part.error),\n ...part.title != null ? { title: part.title } : {}\n };\n }\n return {\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 ...part.toolMetadata != null ? { toolMetadata: part.toolMetadata } : {},\n ...dynamic != null ? { dynamic } : {},\n ...part.title != null ? { title: part.title } : {}\n };\n }\n case \"tool-approval-request\": {\n return {\n type: \"tool-approval-request\",\n approvalId: part.approvalId,\n toolCallId: part.toolCall.toolCallId,\n ...part.isAutomatic != null ? { isAutomatic: part.isAutomatic } : {},\n ...part.signature != null ? { signature: part.signature } : {}\n };\n }\n case \"tool-approval-response\": {\n return {\n type: \"tool-approval-response\",\n approvalId: part.approvalId,\n approved: part.approved,\n ...part.reason != null ? { reason: part.reason } : {},\n ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {}\n };\n }\n case \"tool-result\": {\n const dynamic = isDynamic(part);\n return {\n type: \"tool-output-available\",\n toolCallId: part.toolCallId,\n // UI stream chunks are serialized as JSON, which drops undefined\n // properties. Use null so tool outputs always keep the output field.\n output: part.output === void 0 ? null : part.output,\n ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {},\n ...part.toolMetadata != null ? { toolMetadata: part.toolMetadata } : {},\n ...part.preliminary != null ? { preliminary: part.preliminary } : {},\n ...dynamic != null ? { dynamic } : {}\n };\n }\n case \"tool-error\": {\n const dynamic = isDynamic(part);\n return {\n type: \"tool-output-error\",\n toolCallId: part.toolCallId,\n errorText: part.providerExecuted ? typeof part.error === \"string\" ? part.error : JSON.stringify(part.error) : onError(part.error),\n ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {},\n ...part.toolMetadata != null ? { toolMetadata: part.toolMetadata } : {},\n ...dynamic != null ? { dynamic } : {}\n };\n }\n case \"tool-output-denied\": {\n return {\n type: \"tool-output-denied\",\n toolCallId: part.toolCallId\n };\n }\n case \"error\": {\n return {\n type: \"error\",\n errorText: onError(part.error)\n };\n }\n case \"start-step\": {\n return { type: \"start-step\" };\n }\n case \"finish-step\": {\n return { type: \"finish-step\" };\n }\n case \"start\": {\n if (!sendStart) {\n return void 0;\n }\n return {\n type: \"start\",\n ...messageMetadata != null ? { messageMetadata } : {},\n ...responseMessageId != null ? { messageId: responseMessageId } : {}\n };\n }\n case \"finish\": {\n if (!sendFinish) {\n return void 0;\n }\n return {\n type: \"finish\",\n finishReason: part.finishReason,\n ...messageMetadata != null ? { messageMetadata } : {}\n };\n }\n case \"abort\": {\n return part;\n }\n case \"tool-input-end\":\n case \"raw\": {\n return void 0;\n }\n default: {\n const exhaustiveCheck = partType;\n throw new Error(`Unknown chunk type: ${exhaustiveCheck}`);\n }\n }\n}\n\n// src/ui-message-stream/to-ui-message-stream.ts\nfunction toUIMessageStream({\n stream,\n tools,\n sendReasoning = true,\n sendSources = false,\n sendStart = true,\n sendFinish = true,\n onError = () => \"An error occurred.\",\n // prevent leaking server error details to the client by default\n messageMetadata,\n originalMessages,\n generateMessageId,\n onEnd,\n onFinish\n}) {\n const responseMessageId = generateMessageId != null ? getResponseUIMessageId({\n originalMessages,\n responseMessageId: generateMessageId\n }) : void 0;\n const uiMessageChunkStream = stream.pipeThrough(\n new TransformStream({\n transform: async (part, controller) => {\n const messageMetadataValue = messageMetadata == null ? void 0 : messageMetadata({ part });\n const uiMessageChunk = toUIMessageChunk(part, {\n tools,\n sendReasoning,\n sendSources,\n sendStart,\n sendFinish,\n onError,\n messageMetadata: messageMetadataValue,\n responseMessageId\n });\n if (uiMessageChunk != null) {\n controller.enqueue(uiMessageChunk);\n }\n if (messageMetadataValue != null && part.type !== \"start\" && part.type !== \"finish\") {\n controller.enqueue({\n type: \"message-metadata\",\n messageMetadata: messageMetadataValue\n });\n }\n }\n })\n );\n return handleUIMessageStreamFinish({\n stream: uiMessageChunkStream,\n messageId: responseMessageId != null ? responseMessageId : generateMessageId == null ? void 0 : generateMessageId(),\n originalMessages,\n onEnd: onEnd != null ? onEnd : onFinish,\n onError\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 _a22;\n if (finished)\n return;\n finished = true;\n try {\n if (cancelStream) {\n await ((_a22 = reader.cancel) == null ? void 0 : _a22.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 * May be called on early exit (e.g., break from for-await) or after completion.\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 resolve3;\n let reject;\n const promise = new Promise((res, rej) => {\n resolve3 = res;\n reject = rej;\n });\n return {\n promise,\n resolve: resolve3,\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 await processPull();\n }\n try {\n const { value, done } = await innerStreamReaders[0].read();\n if (done) {\n innerStreamReaders.shift();\n if (innerStreamReaders.length === 0 && isClosed) {\n controller == null ? void 0 : controller.close();\n } else {\n await processPull();\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/generate-text/execute-tools-from-stream.ts\nfunction executeToolsFromStream({\n stream,\n tools,\n callId,\n messages,\n abortSignal,\n timeout,\n experimental_sandbox: sandbox,\n toolsContext,\n toolApproval,\n runtimeContext,\n toolApprovalSecret,\n generateId: generateId2,\n onToolExecutionStart,\n onToolExecutionEnd,\n executeToolInTelemetryContext,\n runInTracingChannelSpan\n}) {\n const toolCallsToExecute = [];\n return stream.pipeThrough(\n new TransformStream({\n async transform(chunk, controller) {\n controller.enqueue(chunk);\n const chunkType = chunk.type;\n switch (chunkType) {\n case \"tool-call\": {\n if (chunk.invalid) {\n return;\n }\n const tool2 = tools == null ? void 0 : tools[chunk.toolName];\n if (tool2 == null) {\n return;\n }\n const toolApprovalStatus = await resolveToolApproval({\n tools,\n toolCall: chunk,\n toolApproval,\n messages,\n toolsContext,\n runtimeContext\n });\n if (toolApprovalStatus.type === \"not-applicable\") {\n if (tool2.execute != null && chunk.providerExecuted !== true) {\n toolCallsToExecute.push(chunk);\n }\n return;\n }\n const approvalId = generateId2();\n const signature = await maybeSignApproval({\n secret: toolApprovalSecret,\n approvalId,\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n input: chunk.input\n });\n switch (toolApprovalStatus.type) {\n case \"user-approval\": {\n controller.enqueue({\n type: \"tool-approval-request\",\n approvalId,\n toolCall: chunk,\n ...signature != null ? { signature } : {}\n });\n return;\n }\n case \"denied\": {\n controller.enqueue({\n type: \"tool-approval-request\",\n approvalId,\n toolCall: chunk,\n isAutomatic: true,\n ...signature != null ? { signature } : {}\n });\n controller.enqueue({\n type: \"tool-approval-response\",\n approvalId,\n approved: false,\n toolCall: chunk,\n reason: toolApprovalStatus.reason,\n providerExecuted: chunk.providerExecuted\n });\n return;\n }\n case \"approved\": {\n controller.enqueue({\n type: \"tool-approval-request\",\n approvalId,\n toolCall: chunk,\n isAutomatic: true,\n ...signature != null ? { signature } : {}\n });\n controller.enqueue({\n type: \"tool-approval-response\",\n approvalId,\n approved: true,\n toolCall: chunk,\n reason: toolApprovalStatus.reason,\n providerExecuted: chunk.providerExecuted\n });\n break;\n }\n }\n if (tool2.execute != null && chunk.providerExecuted !== true) {\n toolCallsToExecute.push(chunk);\n }\n return;\n }\n case \"model-call-end\": {\n await Promise.all(\n toolCallsToExecute.map(async (toolCall) => {\n try {\n const result = await executeToolCall({\n toolCall,\n tools,\n callId,\n messages,\n abortSignal,\n timeout,\n experimental_sandbox: sandbox,\n toolsContext,\n onToolExecutionStart,\n onToolExecutionEnd,\n executeToolInTelemetryContext,\n runInTracingChannelSpan,\n onPreliminaryToolResult: (result2) => {\n controller.enqueue(result2);\n }\n });\n if (result != null) {\n controller.enqueue({\n type: \"tool-execution-end\",\n toolCallId: result.output.toolCallId,\n toolExecutionMs: result.toolExecutionMs\n });\n controller.enqueue(result.output);\n }\n } catch (error) {\n controller.enqueue({\n type: \"error\",\n error\n });\n }\n })\n );\n return;\n }\n }\n }\n })\n );\n}\n\n// src/generate-text/invoke-tool-callbacks-from-stream.ts\nfunction invokeToolCallbacksFromStream({\n stream,\n tools,\n stepInputMessages,\n abortSignal,\n runtimeContext\n}) {\n if (tools == null)\n return stream;\n const ongoingToolCallToolNames = {};\n return stream.pipeThrough(\n new TransformStream({\n async transform(chunk, controller) {\n controller.enqueue(chunk);\n switch (chunk.type) {\n case \"tool-input-start\": {\n ongoingToolCallToolNames[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 context: runtimeContext\n });\n }\n break;\n }\n case \"tool-input-delta\": {\n const toolName = ongoingToolCallToolNames[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 context: runtimeContext\n });\n }\n break;\n }\n case \"tool-call\": {\n const toolName = ongoingToolCallToolNames[chunk.toolCallId];\n const tool2 = tools == null ? void 0 : tools[toolName];\n delete ongoingToolCallToolNames[chunk.toolCallId];\n if ((tool2 == null ? void 0 : tool2.onInputAvailable) != null) {\n await tool2.onInputAvailable({\n input: chunk.input,\n toolCallId: chunk.toolCallId,\n messages: stepInputMessages,\n abortSignal,\n context: runtimeContext\n });\n }\n }\n }\n }\n })\n );\n}\n\n// src/generate-text/stream-language-model-call.ts\nimport {\n getErrorMessage as getErrorMessage6\n} from \"@ai-sdk/provider\";\nimport {\n createIdGenerator as createIdGenerator2\n} from \"@ai-sdk/provider-utils\";\nvar originalGenerateId2 = createIdGenerator2({\n prefix: \"aitxt\",\n size: 24\n});\nvar originalGenerateCallId2 = createIdGenerator2({\n prefix: \"call\",\n size: 24\n});\nasync function streamLanguageModelCall({\n model,\n tools,\n toolOrder,\n output,\n toolChoice,\n prompt,\n system,\n instructions,\n messages,\n allowSystemInMessages,\n download: download2,\n abortSignal,\n headers,\n includeRawChunks,\n providerOptions,\n repairToolCall,\n refineToolInput,\n executeLanguageModelCallInTelemetryContext = async ({ execute }) => await execute(),\n callId,\n toolsContext,\n experimental_sandbox: sandbox,\n _internal: {\n generateId: generateId2 = originalGenerateId2,\n generateCallId = originalGenerateCallId2,\n now: now2 = now\n } = {},\n onStart,\n onLanguageModelCallStart,\n onLanguageModelCallEnd,\n ...callSettings\n}) {\n const resolvedModel = resolveLanguageModel(model);\n const effectiveCallId = callId != null ? callId : generateCallId();\n const standardizedPrompt = await standardizePrompt({\n instructions,\n system,\n prompt,\n messages,\n allowSystemInMessages\n });\n const promptMessages = await convertToLanguageModelPrompt({\n prompt: {\n instructions: standardizedPrompt.instructions,\n messages: standardizedPrompt.messages\n },\n supportedUrls: await resolvedModel.supportedUrls,\n download: download2,\n provider: resolvedModel.provider.split(\".\")[0]\n });\n const stepTools = await prepareTools({\n tools,\n toolOrder,\n toolsContext,\n experimental_sandbox: sandbox\n });\n const stepToolChoice = prepareToolChoice({\n toolChoice\n });\n await notify({\n event: { promptMessages },\n callbacks: onStart\n });\n const languageModelCallContext = {\n provider: resolvedModel.provider,\n modelId: resolvedModel.modelId,\n instructions: standardizedPrompt.instructions,\n messages: standardizedPrompt.messages,\n tools: stepTools,\n ...callSettings\n };\n const languageModelCallStartEvent = {\n callId: effectiveCallId,\n ...languageModelCallContext\n };\n await notify({\n event: languageModelCallStartEvent,\n callbacks: onLanguageModelCallStart\n });\n const callStartTimestampMs = now2();\n const {\n stream: languageModelStream,\n response,\n request\n } = await executeLanguageModelCallInTelemetryContext({\n ...languageModelCallStartEvent,\n execute: async () => await resolvedModel.doStream({\n ...callSettings,\n tools: stepTools,\n toolChoice: stepToolChoice,\n responseFormat: await (output == null ? void 0 : output.responseFormat),\n prompt: promptMessages,\n providerOptions,\n abortSignal,\n headers,\n includeRawChunks\n })\n });\n const standardizedStream = languageModelStream.pipeThrough(\n createLanguageModelV4StreamPartToLanguageModelStreamPartTransform({\n tools,\n instructions: standardizedPrompt.instructions,\n messages: standardizedPrompt.messages,\n repairToolCall,\n refineToolInput,\n callId: effectiveCallId,\n provider: resolvedModel.provider,\n modelId: resolvedModel.modelId,\n generateId: generateId2,\n now: now2,\n callStartTimestampMs,\n onLanguageModelCallEnd\n })\n );\n return {\n stream: createAsyncIterableStream(standardizedStream),\n response,\n request\n };\n}\nfunction createLanguageModelV4StreamPartToLanguageModelStreamPartTransform({\n tools,\n instructions,\n messages,\n repairToolCall,\n refineToolInput,\n callId,\n provider,\n modelId,\n generateId: generateId2,\n now: now2,\n callStartTimestampMs,\n onLanguageModelCallEnd\n}) {\n const toolCallsByToolCallId = /* @__PURE__ */ new Map();\n const modelCallContent = [];\n const textPartIndexes = /* @__PURE__ */ new Map();\n const reasoningPartIndexes = /* @__PURE__ */ new Map();\n let responseId = generateId2();\n let timeToFirstOutputMs;\n let previousOutputChunkTimestampMs;\n const timeBetweenOutputChunksMs = [];\n return new TransformStream({\n async transform(chunk, controller) {\n var _a22, _b;\n if (isOutputChunk(chunk)) {\n const outputChunkTimestampMs = now2();\n if (timeToFirstOutputMs == null) {\n timeToFirstOutputMs = outputChunkTimestampMs - callStartTimestampMs;\n } else if (previousOutputChunkTimestampMs != null) {\n timeBetweenOutputChunksMs.push(\n outputChunkTimestampMs - previousOutputChunkTimestampMs\n );\n }\n previousOutputChunkTimestampMs = outputChunkTimestampMs;\n }\n switch (chunk.type) {\n case \"text-start\":\n upsertTextContentPart({\n content: modelCallContent,\n partIndexes: textPartIndexes,\n id: chunk.id,\n type: \"text\",\n providerMetadata: chunk.providerMetadata\n });\n controller.enqueue(chunk);\n break;\n case \"text-delta\":\n upsertTextContentPart({\n content: modelCallContent,\n partIndexes: textPartIndexes,\n id: chunk.id,\n type: \"text\",\n textDelta: chunk.delta,\n providerMetadata: chunk.providerMetadata\n });\n controller.enqueue({\n type: \"text-delta\",\n id: chunk.id,\n text: chunk.delta,\n providerMetadata: chunk.providerMetadata\n });\n break;\n case \"text-end\":\n upsertTextContentPart({\n content: modelCallContent,\n partIndexes: textPartIndexes,\n id: chunk.id,\n type: \"text\",\n providerMetadata: chunk.providerMetadata\n });\n textPartIndexes.delete(chunk.id);\n controller.enqueue(chunk);\n break;\n case \"reasoning-start\":\n upsertTextContentPart({\n content: modelCallContent,\n partIndexes: reasoningPartIndexes,\n id: chunk.id,\n type: \"reasoning\",\n providerMetadata: chunk.providerMetadata\n });\n controller.enqueue(chunk);\n break;\n case \"reasoning-delta\":\n upsertTextContentPart({\n content: modelCallContent,\n partIndexes: reasoningPartIndexes,\n id: chunk.id,\n type: \"reasoning\",\n textDelta: chunk.delta,\n providerMetadata: chunk.providerMetadata\n });\n controller.enqueue({\n type: \"reasoning-delta\",\n id: chunk.id,\n text: chunk.delta,\n providerMetadata: chunk.providerMetadata\n });\n break;\n case \"reasoning-end\":\n upsertTextContentPart({\n content: modelCallContent,\n partIndexes: reasoningPartIndexes,\n id: chunk.id,\n type: \"reasoning\",\n providerMetadata: chunk.providerMetadata\n });\n reasoningPartIndexes.delete(chunk.id);\n controller.enqueue(chunk);\n break;\n case \"file\":\n case \"reasoning-file\": {\n const file = new DefaultGeneratedFileWithType({\n data: chunk.data.type === \"data\" ? chunk.data.data : chunk.data.url.toString(),\n mediaType: chunk.mediaType\n });\n modelCallContent.push({\n type: chunk.type,\n file,\n ...chunk.providerMetadata != null ? { providerMetadata: chunk.providerMetadata } : {}\n });\n controller.enqueue({\n type: chunk.type,\n file,\n providerMetadata: chunk.providerMetadata\n });\n break;\n }\n case \"finish\": {\n const usage = asLanguageModelUsage(chunk.usage);\n const responseTimeMs = now2() - callStartTimestampMs;\n const performance = {\n responseTimeMs,\n effectiveOutputTokensPerSecond: calculateTokensPerSecond({\n tokens: usage.outputTokens,\n durationMs: responseTimeMs\n }),\n outputTokensPerSecond: timeToFirstOutputMs == null ? void 0 : calculateTokensPerSecond({\n tokens: usage.outputTokens,\n durationMs: responseTimeMs - timeToFirstOutputMs\n }),\n inputTokensPerSecond: timeToFirstOutputMs == null ? void 0 : calculateTokensPerSecond({\n tokens: usage.inputTokens,\n durationMs: timeToFirstOutputMs\n }),\n effectiveTotalTokensPerSecond: calculateTokensPerSecond({\n tokens: sumTokenCounts(usage.inputTokens, usage.outputTokens),\n durationMs: responseTimeMs\n }),\n timeToFirstOutputMs,\n timeBetweenOutputChunksMs: timeBetweenOutputChunksMs.length > 0 ? calculateOutputChunkTimingStats(timeBetweenOutputChunksMs) : void 0\n };\n await notify({\n event: {\n callId,\n provider,\n modelId,\n finishReason: chunk.finishReason.unified,\n usage,\n content: modelCallContent,\n responseId,\n performance\n },\n callbacks: onLanguageModelCallEnd\n });\n controller.enqueue({\n type: \"model-call-end\",\n finishReason: chunk.finishReason.unified,\n rawFinishReason: chunk.finishReason.raw,\n usage,\n providerMetadata: chunk.providerMetadata,\n performance\n });\n break;\n }\n case \"tool-call\": {\n try {\n const toolCall = await parseToolCall({\n toolCall: chunk,\n tools,\n repairToolCall,\n refineToolInput,\n instructions,\n messages\n });\n toolCallsByToolCallId.set(toolCall.toolCallId, toolCall);\n controller.enqueue(toolCall);\n modelCallContent.push(toolCall);\n if (toolCall.invalid) {\n controller.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 title: toolCall.title,\n ...toolCall.toolMetadata != null ? { toolMetadata: toolCall.toolMetadata } : {}\n });\n break;\n }\n } catch (error) {\n controller.enqueue({ type: \"error\", error });\n }\n break;\n }\n case \"tool-approval-request\": {\n const toolCall = toolCallsByToolCallId.get(chunk.toolCallId);\n if (toolCall == null) {\n controller.enqueue({\n type: \"error\",\n error: new ToolCallNotFoundForApprovalError({\n toolCallId: chunk.toolCallId,\n approvalId: chunk.approvalId\n })\n });\n break;\n }\n const toolApprovalRequest = {\n type: \"tool-approval-request\",\n approvalId: chunk.approvalId,\n toolCall\n };\n controller.enqueue(toolApprovalRequest);\n modelCallContent.push(toolApprovalRequest);\n break;\n }\n case \"tool-result\": {\n const toolName = chunk.toolName;\n const toolCall = toolCallsByToolCallId.get(chunk.toolCallId);\n const toolResultPart = chunk.isError ? {\n type: \"tool-error\",\n toolCallId: chunk.toolCallId,\n toolName,\n input: toolCall == null ? void 0 : toolCall.input,\n providerExecuted: true,\n error: chunk.result,\n dynamic: chunk.dynamic,\n ...chunk.providerMetadata != null ? { providerMetadata: chunk.providerMetadata } : {},\n ...(toolCall == null ? void 0 : toolCall.toolMetadata) != null ? { toolMetadata: toolCall.toolMetadata } : {}\n } : {\n type: \"tool-result\",\n toolCallId: chunk.toolCallId,\n toolName,\n input: toolCall == null ? void 0 : toolCall.input,\n output: chunk.result,\n providerExecuted: true,\n dynamic: chunk.dynamic,\n ...chunk.providerMetadata != null ? { providerMetadata: chunk.providerMetadata } : {},\n ...(toolCall == null ? void 0 : toolCall.toolMetadata) != null ? { toolMetadata: toolCall.toolMetadata } : {}\n };\n controller.enqueue(toolResultPart);\n modelCallContent.push(toolResultPart);\n break;\n }\n case \"tool-input-start\": {\n const tool2 = tools == null ? void 0 : tools[chunk.toolName];\n controller.enqueue({\n ...chunk,\n dynamic: (_a22 = chunk.dynamic) != null ? _a22 : (tool2 == null ? void 0 : tool2.type) === \"dynamic\",\n title: tool2 == null ? void 0 : tool2.title,\n ...(tool2 == null ? void 0 : tool2.metadata) != null ? { toolMetadata: tool2.metadata } : {}\n });\n break;\n }\n case \"stream-start\": {\n controller.enqueue({\n type: \"model-call-start\",\n warnings: chunk.warnings\n });\n break;\n }\n case \"response-metadata\": {\n responseId = (_b = chunk.id) != null ? _b : responseId;\n controller.enqueue({\n type: \"model-call-response-metadata\",\n id: chunk.id,\n timestamp: chunk.timestamp,\n modelId: chunk.modelId\n });\n break;\n }\n default:\n if (chunk.type === \"custom\" || chunk.type === \"source\") {\n modelCallContent.push(chunk);\n }\n controller.enqueue(chunk);\n break;\n }\n }\n });\n}\nfunction isOutputChunk(chunk) {\n return chunk.type === \"text-delta\" && chunk.delta.length > 0 || chunk.type === \"reasoning-delta\" && chunk.delta.length > 0 || chunk.type === \"tool-input-delta\" && chunk.delta.length > 0 || chunk.type === \"file\" || chunk.type === \"reasoning-file\" || chunk.type === \"tool-call\";\n}\nfunction calculateOutputChunkTimingStats(timingsMs) {\n const sortedTimingsMs = [...timingsMs].sort((a, b) => a - b);\n const sum = timingsMs.reduce((sum2, timingMs) => sum2 + timingMs, 0);\n return {\n min: sortedTimingsMs[0],\n p10: calculateNearestRankPercentile(sortedTimingsMs, 0.1),\n median: calculateNearestRankPercentile(sortedTimingsMs, 0.5),\n avg: sum / timingsMs.length,\n p90: calculateNearestRankPercentile(sortedTimingsMs, 0.9),\n max: sortedTimingsMs[sortedTimingsMs.length - 1]\n };\n}\nfunction calculateNearestRankPercentile(sortedValues, percentile) {\n return sortedValues[Math.ceil(percentile * sortedValues.length) - 1];\n}\nfunction upsertTextContentPart({\n content,\n partIndexes,\n id,\n type,\n textDelta,\n providerMetadata\n}) {\n let partIndex = partIndexes.get(id);\n if (partIndex == null) {\n partIndex = content.push({\n type,\n text: \"\",\n ...providerMetadata != null ? { providerMetadata } : {}\n }) - 1;\n partIndexes.set(id, partIndex);\n }\n const part = content[partIndex];\n if (textDelta != null) {\n part.text += textDelta;\n }\n if (providerMetadata != null) {\n part.providerMetadata = providerMetadata;\n }\n}\n\n// src/generate-text/stream-text.ts\nvar originalGenerateId3 = createIdGenerator3({\n prefix: \"aitxt\",\n size: 24\n});\nvar originalGenerateCallId3 = createIdGenerator3({\n prefix: \"call\",\n size: 24\n});\nvar isOutputChunkType = {\n file: true,\n custom: true,\n source: true,\n \"text-start\": true,\n \"text-end\": true,\n \"text-delta\": true,\n \"reasoning-start\": true,\n \"reasoning-end\": true,\n \"reasoning-delta\": true,\n \"reasoning-file\": true,\n \"tool-input-start\": true,\n \"tool-input-end\": true,\n \"tool-input-delta\": true,\n \"tool-approval-request\": true,\n \"tool-approval-response\": true,\n \"tool-call\": true,\n \"tool-result\": true,\n \"tool-error\": true,\n \"tool-execution-end\": false,\n \"model-call-start\": false,\n \"model-call-response-metadata\": false,\n \"model-call-end\": false,\n error: false,\n raw: false\n};\nfunction streamText({\n model,\n tools,\n toolChoice,\n instructions,\n system,\n prompt,\n messages,\n allowSystemInMessages,\n maxRetries,\n abortSignal,\n timeout,\n headers,\n stopWhen = isStepCount(1),\n experimental_sandbox: sandbox,\n output,\n toolApproval,\n experimental_toolApprovalSecret,\n experimental_telemetry,\n telemetry = experimental_telemetry,\n prepareStep,\n providerOptions,\n activeTools,\n toolOrder,\n experimental_repairToolCall: repairToolCall,\n experimental_refineToolInput: refineToolInput,\n experimental_transform: transform,\n experimental_download: download2,\n includeRawChunks,\n onChunk,\n onError = ({ error }) => {\n console.error(error);\n },\n onFinish,\n onEnd = onFinish,\n onAbort,\n onStepEnd,\n onStepFinish,\n onStart,\n experimental_onStart,\n onStepStart,\n experimental_onStepStart,\n onLanguageModelCallStart,\n experimental_onLanguageModelCallStart,\n onLanguageModelCallEnd,\n experimental_onLanguageModelCallEnd,\n onToolExecutionStart,\n onToolExecutionEnd,\n experimental_onToolCallStart,\n experimental_onToolCallFinish,\n runtimeContext = {},\n toolsContext = {},\n experimental_include,\n include = experimental_include,\n _internal: {\n now: now2 = now,\n generateId: generateId2 = originalGenerateId3,\n generateCallId = originalGenerateCallId3\n } = {},\n ...settings\n}) {\n var _a22, _b, _c, _d;\n const totalTimeoutMs = getTotalTimeoutMs(timeout);\n const stepTimeoutMs = getStepTimeoutMs(timeout);\n const chunkTimeoutMs = getChunkTimeoutMs(timeout);\n const stepAbortController = stepTimeoutMs != null ? new AbortController() : void 0;\n const chunkAbortController = chunkTimeoutMs != null ? new AbortController() : void 0;\n const resolvedOnStart = onStart != null ? onStart : experimental_onStart;\n const resolvedOnStepStart = onStepStart != null ? onStepStart : experimental_onStepStart;\n const resolvedOnLanguageModelCallStart = onLanguageModelCallStart != null ? onLanguageModelCallStart : experimental_onLanguageModelCallStart;\n const resolvedOnLanguageModelCallEnd = onLanguageModelCallEnd != null ? onLanguageModelCallEnd : experimental_onLanguageModelCallEnd;\n const resolvedOnToolExecutionStart = onToolExecutionStart != null ? onToolExecutionStart : experimental_onToolCallStart;\n const resolvedOnToolExecutionEnd = onToolExecutionEnd != null ? onToolExecutionEnd : experimental_onToolCallFinish;\n const resolvedOnStepEnd = onStepEnd != null ? onStepEnd : onStepFinish;\n return new DefaultStreamTextResult({\n model: resolveLanguageModel(model),\n telemetry,\n headers,\n settings,\n maxRetries,\n abortSignal: mergeAbortSignals(\n abortSignal,\n totalTimeoutMs,\n stepAbortController == null ? void 0 : stepAbortController.signal,\n chunkAbortController == null ? void 0 : chunkAbortController.signal\n ),\n stepTimeoutMs,\n stepAbortController,\n chunkTimeoutMs,\n chunkAbortController,\n instructions,\n system,\n prompt,\n messages,\n allowSystemInMessages,\n experimental_sandbox: sandbox,\n tools,\n toolsContext,\n runtimeContext,\n toolChoice,\n transforms: asArray6(transform),\n activeTools,\n toolOrder,\n repairToolCall,\n refineToolInput,\n stopConditions: asArray6(stopWhen),\n output,\n toolApproval,\n experimental_toolApprovalSecret,\n providerOptions,\n prepareStep,\n timeout,\n onChunk,\n onError,\n onEnd,\n onAbort,\n onStepFinish: resolvedOnStepEnd,\n onStart: resolvedOnStart,\n onStepStart: resolvedOnStepStart,\n onLanguageModelCallStart: resolvedOnLanguageModelCallStart,\n onLanguageModelCallEnd: resolvedOnLanguageModelCallEnd,\n onToolExecutionStart: resolvedOnToolExecutionStart,\n onToolExecutionEnd: resolvedOnToolExecutionEnd,\n now: now2,\n generateId: generateId2,\n generateCallId,\n download: download2,\n // assign default values to include:\n include: {\n requestBody: (_a22 = include == null ? void 0 : include.requestBody) != null ? _a22 : false,\n requestMessages: (_b = include == null ? void 0 : include.requestMessages) != null ? _b : false,\n rawChunks: (_d = (_c = include == null ? void 0 : include.rawChunks) != null ? _c : includeRawChunks) != null ? _d : false\n }\n });\n}\nasync function markPromiseAsHandled(promise) {\n try {\n await promise;\n } catch (e) {\n }\n}\nfunction createOutputTransformStream(output) {\n let firstTextChunkId = void 0;\n let text2 = \"\";\n let textChunk = \"\";\n let textProviderMetadata = void 0;\n let lastPublishedValue = \"\";\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 providerMetadata: textProviderMetadata\n },\n partialOutput\n });\n textChunk = \"\";\n }\n return new TransformStream({\n async transform(chunk, controller) {\n var _a22;\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 textProviderMetadata = (_a22 = chunk.providerMetadata) != null ? _a22 : textProviderMetadata;\n const result = await output.parsePartialOutput({ text: text2 });\n if (result !== void 0) {\n const currentValue = typeof result.partial === \"string\" ? result.partial : JSON.stringify(result.partial);\n if (currentValue !== lastPublishedValue) {\n publishTextChunk({ controller, partialOutput: result.partial });\n lastPublishedValue = currentValue;\n }\n }\n }\n });\n}\nvar DefaultStreamTextResult = class {\n constructor({\n model,\n telemetry,\n headers,\n settings,\n maxRetries: maxRetriesArg,\n abortSignal,\n stepTimeoutMs,\n stepAbortController,\n chunkTimeoutMs,\n chunkAbortController,\n instructions,\n system,\n prompt,\n messages,\n allowSystemInMessages,\n experimental_sandbox: sandbox,\n tools,\n toolChoice,\n transforms,\n activeTools,\n toolOrder,\n repairToolCall,\n refineToolInput,\n stopConditions,\n output,\n toolApproval,\n experimental_toolApprovalSecret,\n providerOptions,\n prepareStep,\n now: now2,\n generateId: generateId2,\n generateCallId,\n timeout,\n onChunk,\n onError,\n onEnd,\n onAbort,\n onStepFinish,\n onStart,\n onStepStart,\n onLanguageModelCallStart,\n onLanguageModelCallEnd,\n onToolExecutionStart,\n onToolExecutionEnd,\n runtimeContext,\n toolsContext,\n download: download2,\n include\n }) {\n this._totalUsage = new DelayedPromise();\n this._finishReason = new DelayedPromise();\n this._rawFinishReason = new DelayedPromise();\n this._steps = new DelayedPromise();\n this._initialResponseMessages = new DelayedPromise();\n this.outputSpecification = output;\n this.tools = tools;\n const telemetryDispatcher = createRestrictedTelemetryDispatcher({\n telemetry,\n includeRuntimeContext: telemetry == null ? void 0 : telemetry.includeRuntimeContext,\n includeToolsContext: telemetry == null ? void 0 : telemetry.includeToolsContext\n });\n let stepFinish;\n let recordedContent = [];\n let recordedFinishReason = void 0;\n let recordedRawFinishReason = void 0;\n let recordedTotalUsage = void 0;\n let recordedRequest = {};\n let recordedRequestMessages = [];\n let recordedWarnings = [];\n const recordedSteps = [];\n const initialResponseMessages = [];\n let stepMessagesForNextStep;\n let currentStepMessages = [];\n const pendingDeferredToolCalls = /* @__PURE__ */ new Map();\n let activeTextContent = createIdMap();\n let activeReasoningContent = createIdMap();\n let recordedNoOutputError;\n const eventProcessor = new TransformStream({\n async transform(chunk, controller) {\n var _a22, _b, _c, _d;\n controller.enqueue(chunk);\n const { part } = chunk;\n await (onChunk == null ? void 0 : onChunk({ chunk: part }));\n if (part.type === \"error\") {\n const error = wrapGatewayError(part.error);\n if (NoOutputGeneratedError.isInstance(error)) {\n recordedNoOutputError = error;\n }\n await onError({ error });\n }\n if (part.type === \"custom\" || part.type === \"source\" || part.type === \"tool-call\" || part.type === \"tool-approval-request\" || part.type === \"tool-approval-response\" || part.type === \"tool-error\") {\n recordedContent.push(part);\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 = (_a22 = part.providerMetadata) != null ? _a22 : 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\" || part.type === \"reasoning-file\") {\n recordedContent.push({\n type: part.type,\n file: part.file,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n });\n }\n if (part.type === \"tool-result\" && !part.preliminary) {\n recordedContent.push(part);\n }\n if (part.type === \"start-step\") {\n recordedContent = [];\n activeReasoningContent = createIdMap();\n activeTextContent = createIdMap();\n recordedRequest = part.request;\n recordedWarnings = part.warnings;\n }\n if (part.type === \"finish-step\") {\n const stepResponseMessages = await toResponseMessages({\n content: recordedContent,\n tools\n });\n const currentStepResult = new DefaultStepResult({\n callId,\n stepNumber: recordedSteps.length,\n provider: model.provider,\n modelId: model.modelId,\n runtimeContext,\n toolsContext,\n content: recordedContent,\n finishReason: part.finishReason,\n rawFinishReason: part.rawFinishReason,\n usage: part.usage,\n performance: part.performance,\n warnings: recordedWarnings,\n request: {\n ...recordedRequest,\n messages: include.requestMessages ? cloneModelMessages(recordedRequestMessages) : void 0\n },\n response: {\n ...part.response,\n messages: cloneModelMessages(stepResponseMessages)\n },\n providerMetadata: part.providerMetadata\n });\n await notify({\n event: currentStepResult,\n callbacks: [onStepFinish, telemetryDispatcher.onStepEnd]\n });\n logWarnings({\n warnings: recordedWarnings,\n provider: model.provider,\n model: model.modelId\n });\n recordedSteps.push(currentStepResult);\n stepMessagesForNextStep = [\n ...currentStepMessages,\n ...stepResponseMessages\n ];\n stepFinish.resolve();\n }\n if (part.type === \"finish\") {\n recordedTotalUsage = part.totalUsage;\n recordedFinishReason = part.finishReason;\n recordedRawFinishReason = part.rawFinishReason;\n }\n },\n async flush(controller) {\n try {\n if (recordedSteps.length === 0 || recordedNoOutputError != null) {\n const error = (abortSignal == null ? void 0 : abortSignal.aborted) ? abortSignal.reason : recordedNoOutputError != null ? recordedNoOutputError : new NoOutputGeneratedError({\n message: \"No output generated. Check the stream for errors.\"\n });\n self.rejectResultPromises(error);\n return;\n }\n const finishReason = recordedFinishReason != null ? recordedFinishReason : \"other\";\n const totalUsage = recordedTotalUsage != null ? recordedTotalUsage : createNullLanguageModelUsage();\n self._finishReason.resolve(finishReason);\n self._rawFinishReason.resolve(recordedRawFinishReason);\n self._totalUsage.resolve(totalUsage);\n self._steps.resolve(recordedSteps);\n const finalStep = recordedSteps[recordedSteps.length - 1];\n const content = recordedSteps.flatMap((step) => step.content);\n const files = recordedSteps.flatMap((step) => step.files);\n const sources = recordedSteps.flatMap((step) => step.sources);\n const toolCalls = recordedSteps.flatMap((step) => step.toolCalls);\n const staticToolCalls = recordedSteps.flatMap(\n (step) => step.staticToolCalls\n );\n const dynamicToolCalls = recordedSteps.flatMap(\n (step) => step.dynamicToolCalls\n );\n const toolResults = recordedSteps.flatMap((step) => step.toolResults);\n const staticToolResults = recordedSteps.flatMap(\n (step) => step.staticToolResults\n );\n const dynamicToolResults = recordedSteps.flatMap(\n (step) => step.dynamicToolResults\n );\n const warnings = recordedSteps.flatMap((step) => {\n var _a22;\n return (_a22 = step.warnings) != null ? _a22 : [];\n });\n await notify({\n event: {\n callId,\n toolsContext: finalStep.toolsContext,\n stepNumber: finalStep.stepNumber,\n model: finalStep.model,\n runtimeContext: finalStep.runtimeContext,\n finishReason: finalStep.finishReason,\n rawFinishReason: finalStep.rawFinishReason,\n usage: totalUsage,\n totalUsage,\n content,\n text: finalStep.text,\n reasoning: finalStep.reasoning,\n reasoningText: finalStep.reasoningText,\n files,\n sources,\n toolCalls,\n staticToolCalls,\n dynamicToolCalls,\n toolResults,\n staticToolResults,\n dynamicToolResults,\n responseMessages: [\n ...initialResponseMessages,\n ...recordedSteps.flatMap((step) => step.response.messages)\n ],\n warnings,\n request: finalStep.request,\n response: finalStep.response,\n providerMetadata: finalStep.providerMetadata,\n steps: recordedSteps,\n finalStep\n },\n callbacks: [onEnd, telemetryDispatcher.onEnd]\n });\n } catch (error) {\n controller.error(error);\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 async function abort() {\n await notify({\n event: {\n callId,\n steps: recordedSteps,\n ...(abortSignal == null ? void 0 : abortSignal.reason) !== void 0 ? { reason: abortSignal.reason } : {}\n },\n callbacks: [onAbort, telemetryDispatcher.onAbort]\n });\n controller.enqueue({\n type: \"abort\",\n // The `reason` is usually of type DOMException, but it can also be of any type,\n // so we use getErrorMessage for serialization because it is already designed to accept values of the unknown type.\n // See: https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/reason\n ...(abortSignal == null ? void 0 : abortSignal.reason) !== void 0 ? { reason: getErrorMessage7(abortSignal.reason) } : {}\n });\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 await abort();\n return;\n }\n controller.enqueue(value);\n } catch (error) {\n if (isAbortError2(error) && (abortSignal == null ? void 0 : abortSignal.aborted)) {\n await abort();\n } else {\n controller.error(error);\n }\n }\n },\n cancel(reason) {\n return stitchableStream.stream.cancel(reason);\n }\n });\n let isRunning = true;\n stream = stream.pipeThrough(\n new TransformStream({\n async transform(chunk, controller) {\n if (isRunning) {\n controller.enqueue(chunk);\n }\n }\n })\n );\n for (const transform of transforms) {\n stream = stream.pipeThrough(\n transform({\n tools,\n stopStream() {\n stitchableStream.terminate();\n isRunning = false;\n }\n })\n );\n }\n this.baseStream = stream.pipeThrough(createOutputTransformStream(output != null ? output : text())).pipeThrough(eventProcessor);\n const { maxRetries } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const callSettings = prepareLanguageModelCallOptions(settings);\n const self = this;\n const callId = generateCallId();\n (async () => {\n var _a22;\n const initialPrompt = await standardizePrompt({\n instructions,\n system,\n prompt,\n messages,\n allowSystemInMessages\n });\n const startEvent = {\n callId,\n operationId: \"ai.streamText\",\n provider: model.provider,\n modelId: model.modelId,\n instructions: initialPrompt.instructions,\n messages: initialPrompt.messages,\n tools,\n toolChoice,\n activeTools,\n toolOrder,\n maxOutputTokens: callSettings.maxOutputTokens,\n temperature: callSettings.temperature,\n topP: callSettings.topP,\n topK: callSettings.topK,\n presencePenalty: callSettings.presencePenalty,\n frequencyPenalty: callSettings.frequencyPenalty,\n stopSequences: callSettings.stopSequences,\n seed: callSettings.seed,\n reasoning: callSettings.reasoning,\n maxRetries,\n timeout,\n headers,\n providerOptions,\n output,\n runtimeContext,\n toolsContext\n };\n const streamTextTracingChannelContext = (_a22 = telemetryDispatcher.startTracingChannelContext) == null ? void 0 : _a22.call(telemetryDispatcher, {\n type: \"streamText\",\n event: startEvent,\n completion: self._totalUsage.promise.then(() => void 0)\n });\n const runInStreamTextTracingChannelContext = (execute) => {\n var _a23;\n return (_a23 = streamTextTracingChannelContext == null ? void 0 : streamTextTracingChannelContext.run(execute)) != null ? _a23 : execute();\n };\n await notify({\n event: startEvent,\n callbacks: [onStart, telemetryDispatcher.onStart]\n });\n const initialMessages = initialPrompt.messages;\n let instructionsForNextStep = initialPrompt.instructions;\n const { approvedToolApprovals, deniedToolApprovals } = collectToolApprovals({ messages: initialMessages });\n if (deniedToolApprovals.length > 0 || approvedToolApprovals.length > 0) {\n const {\n approvedToolApprovals: localApprovedToolApprovals,\n deniedToolApprovals: revalidationDeniedToolApprovals\n } = await validateApprovedToolApprovals({\n approvedToolApprovals: approvedToolApprovals.filter(\n (toolApproval2) => !toolApproval2.toolCall.providerExecuted\n ),\n tools,\n toolApproval,\n messages: initialMessages,\n toolsContext,\n runtimeContext,\n toolApprovalSecret: experimental_toolApprovalSecret\n });\n const localDeniedToolApprovals = [\n ...deniedToolApprovals.filter(\n (toolApproval2) => !toolApproval2.toolCall.providerExecuted\n ),\n ...revalidationDeniedToolApprovals\n ];\n const deniedProviderExecutedToolApprovals = deniedToolApprovals.filter(\n (toolApproval2) => toolApproval2.toolCall.providerExecuted\n );\n let toolExecutionStepStreamController;\n const toolExecutionStepStream = new ReadableStream({\n start(controller) {\n toolExecutionStepStreamController = controller;\n }\n });\n self.addStream(toolExecutionStepStream);\n try {\n for (const toolApproval2 of [\n ...localDeniedToolApprovals,\n ...deniedProviderExecutedToolApprovals\n ]) {\n toolExecutionStepStreamController == null ? void 0 : toolExecutionStepStreamController.enqueue({\n type: \"tool-output-denied\",\n toolCallId: toolApproval2.toolCall.toolCallId,\n toolName: toolApproval2.toolCall.toolName\n });\n }\n const toolOutputs = [];\n await Promise.all(\n localApprovedToolApprovals.map(async (toolApproval2) => {\n const result = await executeToolCall({\n toolCall: toolApproval2.toolCall,\n tools,\n callId,\n messages: initialMessages,\n abortSignal,\n timeout,\n experimental_sandbox: sandbox,\n toolsContext,\n onToolExecutionStart: filterNullable2(\n onToolExecutionStart,\n telemetryDispatcher.onToolExecutionStart\n ),\n onToolExecutionEnd: filterNullable2(\n onToolExecutionEnd,\n telemetryDispatcher.onToolExecutionEnd\n ),\n executeToolInTelemetryContext: telemetryDispatcher.executeTool,\n runInTracingChannelSpan: telemetryDispatcher.runInTracingChannelSpan,\n onPreliminaryToolResult: (result2) => {\n toolExecutionStepStreamController == null ? void 0 : toolExecutionStepStreamController.enqueue(result2);\n }\n });\n if (result != null) {\n toolExecutionStepStreamController == null ? void 0 : toolExecutionStepStreamController.enqueue(result.output);\n toolOutputs.push(result.output);\n }\n })\n );\n if (toolOutputs.length > 0 || localDeniedToolApprovals.length > 0) {\n const localToolContent = [];\n for (const output2 of toolOutputs) {\n localToolContent.push({\n type: \"tool-result\",\n toolCallId: output2.toolCallId,\n toolName: output2.toolName,\n output: await createToolModelOutput({\n toolCallId: output2.toolCallId,\n input: output2.input,\n tool: tools == null ? void 0 : tools[output2.toolName],\n output: output2.type === \"tool-result\" ? output2.output : output2.error,\n errorMode: output2.type === \"tool-error\" ? \"text\" : \"none\"\n })\n });\n }\n for (const toolApproval2 of localDeniedToolApprovals) {\n localToolContent.push({\n type: \"tool-result\",\n toolCallId: toolApproval2.toolCall.toolCallId,\n toolName: toolApproval2.toolCall.toolName,\n output: {\n type: \"execution-denied\",\n reason: toolApproval2.approvalResponse.reason\n }\n });\n }\n initialResponseMessages.push({\n role: \"tool\",\n content: localToolContent\n });\n }\n } finally {\n toolExecutionStepStreamController == null ? void 0 : toolExecutionStepStreamController.close();\n }\n }\n self._initialResponseMessages.resolve(initialResponseMessages);\n async function streamStep({\n currentStep,\n usage\n }) {\n var _a23, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;\n const stepTimeoutId = setAbortTimeout({\n abortController: stepAbortController,\n label: \"Step\",\n timeoutMs: stepTimeoutMs\n });\n let chunkTimeoutId = void 0;\n function resetChunkTimeout() {\n if (chunkTimeoutId != null) {\n clearTimeout(chunkTimeoutId);\n }\n chunkTimeoutId = setAbortTimeout({\n abortController: chunkAbortController,\n label: \"Chunk\",\n timeoutMs: chunkTimeoutMs\n });\n }\n function clearChunkTimeout() {\n if (chunkTimeoutId != null) {\n clearTimeout(chunkTimeoutId);\n chunkTimeoutId = void 0;\n }\n }\n function clearStepTimeout() {\n if (stepTimeoutId != null) {\n clearTimeout(stepTimeoutId);\n }\n }\n abortSignal == null ? void 0 : abortSignal.addEventListener(\"abort\", clearStepTimeout);\n abortSignal == null ? void 0 : abortSignal.addEventListener(\"abort\", clearChunkTimeout);\n try {\n stepFinish = new DelayedPromise();\n const stepTracingChannelContext = (_a23 = telemetryDispatcher.startTracingChannelContext) == null ? void 0 : _a23.call(telemetryDispatcher, {\n type: \"step\",\n event: { callId, stepNumber: currentStep },\n completion: stepFinish.promise\n });\n const runInStepTracingChannelContext = (execute) => {\n var _a24;\n return (_a24 = stepTracingChannelContext == null ? void 0 : stepTracingChannelContext.run(execute)) != null ? _a24 : execute();\n };\n const responseMessagesFromPreviousSteps = recordedSteps.flatMap(\n (step) => step.response.messages\n );\n const accumulatedResponseMessages = [\n ...initialResponseMessages,\n ...responseMessagesFromPreviousSteps\n ];\n const stepInputMessages = stepMessagesForNextStep != null ? stepMessagesForNextStep : [\n ...initialMessages,\n ...initialResponseMessages\n ];\n const prepareStepResult = await (prepareStep == null ? void 0 : prepareStep({\n model,\n steps: recordedSteps,\n stepNumber: recordedSteps.length,\n instructions: instructionsForNextStep,\n initialInstructions: initialPrompt.instructions,\n messages: stepInputMessages,\n initialMessages,\n responseMessages: accumulatedResponseMessages,\n toolsContext,\n runtimeContext,\n experimental_sandbox: sandbox\n }));\n const stepSandbox = (_b = prepareStepResult == null ? void 0 : prepareStepResult.experimental_sandbox) != null ? _b : sandbox;\n runtimeContext = (_c = prepareStepResult == null ? void 0 : prepareStepResult.runtimeContext) != null ? _c : runtimeContext;\n toolsContext = (_d = prepareStepResult == null ? void 0 : prepareStepResult.toolsContext) != null ? _d : toolsContext;\n const stepModel = resolveLanguageModel(\n (_e = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _e : model\n );\n const stepActiveTools = filterActiveTools({\n tools,\n activeTools: (_f = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _f : activeTools\n });\n const stepToolOrder = (_g = prepareStepResult == null ? void 0 : prepareStepResult.toolOrder) != null ? _g : toolOrder;\n const stepTools = await prepareTools({\n tools: stepActiveTools,\n toolOrder: stepToolOrder,\n // active tools context is a subset of the tools context, so we can cast to the unknown type\n toolsContext,\n experimental_sandbox: stepSandbox\n });\n const stepToolChoice = prepareToolChoice({\n toolChoice: (_h = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _h : toolChoice\n });\n const stepMessages = (_i = prepareStepResult == null ? void 0 : prepareStepResult.messages) != null ? _i : stepInputMessages;\n currentStepMessages = stepMessages;\n const stepInstructions = (_k = (_j = prepareStepResult == null ? void 0 : prepareStepResult.instructions) != null ? _j : prepareStepResult == null ? void 0 : prepareStepResult.system) != null ? _k : instructionsForNextStep;\n instructionsForNextStep = stepInstructions;\n const stepProviderOptions = mergeObjects(\n providerOptions,\n prepareStepResult == null ? void 0 : prepareStepResult.providerOptions\n );\n const stepStartTimestampMs = now2();\n const { retry } = prepareRetries({ maxRetries, abortSignal });\n const {\n stream: languageModelStream,\n request,\n response\n } = await runInStepTracingChannelContext(\n () => retry(\n async () => {\n var _a24, _b2;\n return streamLanguageModelCall({\n model: (_a24 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a24 : model,\n tools: stepActiveTools,\n toolOrder: stepToolOrder,\n toolChoice: (_b2 = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _b2 : toolChoice,\n instructions: stepInstructions,\n messages: stepMessages,\n allowSystemInMessages,\n repairToolCall,\n refineToolInput,\n abortSignal,\n headers,\n includeRawChunks: include.rawChunks,\n providerOptions: stepProviderOptions,\n download: download2,\n output,\n callId,\n executeLanguageModelCallInTelemetryContext: telemetryDispatcher.executeLanguageModelCall,\n toolsContext,\n experimental_sandbox: stepSandbox,\n onLanguageModelCallStart: filterNullable2(\n onLanguageModelCallStart,\n telemetryDispatcher.onLanguageModelCallStart\n ),\n onLanguageModelCallEnd: filterNullable2(\n onLanguageModelCallEnd,\n telemetryDispatcher.onLanguageModelCallEnd\n ),\n onStart: async ({ promptMessages }) => {\n var _a25, _b3;\n await notify({\n event: {\n callId,\n provider: stepModel.provider,\n modelId: stepModel.modelId,\n stepNumber: recordedSteps.length,\n instructions: stepInstructions,\n messages: stepMessages,\n tools,\n toolChoice: (_a25 = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _a25 : toolChoice,\n activeTools: (_b3 = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _b3 : activeTools,\n toolOrder: stepToolOrder,\n steps: [...recordedSteps],\n providerOptions: stepProviderOptions,\n runtimeContext,\n toolsContext,\n output,\n promptMessages,\n stepTools,\n stepToolChoice\n },\n callbacks: [onStepStart, telemetryDispatcher.onStepStart]\n });\n },\n _internal: {\n now: now2\n },\n ...callSettings\n });\n }\n )\n );\n const streamAfterToolCallbackInvocation = invokeToolCallbacksFromStream({\n stream: languageModelStream,\n tools,\n stepInputMessages: stepMessages,\n abortSignal,\n runtimeContext\n });\n const runInTracingChannelSpanInStep = telemetryDispatcher.runInTracingChannelSpan == null ? void 0 : (options) => runInStepTracingChannelContext(\n () => telemetryDispatcher.runInTracingChannelSpan(options)\n );\n const streamWithToolResults = executeToolsFromStream({\n stream: streamAfterToolCallbackInvocation,\n tools,\n callId,\n messages: stepMessages,\n abortSignal,\n timeout,\n experimental_sandbox: stepSandbox,\n toolsContext,\n toolApproval,\n runtimeContext,\n toolApprovalSecret: experimental_toolApprovalSecret,\n generateId: generateId2,\n // the callbacks need to be passed down and handled by executeToolCall\n // to guarantee that the onToolExecutionStart callback is invoked before the tool execute function\n onToolExecutionStart: filterNullable2(\n onToolExecutionStart,\n telemetryDispatcher.onToolExecutionStart\n ),\n onToolExecutionEnd: filterNullable2(\n onToolExecutionEnd,\n telemetryDispatcher.onToolExecutionEnd\n ),\n executeToolInTelemetryContext: telemetryDispatcher.executeTool,\n runInTracingChannelSpan: runInTracingChannelSpanInStep\n });\n const stepRequest = {\n ...request,\n body: include.requestBody ? request == null ? void 0 : request.body : void 0,\n messages: include.requestMessages ? cloneModelMessages(stepMessages) : void 0\n };\n recordedRequestMessages = (_l = stepRequest.messages) != null ? _l : [];\n const stepToolCalls = [];\n const stepToolOutputs = [];\n const stepToolApprovalResponses = [];\n let warnings;\n let stepFinishReason = \"other\";\n let stepRawFinishReason = void 0;\n let hasReceivedTerminalChunk = false;\n let hasReceivedOutputChunk = false;\n let stepUsage = createNullLanguageModelUsage();\n let stepProviderMetadata;\n let stepFirstChunk = true;\n let modelCallPerformance = {\n responseTimeMs: 0,\n effectiveOutputTokensPerSecond: 0,\n outputTokensPerSecond: void 0,\n inputTokensPerSecond: void 0,\n effectiveTotalTokensPerSecond: 0,\n timeToFirstOutputMs: void 0,\n timeBetweenOutputChunksMs: void 0\n };\n const toolExecutionMs = {};\n let stepResponse = {\n id: generateId2(),\n timestamp: /* @__PURE__ */ new Date(),\n modelId: model.modelId\n };\n self.addStream(\n streamWithToolResults.pipeThrough(\n new TransformStream({\n async transform(chunk, controller) {\n var _a24, _b2, _c2;\n resetChunkTimeout();\n if (chunk.type === \"model-call-start\") {\n warnings = chunk.warnings;\n return;\n }\n if (stepFirstChunk) {\n stepFirstChunk = false;\n controller.enqueue({\n type: \"start-step\",\n request: stepRequest,\n warnings: warnings != null ? warnings : []\n });\n }\n const chunkType = chunk.type;\n if (isOutputChunkType[chunkType]) {\n hasReceivedOutputChunk = true;\n }\n switch (chunkType) {\n case \"file\":\n case \"custom\":\n case \"source\":\n case \"text-start\":\n case \"text-end\":\n case \"reasoning-start\":\n case \"reasoning-end\":\n case \"reasoning-delta\":\n case \"reasoning-file\":\n case \"tool-input-start\":\n case \"tool-input-end\":\n case \"tool-input-delta\":\n case \"tool-approval-request\": {\n controller.enqueue(chunk);\n break;\n }\n case \"text-delta\": {\n if (chunk.text.length > 0) {\n controller.enqueue(chunk);\n }\n break;\n }\n case \"tool-call\": {\n controller.enqueue(chunk);\n stepToolCalls.push(chunk);\n break;\n }\n case \"tool-approval-response\": {\n controller.enqueue(chunk);\n stepToolApprovalResponses.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 \"tool-execution-end\": {\n toolExecutionMs[chunk.toolCallId] = chunk.toolExecutionMs;\n break;\n }\n case \"model-call-response-metadata\": {\n stepResponse = {\n id: (_a24 = chunk.id) != null ? _a24 : 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 \"model-call-end\": {\n hasReceivedTerminalChunk = true;\n stepUsage = chunk.usage;\n stepFinishReason = chunk.finishReason;\n stepRawFinishReason = chunk.rawFinishReason;\n stepProviderMetadata = chunk.providerMetadata;\n modelCallPerformance = chunk.performance;\n break;\n }\n case \"error\": {\n hasReceivedTerminalChunk = true;\n controller.enqueue(chunk);\n stepFinishReason = \"error\";\n break;\n }\n case \"raw\": {\n if (include.rawChunks) {\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 onEnd callback and resolve toolResults promise when the stream is about to close:\n async flush(controller) {\n if (!hasReceivedTerminalChunk && !hasReceivedOutputChunk) {\n controller.enqueue({\n type: \"error\",\n error: new NoOutputGeneratedError({\n message: \"No output generated. The model stream ended without a finish chunk.\"\n })\n });\n clearStepTimeout();\n clearChunkTimeout();\n self.closeStream();\n return;\n }\n const stepTimeMs = now2() - stepStartTimestampMs;\n const finishStepPart = {\n type: \"finish-step\",\n finishReason: stepFinishReason,\n rawFinishReason: stepRawFinishReason,\n usage: stepUsage,\n performance: {\n stepTimeMs,\n toolExecutionMs,\n ...modelCallPerformance\n },\n providerMetadata: stepProviderMetadata,\n response: {\n ...stepResponse,\n headers: response == null ? void 0 : response.headers\n }\n };\n controller.enqueue(finishStepPart);\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 const deniedToolApprovalResponses = stepToolApprovalResponses.filter(\n (toolApprovalResponse) => toolApprovalResponse.approved === false\n );\n for (const toolCall of stepToolCalls) {\n if (toolCall.providerExecuted !== true)\n continue;\n const tool2 = tools == null ? void 0 : tools[toolCall.toolName];\n if ((tool2 == null ? void 0 : tool2.type) === \"provider\" && tool2.supportsDeferredResults) {\n const hasResultInStep = stepToolOutputs.some(\n (output2) => (output2.type === \"tool-result\" || output2.type === \"tool-error\") && output2.toolCallId === toolCall.toolCallId\n );\n if (!hasResultInStep) {\n pendingDeferredToolCalls.set(toolCall.toolCallId, {\n toolName: toolCall.toolName\n });\n }\n }\n }\n for (const output2 of stepToolOutputs) {\n if (output2.type === \"tool-result\" || output2.type === \"tool-error\") {\n pendingDeferredToolCalls.delete(output2.toolCallId);\n }\n }\n clearStepTimeout();\n clearChunkTimeout();\n if (\n // Continue if:\n // 1. There are client tool calls that have all been executed or denied, OR\n // 2. There are pending deferred results from provider-executed tools, OR\n (clientToolCalls.length > 0 && clientToolCalls.length === clientToolOutputs.length + deniedToolApprovalResponses.length || pendingDeferredToolCalls.size > 0) && // continue until a stop condition is met:\n !await isStopConditionMet({\n stopConditions,\n steps: recordedSteps\n })\n ) {\n try {\n await runInStreamTextTracingChannelContext(\n () => streamStep({\n currentStep: currentStep + 1,\n usage: combinedUsage\n })\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 rawFinishReason: stepRawFinishReason,\n totalUsage: combinedUsage\n });\n self.closeStream();\n }\n }\n })\n )\n );\n } catch (error) {\n clearStepTimeout();\n clearChunkTimeout();\n throw error;\n }\n }\n await runInStreamTextTracingChannelContext(\n () => (\n // add the initial stream to the stitchable stream\n streamStep({\n currentStep: 0,\n usage: createNullLanguageModelUsage()\n })\n )\n );\n })().catch(async (error) => {\n var _a22;\n await ((_a22 = telemetryDispatcher.onError) == null ? void 0 : _a22.call(telemetryDispatcher, { callId, error }));\n self._initialResponseMessages.reject(error);\n markPromiseAsHandled(self._initialResponseMessages.promise);\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.at(-1));\n }\n get content() {\n return this.steps.then((steps) => steps.flatMap((step) => step.content));\n }\n get warnings() {\n return this.steps.then((steps) => steps.flatMap((step) => {\n var _a22;\n return (_a22 = step.warnings) != null ? _a22 : [];\n }));\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(\n (step) => convertToReasoningOutputs(step.reasoning)\n );\n }\n get sources() {\n return this.steps.then((steps) => steps.flatMap((step) => step.sources));\n }\n get files() {\n return this.steps.then((steps) => steps.flatMap((step) => step.files));\n }\n get toolCalls() {\n return this.steps.then((steps) => steps.flatMap((step) => step.toolCalls));\n }\n get staticToolCalls() {\n return this.steps.then(\n (steps) => steps.flatMap((step) => step.staticToolCalls)\n );\n }\n get dynamicToolCalls() {\n return this.steps.then(\n (steps) => steps.flatMap((step) => step.dynamicToolCalls)\n );\n }\n get toolResults() {\n return this.steps.then((steps) => steps.flatMap((step) => step.toolResults));\n }\n get staticToolResults() {\n return this.steps.then(\n (steps) => steps.flatMap((step) => step.staticToolResults)\n );\n }\n get dynamicToolResults() {\n return this.steps.then(\n (steps) => steps.flatMap((step) => step.dynamicToolResults)\n );\n }\n get usage() {\n return this.totalUsage;\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 responseMessages() {\n return Promise.all([\n this._initialResponseMessages.promise,\n this.steps\n ]).then(([initialResponseMessages, steps]) => [\n ...initialResponseMessages,\n ...steps.flatMap((step) => step.response.messages)\n ]);\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 get rawFinishReason() {\n this.consumeStream();\n return this._rawFinishReason.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(toTextStream({ stream: this.stream }));\n }\n get stream() {\n return createAsyncIterableStream(\n this.teeStream().pipeThrough(\n new TransformStream({\n transform({ part }, controller) {\n controller.enqueue(part);\n }\n })\n )\n );\n }\n get fullStream() {\n return this.stream;\n }\n rejectResultPromises(error) {\n this.rejectResultPromise({ delayedPromise: this._finishReason, error });\n this.rejectResultPromise({ delayedPromise: this._rawFinishReason, error });\n this.rejectResultPromise({ delayedPromise: this._totalUsage, error });\n this.rejectResultPromise({ delayedPromise: this._steps, error });\n this.rejectResultPromise({\n delayedPromise: this._initialResponseMessages,\n error\n });\n }\n rejectResultPromise({\n delayedPromise,\n error\n }) {\n if (delayedPromise.isPending()) {\n delayedPromise.reject(error);\n markPromiseAsHandled(delayedPromise.promise);\n }\n }\n async consumeStream(options) {\n var _a22;\n try {\n await consumeStream({\n stream: this.stream,\n onError: (error) => {\n var _a23;\n this.rejectResultPromises(error);\n (_a23 = options == null ? void 0 : options.onError) == null ? void 0 : _a23.call(options, error);\n }\n });\n } catch (error) {\n this.rejectResultPromises(error);\n (_a22 = options == null ? void 0 : options.onError) == null ? void 0 : _a22.call(options, error);\n }\n }\n get experimental_partialOutputStream() {\n return this.partialOutputStream;\n }\n get partialOutputStream() {\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 get elementStream() {\n var _a22, _b, _c;\n const transform = (_a22 = this.outputSpecification) == null ? void 0 : _a22.createElementStreamTransform();\n if (transform == null) {\n throw new UnsupportedFunctionalityError2({\n functionality: `element streams in ${(_c = (_b = this.outputSpecification) == null ? void 0 : _b.name) != null ? _c : \"text\"} mode`\n });\n }\n return createAsyncIterableStream(this.teeStream().pipeThrough(transform));\n }\n get output() {\n return this.finalStep.then((step) => {\n var _a22;\n const output = (_a22 = this.outputSpecification) != null ? _a22 : text();\n return output.parseCompleteOutput(\n { text: step.text },\n {\n response: step.response,\n usage: step.usage,\n finishReason: step.finishReason\n }\n );\n });\n }\n toUIMessageStream({\n originalMessages,\n generateMessageId,\n onEnd,\n onFinish,\n messageMetadata,\n sendReasoning,\n sendSources,\n sendStart,\n sendFinish,\n onError\n } = {}) {\n return createAsyncIterableStream(\n toUIMessageStream({\n stream: this.stream,\n tools: this.tools,\n originalMessages,\n generateMessageId,\n onEnd: onEnd != null ? onEnd : onFinish,\n messageMetadata,\n sendReasoning,\n sendSources,\n sendStart,\n sendFinish,\n onError\n })\n );\n }\n pipeUIMessageStreamToResponse(response, {\n originalMessages,\n generateMessageId,\n onEnd,\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 onEnd: onEnd != null ? onEnd : 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 stream: this.textStream,\n ...init\n });\n }\n toUIMessageStreamResponse({\n originalMessages,\n generateMessageId,\n onEnd,\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 onEnd: onEnd != null ? onEnd : 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 stream: this.textStream,\n ...init\n });\n }\n};\n\n// src/agent/tool-loop-agent.ts\nvar ToolLoopAgent = class {\n constructor(settings) {\n this.version = \"agent-v1\";\n const { onFinish, onEnd = onFinish } = settings;\n this.settings = { ...settings, onEnd };\n }\n /**\n * The id of the agent.\n */\n get id() {\n return this.settings.id;\n }\n /**\n * The tools that the agent can use.\n */\n get tools() {\n return this.settings.tools;\n }\n async prepareCall(options) {\n var _a22, _b, _c, _d;\n if (this.settings.callOptionsSchema != null && options.options !== void 0) {\n const validatedOptions = await validateTypes3({\n value: options.options,\n schema: this.settings.callOptionsSchema,\n context: { field: \"options\" }\n });\n options = { ...options, options: validatedOptions };\n }\n const {\n onStart: _settingsStableOnStart,\n experimental_onStart: _settingsExperimentalOnStart,\n onStepStart: _settingsStableOnStepStart,\n experimental_onStepStart: _settingsExperimentalOnStepStart,\n onToolExecutionStart: _settingsOnToolExecutionStart,\n onToolExecutionEnd: _settingsOnToolExecutionEnd,\n onStepEnd: _settingsOnStepEnd,\n onStepFinish: _settingsOnStepFinish,\n onFinish: _settingsOnFinish,\n onEnd: _settingsOnEnd,\n ...settingsWithoutCallbacks\n } = this.settings;\n const baseCallArgs = {\n ...settingsWithoutCallbacks,\n stopWhen: (_a22 = this.settings.stopWhen) != null ? _a22 : isStepCount(20),\n ...options\n };\n const preparedCallArgs = (_d = await ((_c = (_b = this.settings).prepareCall) == null ? void 0 : _c.call(\n _b,\n baseCallArgs\n ))) != null ? _d : baseCallArgs;\n const {\n instructions,\n allowSystemInMessages,\n messages,\n prompt,\n runtimeContext,\n ...callArgs\n } = preparedCallArgs;\n const promptArgs = {\n instructions,\n allowSystemInMessages,\n messages,\n prompt\n };\n if (runtimeContext === void 0) {\n return {\n ...callArgs,\n ...promptArgs\n };\n }\n return {\n ...callArgs,\n runtimeContext,\n ...promptArgs\n };\n }\n /**\n * Tags outgoing requests so usage can be attributed to ToolLoopAgent. Chains\n * with the `ai/<version>` and `ai-sdk/<provider>/<version>` suffixes added\n * downstream by generateText/streamText and the provider.\n */\n agentHeaders(preparedCall) {\n var _a22;\n return withUserAgentSuffix3(\n (_a22 = preparedCall.headers) != null ? _a22 : {},\n \"ai-sdk-agent/tool-loop\"\n );\n }\n /**\n * Generates an output from the agent (non-streaming).\n */\n async generate({\n abortSignal,\n timeout,\n experimental_sandbox: sandbox,\n onStart,\n experimental_onStart,\n onStepStart,\n experimental_onStepStart,\n onToolExecutionStart,\n onToolExecutionEnd,\n onStepEnd,\n onStepFinish,\n onFinish,\n onEnd = onFinish,\n ...options\n }) {\n var _a22, _b, _c;\n const generate = generateText;\n const preparedCall = await this.prepareCall({\n ...options,\n experimental_sandbox: sandbox\n });\n const callbackArgs = {\n abortSignal,\n timeout,\n experimental_sandbox: sandbox,\n onStart: mergeCallbacks(\n (_a22 = this.settings.onStart) != null ? _a22 : this.settings.experimental_onStart,\n onStart != null ? onStart : experimental_onStart\n ),\n onStepStart: mergeCallbacks(\n (_b = this.settings.onStepStart) != null ? _b : this.settings.experimental_onStepStart,\n onStepStart != null ? onStepStart : experimental_onStepStart\n ),\n onToolExecutionStart: mergeCallbacks(\n this.settings.onToolExecutionStart,\n onToolExecutionStart\n ),\n onToolExecutionEnd: mergeCallbacks(\n this.settings.onToolExecutionEnd,\n onToolExecutionEnd\n ),\n onStepEnd: mergeCallbacks(\n (_c = this.settings.onStepEnd) != null ? _c : this.settings.onStepFinish,\n onStepEnd != null ? onStepEnd : onStepFinish\n ),\n onEnd: mergeCallbacks(this.settings.onEnd, onEnd)\n };\n return await generate({\n ...preparedCall,\n ...callbackArgs,\n headers: this.agentHeaders(preparedCall)\n });\n }\n /**\n * Streams an output from the agent (streaming).\n */\n async stream({\n abortSignal,\n timeout,\n experimental_sandbox: sandbox,\n experimental_transform,\n onStart,\n experimental_onStart,\n onStepStart,\n experimental_onStepStart,\n onToolExecutionStart,\n onToolExecutionEnd,\n onStepEnd,\n onStepFinish,\n onFinish,\n onEnd = onFinish,\n ...options\n }) {\n var _a22, _b, _c;\n const stream = streamText;\n const preparedCall = await this.prepareCall({\n ...options,\n experimental_sandbox: sandbox\n });\n const callbackArgs = {\n abortSignal,\n timeout,\n experimental_sandbox: sandbox,\n experimental_transform,\n onStart: mergeCallbacks(\n (_a22 = this.settings.onStart) != null ? _a22 : this.settings.experimental_onStart,\n onStart != null ? onStart : experimental_onStart\n ),\n onStepStart: mergeCallbacks(\n (_b = this.settings.onStepStart) != null ? _b : this.settings.experimental_onStepStart,\n onStepStart != null ? onStepStart : experimental_onStepStart\n ),\n onToolExecutionStart: mergeCallbacks(\n this.settings.onToolExecutionStart,\n onToolExecutionStart\n ),\n onToolExecutionEnd: mergeCallbacks(\n this.settings.onToolExecutionEnd,\n onToolExecutionEnd\n ),\n onStepEnd: mergeCallbacks(\n (_c = this.settings.onStepEnd) != null ? _c : this.settings.onStepFinish,\n onStepEnd != null ? onStepEnd : onStepFinish\n ),\n onEnd: mergeCallbacks(this.settings.onEnd, onEnd)\n };\n return await stream({\n ...preparedCall,\n ...callbackArgs,\n headers: this.agentHeaders(preparedCall)\n });\n }\n};\n\n// src/ui-message-stream/create-ui-message-stream.ts\nimport {\n generateId as generateIdFunc\n} from \"@ai-sdk/provider-utils\";\nfunction createUIMessageStream({\n execute,\n onError = () => \"An error occurred.\",\n // prevent leaking server error details to the client by default\n originalMessages,\n onStepEnd,\n onStepFinish,\n onEnd,\n onFinish,\n generateId: generateId2 = generateIdFunc\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 (e) {\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 (resolve3) => {\n while (ongoingStreamPromises.length > 0) {\n await ongoingStreamPromises.shift();\n }\n resolve3();\n });\n waitForStreams.finally(() => {\n try {\n controller.close();\n } catch (e) {\n }\n });\n return handleUIMessageStreamFinish({\n stream,\n messageId: generateId2(),\n originalMessages,\n onStepEnd: onStepEnd != null ? onStepEnd : onStepFinish,\n onEnd: onEnd != null ? onEnd : 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 _a22;\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: (_a22 = message == null ? void 0 : message.id) != null ? _a22 : \"\",\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}\n\n// src/ui/convert-to-model-messages.ts\nimport {\n isNonNullable\n} from \"@ai-sdk/provider-utils\";\nasync function 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) => !isToolUIPart(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 _a22;\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.providerReference != null ? {\n type: \"reference\",\n reference: part.providerReference\n } : { type: \"url\", url: new URL(part.url) },\n ...part.providerMetadata != null ? { providerOptions: part.providerMetadata } : {}\n };\n }\n if (isDataUIPart(part)) {\n return (_a22 = options == null ? void 0 : options.convertDataPart) == null ? void 0 : _a22.call(\n options,\n part\n );\n }\n }).filter(isNonNullable)\n });\n break;\n }\n case \"assistant\": {\n if (message.parts != null) {\n let block = [];\n async function processBlock() {\n var _a22, _b, _c, _d, _e, _f, _g, _h, _i;\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 (isCustomContentUIPart(part)) {\n content.push({\n type: \"custom\",\n kind: part.kind,\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.providerReference != null ? {\n type: \"reference\",\n reference: part.providerReference\n } : { type: \"url\", url: new URL(part.url) },\n ...part.providerMetadata != null ? { providerOptions: part.providerMetadata } : {}\n });\n } else if (isReasoningFileUIPart(part)) {\n content.push({\n type: \"reasoning-file\",\n data: { type: \"url\", url: new URL(part.url) },\n mediaType: part.mediaType,\n providerOptions: part.providerMetadata\n });\n } else if (isReasoningUIPart(part)) {\n content.push({\n type: \"reasoning\",\n text: part.text,\n providerOptions: part.providerMetadata\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\" ? (_a22 = part.input) != null ? _a22 : \"rawInput\" in part ? part.rawInput : void 0 : part.input,\n providerExecuted: part.providerExecuted,\n ...part.callProviderMetadata != null ? { providerOptions: part.callProviderMetadata } : {}\n });\n if (part.approval != null) {\n content.push({\n type: \"tool-approval-request\",\n approvalId: part.approval.id,\n toolCallId: part.toolCallId,\n isAutomatic: part.approval.isAutomatic,\n ...part.approval.signature != null ? { signature: part.approval.signature } : {}\n });\n }\n if (part.providerExecuted === true && part.state !== \"approval-responded\" && (part.state === \"output-available\" || part.state === \"output-error\")) {\n const resultProviderMetadata = (_b = part.resultProviderMetadata) != null ? _b : part.callProviderMetadata;\n content.push({\n type: \"tool-result\",\n toolCallId: part.toolCallId,\n toolName,\n output: await createToolModelOutput({\n toolCallId: part.toolCallId,\n input: part.input,\n output: part.state === \"output-error\" ? part.errorText : part.output,\n tool: (_c = options == null ? void 0 : options.tools) == null ? void 0 : _c[toolName],\n errorMode: part.state === \"output-error\" ? \"json\" : \"none\"\n }),\n ...resultProviderMetadata != null ? { providerOptions: resultProviderMetadata } : {}\n });\n }\n }\n } else if (isDataUIPart(part)) {\n const dataPart = (_d = options == null ? void 0 : options.convertDataPart) == null ? void 0 : _d.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) => {\n var _a23;\n return isToolUIPart(part) && (part.providerExecuted !== true || ((_a23 = part.approval) == null ? void 0 : _a23.approved) != null);\n }\n );\n if (toolParts.length > 0) {\n {\n const content2 = [];\n for (const toolPart of toolParts) {\n if (((_e = toolPart.approval) == null ? void 0 : _e.approved) != null) {\n content2.push({\n type: \"tool-approval-response\",\n approvalId: toolPart.approval.id,\n approved: toolPart.approval.approved,\n reason: toolPart.approval.reason,\n providerExecuted: toolPart.providerExecuted\n });\n }\n if (toolPart.state === \"approval-responded\" && ((_f = toolPart.approval) == null ? void 0 : _f.approved) === false) {\n content2.push({\n type: \"tool-result\",\n toolCallId: toolPart.toolCallId,\n toolName: getToolName(toolPart),\n output: {\n type: \"execution-denied\",\n reason: toolPart.approval.reason\n },\n ...toolPart.callProviderMetadata != null ? { providerOptions: toolPart.callProviderMetadata } : {}\n });\n }\n if (toolPart.providerExecuted === true) {\n continue;\n }\n switch (toolPart.state) {\n case \"output-denied\": {\n content2.push({\n type: \"tool-result\",\n toolCallId: toolPart.toolCallId,\n toolName: getToolName(toolPart),\n output: {\n type: \"error-text\",\n value: (_h = (_g = toolPart.approval) == null ? void 0 : _g.reason) != null ? _h : \"Tool call execution denied.\"\n },\n ...toolPart.callProviderMetadata != null ? { providerOptions: toolPart.callProviderMetadata } : {}\n });\n break;\n }\n case \"output-error\":\n case \"output-available\": {\n const toolName = getToolName(toolPart);\n content2.push({\n type: \"tool-result\",\n toolCallId: toolPart.toolCallId,\n toolName,\n output: await createToolModelOutput({\n toolCallId: toolPart.toolCallId,\n input: toolPart.input,\n output: toolPart.state === \"output-error\" ? toolPart.errorText : toolPart.output,\n tool: (_i = options == null ? void 0 : options.tools) == null ? void 0 : _i[toolName],\n errorMode: toolPart.state === \"output-error\" ? \"text\" : \"none\"\n }),\n ...toolPart.callProviderMetadata != null ? { providerOptions: toolPart.callProviderMetadata } : {}\n });\n break;\n }\n }\n }\n if (content2.length > 0) {\n modelMessages.push({\n role: \"tool\",\n content: content2\n });\n }\n }\n }\n block = [];\n }\n for (const part of message.parts) {\n if (isCustomContentUIPart(part) || isTextUIPart(part) || isReasoningUIPart(part) || isReasoningFileUIPart(part) || isFileUIPart(part) || isToolUIPart(part) || isDataUIPart(part)) {\n block.push(part);\n } else if (part.type === \"step-start\") {\n await processBlock();\n }\n }\n await processBlock();\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}\n\n// src/ui/validate-ui-messages.ts\nimport { TypeValidationError as TypeValidationError3 } from \"@ai-sdk/provider\";\nimport {\n lazySchema as lazySchema2,\n validateTypes as validateTypes4,\n zodSchema as zodSchema2\n} from \"@ai-sdk/provider-utils\";\nimport { z as z7 } from \"zod/v4\";\nvar toolMetadataSchema2 = z7.record(\n z7.string(),\n jsonValueSchema.optional()\n);\nvar providerReferenceSchema2 = z7.record(z7.string(), z7.string());\nvar uiMessagesSchema = lazySchema2(\n () => zodSchema2(\n z7.array(\n z7.object({\n id: z7.string(),\n role: z7.enum([\"system\", \"user\", \"assistant\"]),\n metadata: z7.unknown().optional(),\n parts: z7.array(\n z7.union([\n z7.object({\n type: z7.literal(\"text\"),\n text: z7.string(),\n state: z7.enum([\"streaming\", \"done\"]).optional(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.object({\n type: z7.literal(\"reasoning\"),\n text: z7.string(),\n state: z7.enum([\"streaming\", \"done\"]).optional(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.object({\n type: z7.literal(\"custom\"),\n kind: z7.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.object({\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.object({\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.object({\n type: z7.literal(\"file\"),\n mediaType: z7.string(),\n filename: z7.string().optional(),\n url: z7.string(),\n providerReference: providerReferenceSchema2.optional(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.object({\n type: z7.literal(\"reasoning-file\"),\n mediaType: z7.string(),\n url: z7.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.object({\n type: z7.literal(\"step-start\")\n }),\n z7.object({\n type: z7.string().startsWith(\"data-\"),\n id: z7.string().optional(),\n data: z7.unknown()\n }),\n z7.object({\n type: z7.literal(\"dynamic-tool\"),\n toolName: z7.string(),\n toolCallId: z7.string(),\n toolMetadata: toolMetadataSchema2.optional(),\n state: z7.literal(\"input-streaming\"),\n input: z7.unknown().optional(),\n providerExecuted: z7.boolean().optional(),\n callProviderMetadata: providerMetadataSchema.optional(),\n output: z7.never().optional(),\n errorText: z7.never().optional(),\n approval: z7.never().optional()\n }),\n z7.object({\n type: z7.literal(\"dynamic-tool\"),\n toolName: z7.string(),\n toolCallId: z7.string(),\n toolMetadata: toolMetadataSchema2.optional(),\n state: z7.literal(\"input-available\"),\n input: z7.unknown(),\n providerExecuted: z7.boolean().optional(),\n output: z7.never().optional(),\n errorText: z7.never().optional(),\n callProviderMetadata: providerMetadataSchema.optional(),\n approval: z7.never().optional()\n }),\n z7.object({\n type: z7.literal(\"dynamic-tool\"),\n toolName: z7.string(),\n toolCallId: z7.string(),\n toolMetadata: toolMetadataSchema2.optional(),\n state: z7.literal(\"approval-requested\"),\n input: z7.unknown(),\n providerExecuted: z7.boolean().optional(),\n output: z7.never().optional(),\n errorText: z7.never().optional(),\n callProviderMetadata: providerMetadataSchema.optional(),\n approval: z7.object({\n id: z7.string(),\n approved: z7.never().optional(),\n reason: z7.never().optional(),\n isAutomatic: z7.boolean().optional(),\n signature: z7.string().optional()\n })\n }),\n z7.object({\n type: z7.literal(\"dynamic-tool\"),\n toolName: z7.string(),\n toolCallId: z7.string(),\n toolMetadata: toolMetadataSchema2.optional(),\n state: z7.literal(\"approval-responded\"),\n input: z7.unknown(),\n providerExecuted: z7.boolean().optional(),\n output: z7.never().optional(),\n errorText: z7.never().optional(),\n callProviderMetadata: providerMetadataSchema.optional(),\n approval: z7.object({\n id: z7.string(),\n approved: z7.boolean(),\n reason: z7.string().optional(),\n isAutomatic: z7.boolean().optional(),\n signature: z7.string().optional()\n })\n }),\n z7.object({\n type: z7.literal(\"dynamic-tool\"),\n toolName: z7.string(),\n toolCallId: z7.string(),\n toolMetadata: toolMetadataSchema2.optional(),\n state: z7.literal(\"output-available\"),\n input: z7.unknown(),\n providerExecuted: z7.boolean().optional(),\n output: z7.unknown(),\n errorText: z7.never().optional(),\n callProviderMetadata: providerMetadataSchema.optional(),\n resultProviderMetadata: providerMetadataSchema.optional(),\n preliminary: z7.boolean().optional(),\n approval: z7.object({\n id: z7.string(),\n approved: z7.literal(true),\n reason: z7.string().optional(),\n isAutomatic: z7.boolean().optional(),\n signature: z7.string().optional()\n }).optional()\n }),\n z7.object({\n type: z7.literal(\"dynamic-tool\"),\n toolName: z7.string(),\n toolCallId: z7.string(),\n toolMetadata: toolMetadataSchema2.optional(),\n state: z7.literal(\"output-error\"),\n input: z7.unknown().optional(),\n rawInput: z7.unknown().optional(),\n providerExecuted: z7.boolean().optional(),\n output: z7.never().optional(),\n errorText: z7.string(),\n callProviderMetadata: providerMetadataSchema.optional(),\n resultProviderMetadata: providerMetadataSchema.optional(),\n approval: z7.object({\n id: z7.string(),\n approved: z7.literal(true),\n reason: z7.string().optional(),\n isAutomatic: z7.boolean().optional(),\n signature: z7.string().optional()\n }).optional()\n }),\n z7.object({\n type: z7.literal(\"dynamic-tool\"),\n toolName: z7.string(),\n toolCallId: z7.string(),\n toolMetadata: toolMetadataSchema2.optional(),\n state: z7.literal(\"output-denied\"),\n input: z7.unknown(),\n providerExecuted: z7.boolean().optional(),\n output: z7.never().optional(),\n errorText: z7.never().optional(),\n callProviderMetadata: providerMetadataSchema.optional(),\n approval: z7.object({\n id: z7.string(),\n approved: z7.literal(false),\n reason: z7.string().optional(),\n isAutomatic: z7.boolean().optional(),\n signature: z7.string().optional()\n })\n }),\n z7.object({\n type: z7.string().startsWith(\"tool-\"),\n toolCallId: z7.string(),\n toolMetadata: toolMetadataSchema2.optional(),\n state: z7.literal(\"input-streaming\"),\n providerExecuted: z7.boolean().optional(),\n callProviderMetadata: providerMetadataSchema.optional(),\n input: z7.unknown().optional(),\n output: z7.never().optional(),\n errorText: z7.never().optional(),\n approval: z7.never().optional()\n }),\n z7.object({\n type: z7.string().startsWith(\"tool-\"),\n toolCallId: z7.string(),\n toolMetadata: toolMetadataSchema2.optional(),\n state: z7.literal(\"input-available\"),\n providerExecuted: z7.boolean().optional(),\n input: z7.unknown(),\n output: z7.never().optional(),\n errorText: z7.never().optional(),\n callProviderMetadata: providerMetadataSchema.optional(),\n approval: z7.never().optional()\n }),\n z7.object({\n type: z7.string().startsWith(\"tool-\"),\n toolCallId: z7.string(),\n toolMetadata: toolMetadataSchema2.optional(),\n state: z7.literal(\"approval-requested\"),\n input: z7.unknown(),\n providerExecuted: z7.boolean().optional(),\n output: z7.never().optional(),\n errorText: z7.never().optional(),\n callProviderMetadata: providerMetadataSchema.optional(),\n approval: z7.object({\n id: z7.string(),\n approved: z7.never().optional(),\n reason: z7.never().optional(),\n isAutomatic: z7.boolean().optional(),\n signature: z7.string().optional()\n })\n }),\n z7.object({\n type: z7.string().startsWith(\"tool-\"),\n toolCallId: z7.string(),\n toolMetadata: toolMetadataSchema2.optional(),\n state: z7.literal(\"approval-responded\"),\n input: z7.unknown(),\n providerExecuted: z7.boolean().optional(),\n output: z7.never().optional(),\n errorText: z7.never().optional(),\n callProviderMetadata: providerMetadataSchema.optional(),\n approval: z7.object({\n id: z7.string(),\n approved: z7.boolean(),\n reason: z7.string().optional(),\n isAutomatic: z7.boolean().optional(),\n signature: z7.string().optional()\n })\n }),\n z7.object({\n type: z7.string().startsWith(\"tool-\"),\n toolCallId: z7.string(),\n toolMetadata: toolMetadataSchema2.optional(),\n state: z7.literal(\"output-available\"),\n providerExecuted: z7.boolean().optional(),\n input: z7.unknown(),\n output: z7.unknown(),\n errorText: z7.never().optional(),\n callProviderMetadata: providerMetadataSchema.optional(),\n resultProviderMetadata: providerMetadataSchema.optional(),\n preliminary: z7.boolean().optional(),\n approval: z7.object({\n id: z7.string(),\n approved: z7.literal(true),\n reason: z7.string().optional(),\n isAutomatic: z7.boolean().optional(),\n signature: z7.string().optional()\n }).optional()\n }),\n z7.object({\n type: z7.string().startsWith(\"tool-\"),\n toolCallId: z7.string(),\n toolMetadata: toolMetadataSchema2.optional(),\n state: z7.literal(\"output-error\"),\n providerExecuted: z7.boolean().optional(),\n input: z7.unknown().optional(),\n rawInput: z7.unknown().optional(),\n output: z7.never().optional(),\n errorText: z7.string(),\n callProviderMetadata: providerMetadataSchema.optional(),\n resultProviderMetadata: providerMetadataSchema.optional(),\n approval: z7.object({\n id: z7.string(),\n approved: z7.literal(true),\n reason: z7.string().optional(),\n isAutomatic: z7.boolean().optional(),\n signature: z7.string().optional()\n }).optional()\n }),\n z7.object({\n type: z7.string().startsWith(\"tool-\"),\n toolCallId: z7.string(),\n toolMetadata: toolMetadataSchema2.optional(),\n state: z7.literal(\"output-denied\"),\n providerExecuted: z7.boolean().optional(),\n input: z7.unknown(),\n output: z7.never().optional(),\n errorText: z7.never().optional(),\n callProviderMetadata: providerMetadataSchema.optional(),\n approval: z7.object({\n id: z7.string(),\n approved: z7.literal(false),\n reason: z7.string().optional(),\n isAutomatic: z7.boolean().optional(),\n signature: z7.string().optional()\n })\n })\n ])\n ).nonempty(\"Message must contain at least one part\")\n })\n ).nonempty(\"Messages array must not be empty\")\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 validateTypes4({\n value: messages,\n schema: uiMessagesSchema\n });\n if (metadataSchema) {\n for (const [msgIdx, message] of validatedMessages.entries()) {\n await validateTypes4({\n value: message.metadata,\n schema: metadataSchema,\n context: {\n field: `messages[${msgIdx}].metadata`,\n entityId: message.id\n }\n });\n }\n }\n if (dataSchemas || tools) {\n for (const [msgIdx, message] of validatedMessages.entries()) {\n for (const [partIdx, part] of message.parts.entries()) {\n if (dataSchemas && part.type.startsWith(\"data-\")) {\n const dataPart = part;\n const dataName = dataPart.type.slice(5);\n const dataSchema = dataSchemas[dataName];\n if (!dataSchema) {\n return {\n success: false,\n error: new TypeValidationError3({\n value: dataPart.data,\n cause: `No data schema found for data part ${dataName}`,\n context: {\n field: `messages[${msgIdx}].parts[${partIdx}].data`,\n entityName: dataName,\n entityId: dataPart.id\n }\n })\n };\n }\n await validateTypes4({\n value: dataPart.data,\n schema: dataSchema,\n context: {\n field: `messages[${msgIdx}].parts[${partIdx}].data`,\n entityName: dataName,\n entityId: dataPart.id\n }\n });\n }\n if (tools && part.type.startsWith(\"tool-\")) {\n const toolPart = part;\n const toolName = toolPart.type.slice(5);\n const tool2 = tools[toolName];\n if (!tool2 && (toolPart.state === \"output-available\" || toolPart.state === \"output-error\" || toolPart.state === \"output-denied\")) {\n continue;\n }\n if (!tool2) {\n return {\n success: false,\n error: new TypeValidationError3({\n value: toolPart.input,\n cause: `No tool schema found for tool part ${toolName}`,\n context: {\n field: `messages[${msgIdx}].parts[${partIdx}].input`,\n entityName: toolName,\n entityId: toolPart.toolCallId\n }\n })\n };\n }\n if (toolPart.state === \"input-available\" || toolPart.state === \"output-available\") {\n await validateTypes4({\n value: toolPart.input,\n schema: tool2.inputSchema,\n context: {\n field: `messages[${msgIdx}].parts[${partIdx}].input`,\n entityName: toolName,\n entityId: toolPart.toolCallId\n }\n });\n }\n if (toolPart.state === \"output-available\" && tool2.outputSchema) {\n await validateTypes4({\n value: toolPart.output,\n schema: tool2.outputSchema,\n context: {\n field: `messages[${msgIdx}].parts[${partIdx}].output`,\n entityName: toolName,\n entityId: toolPart.toolCallId\n }\n });\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/agent/create-agent-ui-stream.ts\nasync function createAgentUIStream({\n agent,\n uiMessages,\n options,\n abortSignal,\n timeout,\n experimental_sandbox: sandbox,\n experimental_transform,\n onStepEnd,\n onStepFinish,\n ...uiMessageStreamOptions\n}) {\n var _a22;\n const validatedMessages = await validateUIMessages({\n messages: uiMessages,\n // tools are compatible; the casting is required because the context param is\n // not available in ui messages\n tools: agent.tools\n });\n const modelMessages = await convertToModelMessages(validatedMessages, {\n tools: agent.tools\n });\n const result = await agent.stream({\n prompt: modelMessages,\n options,\n abortSignal,\n timeout,\n experimental_sandbox: sandbox,\n experimental_transform,\n onStepEnd: onStepEnd != null ? onStepEnd : onStepFinish\n });\n const originalMessages = (_a22 = uiMessageStreamOptions.originalMessages) != null ? _a22 : validatedMessages;\n return createAsyncIterableStream(\n toUIMessageStream({\n ...uiMessageStreamOptions,\n originalMessages,\n stream: result.stream,\n tools: agent.tools\n })\n );\n}\n\n// src/agent/create-agent-ui-stream-response.ts\nasync function createAgentUIStreamResponse({\n headers,\n status,\n statusText,\n consumeSseStream,\n ...options\n}) {\n return createUIMessageStreamResponse({\n headers,\n status,\n statusText,\n consumeSseStream,\n stream: await createAgentUIStream(options)\n });\n}\n\n// src/agent/pipe-agent-ui-stream-to-response.ts\nasync function pipeAgentUIStreamToResponse({\n response,\n headers,\n status,\n statusText,\n consumeSseStream,\n ...options\n}) {\n pipeUIMessageStreamToResponse({\n response,\n headers,\n status,\n statusText,\n consumeSseStream,\n stream: await createAgentUIStream(options)\n });\n}\n\n// src/embed/embed.ts\nimport {\n createIdGenerator as createIdGenerator4,\n withUserAgentSuffix as withUserAgentSuffix4\n} from \"@ai-sdk/provider-utils\";\nvar originalGenerateCallId4 = createIdGenerator4({\n prefix: \"call\",\n size: 24\n});\nasync function embed({\n model: modelArg,\n value,\n providerOptions,\n maxRetries: maxRetriesArg,\n abortSignal,\n headers,\n experimental_telemetry,\n telemetry = experimental_telemetry,\n onStart,\n experimental_onStart,\n onEnd,\n experimental_onEnd,\n _internal: { generateCallId = originalGenerateCallId4 } = {}\n}) {\n var _a22;\n const model = resolveEmbeddingModel(modelArg);\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const resolvedOnStart = onStart != null ? onStart : experimental_onStart;\n const resolvedOnEnd = onEnd != null ? onEnd : experimental_onEnd;\n const headersWithUserAgent = withUserAgentSuffix4(\n headers != null ? headers : {},\n `ai/${VERSION}`\n );\n const callId = generateCallId();\n const telemetryDispatcher = createTelemetryDispatcher({\n telemetry\n });\n const runInTracingChannelSpan = (_a22 = telemetryDispatcher.runInTracingChannelSpan) != null ? _a22 : async ({ execute }) => await execute();\n const startEvent = {\n callId,\n operationId: \"ai.embed\",\n provider: model.provider,\n modelId: model.modelId,\n value,\n maxRetries,\n headers: headersWithUserAgent,\n providerOptions\n };\n return await runInTracingChannelSpan({\n type: \"embed\",\n event: startEvent,\n execute: async () => {\n var _a23;\n await notify({\n event: startEvent,\n callbacks: [resolvedOnStart, telemetryDispatcher.onStart]\n });\n try {\n const { embedding, usage, warnings, response, providerMetadata } = await retry(async () => {\n var _a24, _b;\n const embedCallId = generateCallId();\n await notify({\n event: {\n callId,\n embedCallId,\n operationId: \"ai.embed.doEmbed\",\n provider: model.provider,\n modelId: model.modelId,\n values: [value]\n },\n callbacks: [telemetryDispatcher.onEmbedStart]\n });\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 = (_a24 = modelResponse.usage) != null ? _a24 : { tokens: NaN };\n await notify({\n event: {\n callId,\n embedCallId,\n operationId: \"ai.embed.doEmbed\",\n provider: model.provider,\n modelId: model.modelId,\n values: [value],\n embeddings: modelResponse.embeddings,\n usage: usage2\n },\n callbacks: [telemetryDispatcher.onEmbedEnd]\n });\n return {\n embedding: embedding2,\n usage: usage2,\n warnings: (_b = modelResponse.warnings) != null ? _b : [],\n providerMetadata: modelResponse.providerMetadata,\n response: modelResponse.response\n };\n });\n logWarnings({\n warnings,\n provider: model.provider,\n model: model.modelId\n });\n await notify({\n event: {\n callId,\n operationId: \"ai.embed\",\n provider: model.provider,\n modelId: model.modelId,\n value,\n embedding,\n usage,\n warnings,\n providerMetadata,\n response\n },\n callbacks: [resolvedOnEnd, telemetryDispatcher.onEnd]\n });\n return new DefaultEmbedResult({\n value,\n embedding,\n usage,\n warnings,\n providerMetadata,\n response\n });\n } catch (error) {\n await ((_a23 = telemetryDispatcher.onError) == null ? void 0 : _a23.call(telemetryDispatcher, { callId, error }));\n throw error;\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.warnings = options.warnings;\n this.providerMetadata = options.providerMetadata;\n this.response = options.response;\n }\n};\n\n// src/embed/embed-many.ts\nimport {\n createIdGenerator as createIdGenerator5,\n withUserAgentSuffix as withUserAgentSuffix5\n} from \"@ai-sdk/provider-utils\";\n\n// src/util/split-array.ts\nfunction splitArray(array2, 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 < array2.length; i += chunkSize) {\n result.push(array2.slice(i, i + chunkSize));\n }\n return result;\n}\n\n// src/embed/embed-many.ts\nvar originalGenerateCallId5 = createIdGenerator5({\n prefix: \"call\",\n size: 24\n});\nasync function embedMany({\n model: modelArg,\n values,\n maxParallelCalls = Infinity,\n maxRetries: maxRetriesArg,\n abortSignal,\n headers,\n providerOptions,\n experimental_telemetry,\n telemetry = experimental_telemetry,\n onStart,\n experimental_onStart,\n onEnd,\n experimental_onEnd,\n _internal: { generateCallId = originalGenerateCallId5 } = {}\n}) {\n var _a22, _b;\n const model = resolveEmbeddingModel(modelArg);\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const resolvedOnStart = onStart != null ? onStart : experimental_onStart;\n const resolvedOnEnd = onEnd != null ? onEnd : experimental_onEnd;\n const headersWithUserAgent = withUserAgentSuffix5(\n headers != null ? headers : {},\n `ai/${VERSION}`\n );\n const callId = generateCallId();\n const telemetryDispatcher = createTelemetryDispatcher({\n telemetry\n });\n await notify({\n event: {\n callId,\n operationId: \"ai.embedMany\",\n provider: model.provider,\n modelId: model.modelId,\n value: values,\n maxRetries,\n headers: headersWithUserAgent,\n providerOptions\n },\n callbacks: [resolvedOnStart, telemetryDispatcher.onStart]\n });\n try {\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, warnings: warnings2, response, providerMetadata: providerMetadata2 } = await retry(async () => {\n var _a23, _b2;\n const embedCallId = generateCallId();\n await notify({\n event: {\n callId,\n embedCallId,\n operationId: \"ai.embedMany.doEmbed\",\n provider: model.provider,\n modelId: model.modelId,\n values\n },\n callbacks: [telemetryDispatcher.onEmbedStart]\n });\n const modelResponse = await model.doEmbed({\n values,\n abortSignal,\n headers: headersWithUserAgent,\n providerOptions\n });\n const embeddings3 = modelResponse.embeddings;\n const usage2 = (_a23 = modelResponse.usage) != null ? _a23 : { tokens: NaN };\n await notify({\n event: {\n callId,\n embedCallId,\n operationId: \"ai.embedMany.doEmbed\",\n provider: model.provider,\n modelId: model.modelId,\n values,\n embeddings: embeddings3,\n usage: usage2\n },\n callbacks: [telemetryDispatcher.onEmbedEnd]\n });\n return {\n embeddings: embeddings3,\n usage: usage2,\n warnings: (_b2 = modelResponse.warnings) != null ? _b2 : [],\n providerMetadata: modelResponse.providerMetadata,\n response: modelResponse.response\n };\n });\n logWarnings({\n warnings: warnings2,\n provider: model.provider,\n model: model.modelId\n });\n await notify({\n event: {\n callId,\n operationId: \"ai.embedMany\",\n provider: model.provider,\n modelId: model.modelId,\n value: values,\n embedding: embeddings2,\n usage,\n warnings: warnings2,\n providerMetadata: providerMetadata2,\n response: [response]\n },\n callbacks: [resolvedOnEnd, telemetryDispatcher.onEnd]\n });\n return new DefaultEmbedManyResult({\n values,\n embeddings: embeddings2,\n usage,\n warnings: warnings2,\n providerMetadata: providerMetadata2,\n responses: [response]\n });\n }\n const valueChunks = splitArray(values, maxEmbeddingsPerCall);\n const embeddings = [];\n const warnings = [];\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(async () => {\n var _a23, _b2;\n const embedCallId = generateCallId();\n await notify({\n event: {\n callId,\n embedCallId,\n operationId: \"ai.embedMany.doEmbed\",\n provider: model.provider,\n modelId: model.modelId,\n values: chunk\n },\n callbacks: [telemetryDispatcher.onEmbedStart]\n });\n const modelResponse = await model.doEmbed({\n values: chunk,\n abortSignal,\n headers: headersWithUserAgent,\n providerOptions\n });\n const chunkEmbeddings = modelResponse.embeddings;\n const usage = (_a23 = modelResponse.usage) != null ? _a23 : { tokens: NaN };\n await notify({\n event: {\n callId,\n embedCallId,\n operationId: \"ai.embedMany.doEmbed\",\n provider: model.provider,\n modelId: model.modelId,\n values: chunk,\n embeddings: chunkEmbeddings,\n usage\n },\n callbacks: [telemetryDispatcher.onEmbedEnd]\n });\n return {\n embeddings: chunkEmbeddings,\n usage,\n warnings: (_b2 = modelResponse.warnings) != null ? _b2 : [],\n providerMetadata: modelResponse.providerMetadata,\n response: modelResponse.response\n };\n });\n })\n );\n for (const result of results) {\n embeddings.push(...result.embeddings);\n warnings.push(...result.warnings);\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 ...(_a22 = providerMetadata[providerName]) != null ? _a22 : {},\n ...metadata\n };\n }\n }\n }\n }\n }\n logWarnings({\n warnings,\n provider: model.provider,\n model: model.modelId\n });\n await notify({\n event: {\n callId,\n operationId: \"ai.embedMany\",\n provider: model.provider,\n modelId: model.modelId,\n value: values,\n embedding: embeddings,\n usage: { tokens },\n warnings,\n providerMetadata,\n response: responses\n },\n callbacks: [resolvedOnEnd, telemetryDispatcher.onEnd]\n });\n return new DefaultEmbedManyResult({\n values,\n embeddings,\n usage: { tokens },\n warnings,\n providerMetadata,\n responses\n });\n } catch (error) {\n await ((_b = telemetryDispatcher.onError) == null ? void 0 : _b.call(telemetryDispatcher, { callId, error }));\n throw error;\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.warnings = options.warnings;\n this.providerMetadata = options.providerMetadata;\n this.responses = options.responses;\n }\n};\n\n// src/generate-image/generate-image.ts\nimport {\n convertBase64ToUint8Array as convertBase64ToUint8Array4,\n detectMediaType as detectMediaType2,\n withUserAgentSuffix as withUserAgentSuffix6\n} from \"@ai-sdk/provider-utils\";\n\n// src/prompt/data-content.ts\nimport {\n convertBase64ToUint8Array as convertBase64ToUint8Array3,\n convertUint8ArrayToBase64 as convertUint8ArrayToBase643\n} from \"@ai-sdk/provider-utils\";\nfunction convertDataContentToBase64String(content) {\n if (typeof content === \"string\") {\n return content;\n }\n if (content instanceof ArrayBuffer) {\n return convertUint8ArrayToBase643(new Uint8Array(content));\n }\n return convertUint8ArrayToBase643(content);\n}\nfunction convertDataContentToUint8Array(content) {\n if (content instanceof Uint8Array) {\n return content;\n }\n if (typeof content === \"string\") {\n try {\n return convertBase64ToUint8Array3(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/generate-image/generate-image.ts\nasync function generateImage({\n model: modelArg,\n prompt: promptArg,\n n = 1,\n maxImagesPerCall,\n size,\n aspectRatio,\n seed,\n providerOptions,\n maxRetries: maxRetriesArg,\n abortSignal,\n headers\n}) {\n var _a22, _b;\n const model = resolveImageModel(modelArg);\n const headersWithUserAgent = withUserAgentSuffix6(\n headers != null ? headers : {},\n `ai/${VERSION}`\n );\n const { retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const maxImagesPerCallWithDefault = (_a22 = maxImagesPerCall != null ? maxImagesPerCall : await invokeModelMaxImagesPerCall(model)) != null ? _a22 : 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) => await retry(() => {\n const { prompt, files, mask } = normalizePrompt(promptArg);\n return model.doGenerate({\n prompt,\n files,\n mask,\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 let totalUsage = {\n inputTokens: void 0,\n outputTokens: void 0,\n totalTokens: void 0\n };\n for (const result of results) {\n images.push(\n ...result.images.map(\n (image) => {\n var _a23;\n return new DefaultGeneratedFile({\n data: image,\n mediaType: (_a23 = detectMediaType2({\n data: image,\n topLevelType: \"image\"\n })) != null ? _a23 : \"image/png\"\n });\n }\n )\n );\n warnings.push(...result.warnings);\n if (result.usage != null) {\n totalUsage = addImageModelUsage(totalUsage, result.usage);\n }\n if (result.providerMetadata) {\n for (const [providerName, metadata] of Object.entries(result.providerMetadata)) {\n if (providerName === \"gateway\") {\n const currentEntry = providerMetadata[providerName];\n if (currentEntry != null && typeof currentEntry === \"object\") {\n providerMetadata[providerName] = {\n ...currentEntry,\n ...metadata\n };\n } else {\n providerMetadata[providerName] = metadata;\n }\n const imagesValue = providerMetadata[providerName].images;\n if (Array.isArray(imagesValue) && imagesValue.length === 0) {\n delete providerMetadata[providerName].images;\n }\n } else {\n (_b = providerMetadata[providerName]) != null ? _b : providerMetadata[providerName] = { images: [] };\n providerMetadata[providerName].images.push(\n ...result.providerMetadata[providerName].images\n );\n }\n }\n }\n responses.push(result.response);\n }\n logWarnings({ warnings, provider: model.provider, model: model.modelId });\n if (!images.length) {\n throw new NoImageGeneratedError({ responses });\n }\n return new DefaultGenerateImageResult({\n images,\n warnings,\n responses,\n providerMetadata,\n usage: totalUsage\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 this.usage = options.usage;\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}\nfunction normalizePrompt(prompt) {\n if (typeof prompt === \"string\") {\n return { prompt, files: void 0, mask: void 0 };\n }\n return {\n prompt: prompt.text,\n files: prompt.images.map(toImageModelV4File),\n mask: prompt.mask ? toImageModelV4File(prompt.mask) : void 0\n };\n}\nfunction toImageModelV4File(dataContent) {\n if (typeof dataContent === \"string\" && dataContent.startsWith(\"http\")) {\n return {\n type: \"url\",\n url: dataContent\n };\n }\n if (typeof dataContent === \"string\" && dataContent.startsWith(\"data:\")) {\n const { mediaType: dataUrlMediaType, base64Content } = splitDataUrl(dataContent);\n if (base64Content != null) {\n const uint8Data2 = convertBase64ToUint8Array4(base64Content);\n return {\n type: \"file\",\n data: uint8Data2,\n mediaType: dataUrlMediaType || detectMediaType2({\n data: uint8Data2,\n topLevelType: \"image\"\n }) || \"image/png\"\n };\n }\n }\n const uint8Data = convertDataContentToUint8Array(dataContent);\n return {\n type: \"file\",\n data: uint8Data,\n mediaType: detectMediaType2({\n data: uint8Data,\n topLevelType: \"image\"\n }) || \"image/png\"\n };\n}\n\n// src/generate-object/generate-object.ts\nimport {\n createIdGenerator as createIdGenerator6,\n withUserAgentSuffix as withUserAgentSuffix7\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-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-object/output-strategy.ts\nimport {\n isJSONArray,\n isJSONObject,\n TypeValidationError as TypeValidationError4,\n UnsupportedFunctionalityError as UnsupportedFunctionalityError3\n} from \"@ai-sdk/provider\";\nimport {\n asSchema as asSchema5,\n safeValidateTypes as safeValidateTypes5\n} from \"@ai-sdk/provider-utils\";\nvar noSchemaOutputStrategy = {\n type: \"no-schema\",\n jsonSchema: async () => 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 UnsupportedFunctionalityError3({\n functionality: \"element streams in no-schema mode\"\n });\n }\n};\nvar objectOutputStrategy = (schema) => ({\n type: \"object\",\n jsonSchema: async () => await 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 safeValidateTypes5({ value, schema });\n },\n createElementStream() {\n throw new UnsupportedFunctionalityError3({\n functionality: \"element streams in object mode\"\n });\n }\n});\nvar arrayOutputStrategy = (schema) => {\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: async () => {\n const { $schema: _$schema, ...itemSchema } = await schema.jsonSchema;\n return {\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 },\n async validatePartialResult({\n value,\n latestObject,\n isFirstDelta,\n isFinalDelta\n }) {\n var _a22;\n if (!isJSONObject(value) || !isJSONArray(value.elements)) {\n return {\n success: false,\n error: new TypeValidationError4({\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 safeValidateTypes5({ 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 = (_a22 = latestObject == null ? void 0 : latestObject.length) != null ? _a22 : 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 TypeValidationError4({\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 (const element of inputArray) {\n const result = await safeValidateTypes5({ value: element, schema });\n if (!result.success) {\n return result;\n }\n resultArray.push(result.value);\n }\n return { success: true, value: resultArray };\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 array2 = chunk.object;\n for (; publishedElements < array2.length; publishedElements++) {\n controller.enqueue(array2[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: async () => ({\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 TypeValidationError4({\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 TypeValidationError4({\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 TypeValidationError4({\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 TypeValidationError4({\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 UnsupportedFunctionalityError3({\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(asSchema5(schema));\n case \"array\":\n return arrayOutputStrategy(asSchema5(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 TypeValidationError5 } from \"@ai-sdk/provider\";\nimport { safeParseJSON as safeParseJSON4 } from \"@ai-sdk/provider-utils\";\nasync function parseAndValidateObjectResult(result, outputStrategy, context) {\n const parseResult = await safeParseJSON4({ 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) || TypeValidationError5.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 originalGenerateId4 = createIdGenerator6({ prefix: \"aiobj\", size: 24 });\nasync function generateObject(options) {\n var _a22, _b, _c, _d, _e, _f, _g, _h, _i, _j;\n const {\n model: modelArg,\n output = \"object\",\n instructions,\n system,\n prompt,\n messages,\n allowSystemInMessages,\n maxRetries: maxRetriesArg,\n abortSignal,\n headers,\n experimental_repairText: repairText,\n experimental_telemetry,\n telemetry = experimental_telemetry,\n experimental_download: download2,\n providerOptions,\n onStart,\n experimental_onStart,\n onStepStart,\n experimental_onStepStart,\n onStepEnd,\n onStepFinish,\n onFinish,\n _internal: {\n generateId: generateId2 = originalGenerateId4,\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 = prepareLanguageModelCallOptions(settings);\n const headersWithUserAgent = withUserAgentSuffix7(\n headers != null ? headers : {},\n `ai/${VERSION}`\n );\n const telemetryDispatcher = createTelemetryDispatcher({\n telemetry\n });\n const resolvedOnStart = onStart != null ? onStart : experimental_onStart;\n const resolvedOnStepStart = onStepStart != null ? onStepStart : experimental_onStepStart;\n const resolvedOnStepEnd = onStepEnd != null ? onStepEnd : onStepFinish;\n const jsonSchema2 = await outputStrategy.jsonSchema();\n const callId = generateId2();\n await notify({\n event: {\n callId,\n operationId: \"ai.generateObject\",\n provider: model.provider,\n modelId: model.modelId,\n system: instructions != null ? instructions : system,\n prompt,\n messages,\n maxOutputTokens: callSettings.maxOutputTokens,\n temperature: callSettings.temperature,\n topP: callSettings.topP,\n topK: callSettings.topK,\n presencePenalty: callSettings.presencePenalty,\n frequencyPenalty: callSettings.frequencyPenalty,\n seed: callSettings.seed,\n maxRetries,\n headers: headersWithUserAgent,\n providerOptions,\n output: outputStrategy.type,\n schema: jsonSchema2,\n schemaName,\n schemaDescription\n },\n callbacks: [resolvedOnStart, telemetryDispatcher.onStart]\n });\n try {\n const standardizedPrompt = await standardizePrompt({\n instructions,\n system,\n prompt,\n messages,\n allowSystemInMessages\n });\n const promptMessages = await convertToLanguageModelPrompt({\n prompt: standardizedPrompt,\n supportedUrls: await model.supportedUrls,\n download: download2,\n provider: model.provider.split(\".\")[0]\n });\n await notify({\n event: {\n callId,\n stepNumber: 0,\n provider: model.provider,\n modelId: model.modelId,\n providerOptions,\n headers: headersWithUserAgent,\n promptMessages\n },\n callbacks: [resolvedOnStepStart, telemetryDispatcher.onObjectStepStart]\n });\n const generateResult = await retry(\n () => model.doGenerate({\n responseFormat: {\n type: \"json\",\n schema: jsonSchema2,\n name: schemaName,\n description: schemaDescription\n },\n ...prepareLanguageModelCallOptions(settings),\n prompt: promptMessages,\n providerOptions,\n abortSignal,\n headers: headersWithUserAgent\n })\n );\n const responseData = {\n id: (_b = (_a22 = generateResult.response) == null ? void 0 : _a22.id) != null ? _b : generateId2(),\n timestamp: (_d = (_c = generateResult.response) == null ? void 0 : _c.timestamp) != null ? _d : currentDate(),\n modelId: (_f = (_e = generateResult.response) == null ? void 0 : _e.modelId) != null ? _f : model.modelId,\n headers: (_g = generateResult.response) == null ? void 0 : _g.headers,\n body: (_h = generateResult.response) == null ? void 0 : _h.body\n };\n const text2 = extractTextContent(generateResult.content);\n const reasoning = extractReasoningContent(generateResult.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: asLanguageModelUsage(generateResult.usage),\n finishReason: generateResult.finishReason.unified\n });\n }\n const finishReason = generateResult.finishReason.unified;\n const usage = asLanguageModelUsage(generateResult.usage);\n const warnings = generateResult.warnings;\n const resultProviderMetadata = generateResult.providerMetadata;\n const request = (_i = generateResult.request) != null ? _i : {};\n const response = responseData;\n logWarnings({\n warnings,\n provider: model.provider,\n model: model.modelId\n });\n const stepFinishEvent = {\n callId,\n stepNumber: 0,\n provider: model.provider,\n modelId: model.modelId,\n finishReason,\n usage,\n objectText: text2,\n msToFirstChunk: void 0,\n reasoning,\n warnings,\n request,\n response,\n providerMetadata: resultProviderMetadata\n };\n await notify({\n event: stepFinishEvent,\n callbacks: [resolvedOnStepEnd, telemetryDispatcher.onObjectStepEnd]\n });\n const object2 = await parseAndValidateObjectResultWithRepair(\n text2,\n outputStrategy,\n repairText,\n {\n response,\n usage,\n finishReason\n }\n );\n await notify({\n event: {\n callId,\n object: object2,\n error: void 0,\n reasoning,\n finishReason,\n usage,\n warnings,\n request,\n response,\n providerMetadata: resultProviderMetadata\n },\n callbacks: [onFinish, telemetryDispatcher.onEnd]\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 } catch (error) {\n await ((_j = telemetryDispatcher.onError) == null ? void 0 : _j.call(telemetryDispatcher, { callId, 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 _a22;\n return new Response(JSON.stringify(this.object), {\n status: (_a22 = init == null ? void 0 : init.status) != null ? _a22 : 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 createIdGenerator7,\n DelayedPromise as DelayedPromise2\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/download/create-download.ts\nfunction createDownload(options) {\n return ({ url, abortSignal }) => download({ url, maxBytes: options == null ? void 0 : options.maxBytes, abortSignal });\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 (e) {\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((resolve3, reject) => {\n this.queue.push(async () => {\n try {\n await job();\n resolve3();\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 _a22;\n const delay2 = (_a22 = _internal == null ? void 0 : _internal.delay) != null ? _a22 : 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 originalGenerateId5 = createIdGenerator7({ prefix: \"aiobj\", size: 24 });\nfunction streamObject(options) {\n const {\n model,\n output = \"object\",\n instructions,\n system,\n prompt,\n messages,\n allowSystemInMessages,\n maxRetries,\n abortSignal,\n headers,\n experimental_repairText: repairText,\n experimental_telemetry,\n telemetry = experimental_telemetry,\n experimental_download: download2,\n providerOptions,\n onStart,\n experimental_onStart,\n onStepStart,\n experimental_onStepStart,\n onStepEnd,\n onStepFinish,\n onError = ({ error }) => {\n console.error(error);\n },\n onFinish,\n _internal: {\n generateId: generateId2 = originalGenerateId5,\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 instructions,\n system,\n prompt,\n messages,\n allowSystemInMessages,\n schemaName,\n schemaDescription,\n providerOptions,\n repairText,\n onStart: onStart != null ? onStart : experimental_onStart,\n onStepStart: onStepStart != null ? onStepStart : experimental_onStepStart,\n onStepFinish: onStepEnd != null ? onStepEnd : onStepFinish,\n onError,\n onFinish,\n download: download2,\n generateId: generateId2,\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 instructions,\n system,\n prompt,\n messages,\n allowSystemInMessages,\n schemaName,\n schemaDescription,\n providerOptions,\n repairText,\n onStart,\n onStepStart,\n onStepFinish,\n onError,\n onFinish,\n download: download2,\n generateId: generateId2,\n currentDate,\n now: now2\n }) {\n this._object = new DelayedPromise2();\n this._usage = new DelayedPromise2();\n this._providerMetadata = new DelayedPromise2();\n this._warnings = new DelayedPromise2();\n this._request = new DelayedPromise2();\n this._response = new DelayedPromise2();\n this._finishReason = new DelayedPromise2();\n const model = resolveLanguageModel(modelArg);\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const callSettings = prepareLanguageModelCallOptions(settings);\n const telemetryDispatcher = createTelemetryDispatcher({\n telemetry\n });\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 const callId = generateId2();\n (async () => {\n const jsonSchema2 = await outputStrategy.jsonSchema();\n await notify({\n event: {\n callId,\n operationId: \"ai.streamObject\",\n provider: model.provider,\n modelId: model.modelId,\n system: instructions != null ? instructions : system,\n prompt,\n messages,\n maxOutputTokens: callSettings.maxOutputTokens,\n temperature: callSettings.temperature,\n topP: callSettings.topP,\n topK: callSettings.topK,\n presencePenalty: callSettings.presencePenalty,\n frequencyPenalty: callSettings.frequencyPenalty,\n seed: callSettings.seed,\n maxRetries,\n headers,\n providerOptions,\n output: outputStrategy.type,\n schema: jsonSchema2,\n schemaName,\n schemaDescription\n },\n callbacks: [onStart, telemetryDispatcher.onStart]\n });\n const standardizedPrompt = await standardizePrompt({\n instructions,\n system,\n prompt,\n messages,\n allowSystemInMessages\n });\n const callOptions = {\n responseFormat: {\n type: \"json\",\n schema: jsonSchema2,\n name: schemaName,\n description: schemaDescription\n },\n ...prepareLanguageModelCallOptions(settings),\n prompt: await convertToLanguageModelPrompt({\n prompt: standardizedPrompt,\n supportedUrls: await model.supportedUrls,\n download: download2,\n provider: model.provider.split(\".\")[0]\n }),\n providerOptions,\n abortSignal,\n headers,\n includeRawChunks: false\n };\n await notify({\n event: {\n callId,\n stepNumber: 0,\n provider: model.provider,\n modelId: model.modelId,\n providerOptions,\n headers,\n promptMessages: callOptions.prompt\n },\n callbacks: [onStepStart, telemetryDispatcher.onObjectStepStart]\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 startTimestampMs = now2();\n const { stream, response, request } = await retry(\n () => model.doStream(callOptions)\n );\n self._request.resolve(request != null ? request : {});\n let warnings;\n let usage = createNullLanguageModelUsage();\n let finishReason;\n let providerMetadata;\n let object2;\n let error;\n let msToFirstChunk = void 0;\n let accumulatedText = \"\";\n let textDelta = \"\";\n let fullResponse = {\n id: generateId2(),\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 _a22, _b, _c;\n if (typeof chunk === \"object\" && chunk.type === \"stream-start\") {\n warnings = chunk.warnings;\n return;\n }\n if (isFirstChunk) {\n msToFirstChunk = now2() - startTimestampMs;\n isFirstChunk = false;\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: (_a22 = chunk.id) != null ? _a22 : 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.unified;\n usage = asLanguageModelUsage(chunk.usage);\n providerMetadata = chunk.providerMetadata;\n controller.enqueue({\n ...chunk,\n finishReason: chunk.finishReason.unified,\n usage,\n response: fullResponse\n });\n logWarnings({\n warnings: warnings != null ? warnings : [],\n provider: model.provider,\n model: model.modelId\n });\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 : \"other\");\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 async flush(controller) {\n try {\n const finalUsage = usage != null ? usage : {\n promptTokens: NaN,\n completionTokens: NaN,\n totalTokens: NaN\n };\n await notify({\n event: {\n callId,\n stepNumber: 0,\n provider: model.provider,\n modelId: model.modelId,\n finishReason: finishReason != null ? finishReason : \"other\",\n usage: finalUsage,\n objectText: accumulatedText,\n msToFirstChunk,\n reasoning: void 0,\n warnings,\n request: request != null ? request : {},\n response: {\n ...fullResponse,\n headers: response == null ? void 0 : response.headers\n },\n providerMetadata\n },\n callbacks: [\n onStepFinish,\n telemetryDispatcher.onObjectStepEnd\n ]\n });\n await notify({\n event: {\n callId,\n object: object2,\n error,\n reasoning: void 0,\n finishReason: finishReason != null ? finishReason : \"other\",\n usage: finalUsage,\n warnings,\n request: request != null ? request : {},\n response: {\n ...fullResponse,\n headers: response == null ? void 0 : response.headers\n },\n providerMetadata\n },\n callbacks: [onFinish, telemetryDispatcher.onEnd]\n });\n } catch (error2) {\n controller.enqueue({ type: \"error\", error: error2 });\n }\n }\n })\n );\n stitchableStream.addStream(transformedStream);\n })().catch(async (error) => {\n var _a22;\n await ((_a22 = telemetryDispatcher.onError) == null ? void 0 : _a22.call(telemetryDispatcher, { callId, 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 stream: this.textStream,\n ...init\n });\n }\n toTextStreamResponse(init) {\n return createTextStreamResponse({\n stream: this.textStream,\n ...init\n });\n }\n};\n\n// src/generate-speech/generate-speech.ts\nimport {\n detectMediaType as detectMediaType3,\n withUserAgentSuffix as withUserAgentSuffix8\n} 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 _a22;\n const resolvedModel = resolveSpeechModel(model);\n if (!resolvedModel) {\n throw new Error(\"Model could not be resolved\");\n }\n const headersWithUserAgent = withUserAgentSuffix8(\n headers != null ? headers : {},\n `ai/${VERSION}`\n );\n const { retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const result = await retry(\n () => resolvedModel.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({\n warnings: result.warnings,\n provider: resolvedModel.provider,\n model: resolvedModel.modelId\n });\n return new DefaultSpeechResult({\n audio: new DefaultGeneratedAudioFile({\n data: result.audio,\n mediaType: (_a22 = detectMediaType3({\n data: result.audio,\n topLevelType: \"audio\"\n })) != null ? _a22 : \"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 _a22;\n this.audio = options.audio;\n this.warnings = options.warnings;\n this.responses = options.responses;\n this.providerMetadata = (_a22 = options.providerMetadata) != null ? _a22 : {};\n }\n};\n\n// src/generate-speech/index.ts\nvar experimental_generateSpeech = generateSpeech;\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(-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 } else if (part.type === \"tool-approval-request\" || part.type === \"tool-approval-response\") {\n keptApprovalIds.add(part.approvalId);\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 const approvalIdToToolName = {};\n return {\n ...message,\n content: message.content.filter((part) => {\n if (part.type !== \"tool-call\" && part.type !== \"tool-result\" && part.type !== \"tool-approval-request\" && part.type !== \"tool-approval-response\") {\n return true;\n }\n if (part.type === \"tool-call\") {\n toolCallIdToToolName[part.toolCallId] = part.toolName;\n } else if (part.type === \"tool-approval-request\") {\n approvalIdToToolName[part.approvalId] = toolCallIdToToolName[part.toolCallId];\n }\n if ((part.type === \"tool-call\" || part.type === \"tool-result\") && keptToolCallIds.has(part.toolCallId) || (part.type === \"tool-approval-request\" || part.type === \"tool-approval-response\") && keptApprovalIds.has(part.approvalId)) {\n return true;\n }\n return toolCall.tools != null && !toolCall.tools.includes(\n part.type === \"tool-call\" || part.type === \"tool-result\" ? part.toolName : approvalIdToToolName[part.approvalId]\n );\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 {\n InvalidArgumentError as InvalidArgumentError2\n} 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 (chunking != null && typeof chunking === \"object\" && \"segment\" in chunking && typeof chunking.segment === \"function\") {\n const segmenter = chunking;\n detectChunk = (buffer) => {\n if (buffer.length === 0)\n return null;\n const iterator = segmenter.segment(buffer)[Symbol.iterator]();\n const first = iterator.next().value;\n return (first == null ? void 0 : first.segment) || null;\n };\n } else 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 instanceof RegExp ? chunking : void 0;\n if (chunkingRegex == null) {\n throw new InvalidArgumentError2({\n argument: \"chunking\",\n message: `Chunking must be \"word\", \"line\", a RegExp, an Intl.Segmenter, or a ChunkDetector function. 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 let type = void 0;\n let providerMetadata = void 0;\n function flushBuffer(controller) {\n if (buffer.length > 0 && type !== void 0) {\n controller.enqueue({\n type,\n text: buffer,\n id,\n ...providerMetadata != null ? { providerMetadata } : {}\n });\n buffer = \"\";\n providerMetadata = void 0;\n }\n }\n return new TransformStream({\n async transform(chunk, controller) {\n if (chunk.type !== \"text-delta\" && chunk.type !== \"reasoning-delta\") {\n flushBuffer(controller);\n controller.enqueue(chunk);\n return;\n }\n if ((chunk.type !== type || chunk.id !== id) && buffer.length > 0) {\n flushBuffer(controller);\n }\n buffer += chunk.text;\n id = chunk.id;\n type = chunk.type;\n if (chunk.providerMetadata != null) {\n providerMetadata = chunk.providerMetadata;\n }\n let match;\n while ((match = detectChunk(buffer)) != null) {\n controller.enqueue({ type, text: match, id });\n buffer = buffer.slice(match.length);\n await delay2(delayInMs);\n }\n }\n });\n };\n}\n\n// src/generate-video/generate-video.ts\nimport {\n convertBase64ToUint8Array as convertBase64ToUint8Array5,\n withUserAgentSuffix as withUserAgentSuffix9,\n detectMediaType as detectMediaType4\n} from \"@ai-sdk/provider-utils\";\nvar defaultDownload = createDownload();\nasync function experimental_generateVideo({\n model: modelArg,\n prompt: promptArg,\n n = 1,\n maxVideosPerCall,\n aspectRatio,\n resolution,\n duration,\n fps,\n seed,\n generateAudio,\n providerOptions,\n maxRetries: maxRetriesArg,\n abortSignal,\n headers,\n download: downloadFn = defaultDownload\n}) {\n var _a22;\n const model = resolveVideoModel(modelArg);\n const headersWithUserAgent = withUserAgentSuffix9(\n headers != null ? headers : {},\n `ai/${VERSION}`\n );\n const { retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const { prompt, image } = normalizePrompt2(promptArg);\n const maxVideosPerCallWithDefault = (_a22 = maxVideosPerCall != null ? maxVideosPerCall : await invokeModelMaxVideosPerCall(model)) != null ? _a22 : 1;\n const callCount = Math.ceil(n / maxVideosPerCallWithDefault);\n const callVideoCounts = Array.from({ length: callCount }, (_, index) => {\n const remaining = n - index * maxVideosPerCallWithDefault;\n return Math.min(remaining, maxVideosPerCallWithDefault);\n });\n const results = await Promise.all(\n callVideoCounts.map(\n async (callVideoCount) => await retry(\n () => model.doGenerate({\n prompt,\n n: callVideoCount,\n aspectRatio,\n resolution,\n duration,\n fps,\n seed,\n generateAudio,\n image,\n providerOptions: providerOptions != null ? providerOptions : {},\n headers: headersWithUserAgent,\n abortSignal\n })\n )\n )\n );\n const videos = [];\n const warnings = [];\n const responses = [];\n const providerMetadata = {};\n for (const result of results) {\n for (const videoData of result.videos) {\n switch (videoData.type) {\n case \"url\": {\n const { data, mediaType: downloadedMediaType } = await downloadFn({\n url: new URL(videoData.url),\n abortSignal\n });\n const isUsableMediaType = (type) => !!type && type !== \"application/octet-stream\";\n const mediaType = isUsableMediaType(videoData.mediaType) && videoData.mediaType || isUsableMediaType(downloadedMediaType) && downloadedMediaType || detectMediaType4({\n data,\n topLevelType: \"video\"\n }) || \"video/mp4\";\n videos.push(\n new DefaultGeneratedFile({\n data,\n mediaType\n })\n );\n break;\n }\n case \"base64\": {\n videos.push(\n new DefaultGeneratedFile({\n data: videoData.data,\n mediaType: videoData.mediaType || \"video/mp4\"\n })\n );\n break;\n }\n case \"binary\": {\n const mediaType = videoData.mediaType || detectMediaType4({\n data: videoData.data,\n topLevelType: \"video\"\n }) || \"video/mp4\";\n videos.push(\n new DefaultGeneratedFile({\n data: videoData.data,\n mediaType\n })\n );\n break;\n }\n }\n }\n warnings.push(...result.warnings);\n responses.push({\n timestamp: result.response.timestamp,\n modelId: result.response.modelId,\n headers: result.response.headers,\n providerMetadata: result.providerMetadata\n });\n if (result.providerMetadata != null) {\n for (const [providerName, metadata] of Object.entries(\n result.providerMetadata\n )) {\n const existingMetadata = providerMetadata[providerName];\n if (existingMetadata != null && typeof existingMetadata === \"object\") {\n providerMetadata[providerName] = {\n ...existingMetadata,\n ...metadata\n };\n if (\"videos\" in existingMetadata && Array.isArray(existingMetadata.videos) && \"videos\" in metadata && Array.isArray(metadata.videos)) {\n providerMetadata[providerName].videos = [\n ...existingMetadata.videos,\n ...metadata.videos\n ];\n }\n } else {\n providerMetadata[providerName] = metadata;\n }\n }\n }\n }\n if (videos.length === 0) {\n throw new NoVideoGeneratedError({ responses });\n }\n if (warnings.length > 0) {\n logWarnings({\n warnings,\n provider: model.provider,\n model: model.modelId\n });\n }\n return {\n video: videos[0],\n videos,\n warnings,\n responses,\n providerMetadata\n };\n}\nfunction normalizePrompt2(promptArg) {\n var _a22, _b;\n if (typeof promptArg === \"string\") {\n return {\n prompt: promptArg,\n image: void 0\n };\n }\n let image;\n if (promptArg.image != null) {\n const dataContent = promptArg.image;\n if (typeof dataContent === \"string\") {\n if (dataContent.startsWith(\"http://\") || dataContent.startsWith(\"https://\")) {\n image = {\n type: \"url\",\n url: dataContent\n };\n } else if (dataContent.startsWith(\"data:\")) {\n const { mediaType, base64Content } = splitDataUrl(dataContent);\n image = {\n type: \"file\",\n mediaType: mediaType != null ? mediaType : \"image/png\",\n data: convertBase64ToUint8Array5(base64Content != null ? base64Content : \"\")\n };\n } else {\n const bytes = convertBase64ToUint8Array5(dataContent);\n const mediaType = (_a22 = detectMediaType4({\n data: bytes,\n topLevelType: \"image\"\n })) != null ? _a22 : \"image/png\";\n image = {\n type: \"file\",\n mediaType,\n data: bytes\n };\n }\n } else if (dataContent instanceof Uint8Array) {\n const mediaType = (_b = detectMediaType4({\n data: dataContent,\n topLevelType: \"image\"\n })) != null ? _b : \"image/png\";\n image = {\n type: \"file\",\n mediaType,\n data: dataContent\n };\n }\n }\n return {\n prompt: promptArg.text,\n image\n };\n}\nasync function invokeModelMaxVideosPerCall(model) {\n if (typeof model.maxVideosPerCall === \"function\") {\n return await model.maxVideosPerCall({ modelId: model.modelId });\n }\n return model.maxVideosPerCall;\n}\n\n// src/middleware/default-embedding-settings-middleware.ts\nfunction defaultEmbeddingSettingsMiddleware({\n settings\n}) {\n return {\n specificationVersion: \"v4\",\n transformParams: async ({ params }) => {\n return mergeObjects(settings, params);\n }\n };\n}\n\n// src/middleware/default-settings-middleware.ts\nfunction defaultSettingsMiddleware({\n settings\n}) {\n return {\n specificationVersion: \"v4\",\n transformParams: async ({ params }) => {\n return mergeObjects(settings, params);\n }\n };\n}\n\n// src/middleware/extract-json-middleware.ts\nfunction defaultTransform(text2) {\n return text2.replace(/^```(?:json)?\\s*\\n?/, \"\").replace(/\\n?```\\s*$/, \"\").trim();\n}\nfunction extractJsonMiddleware(options) {\n var _a22;\n const transform = (_a22 = options == null ? void 0 : options.transform) != null ? _a22 : defaultTransform;\n const hasCustomTransform = (options == null ? void 0 : options.transform) !== void 0;\n return {\n specificationVersion: \"v4\",\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 transformedContent.push({\n ...part,\n text: transform(part.text)\n });\n }\n return { content: transformedContent, ...rest };\n },\n wrapStream: async ({ doStream }) => {\n const { stream, ...rest } = await doStream();\n const textBlocks = createIdMap();\n const SUFFIX_BUFFER_SIZE = 12;\n return {\n stream: stream.pipeThrough(\n new TransformStream({\n transform: (chunk, controller) => {\n if (chunk.type === \"text-start\") {\n textBlocks[chunk.id] = {\n startEvent: chunk,\n // Custom transforms need to buffer all content\n phase: hasCustomTransform ? \"buffering\" : \"prefix\",\n buffer: \"\",\n prefixStripped: false\n };\n return;\n }\n if (chunk.type === \"text-delta\") {\n const block = textBlocks[chunk.id];\n if (!block) {\n controller.enqueue(chunk);\n return;\n }\n block.buffer += chunk.delta;\n if (block.phase === \"buffering\") {\n return;\n }\n if (block.phase === \"prefix\") {\n if (block.buffer.length > 0 && !block.buffer.startsWith(\"`\")) {\n block.phase = \"streaming\";\n controller.enqueue(block.startEvent);\n } else if (block.buffer.startsWith(\"```\")) {\n if (block.buffer.includes(\"\\n\")) {\n const prefixMatch = block.buffer.match(/^```(?:json)?\\s*\\n/);\n if (prefixMatch) {\n block.buffer = block.buffer.slice(\n prefixMatch[0].length\n );\n block.prefixStripped = true;\n block.phase = \"streaming\";\n controller.enqueue(block.startEvent);\n } else {\n block.phase = \"streaming\";\n controller.enqueue(block.startEvent);\n }\n }\n } else if (block.buffer.length >= 3 && !block.buffer.startsWith(\"```\")) {\n block.phase = \"streaming\";\n controller.enqueue(block.startEvent);\n }\n }\n if (block.phase === \"streaming\" && block.buffer.length > SUFFIX_BUFFER_SIZE) {\n const toStream = block.buffer.slice(0, -SUFFIX_BUFFER_SIZE);\n block.buffer = block.buffer.slice(-SUFFIX_BUFFER_SIZE);\n controller.enqueue({\n type: \"text-delta\",\n id: chunk.id,\n delta: toStream\n });\n }\n return;\n }\n if (chunk.type === \"text-end\") {\n const block = textBlocks[chunk.id];\n if (block) {\n if (block.phase === \"prefix\" || block.phase === \"buffering\") {\n controller.enqueue(block.startEvent);\n }\n let remaining = block.buffer;\n if (block.phase === \"buffering\") {\n remaining = transform(remaining);\n } else if (block.prefixStripped) {\n remaining = remaining.replace(/\\n?```\\s*$/, \"\").trimEnd();\n } else {\n remaining = transform(remaining);\n }\n if (remaining.length > 0) {\n controller.enqueue({\n type: \"text-delta\",\n id: chunk.id,\n delta: remaining\n });\n }\n controller.enqueue(chunk);\n delete textBlocks[chunk.id];\n return;\n }\n }\n controller.enqueue(chunk);\n }\n })\n ),\n ...rest\n };\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 specificationVersion: \"v4\",\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 = createIdMap();\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 if (activeExtraction.isFirstReasoning) {\n controller.enqueue({\n type: \"reasoning-start\",\n id: `reasoning-${activeExtraction.idCounter}`\n });\n }\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 specificationVersion: \"v4\",\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/add-tool-input-examples-middleware.ts\nfunction defaultFormatExample(example) {\n return JSON.stringify(example.input);\n}\nfunction addToolInputExamplesMiddleware({\n prefix = \"Input Examples:\",\n format = defaultFormatExample,\n remove = true\n} = {}) {\n return {\n specificationVersion: \"v4\",\n transformParams: async ({ params }) => {\n var _a22;\n if (!((_a22 = params.tools) == null ? void 0 : _a22.length)) {\n return params;\n }\n const transformedTools = params.tools.map((tool2) => {\n var _a23;\n if (tool2.type !== \"function\" || !((_a23 = tool2.inputExamples) == null ? void 0 : _a23.length)) {\n return tool2;\n }\n const formattedExamples = tool2.inputExamples.map((example, index) => format(example, index)).join(\"\\n\");\n const examplesSection = `${prefix}\n${formattedExamples}`;\n const toolDescription = tool2.description ? `${tool2.description}\n\n${examplesSection}` : examplesSection;\n return {\n ...tool2,\n description: toolDescription,\n inputExamples: remove ? void 0 : tool2.inputExamples\n };\n });\n return {\n ...params,\n tools: transformedTools\n };\n }\n };\n}\n\n// src/middleware/wrap-language-model.ts\nimport { asArray as asArray7 } from \"@ai-sdk/provider-utils\";\nvar wrapLanguageModel = ({\n model: inputModel,\n middleware: middlewareArg,\n modelId,\n providerId\n}) => {\n const model = asLanguageModelV4(inputModel);\n return [...asArray7(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 _a22, _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: \"v4\",\n provider: (_a22 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a22 : 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 () => await model.doGenerate(transformedParams);\n const doStream = async () => await model.doStream(transformedParams);\n return wrapGenerate ? await wrapGenerate({\n doGenerate,\n doStream,\n params: transformedParams,\n model\n }) : await doGenerate();\n },\n async doStream(params) {\n const transformedParams = await doTransform({ params, type: \"stream\" });\n const doGenerate = async () => await model.doGenerate(transformedParams);\n const doStream = async () => await model.doStream(transformedParams);\n return wrapStream ? await wrapStream({\n doGenerate,\n doStream,\n params: transformedParams,\n model\n }) : await doStream();\n }\n };\n};\n\n// src/middleware/wrap-embedding-model.ts\nimport { asArray as asArray8 } from \"@ai-sdk/provider-utils\";\nvar wrapEmbeddingModel = ({\n model: inputModel,\n middleware: middlewareArg,\n modelId,\n providerId\n}) => {\n const model = asEmbeddingModelV4(inputModel);\n return [...asArray8(middlewareArg)].reverse().reduce((wrappedModel, middleware) => {\n return doWrap2({ model: wrappedModel, middleware, modelId, providerId });\n }, model);\n};\nvar doWrap2 = ({\n model,\n middleware: {\n transformParams,\n wrapEmbed,\n overrideProvider,\n overrideModelId,\n overrideMaxEmbeddingsPerCall,\n overrideSupportsParallelCalls\n },\n modelId,\n providerId\n}) => {\n var _a22, _b, _c, _d;\n async function doTransform({\n params\n }) {\n return transformParams ? await transformParams({ params, model }) : params;\n }\n return {\n specificationVersion: \"v4\",\n provider: (_a22 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a22 : model.provider,\n modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,\n maxEmbeddingsPerCall: (_c = overrideMaxEmbeddingsPerCall == null ? void 0 : overrideMaxEmbeddingsPerCall({ model })) != null ? _c : model.maxEmbeddingsPerCall,\n supportsParallelCalls: (_d = overrideSupportsParallelCalls == null ? void 0 : overrideSupportsParallelCalls({ model })) != null ? _d : model.supportsParallelCalls,\n async doEmbed(params) {\n const transformedParams = await doTransform({ params });\n const doEmbed = async () => await model.doEmbed(transformedParams);\n return wrapEmbed ? await wrapEmbed({\n doEmbed,\n params: transformedParams,\n model\n }) : await doEmbed();\n }\n };\n};\n\n// src/middleware/wrap-image-model.ts\nimport { asArray as asArray9 } from \"@ai-sdk/provider-utils\";\nvar wrapImageModel = ({\n model: inputModel,\n middleware: middlewareArg,\n modelId,\n providerId\n}) => {\n const model = asImageModelV4(inputModel);\n return [...asArray9(middlewareArg)].reverse().reduce((wrappedModel, middleware) => {\n return doWrap3({ model: wrappedModel, middleware, modelId, providerId });\n }, model);\n};\nvar doWrap3 = ({\n model,\n middleware: {\n transformParams,\n wrapGenerate,\n overrideProvider,\n overrideModelId,\n overrideMaxImagesPerCall\n },\n modelId,\n providerId\n}) => {\n var _a22, _b, _c;\n async function doTransform({ params }) {\n return transformParams ? await transformParams({ params, model }) : params;\n }\n const maxImagesPerCallRaw = (_a22 = overrideMaxImagesPerCall == null ? void 0 : overrideMaxImagesPerCall({ model })) != null ? _a22 : model.maxImagesPerCall;\n const maxImagesPerCall = maxImagesPerCallRaw instanceof Function ? maxImagesPerCallRaw.bind(model) : maxImagesPerCallRaw;\n return {\n specificationVersion: \"v4\",\n provider: (_b = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _b : model.provider,\n modelId: (_c = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _c : model.modelId,\n maxImagesPerCall,\n async doGenerate(params) {\n const transformedParams = await doTransform({ params });\n const doGenerate = async () => await model.doGenerate(transformedParams);\n return wrapGenerate ? await wrapGenerate({\n doGenerate,\n params: transformedParams,\n model\n }) : await doGenerate();\n }\n };\n};\n\n// src/middleware/wrap-provider.ts\nfunction wrapProvider({\n provider,\n languageModelMiddleware,\n imageModelMiddleware\n}) {\n const providerV4 = asProviderV4(provider);\n return {\n specificationVersion: \"v4\",\n languageModel: (modelId) => wrapLanguageModel({\n model: providerV4.languageModel(modelId),\n middleware: languageModelMiddleware\n }),\n embeddingModel: providerV4.embeddingModel,\n imageModel: (modelId) => {\n let model = providerV4.imageModel(modelId);\n if (imageModelMiddleware != null) {\n model = wrapImageModel({ model, middleware: imageModelMiddleware });\n }\n return model;\n },\n transcriptionModel: providerV4.transcriptionModel,\n speechModel: providerV4.speechModel,\n rerankingModel: providerV4.rerankingModel\n };\n}\n\n// src/realtime/audio-utils.ts\nfunction encodeRealtimeAudio(float32Array) {\n const buffer = new ArrayBuffer(float32Array.length * 2);\n const view = new DataView(buffer);\n for (let i = 0; i < float32Array.length; i++) {\n const s = Math.max(-1, Math.min(1, float32Array[i]));\n view.setInt16(i * 2, s < 0 ? s * 32768 : s * 32767, true);\n }\n const bytes = new Uint8Array(buffer);\n const chunkSize = 32768;\n let binary = \"\";\n for (let i = 0; i < bytes.length; i += chunkSize) {\n const chunk = bytes.subarray(i, i + chunkSize);\n binary += String.fromCharCode(...chunk);\n }\n return btoa(binary);\n}\nfunction decodeRealtimeAudio(base64Audio) {\n const binaryString = atob(base64Audio);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n const pcm16 = new Int16Array(bytes.buffer);\n const float32 = new Float32Array(pcm16.length);\n for (let i = 0; i < pcm16.length; i++) {\n float32[i] = pcm16[i] / 32768;\n }\n return float32;\n}\nfunction resampleAudio(input, inputRate, outputRate) {\n if (inputRate === outputRate) {\n return input;\n }\n const ratio = inputRate / outputRate;\n const outputLength = Math.round(input.length / ratio);\n const output = new Float32Array(outputLength);\n for (let i = 0; i < outputLength; i++) {\n const srcIndex = i * ratio;\n const srcIndexFloor = Math.floor(srcIndex);\n const srcIndexCeil = Math.min(srcIndexFloor + 1, input.length - 1);\n const fraction = srcIndex - srcIndexFloor;\n output[i] = input[srcIndexFloor] * (1 - fraction) + input[srcIndexCeil] * fraction;\n }\n return output;\n}\n\n// src/realtime/get-realtime-tool-definitions.ts\nimport {\n asSchema as asSchema6\n} from \"@ai-sdk/provider-utils\";\nasync function getRealtimeToolDefinitions({\n tools,\n toolsContext = {}\n}) {\n const definitions = [];\n for (const [name22, tool2] of Object.entries(tools)) {\n const toolType = tool2.type;\n switch (toolType) {\n case void 0:\n case \"function\":\n case \"dynamic\": {\n const description = resolveRealtimeToolDescription({\n tool: tool2,\n toolName: name22,\n toolsContext\n });\n definitions.push({\n type: \"function\",\n name: name22,\n description,\n parameters: await asSchema6(tool2.inputSchema).jsonSchema\n });\n break;\n }\n case \"provider\":\n break;\n default: {\n const exhaustiveCheck = toolType;\n throw new Error(`Unsupported tool type: ${exhaustiveCheck}`);\n }\n }\n }\n return definitions;\n}\nfunction resolveRealtimeToolDescription({\n tool: tool2,\n toolName,\n toolsContext\n}) {\n return tool2.description === void 0 ? void 0 : typeof tool2.description === \"string\" ? tool2.description : tool2.description({\n context: toolsContext[toolName]\n });\n}\n\n// src/realtime/browser-realtime-audio.ts\nvar BrowserRealtimeAudio = class {\n constructor(options) {\n this.captureContext = null;\n this.captureProcessor = null;\n this.captureSource = null;\n this.captureStream = null;\n this.playbackContext = null;\n this.playbackQueue = [];\n this.playbackTime = 0;\n this.playbackStartTime = 0;\n this.activeSources = /* @__PURE__ */ new Set();\n this.isPlaying = false;\n this.captureSampleRate = options.captureSampleRate;\n this.playbackSampleRate = options.playbackSampleRate;\n this.onAudio = options.onAudio;\n this.onPlayingChange = options.onPlayingChange;\n this.onCapturingChange = options.onCapturingChange;\n }\n ensurePlaybackContext() {\n if (this.playbackContext == null) {\n this.playbackContext = new AudioContext({\n sampleRate: this.playbackSampleRate\n });\n }\n }\n startCapture(stream) {\n const ctx = new AudioContext({ sampleRate: this.captureSampleRate });\n this.captureContext = ctx;\n this.captureStream = stream;\n const source = ctx.createMediaStreamSource(stream);\n this.captureSource = source;\n const processor = ctx.createScriptProcessor(4096, 1, 1);\n this.captureProcessor = processor;\n processor.onaudioprocess = (event) => {\n const inputData = event.inputBuffer.getChannelData(0);\n const samples = resampleAudio(\n new Float32Array(inputData),\n ctx.sampleRate,\n this.captureSampleRate\n );\n this.onAudio(encodeRealtimeAudio(samples));\n };\n source.connect(processor);\n processor.connect(ctx.destination);\n this.onCapturingChange(true);\n }\n stopCapture() {\n var _a22, _b, _c, _d;\n (_a22 = this.captureProcessor) == null ? void 0 : _a22.disconnect();\n (_b = this.captureSource) == null ? void 0 : _b.disconnect();\n void ((_c = this.captureContext) == null ? void 0 : _c.close());\n (_d = this.captureStream) == null ? void 0 : _d.getTracks().forEach((track) => track.stop());\n this.captureProcessor = null;\n this.captureSource = null;\n this.captureContext = null;\n this.captureStream = null;\n this.onCapturingChange(false);\n }\n playAudio(base64Audio) {\n this.ensurePlaybackContext();\n this.playbackQueue.push(decodeRealtimeAudio(base64Audio));\n this.schedulePlayback();\n }\n stopPlayback() {\n this.playbackQueue = [];\n for (const source of this.activeSources) {\n try {\n source.stop();\n } catch (e) {\n }\n }\n this.activeSources.clear();\n if (this.playbackContext != null) {\n this.playbackTime = this.playbackContext.currentTime;\n }\n this.setPlaying(false);\n }\n getPlaybackOffsetMs() {\n const ctx = this.playbackContext;\n if (ctx == null)\n return 0;\n return (ctx.currentTime - this.playbackStartTime) * 1e3;\n }\n dispose() {\n var _a22;\n this.stopCapture();\n this.stopPlayback();\n void ((_a22 = this.playbackContext) == null ? void 0 : _a22.close());\n this.playbackContext = null;\n }\n setPlaying(isPlaying) {\n var _a22, _b;\n if (isPlaying && !this.isPlaying) {\n this.playbackStartTime = (_b = (_a22 = this.playbackContext) == null ? void 0 : _a22.currentTime) != null ? _b : 0;\n }\n if (this.isPlaying !== isPlaying) {\n this.isPlaying = isPlaying;\n this.onPlayingChange(isPlaying);\n }\n }\n schedulePlayback() {\n const ctx = this.playbackContext;\n if (ctx == null || this.playbackQueue.length === 0)\n return;\n while (this.playbackQueue.length > 0) {\n const samples = this.playbackQueue.shift();\n const buffer = ctx.createBuffer(\n 1,\n samples.length,\n this.playbackSampleRate\n );\n buffer.getChannelData(0).set(samples);\n const source = ctx.createBufferSource();\n source.buffer = buffer;\n source.connect(ctx.destination);\n const startTime = Math.max(this.playbackTime, ctx.currentTime);\n source.start(startTime);\n this.playbackTime = startTime + buffer.duration;\n this.activeSources.add(source);\n this.setPlaying(true);\n source.onended = () => {\n this.activeSources.delete(source);\n if (this.playbackQueue.length === 0 && this.activeSources.size === 0) {\n this.setPlaying(false);\n }\n };\n }\n }\n};\n\n// src/realtime/browser-realtime-transport.ts\nimport { safeParseJSON as safeParseJSON5 } from \"@ai-sdk/provider-utils\";\nvar BrowserRealtimeTransport = class {\n constructor(options) {\n this.ws = null;\n this.sendQueue = Promise.resolve();\n this.model = options.model;\n this.onServerEvent = options.onServerEvent;\n this.onError = options.onError;\n this.onClose = options.onClose;\n }\n connect({\n token,\n url,\n onOpen\n }) {\n var _a22;\n (_a22 = this.ws) == null ? void 0 : _a22.close();\n this.ws = null;\n const wsConfig = this.model.getWebSocketConfig({ token, url });\n const ws = new WebSocket(wsConfig.url, wsConfig.protocols);\n this.ws = ws;\n ws.onopen = () => {\n if (this.ws !== ws)\n return;\n onOpen();\n };\n ws.onmessage = (messageEvent) => {\n void this.handleMessage(messageEvent);\n };\n ws.onerror = () => {\n this.onError(new Error(\"WebSocket connection error\"));\n };\n ws.onclose = () => {\n if (this.ws === ws) {\n this.ws = null;\n this.onClose();\n }\n };\n }\n disconnect() {\n var _a22;\n (_a22 = this.ws) == null ? void 0 : _a22.close();\n this.ws = null;\n }\n sendEvent(event) {\n this.sendQueue = this.sendQueue.then(async () => {\n const serialized = await this.model.serializeClientEvent(event);\n if (serialized != null) {\n this.sendRaw(serialized);\n }\n }).catch((error) => {\n this.onError(\n error instanceof Error ? error : new Error(`Failed to send realtime event: ${String(error)}`)\n );\n });\n }\n sendRaw(data) {\n var _a22;\n if (((_a22 = this.ws) == null ? void 0 : _a22.readyState) === WebSocket.OPEN) {\n this.ws.send(JSON.stringify(data));\n }\n }\n dispose() {\n this.disconnect();\n }\n async handleMessage(messageEvent) {\n let text2;\n if (typeof messageEvent.data === \"string\") {\n text2 = messageEvent.data;\n } else if (messageEvent.data instanceof Blob) {\n text2 = await messageEvent.data.text();\n } else {\n text2 = new TextDecoder().decode(messageEvent.data);\n }\n const parseResult = await safeParseJSON5({ text: text2 });\n if (!parseResult.success)\n return;\n const rawEvent = parseResult.value;\n if (this.model.getHealthCheckResponse != null) {\n const autoResponse = this.model.getHealthCheckResponse(rawEvent);\n if (autoResponse != null) {\n this.sendRaw(autoResponse);\n }\n }\n const result = this.model.parseServerEvent(rawEvent);\n const events = Array.isArray(result) ? result : [result];\n for (const event of events) {\n await this.onServerEvent(event);\n }\n }\n};\n\n// src/realtime/realtime-event-reducer.ts\nimport { safeParseJSON as safeParseJSON6 } from \"@ai-sdk/provider-utils\";\nfunction createInitialRealtimeState() {\n return {\n status: \"disconnected\",\n messages: [],\n events: [],\n isCapturing: false,\n isPlaying: false\n };\n}\nvar RealtimeEventReducer = class {\n constructor(maxEvents = 500) {\n this.maxEvents = maxEvents;\n this.currentAssistantMessageId = null;\n this.textAccumulators = /* @__PURE__ */ new Map();\n this.toolArgAccumulators = /* @__PURE__ */ new Map();\n this.toolCallIdToMessageId = /* @__PURE__ */ new Map();\n this.toolCallIdToName = /* @__PURE__ */ new Map();\n this.inputAudioMessageInsertIndex = /* @__PURE__ */ new Map();\n this.itemIdToPartLocation = /* @__PURE__ */ new Map();\n }\n setStatus(state, status) {\n return { ...state, status };\n }\n setCapturing(state, isCapturing) {\n return { ...state, isCapturing };\n }\n setPlaying(state, isPlaying) {\n return { ...state, isPlaying };\n }\n addUserTextMessage(state, text2) {\n return {\n ...state,\n messages: [\n ...state.messages,\n {\n id: `user-${Date.now()}`,\n role: \"user\",\n parts: [{ type: \"text\", text: text2, state: \"done\" }]\n }\n ]\n };\n }\n addToolOutput(state, callId, result) {\n return {\n state: this.updateToolPartState(state, callId, result),\n output: {\n callId,\n name: this.toolCallIdToName.get(callId),\n output: JSON.stringify(result)\n }\n };\n }\n async reduceServerEvent(state, event) {\n var _a22;\n let nextState = this.pushEvent(state, event);\n const effects = [];\n switch (event.type) {\n case \"session-created\":\n case \"session-updated\": {\n if (nextState.status === \"connecting\") {\n nextState = this.setStatus(nextState, \"connected\");\n }\n break;\n }\n case \"audio-delta\": {\n effects.push({\n type: \"play-audio\",\n itemId: event.itemId,\n delta: event.delta\n });\n break;\n }\n case \"audio-committed\": {\n if (event.itemId != null) {\n this.inputAudioMessageInsertIndex.set(\n event.itemId,\n nextState.messages.length\n );\n }\n break;\n }\n case \"audio-transcript-delta\":\n case \"text-delta\": {\n nextState = this.appendTextDelta(nextState, event.itemId, event.delta);\n break;\n }\n case \"audio-transcript-done\": {\n nextState = this.finalizeText(\n nextState,\n event.itemId,\n event.transcript\n );\n break;\n }\n case \"text-done\": {\n nextState = this.finalizeText(nextState, event.itemId, event.text);\n break;\n }\n case \"input-transcription-completed\": {\n nextState = this.addInputTranscriptionMessage(\n nextState,\n event.itemId,\n event.transcript\n );\n break;\n }\n case \"response-created\":\n case \"response-done\": {\n this.currentAssistantMessageId = null;\n break;\n }\n case \"speech-started\": {\n this.currentAssistantMessageId = null;\n effects.push({ type: \"speech-started\" });\n break;\n }\n case \"function-call-arguments-delta\": {\n const { state: updatedState, messageId } = this.getOrCreateAssistantMessage(nextState);\n nextState = updatedState;\n this.toolCallIdToMessageId.set(event.callId, messageId);\n const acc = (_a22 = this.toolArgAccumulators.get(event.callId)) != null ? _a22 : \"\";\n this.toolArgAccumulators.set(event.callId, acc + event.delta);\n nextState = this.ensureToolPart(nextState, messageId, event.callId);\n break;\n }\n case \"function-call-arguments-done\": {\n this.toolArgAccumulators.delete(event.callId);\n this.toolCallIdToName.set(event.callId, event.name);\n const parseResult = await safeParseJSON6({ text: event.arguments });\n const parsedInput = parseResult.success ? parseResult.value : {};\n const messageId = this.toolCallIdToMessageId.get(event.callId);\n if (messageId != null) {\n nextState = this.markToolInputAvailable(\n nextState,\n messageId,\n event.callId,\n event.name,\n parsedInput\n );\n }\n if (!parseResult.success) {\n effects.push({\n type: \"error\",\n error: new Error(\n `Failed to parse tool arguments: ${event.arguments}`\n )\n });\n } else {\n effects.push({\n type: \"tool-call\",\n callId: event.callId,\n name: event.name,\n args: parsedInput,\n rawArguments: event.arguments\n });\n }\n break;\n }\n case \"error\": {\n effects.push({ type: \"error\", error: new Error(event.message) });\n break;\n }\n }\n return { state: nextState, effects };\n }\n pushEvent(state, event) {\n const events = [...state.events, event];\n return {\n ...state,\n events: events.length > this.maxEvents ? events.slice(-this.maxEvents) : events\n };\n }\n getOrCreateAssistantMessage(state) {\n if (this.currentAssistantMessageId != null) {\n return { state, messageId: this.currentAssistantMessageId };\n }\n const messageId = `assistant-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`;\n this.currentAssistantMessageId = messageId;\n return {\n state: {\n ...state,\n messages: [\n ...state.messages,\n {\n id: messageId,\n role: \"assistant\",\n parts: []\n }\n ]\n },\n messageId\n };\n }\n addInputTranscriptionMessage(state, itemId, transcript) {\n var _a22;\n const messageId = `user-${itemId}`;\n const existingMessage = state.messages.find(\n (message) => message.id === messageId\n );\n if (existingMessage != null) {\n return {\n ...state,\n messages: state.messages.map(\n (message) => message.id === messageId ? {\n ...message,\n parts: [\n {\n type: \"text\",\n text: transcript,\n state: \"done\"\n }\n ]\n } : message\n )\n };\n }\n const insertIndex = Math.min(\n (_a22 = this.inputAudioMessageInsertIndex.get(itemId)) != null ? _a22 : state.messages.length,\n state.messages.length\n );\n const messages = [...state.messages];\n messages.splice(insertIndex, 0, {\n id: messageId,\n role: \"user\",\n parts: [\n {\n type: \"text\",\n text: transcript,\n state: \"done\"\n }\n ]\n });\n return {\n ...state,\n messages\n };\n }\n appendTextDelta(state, itemId, delta) {\n var _a22;\n const { state: stateWithMessage, messageId } = this.getOrCreateAssistantMessage(state);\n const acc = (_a22 = this.textAccumulators.get(itemId)) != null ? _a22 : \"\";\n const text2 = acc + delta;\n this.textAccumulators.set(itemId, text2);\n const location = this.itemIdToPartLocation.get(itemId);\n if (location != null) {\n return this.updateMessagePart(\n stateWithMessage,\n location.messageId,\n location.partIndex,\n { type: \"text\", text: text2, state: \"streaming\" }\n );\n }\n return {\n ...stateWithMessage,\n messages: stateWithMessage.messages.map((message) => {\n if (message.id !== messageId)\n return message;\n const partIndex = message.parts.length;\n this.itemIdToPartLocation.set(itemId, { messageId, partIndex });\n return {\n ...message,\n parts: [\n ...message.parts,\n { type: \"text\", text: text2, state: \"streaming\" }\n ]\n };\n })\n };\n }\n finalizeText(state, itemId, finalText) {\n var _a22;\n const text2 = (_a22 = finalText != null ? finalText : this.textAccumulators.get(itemId)) != null ? _a22 : \"\";\n this.textAccumulators.delete(itemId);\n const location = this.itemIdToPartLocation.get(itemId);\n if (location == null)\n return state;\n this.itemIdToPartLocation.delete(itemId);\n return this.updateMessagePart(\n state,\n location.messageId,\n location.partIndex,\n { type: \"text\", text: text2, state: \"done\" }\n );\n }\n ensureToolPart(state, messageId, callId) {\n return {\n ...state,\n messages: state.messages.map((message) => {\n if (message.id !== messageId)\n return message;\n const existingPart = message.parts.find(\n (part) => part.type === \"dynamic-tool\" && part.toolCallId === callId\n );\n if (existingPart != null)\n return message;\n return {\n ...message,\n parts: [\n ...message.parts,\n {\n type: \"dynamic-tool\",\n toolName: \"\",\n toolCallId: callId,\n state: \"input-streaming\",\n input: void 0\n }\n ]\n };\n })\n };\n }\n markToolInputAvailable(state, messageId, callId, name22, input) {\n return {\n ...state,\n messages: state.messages.map((message) => {\n if (message.id !== messageId)\n return message;\n return {\n ...message,\n parts: message.parts.map((part) => {\n if (part.type !== \"dynamic-tool\")\n return part;\n const toolPart = part;\n if (toolPart.toolCallId !== callId)\n return part;\n return {\n ...toolPart,\n toolName: name22,\n state: \"input-available\",\n input\n };\n })\n };\n })\n };\n }\n updateToolPartState(state, callId, result) {\n const messageId = this.toolCallIdToMessageId.get(callId);\n if (messageId == null)\n return state;\n return {\n ...state,\n messages: state.messages.map((message) => {\n if (message.id !== messageId)\n return message;\n return {\n ...message,\n parts: message.parts.map((part) => {\n if (part.type !== \"dynamic-tool\")\n return part;\n const toolPart = part;\n if (toolPart.toolCallId !== callId)\n return part;\n return {\n ...toolPart,\n state: \"output-available\",\n output: result\n };\n })\n };\n })\n };\n }\n updateMessagePart(state, messageId, partIndex, part) {\n return {\n ...state,\n messages: state.messages.map((message) => {\n if (message.id !== messageId)\n return message;\n const parts = [...message.parts];\n parts[partIndex] = part;\n return { ...message, parts };\n })\n };\n }\n};\n\n// src/realtime/realtime-session.ts\nvar AbstractRealtimeSession = class {\n constructor(options) {\n this.state = createInitialRealtimeState();\n this.currentResponseItemId = null;\n // Tool calls requested by the current (tool-bearing) response, the outputs\n // that have been submitted for them, and whether that response has finished\n // delivering its tool calls. Used to request a single response only once\n // every tool output for the turn has been submitted.\n this.toolCallsInResponse = /* @__PURE__ */ new Set();\n this.submittedToolOutputs = /* @__PURE__ */ new Set();\n this.responseToolCallsClosed = false;\n var _a22, _b, _c, _d, _e, _f, _g, _h;\n this.model = options.model;\n this.api = options.api;\n this.sessionConfig = options.sessionConfig;\n this.maxEvents = (_a22 = options.maxEvents) != null ? _a22 : 500;\n this.reducer = new RealtimeEventReducer(this.maxEvents);\n this.onToolCall = options.onToolCall;\n this.onEvent = options.onEvent;\n this.onError = options.onError;\n const sampleRate = (_b = options.sampleRate) != null ? _b : 24e3;\n const captureSampleRate = (_e = (_d = (_c = options.sessionConfig) == null ? void 0 : _c.inputAudioFormat) == null ? void 0 : _d.rate) != null ? _e : sampleRate;\n const playbackSampleRate = (_h = (_g = (_f = options.sessionConfig) == null ? void 0 : _f.outputAudioFormat) == null ? void 0 : _g.rate) != null ? _h : sampleRate;\n this.transport = new BrowserRealtimeTransport({\n model: this.model,\n onServerEvent: (event) => this.handleServerEvent(event),\n onError: (error) => {\n var _a23;\n this.applyState(this.reducer.setStatus(this.state, \"error\"));\n (_a23 = this.onError) == null ? void 0 : _a23.call(this, error);\n },\n onClose: () => {\n this.applyState(this.reducer.setStatus(this.state, \"disconnected\"));\n }\n });\n this.audio = new BrowserRealtimeAudio({\n captureSampleRate,\n playbackSampleRate,\n onAudio: (audio) => this.sendAudio(audio),\n onCapturingChange: (isCapturing) => {\n this.applyState(this.reducer.setCapturing(this.state, isCapturing));\n },\n onPlayingChange: (isPlaying) => {\n this.applyState(this.reducer.setPlaying(this.state, isPlaying));\n }\n });\n }\n // ── Connection ─────────────────────────────────────────────────────\n async connect() {\n var _a22;\n this.applyState(this.reducer.setStatus(this.state, \"connecting\"));\n try {\n const response = await fetch(this.api.token, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ sessionConfig: this.sessionConfig })\n });\n if (!response.ok) {\n throw new Error(`Failed to fetch realtime setup: ${response.status}`);\n }\n const setupData = await response.json();\n const { token, url, tools: toolDefinitions } = setupData;\n const config = {\n ...this.sessionConfig,\n tools: toolDefinitions\n };\n this.audio.ensurePlaybackContext();\n this.transport.connect({\n token,\n url,\n onOpen: () => {\n this.sendEvent({\n type: \"session-update\",\n config\n });\n }\n });\n } catch (error) {\n this.applyState(this.reducer.setStatus(this.state, \"error\"));\n (_a22 = this.onError) == null ? void 0 : _a22.call(\n this,\n error instanceof Error ? error : new Error(`Connection failed: ${String(error)}`)\n );\n }\n }\n disconnect() {\n this.transport.disconnect();\n this.applyState(this.reducer.setStatus(this.state, \"disconnected\"));\n }\n // ── Sending events ─────────────────────────────────────────────────\n sendEvent(event) {\n this.transport.sendEvent(event);\n }\n sendTextMessage(text2) {\n this.sendEvent({\n type: \"conversation-item-create\",\n item: { type: \"text-message\", role: \"user\", text: text2 }\n });\n this.sendEvent({ type: \"response-create\" });\n this.applyState(this.reducer.addUserTextMessage(this.state, text2));\n }\n sendAudio(base64Audio) {\n this.sendEvent({ type: \"input-audio-append\", audio: base64Audio });\n }\n commitAudio() {\n this.sendEvent({ type: \"input-audio-commit\" });\n }\n clearAudioBuffer() {\n this.sendEvent({ type: \"input-audio-clear\" });\n }\n requestResponse(options) {\n this.sendEvent({\n type: \"response-create\",\n ...options != null ? { options } : {}\n });\n }\n cancelResponse() {\n this.sendEvent({ type: \"response-cancel\" });\n }\n // ── Tool output ───────────────────────────────────────────────────\n addToolOutput(callId, result) {\n const { state, output } = this.reducer.addToolOutput(\n this.state,\n callId,\n result\n );\n this.applyState(state);\n this.sendEvent({\n type: \"conversation-item-create\",\n item: {\n type: \"function-call-output\",\n callId: output.callId,\n name: output.name,\n output: output.output\n }\n });\n this.submittedToolOutputs.add(callId);\n this.maybeRequestToolResponse();\n }\n /**\n * Requests a single response once the tool-bearing response has finished\n * delivering its tool calls and every one of them has an output. Requesting a\n * response after each individual output can cause the model to continue\n * without the full tool context on multi-tool turns.\n */\n maybeRequestToolResponse() {\n if (!this.responseToolCallsClosed)\n return;\n if (this.toolCallsInResponse.size === 0)\n return;\n for (const callId of this.toolCallsInResponse) {\n if (!this.submittedToolOutputs.has(callId))\n return;\n }\n this.sendEvent({ type: \"response-create\" });\n this.toolCallsInResponse.clear();\n this.submittedToolOutputs.clear();\n this.responseToolCallsClosed = false;\n }\n // ── Audio capture ──────────────────────────────────────────────────\n startAudioCapture(stream) {\n this.audio.startCapture(stream);\n }\n stopAudioCapture() {\n this.audio.stopCapture();\n }\n // ── Playback ───────────────────────────────────────────────────────\n stopPlayback() {\n this.audio.stopPlayback();\n }\n // ── Cleanup ────────────────────────────────────────────────────────\n dispose() {\n this.transport.dispose();\n this.audio.dispose();\n this.applyState(\n this.reducer.setStatus(\n this.reducer.setPlaying(\n this.reducer.setCapturing(this.state, false),\n false\n ),\n \"disconnected\"\n )\n );\n }\n // ── Private helpers ────────────────────────────────────────────────\n applyState(nextState) {\n const previousState = this.state;\n this.state = nextState;\n if (previousState.status !== nextState.status) {\n this.setState(\"status\", nextState.status);\n }\n if (previousState.messages !== nextState.messages) {\n this.setState(\"messages\", nextState.messages);\n }\n if (previousState.events !== nextState.events) {\n this.setState(\"events\", nextState.events);\n }\n if (previousState.isCapturing !== nextState.isCapturing) {\n this.setState(\"isCapturing\", nextState.isCapturing);\n }\n if (previousState.isPlaying !== nextState.isPlaying) {\n this.setState(\"isPlaying\", nextState.isPlaying);\n }\n }\n async executeToolCall({\n name: name22,\n args,\n callId\n }) {\n var _a22, _b;\n if (this.onToolCall == null) {\n (_a22 = this.onError) == null ? void 0 : _a22.call(this, new Error(`No handler provided for tool \"${name22}\"`));\n return;\n }\n try {\n const result = await this.onToolCall({\n toolCall: { toolCallId: callId, toolName: name22, args }\n });\n if (result !== void 0) {\n this.addToolOutput(callId, result);\n }\n } catch (error) {\n (_b = this.onError) == null ? void 0 : _b.call(\n this,\n error instanceof Error ? error : new Error(`Client tool execution failed: ${String(error)}`)\n );\n }\n }\n async handleServerEvent(event) {\n var _a22;\n const result = await this.reducer.reduceServerEvent(this.state, event);\n this.applyState(result.state);\n (_a22 = this.onEvent) == null ? void 0 : _a22.call(this, event);\n for (const effect of result.effects) {\n this.handleReducerEffect(effect);\n }\n if (event.type === \"response-done\" && this.toolCallsInResponse.size > 0) {\n this.responseToolCallsClosed = true;\n this.maybeRequestToolResponse();\n }\n }\n handleReducerEffect(effect) {\n var _a22;\n switch (effect.type) {\n case \"play-audio\": {\n this.currentResponseItemId = effect.itemId;\n this.audio.playAudio(effect.delta);\n break;\n }\n case \"speech-started\": {\n if (this.state.isPlaying) {\n const playedMs = this.audio.getPlaybackOffsetMs();\n this.audio.stopPlayback();\n if (this.currentResponseItemId != null) {\n this.sendEvent({\n type: \"conversation-item-truncate\",\n itemId: this.currentResponseItemId,\n contentIndex: 0,\n audioEndMs: Math.round(playedMs)\n });\n }\n }\n break;\n }\n case \"tool-call\": {\n this.toolCallsInResponse.add(effect.callId);\n void this.executeToolCall({\n name: effect.name,\n args: effect.args,\n callId: effect.callId\n });\n break;\n }\n case \"error\": {\n (_a22 = this.onError) == null ? void 0 : _a22.call(this, effect.error);\n break;\n }\n }\n }\n};\n\n// src/registry/custom-provider.ts\nimport {\n NoSuchModelError as NoSuchModelError2\n} from \"@ai-sdk/provider\";\nfunction customProvider({\n languageModels,\n embeddingModels,\n imageModels,\n transcriptionModels,\n speechModels,\n rerankingModels,\n videoModels,\n files,\n skills,\n fallbackProvider: fallbackProviderArg\n}) {\n const fallbackProvider = fallbackProviderArg == null ? void 0 : asProviderV4(fallbackProviderArg);\n const baseProvider = {\n specificationVersion: \"v4\",\n languageModel(modelId) {\n if (languageModels != null && modelId in languageModels) {\n return resolveLanguageModel(languageModels[modelId]);\n }\n if (fallbackProvider) {\n return fallbackProvider.languageModel(modelId);\n }\n throw new NoSuchModelError2({ modelId, modelType: \"languageModel\" });\n },\n embeddingModel(modelId) {\n if (embeddingModels != null && modelId in embeddingModels) {\n return resolveEmbeddingModel(embeddingModels[modelId]);\n }\n if (fallbackProvider) {\n return fallbackProvider.embeddingModel(modelId);\n }\n throw new NoSuchModelError2({ modelId, modelType: \"embeddingModel\" });\n },\n imageModel(modelId) {\n if (imageModels != null && modelId in imageModels) {\n return resolveImageModel(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 const model = resolveTranscriptionModel(transcriptionModels[modelId]);\n if (model != null) {\n return model;\n }\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 const model = resolveSpeechModel(speechModels[modelId]);\n if (model != null) {\n return model;\n }\n }\n if (fallbackProvider == null ? void 0 : fallbackProvider.speechModel) {\n return fallbackProvider.speechModel(modelId);\n }\n throw new NoSuchModelError2({ modelId, modelType: \"speechModel\" });\n },\n rerankingModel(modelId) {\n if (rerankingModels != null && modelId in rerankingModels) {\n return resolveRerankingModel(rerankingModels[modelId]);\n }\n if (fallbackProvider == null ? void 0 : fallbackProvider.rerankingModel) {\n return fallbackProvider.rerankingModel(modelId);\n }\n throw new NoSuchModelError2({ modelId, modelType: \"rerankingModel\" });\n },\n videoModel(modelId) {\n if (videoModels != null && modelId in videoModels) {\n return resolveVideoModel(videoModels[modelId]);\n }\n const videoModel = fallbackProvider == null ? void 0 : fallbackProvider.videoModel;\n if (videoModel) {\n return videoModel(modelId);\n }\n throw new NoSuchModelError2({ modelId, modelType: \"videoModel\" });\n }\n };\n const filesAndSkills = {\n ...files != null || (fallbackProvider == null ? void 0 : fallbackProvider.files) != null ? {\n files() {\n return files != null ? files : fallbackProvider.files();\n }\n } : {},\n ...skills != null || (fallbackProvider == null ? void 0 : fallbackProvider.skills) != null ? {\n skills() {\n return skills != null ? skills : fallbackProvider.skills();\n }\n } : {}\n };\n return Object.assign(baseProvider, filesAndSkills);\n}\n\n// src/registry/no-such-provider-error.ts\nimport { AISDKError as AISDKError24, NoSuchModelError as NoSuchModelError3 } from \"@ai-sdk/provider\";\nvar name21 = \"AI_NoSuchProviderError\";\nvar marker21 = `vercel.ai.error.${name21}`;\nvar symbol21 = Symbol.for(marker21);\nvar _a21;\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: name21, modelId, modelType, message });\n this[_a21] = true;\n this.providerId = providerId;\n this.availableProviders = availableProviders;\n }\n static isInstance(error) {\n return AISDKError24.hasMarker(error, marker21);\n }\n};\n_a21 = symbol21;\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 imageModelMiddleware\n} = {}) {\n const registry = new DefaultProviderRegistry({\n separator,\n languageModelMiddleware,\n imageModelMiddleware\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 imageModelMiddleware\n }) {\n this.providers = {};\n this.separator = separator;\n this.languageModelMiddleware = languageModelMiddleware;\n this.imageModelMiddleware = imageModelMiddleware;\n }\n registerProvider({\n id,\n provider\n }) {\n var _a22;\n const providerV4 = asProviderV4(provider);\n const videoModel = (_a22 = provider.videoModel) == null ? void 0 : _a22.bind(provider);\n this.providers[id] = videoModel == null ? providerV4 : Object.assign(Object.create(Object.getPrototypeOf(providerV4)), {\n ...providerV4,\n videoModel: (modelId) => asVideoModelV4(videoModel(modelId))\n });\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 _a22, _b;\n const [providerId, modelId] = this.splitId(id, \"languageModel\");\n let model = (_b = (_a22 = this.getProvider(providerId, \"languageModel\")).languageModel) == null ? void 0 : _b.call(\n _a22,\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 embeddingModel(id) {\n var _a22;\n const [providerId, modelId] = this.splitId(id, \"embeddingModel\");\n const provider = this.getProvider(providerId, \"embeddingModel\");\n const model = (_a22 = provider.embeddingModel) == null ? void 0 : _a22.call(provider, modelId);\n if (model == null) {\n throw new NoSuchModelError4({\n modelId: id,\n modelType: \"embeddingModel\"\n });\n }\n return model;\n }\n imageModel(id) {\n var _a22;\n const [providerId, modelId] = this.splitId(id, \"imageModel\");\n const provider = this.getProvider(providerId, \"imageModel\");\n let model = (_a22 = provider.imageModel) == null ? void 0 : _a22.call(provider, modelId);\n if (model == null) {\n throw new NoSuchModelError4({ modelId: id, modelType: \"imageModel\" });\n }\n if (this.imageModelMiddleware != null) {\n model = wrapImageModel({\n model,\n middleware: this.imageModelMiddleware\n });\n }\n return model;\n }\n transcriptionModel(id) {\n var _a22;\n const [providerId, modelId] = this.splitId(id, \"transcriptionModel\");\n const provider = this.getProvider(providerId, \"transcriptionModel\");\n const model = (_a22 = provider.transcriptionModel) == null ? void 0 : _a22.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 _a22;\n const [providerId, modelId] = this.splitId(id, \"speechModel\");\n const provider = this.getProvider(providerId, \"speechModel\");\n const model = (_a22 = provider.speechModel) == null ? void 0 : _a22.call(provider, modelId);\n if (model == null) {\n throw new NoSuchModelError4({ modelId: id, modelType: \"speechModel\" });\n }\n return model;\n }\n rerankingModel(id) {\n var _a22;\n const [providerId, modelId] = this.splitId(id, \"rerankingModel\");\n const provider = this.getProvider(providerId, \"rerankingModel\");\n const model = (_a22 = provider.rerankingModel) == null ? void 0 : _a22.call(provider, modelId);\n if (model == null) {\n throw new NoSuchModelError4({ modelId: id, modelType: \"rerankingModel\" });\n }\n return model;\n }\n videoModel(id) {\n var _a22;\n const [providerId, modelId] = this.splitId(id, \"videoModel\");\n const provider = this.getProvider(providerId, \"videoModel\");\n const model = (_a22 = provider.videoModel) == null ? void 0 : _a22.call(provider, modelId);\n if (model == null) {\n throw new NoSuchModelError4({ modelId: id, modelType: \"videoModel\" });\n }\n return asVideoModelV4(model);\n }\n files(id) {\n var _a22;\n const provider = this.getProvider(id, \"languageModel\");\n const files = (_a22 = provider.files) == null ? void 0 : _a22.call(provider);\n if (files == null) {\n throw new Error(\n `The provider \"${id}\" does not support file uploads. Make sure it exposes a files() method.`\n );\n }\n return files;\n }\n skills(id) {\n var _a22;\n const provider = this.getProvider(id, \"languageModel\");\n const skills = (_a22 = provider.skills) == null ? void 0 : _a22.call(provider);\n if (skills == null) {\n throw new Error(\n `The provider \"${id}\" does not support skills. Make sure it exposes a skills() method.`\n );\n }\n return skills;\n }\n};\n\n// src/rerank/rerank.ts\nimport {\n createIdGenerator as createIdGenerator8\n} from \"@ai-sdk/provider-utils\";\nvar originalGenerateCallId6 = createIdGenerator8({\n prefix: \"call\",\n size: 24\n});\nasync function rerank({\n model: modelArg,\n documents,\n query,\n topN,\n maxRetries: maxRetriesArg,\n abortSignal,\n headers,\n providerOptions,\n experimental_telemetry,\n telemetry = experimental_telemetry,\n onStart,\n experimental_onStart,\n onEnd,\n experimental_onEnd,\n _internal: { generateCallId = originalGenerateCallId6 } = {}\n}) {\n var _a22;\n const model = resolveRerankingModel(modelArg);\n const callId = generateCallId();\n const resolvedOnStart = onStart != null ? onStart : experimental_onStart;\n const resolvedOnEnd = onEnd != null ? onEnd : experimental_onEnd;\n const telemetryDispatcher = createTelemetryDispatcher({\n telemetry\n });\n const runInTracingChannelSpan = (_a22 = telemetryDispatcher.runInTracingChannelSpan) != null ? _a22 : async ({ execute }) => await execute();\n if (documents.length === 0) {\n await notify({\n event: {\n callId,\n operationId: \"ai.rerank\",\n provider: model.provider,\n modelId: model.modelId,\n documents,\n query,\n topN,\n maxRetries: maxRetriesArg != null ? maxRetriesArg : 2,\n headers,\n providerOptions\n },\n callbacks: [resolvedOnStart, telemetryDispatcher.onStart]\n });\n await notify({\n event: {\n callId,\n operationId: \"ai.rerank\",\n provider: model.provider,\n modelId: model.modelId,\n documents,\n query,\n ranking: [],\n warnings: [],\n providerMetadata: void 0,\n response: {\n timestamp: /* @__PURE__ */ new Date(),\n modelId: model.modelId\n }\n },\n callbacks: [resolvedOnEnd, telemetryDispatcher.onEnd]\n });\n return new DefaultRerankResult({\n originalDocuments: [],\n ranking: [],\n providerMetadata: void 0,\n response: {\n timestamp: /* @__PURE__ */ new Date(),\n modelId: model.modelId\n }\n });\n }\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const documentsToSend = typeof documents[0] === \"string\" ? { type: \"text\", values: documents } : { type: \"object\", values: documents };\n const startEvent = {\n callId,\n operationId: \"ai.rerank\",\n provider: model.provider,\n modelId: model.modelId,\n documents,\n query,\n topN,\n maxRetries,\n headers,\n providerOptions\n };\n return await runInTracingChannelSpan({\n type: \"rerank\",\n event: startEvent,\n execute: async () => {\n var _a23, _b, _c, _d, _e;\n await notify({\n event: startEvent,\n callbacks: [resolvedOnStart, telemetryDispatcher.onStart]\n });\n try {\n const { ranking, response, providerMetadata, warnings } = await retry(\n async () => {\n await notify({\n event: {\n callId,\n operationId: \"ai.rerank.doRerank\",\n provider: model.provider,\n modelId: model.modelId,\n documents,\n documentsType: documentsToSend.type,\n query,\n topN\n },\n callbacks: [telemetryDispatcher.onRerankStart]\n });\n const modelResponse = await model.doRerank({\n documents: documentsToSend,\n query,\n topN,\n providerOptions,\n abortSignal,\n headers\n });\n const ranking2 = modelResponse.ranking;\n await notify({\n event: {\n callId,\n operationId: \"ai.rerank.doRerank\",\n provider: model.provider,\n modelId: model.modelId,\n documentsType: documentsToSend.type,\n ranking: ranking2\n },\n callbacks: [telemetryDispatcher.onRerankEnd]\n });\n return {\n ranking: ranking2,\n providerMetadata: modelResponse.providerMetadata,\n response: modelResponse.response,\n warnings: modelResponse.warnings\n };\n }\n );\n logWarnings({\n warnings: warnings != null ? warnings : [],\n provider: model.provider,\n model: model.modelId\n });\n await notify({\n event: {\n callId,\n operationId: \"ai.rerank\",\n provider: model.provider,\n modelId: model.modelId,\n documents,\n query,\n ranking: ranking.map((r) => ({\n originalIndex: r.index,\n score: r.relevanceScore,\n document: documents[r.index]\n })),\n warnings: warnings != null ? warnings : [],\n providerMetadata,\n response: {\n id: response == null ? void 0 : response.id,\n timestamp: (_a23 = response == null ? void 0 : response.timestamp) != null ? _a23 : /* @__PURE__ */ new Date(),\n modelId: (_b = response == null ? void 0 : response.modelId) != null ? _b : model.modelId,\n headers: response == null ? void 0 : response.headers,\n body: response == null ? void 0 : response.body\n }\n },\n callbacks: [resolvedOnEnd, telemetryDispatcher.onEnd]\n });\n return new DefaultRerankResult({\n originalDocuments: documents,\n ranking: ranking.map((ranking2) => ({\n originalIndex: ranking2.index,\n score: ranking2.relevanceScore,\n document: documents[ranking2.index]\n })),\n providerMetadata,\n response: {\n id: response == null ? void 0 : response.id,\n timestamp: (_c = response == null ? void 0 : response.timestamp) != null ? _c : /* @__PURE__ */ new Date(),\n modelId: (_d = response == null ? void 0 : response.modelId) != null ? _d : model.modelId,\n headers: response == null ? void 0 : response.headers,\n body: response == null ? void 0 : response.body\n }\n });\n } catch (error) {\n await ((_e = telemetryDispatcher.onError) == null ? void 0 : _e.call(telemetryDispatcher, { callId, error }));\n throw error;\n }\n }\n });\n}\nvar DefaultRerankResult = class {\n constructor(options) {\n this.originalDocuments = options.originalDocuments;\n this.ranking = options.ranking;\n this.response = options.response;\n this.providerMetadata = options.providerMetadata;\n }\n get rerankedDocuments() {\n return this.ranking.map((ranking) => ranking.document);\n }\n};\n\n// src/transcribe/transcribe.ts\nimport {\n detectMediaType as detectMediaType5,\n withUserAgentSuffix as withUserAgentSuffix10\n} from \"@ai-sdk/provider-utils\";\nvar defaultDownload2 = createDownload();\nasync function transcribe({\n model,\n audio,\n providerOptions = {},\n maxRetries: maxRetriesArg,\n abortSignal,\n headers,\n download: downloadFn = defaultDownload2\n}) {\n const resolvedModel = resolveTranscriptionModel(model);\n if (!resolvedModel) {\n throw new Error(\"Model could not be resolved\");\n }\n const { retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const headersWithUserAgent = withUserAgentSuffix10(\n headers != null ? headers : {},\n `ai/${VERSION}`\n );\n const audioData = audio instanceof URL ? (await downloadFn({ url: audio, abortSignal })).data : convertDataContentToUint8Array(audio);\n const result = await retry(\n () => {\n var _a22;\n return resolvedModel.doGenerate({\n audio: audioData,\n abortSignal,\n headers: headersWithUserAgent,\n providerOptions,\n mediaType: (_a22 = detectMediaType5({\n data: audioData,\n topLevelType: \"audio\"\n })) != null ? _a22 : \"audio/wav\"\n });\n }\n );\n logWarnings({\n warnings: result.warnings,\n provider: resolvedModel.provider,\n model: resolvedModel.modelId\n });\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 _a22;\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 = (_a22 = options.providerMetadata) != null ? _a22 : {};\n }\n};\n\n// src/transcribe/index.ts\nvar experimental_transcribe = transcribe;\n\n// src/ui/call-completion-api.ts\nimport {\n parseJsonEventStream,\n withUserAgentSuffix as withUserAgentSuffix11,\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 _a22;\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: withUserAgentSuffix11(\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 (_a22 = await response.text()) != null ? _a22 : \"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 generateIdFunc2\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: name22, type } = file;\n const dataUrl = await new Promise((resolve3, reject) => {\n const reader = new FileReader();\n reader.onload = (readerEvent) => {\n var _a22;\n resolve3((_a22 = readerEvent.target) == null ? void 0 : _a22.result);\n };\n reader.onerror = (error) => reject(error);\n reader.readAsDataURL(file);\n });\n return {\n type: \"file\",\n mediaType: type,\n filename: name22,\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 as resolve2\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 _a22, _b, _c, _d, _e;\n const resolvedBody = await resolve2(this.body);\n const resolvedHeaders = await resolve2(this.headers);\n const resolvedCredentials = await resolve2(this.credentials);\n const baseHeaders = {\n ...normalizeHeaders(resolvedHeaders),\n ...normalizeHeaders(options.headers)\n };\n const preparedRequest = await ((_a22 = this.prepareSendMessagesRequest) == null ? void 0 : _a22.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: {\n \"Content-Type\": \"application/json\",\n ...headers\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 _a22, _b, _c, _d, _e;\n const resolvedBody = await resolve2(this.body);\n const resolvedHeaders = await resolve2(this.headers);\n const resolvedCredentials = await resolve2(this.credentials);\n const baseHeaders = {\n ...normalizeHeaders(resolvedHeaders),\n ...normalizeHeaders(options.headers)\n };\n const preparedRequest = await ((_a22 = this.prepareReconnectToStreamRequest) == null ? void 0 : _a22.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,\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: generateId2 = generateIdFunc2,\n id = generateId2(),\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 _a22, _b, _c, _d;\n if (message == null) {\n await this.makeRequest({\n trigger: \"submit-message\",\n messageId: (_a22 = this.lastMessage) == null ? void 0 : _a22.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.addToolApprovalResponse = async ({\n id,\n approved,\n reason,\n options\n }) => this.jobExecutor.run(async () => {\n const messages = this.state.messages;\n const lastMessage = messages[messages.length - 1];\n const updatePart = (part) => isToolUIPart(part) && part.state === \"approval-requested\" && part.approval.id === id ? {\n ...part,\n state: \"approval-responded\",\n approval: { id, approved, reason }\n } : part;\n this.state.replaceMessage(messages.length - 1, {\n ...lastMessage,\n parts: lastMessage.parts.map(updatePart)\n });\n if (this.activeResponse) {\n this.activeResponse.state.message.parts = this.activeResponse.state.message.parts.map(updatePart);\n }\n if (this.status !== \"streaming\" && this.status !== \"submitted\" && this.sendAutomaticallyWhen) {\n this.shouldSendAutomatically().then((shouldSend) => {\n var _a22;\n if (shouldSend) {\n this.makeRequest({\n trigger: \"submit-message\",\n messageId: (_a22 = this.lastMessage) == null ? void 0 : _a22.id,\n ...options\n });\n }\n });\n }\n });\n this.addToolOutput = async ({\n state = \"output-available\",\n toolCallId,\n output,\n errorText,\n options\n }) => this.jobExecutor.run(async () => {\n const messages = this.state.messages;\n const lastMessage = messages[messages.length - 1];\n const updatePart = (part) => isToolUIPart(part) && part.toolCallId === toolCallId ? { ...part, state, output, errorText } : part;\n this.state.replaceMessage(messages.length - 1, {\n ...lastMessage,\n parts: lastMessage.parts.map(updatePart)\n });\n if (this.activeResponse) {\n this.activeResponse.state.message.parts = this.activeResponse.state.message.parts.map(updatePart);\n }\n if (this.status !== \"streaming\" && this.status !== \"submitted\" && this.sendAutomaticallyWhen) {\n this.shouldSendAutomatically().then((shouldSend) => {\n var _a22;\n if (shouldSend) {\n this.makeRequest({\n trigger: \"submit-message\",\n messageId: (_a22 = this.lastMessage) == null ? void 0 : _a22.id,\n ...options\n });\n }\n });\n }\n });\n /** @deprecated Use addToolOutput */\n this.addToolResult = this.addToolOutput;\n /**\n * Abort the current request immediately, keep the generated tokens if any.\n */\n this.stop = async () => {\n var _a22;\n if (this.status !== \"streaming\" && this.status !== \"submitted\")\n return;\n if ((_a22 = this.activeResponse) == null ? void 0 : _a22.abortController) {\n this.activeResponse.abortController.abort();\n }\n };\n this.id = id;\n this.transport = transport;\n this.generateId = generateId2;\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 shouldSendAutomatically() {\n if (!this.sendAutomaticallyWhen)\n return false;\n const result = this.sendAutomaticallyWhen({\n messages: this.state.messages\n });\n if (result && typeof result === \"object\" && \"then\" in result) {\n return await result;\n }\n return result;\n }\n async makeRequest({\n trigger,\n metadata,\n headers,\n body,\n messageId\n }) {\n var _a22, _b, _c;\n let resumeStream;\n if (trigger === \"resume-stream\") {\n try {\n const reconnect = await this.transport.reconnectToStream({\n chatId: this.id,\n metadata,\n headers,\n body\n });\n if (reconnect == null) {\n return;\n }\n resumeStream = reconnect;\n } catch (err) {\n if (this.onError && err instanceof Error) {\n this.onError(err);\n }\n this.setStatus({ status: \"error\", error: err });\n return;\n }\n }\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 stream = resumeStream;\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 _a23;\n this.setStatus({ status: \"streaming\" });\n const replaceLastMessage = activeResponse.state.message.id === ((_a23 = this.lastMessage) == null ? void 0 : _a23.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 (_b = this.onFinish) == null ? void 0 : _b.call(this, {\n message: this.activeResponse.state.message,\n messages: this.state.messages,\n isAbort,\n isDisconnect,\n isError,\n finishReason: (_a22 = this.activeResponse) == null ? void 0 : _a22.state.finishReason\n });\n } catch (err) {\n console.error(err);\n }\n this.activeResponse = void 0;\n }\n if (!isError && await this.shouldSendAutomatically()) {\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/direct-chat-transport.ts\nvar DirectChatTransport = class {\n constructor({\n agent,\n options,\n ...uiMessageStreamOptions\n }) {\n this.agent = agent;\n this.agentOptions = options;\n this.uiMessageStreamOptions = uiMessageStreamOptions;\n }\n async sendMessages({\n messages,\n abortSignal\n }) {\n const validatedMessages = await validateUIMessages({\n messages,\n // tools are compatible; the casting is required because the context param is\n // not available in ui messages\n tools: this.agent.tools\n });\n const modelMessages = await convertToModelMessages(validatedMessages, {\n tools: this.agent.tools\n });\n const result = await this.agent.stream({\n prompt: modelMessages,\n abortSignal,\n ...this.agentOptions !== void 0 ? { options: this.agentOptions } : {}\n });\n return toUIMessageStream({\n ...this.uiMessageStreamOptions,\n stream: result.stream,\n tools: this.agent.tools\n });\n }\n /**\n * Direct transport does not support reconnection since there is no\n * persistent server-side stream to reconnect to.\n *\n * @returns Always returns `null`\n */\n async reconnectToStream(_options) {\n return null;\n }\n};\n\n// src/ui/last-assistant-message-is-complete-with-approval-responses.ts\nfunction lastAssistantMessageIsCompleteWithApprovalResponses({\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(isToolUIPart);\n return (\n // has at least one tool approval response\n lastStepToolInvocations.filter((part) => part.state === \"approval-responded\").length > 0 && // all tool approvals must have a response\n lastStepToolInvocations.every(\n (part) => part.state === \"output-available\" || part.state === \"output-error\" || part.state === \"approval-responded\"\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(isToolUIPart).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/upload-file/upload-file.ts\nimport {\n convertBase64ToUint8Array as convertBase64ToUint8Array6,\n detectMediaType as detectMediaType6\n} from \"@ai-sdk/provider-utils\";\nasync function uploadFile({\n api,\n data: dataArg,\n mediaType: mediaTypeArg,\n filename,\n providerOptions\n}) {\n var _a22;\n const data = dataArg instanceof Uint8Array || typeof dataArg === \"string\" ? { type: \"data\", data: dataArg } : dataArg;\n const mediaType = mediaTypeArg != null ? mediaTypeArg : data.type === \"text\" ? \"text/plain\" : (_a22 = detectMediaType6({ data: data.data })) != null ? _a22 : isLikelyText(data.data) ? \"text/plain\" : \"application/octet-stream\";\n const filesApi = \"uploadFile\" in api ? api : typeof api.files === \"function\" ? api.files() : (() => {\n throw new Error(\n \"The provider does not support file uploads. Make sure it exposes a files() method.\"\n );\n })();\n const result = await filesApi.uploadFile({\n data,\n mediaType,\n filename,\n providerOptions\n });\n return new DefaultUploadFileResult({\n providerReference: result.providerReference,\n mediaType: result.mediaType,\n filename: result.filename,\n providerMetadata: result.providerMetadata,\n warnings: result.warnings\n });\n}\nvar DefaultUploadFileResult = class {\n constructor(options) {\n this.providerReference = options.providerReference;\n this.mediaType = options.mediaType;\n this.filename = options.filename;\n this.providerMetadata = options.providerMetadata;\n this.warnings = options.warnings;\n }\n};\nfunction isLikelyText(data) {\n const CHECK_LENGTH = 512;\n const BASE64_CHECK_LENGTH = Math.ceil((CHECK_LENGTH + 4) / 3) * 4;\n const bytes = typeof data === \"string\" ? convertBase64ToUint8Array6(\n data.substring(0, Math.min(data.length, BASE64_CHECK_LENGTH))\n ) : data;\n const checkLength = Math.min(bytes.length, CHECK_LENGTH);\n if (checkLength === 0)\n return false;\n for (let i = 0; i < checkLength; i++) {\n const byte = bytes[i];\n if (byte === 0 || byte < 32 && byte !== 9 && byte !== 10 && byte !== 13) {\n return false;\n }\n }\n return true;\n}\n\n// src/upload-skill/upload-skill.ts\nasync function uploadSkill({\n api,\n files,\n displayTitle,\n providerOptions\n}) {\n const skillsApi = \"uploadSkill\" in api ? api : typeof api.skills === \"function\" ? api.skills() : (() => {\n throw new Error(\n \"The provider does not support skills. Make sure it exposes a skills() method.\"\n );\n })();\n const normalizedFiles = files.map((file) => ({\n ...file,\n data: file.data instanceof Uint8Array || typeof file.data === \"string\" ? { type: \"data\", data: file.data } : file.data\n }));\n const result = await skillsApi.uploadSkill({\n files: normalizedFiles,\n displayTitle,\n providerOptions\n });\n return result;\n}\nexport {\n AISDKError22 as AISDKError,\n AI_SDK_TELEMETRY_TRACING_CHANNEL,\n APICallError,\n AbstractChat,\n DefaultChatTransport,\n DefaultGeneratedFile,\n DirectChatTransport,\n DownloadError,\n EmptyResponseBodyError,\n AbstractRealtimeSession as Experimental_AbstractRealtimeSession,\n ToolLoopAgent as Experimental_Agent,\n HttpChatTransport,\n InvalidArgumentError,\n InvalidDataContentError,\n InvalidMessageRoleError,\n InvalidPromptError,\n InvalidResponseDataError,\n InvalidStreamPartError,\n InvalidToolApprovalError,\n InvalidToolApprovalSignatureError,\n InvalidToolInputError,\n JSONParseError,\n JsonToSseTransformStream,\n LoadAPIKeyError,\n LoadSettingError,\n MessageConversionError,\n MissingToolResultsError,\n NoContentGeneratedError,\n NoImageGeneratedError,\n NoObjectGeneratedError,\n NoOutputGeneratedError,\n NoSpeechGeneratedError,\n NoSuchModelError,\n NoSuchProviderError,\n NoSuchProviderReferenceError,\n NoSuchToolError,\n NoTranscriptGeneratedError,\n NoVideoGeneratedError,\n output_exports as Output,\n RetryError,\n SerialJobExecutor,\n TextStreamChatTransport,\n TooManyEmbeddingValuesForCallError,\n ToolCallNotFoundForApprovalError,\n ToolCallRepairError,\n ToolLoopAgent,\n TypeValidationError,\n UIMessageStreamError,\n UI_MESSAGE_STREAM_HEADERS,\n UnsupportedFunctionalityError,\n UnsupportedModelVersionError,\n addToolInputExamplesMiddleware,\n asSchema7 as asSchema,\n assistantModelMessageSchema,\n callCompletionApi,\n consumeStream,\n convertDataContentToBase64String,\n convertFileListToFileUIParts,\n convertToModelMessages,\n cosineSimilarity,\n createAgentUIStream,\n createAgentUIStreamResponse,\n createDownload,\n createGateway,\n createIdGenerator9 as createIdGenerator,\n createProviderRegistry,\n createTextStreamResponse,\n createUIMessageStream,\n createUIMessageStreamResponse,\n customProvider,\n defaultEmbeddingSettingsMiddleware,\n defaultSettingsMiddleware,\n dynamicTool,\n embed,\n embedMany,\n experimental_createProviderRegistry,\n decodeRealtimeAudio as experimental_decodeRealtimeAudio,\n encodeRealtimeAudio as experimental_encodeRealtimeAudio,\n filterActiveTools as experimental_filterActiveTools,\n experimental_generateSpeech,\n experimental_generateVideo,\n getRealtimeToolDefinitions as experimental_getRealtimeToolDefinitions,\n resampleAudio as experimental_resampleAudio,\n streamLanguageModelCall as experimental_streamLanguageModelCall,\n experimental_transcribe,\n extractJsonMiddleware,\n extractReasoningMiddleware,\n gateway2 as gateway,\n generateId,\n generateImage,\n generateObject,\n generateSpeech,\n generateText,\n getChunkTimeoutMs,\n getStaticToolName,\n getStepTimeoutMs,\n getTextFromDataUrl,\n getToolName,\n getToolOrDynamicToolName,\n getToolTimeoutMs,\n getTotalTimeoutMs,\n hasToolCall,\n isCustomContentUIPart,\n isDataUIPart,\n isDeepEqualData,\n isDynamicToolUIPart,\n isFileUIPart,\n isLoopFinished,\n isReasoningFileUIPart,\n isReasoningUIPart,\n isStaticToolUIPart,\n isStepCount,\n isTextUIPart,\n isToolUIPart,\n jsonSchema,\n lastAssistantMessageIsCompleteWithApprovalResponses,\n lastAssistantMessageIsCompleteWithToolCalls,\n modelMessageSchema,\n parseJsonEventStream3 as parseJsonEventStream,\n parsePartialJson,\n pipeAgentUIStreamToResponse,\n pipeTextStreamToResponse,\n pipeUIMessageStreamToResponse,\n pruneMessages,\n readUIMessageStream,\n registerTelemetry,\n rerank,\n safeValidateUIMessages,\n simulateReadableStream,\n simulateStreamingMiddleware,\n smoothStream,\n isStepCount as stepCountIs,\n streamObject,\n streamText,\n systemModelMessageSchema,\n toTextStream,\n toUIMessageChunk,\n toUIMessageStream,\n tool,\n toolModelMessageSchema,\n transcribe,\n uiMessageChunkSchema,\n uploadFile,\n uploadSkill,\n userModelMessageSchema,\n validateUIMessages,\n wrapEmbeddingModel,\n wrapImageModel,\n wrapLanguageModel,\n wrapProvider,\n zodSchema3 as zodSchema\n};\n//# sourceMappingURL=index.js.map"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86],"mappings":"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"}