@mastra/schema-compat 1.3.4-alpha.2 → 1.3.5-alpha.0

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 (75) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/_types/@internal_ai-sdk-v5/dist/index.d.ts +4 -4
  3. package/dist/_types/@internal_ai-v6/dist/index.d.ts +10 -6
  4. package/dist/index.cjs +5455 -5998
  5. package/dist/index.cjs.map +1 -1
  6. package/dist/index.js +5467 -5988
  7. package/dist/index.js.map +1 -1
  8. package/dist/json-schema-BstKYbJi.js +6797 -0
  9. package/dist/json-schema-BstKYbJi.js.map +1 -0
  10. package/dist/json-schema-pcL1TeZs.cjs +6809 -0
  11. package/dist/json-schema-pcL1TeZs.cjs.map +1 -0
  12. package/dist/json-schema-traverse-B35mHRM8.js +101 -0
  13. package/dist/json-schema-traverse-B35mHRM8.js.map +1 -0
  14. package/dist/json-schema-traverse-CSNSaf0y.cjs +83 -0
  15. package/dist/json-schema-traverse-CSNSaf0y.cjs.map +1 -0
  16. package/dist/json-to-zod.cjs +185 -245
  17. package/dist/json-to-zod.cjs.map +1 -1
  18. package/dist/json-to-zod.js +176 -235
  19. package/dist/json-to-zod.js.map +1 -1
  20. package/dist/provider-compats/anthropic.d.ts +1 -0
  21. package/dist/provider-compats/anthropic.d.ts.map +1 -1
  22. package/dist/rolldown-runtime-emK7D4bc.cjs +35 -0
  23. package/dist/schema-Bv9OdW1f.js +258 -0
  24. package/dist/schema-Bv9OdW1f.js.map +1 -0
  25. package/dist/schema-Cjk6OMG9.cjs +295 -0
  26. package/dist/schema-Cjk6OMG9.cjs.map +1 -0
  27. package/dist/schema.cjs +8 -32
  28. package/dist/schema.js +2 -3
  29. package/dist/standard-schema/adapters/ai-sdk.cjs +156 -14
  30. package/dist/standard-schema/adapters/ai-sdk.cjs.map +1 -1
  31. package/dist/standard-schema/adapters/ai-sdk.js +155 -2
  32. package/dist/standard-schema/adapters/ai-sdk.js.map +1 -1
  33. package/dist/standard-schema/adapters/json-schema.cjs +4 -16
  34. package/dist/standard-schema/adapters/json-schema.js +2 -3
  35. package/dist/standard-schema/adapters/zod-v3.cjs +101 -10
  36. package/dist/standard-schema/adapters/zod-v3.cjs.map +1 -1
  37. package/dist/standard-schema/adapters/zod-v3.js +99 -2
  38. package/dist/standard-schema/adapters/zod-v3.js.map +1 -1
  39. package/dist/zod-to-json.cjs +165 -22
  40. package/dist/zod-to-json.cjs.map +1 -1
  41. package/dist/zod-to-json.js +160 -2
  42. package/dist/zod-to-json.js.map +1 -1
  43. package/package.json +18 -17
  44. package/dist/chunk-23HDOZLF.js +0 -105
  45. package/dist/chunk-23HDOZLF.js.map +0 -1
  46. package/dist/chunk-5WRI5ZAA.js +0 -29
  47. package/dist/chunk-5WRI5ZAA.js.map +0 -1
  48. package/dist/chunk-77T2HV4Q.cjs +0 -7352
  49. package/dist/chunk-77T2HV4Q.cjs.map +0 -1
  50. package/dist/chunk-BQ3VTMIR.cjs +0 -76
  51. package/dist/chunk-BQ3VTMIR.cjs.map +0 -1
  52. package/dist/chunk-DZUJEN5N.cjs +0 -32
  53. package/dist/chunk-DZUJEN5N.cjs.map +0 -1
  54. package/dist/chunk-FJGZKUBH.cjs +0 -208
  55. package/dist/chunk-FJGZKUBH.cjs.map +0 -1
  56. package/dist/chunk-FS3P4V5M.cjs +0 -108
  57. package/dist/chunk-FS3P4V5M.cjs.map +0 -1
  58. package/dist/chunk-QEM5W7OR.js +0 -199
  59. package/dist/chunk-QEM5W7OR.js.map +0 -1
  60. package/dist/chunk-QFEMCRFS.js +0 -70
  61. package/dist/chunk-QFEMCRFS.js.map +0 -1
  62. package/dist/chunk-RMMKMUYK.js +0 -7349
  63. package/dist/chunk-RMMKMUYK.js.map +0 -1
  64. package/dist/chunk-SKPYVQBT.cjs +0 -94
  65. package/dist/chunk-SKPYVQBT.cjs.map +0 -1
  66. package/dist/chunk-VNIPWNNH.js +0 -170
  67. package/dist/chunk-VNIPWNNH.js.map +0 -1
  68. package/dist/chunk-Y4VRRNL5.js +0 -92
  69. package/dist/chunk-Y4VRRNL5.js.map +0 -1
  70. package/dist/chunk-ZTO66ALH.cjs +0 -181
  71. package/dist/chunk-ZTO66ALH.cjs.map +0 -1
  72. package/dist/schema.cjs.map +0 -1
  73. package/dist/schema.js.map +0 -1
  74. package/dist/standard-schema/adapters/json-schema.cjs.map +0 -1
  75. package/dist/standard-schema/adapters/json-schema.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/secure-json-parse/2.7.0/1f65efb0c6ff2d0f745ac6dfe22202b559993ceecd896afead5fc2c075b2d349/node_modules/secure-json-parse/index.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/provider/1.1.3/7d8eaddb7973e5820d04ac18a887c85cc63f173732e3c66432ceefbff819b4ac/node_modules/@ai-sdk/provider/src/errors/ai-sdk-error.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/provider/1.1.3/7d8eaddb7973e5820d04ac18a887c85cc63f173732e3c66432ceefbff819b4ac/node_modules/@ai-sdk/provider/src/errors/get-error-message.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/provider/1.1.3/7d8eaddb7973e5820d04ac18a887c85cc63f173732e3c66432ceefbff819b4ac/node_modules/@ai-sdk/provider/src/errors/invalid-argument-error.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/provider/1.1.3/7d8eaddb7973e5820d04ac18a887c85cc63f173732e3c66432ceefbff819b4ac/node_modules/@ai-sdk/provider/src/errors/json-parse-error.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/provider/1.1.3/7d8eaddb7973e5820d04ac18a887c85cc63f173732e3c66432ceefbff819b4ac/node_modules/@ai-sdk/provider/src/errors/type-validation-error.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/nanoid/3.3.15/5e099aa6978e3ffbe3dd66fca0d9bb438c516b386f73a4afd1cdcabb14c04122/node_modules/nanoid/non-secure/index.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/provider-utils/2.2.8/6da045ee83ccbe317fdded79ff264ecaf67e8e3e16cdb635bc678c2a97ba55d7/node_modules/@ai-sdk/provider-utils/src/parse-json.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/provider-utils/2.2.8/6da045ee83ccbe317fdded79ff264ecaf67e8e3e16cdb635bc678c2a97ba55d7/node_modules/@ai-sdk/provider-utils/src/convert-async-iterator-to-readable-stream.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/provider-utils/2.2.8/6da045ee83ccbe317fdded79ff264ecaf67e8e3e16cdb635bc678c2a97ba55d7/node_modules/@ai-sdk/provider-utils/src/generate-id.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/provider-utils/2.2.8/6da045ee83ccbe317fdded79ff264ecaf67e8e3e16cdb635bc678c2a97ba55d7/node_modules/@ai-sdk/provider-utils/src/validator.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/provider-utils/2.2.8/6da045ee83ccbe317fdded79ff264ecaf67e8e3e16cdb635bc678c2a97ba55d7/node_modules/@ai-sdk/provider-utils/src/validate-types.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/Options.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/Refs.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/errorMessages.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/any.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/array.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/date.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/default.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/string.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/record.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/map.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/never.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/null.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/union.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/number.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/object.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/set.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/selectParser.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/parseDef.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.1/337cb207c66d48e6fa61936b69e8322163cd8ec62973d6a7f5e682eec382f4e2/node_modules/zod-to-json-schema/dist/esm/index.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/ui-utils/1.2.11/f2735af434d572c832cf30093b36d2f56583e8287471d1a88d7d78097a03bfa5/node_modules/@ai-sdk/ui-utils/src/fix-json.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/ui-utils/1.2.11/f2735af434d572c832cf30093b36d2f56583e8287471d1a88d7d78097a03bfa5/node_modules/@ai-sdk/ui-utils/src/parse-partial-json.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/ui-utils/1.2.11/f2735af434d572c832cf30093b36d2f56583e8287471d1a88d7d78097a03bfa5/node_modules/@ai-sdk/ui-utils/src/data-stream-parts.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/ui-utils/1.2.11/f2735af434d572c832cf30093b36d2f56583e8287471d1a88d7d78097a03bfa5/node_modules/@ai-sdk/ui-utils/src/zod-schema.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/ui-utils/1.2.11/f2735af434d572c832cf30093b36d2f56583e8287471d1a88d7d78097a03bfa5/node_modules/@ai-sdk/ui-utils/src/schema.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/src/platform/node/globalThis.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/src/version.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/src/internal/semver.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/src/internal/global-utils.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/src/diag/ComponentLogger.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/src/diag/types.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/src/diag/internal/logLevelLogger.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/src/api/diag.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/src/context/context.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/src/context/NoopContextManager.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/src/api/context.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/src/trace/trace_flags.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/src/trace/invalid-span-constants.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/src/trace/NonRecordingSpan.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/src/trace/context-utils.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/src/trace/spancontext-utils.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/src/trace/NoopTracer.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/src/trace/ProxyTracer.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/src/trace/NoopTracerProvider.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/src/trace/ProxyTracerProvider.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/src/trace/status.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/src/api/trace.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/src/trace-api.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/ai/4.3.19/cf6db5933c9313e6c5ac1f3374d44cd1676e4e2f2bec3336125b46373bd36ee7/node_modules/ai/core/util/prepare-response-headers.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/ai/4.3.19/cf6db5933c9313e6c5ac1f3374d44cd1676e4e2f2bec3336125b46373bd36ee7/node_modules/ai/errors/no-object-generated-error.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/ai/4.3.19/cf6db5933c9313e6c5ac1f3374d44cd1676e4e2f2bec3336125b46373bd36ee7/node_modules/ai/core/prompt/data-content.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/ai/4.3.19/cf6db5933c9313e6c5ac1f3374d44cd1676e4e2f2bec3336125b46373bd36ee7/node_modules/ai/core/types/json-value.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/ai/4.3.19/cf6db5933c9313e6c5ac1f3374d44cd1676e4e2f2bec3336125b46373bd36ee7/node_modules/ai/core/types/provider-metadata.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/ai/4.3.19/cf6db5933c9313e6c5ac1f3374d44cd1676e4e2f2bec3336125b46373bd36ee7/node_modules/ai/core/prompt/tool-result-content.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/ai/4.3.19/cf6db5933c9313e6c5ac1f3374d44cd1676e4e2f2bec3336125b46373bd36ee7/node_modules/ai/core/prompt/content-part.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/ai/4.3.19/cf6db5933c9313e6c5ac1f3374d44cd1676e4e2f2bec3336125b46373bd36ee7/node_modules/ai/core/prompt/message.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/ai/4.3.19/cf6db5933c9313e6c5ac1f3374d44cd1676e4e2f2bec3336125b46373bd36ee7/node_modules/ai/core/generate-object/inject-json-instruction.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/ai/4.3.19/cf6db5933c9313e6c5ac1f3374d44cd1676e4e2f2bec3336125b46373bd36ee7/node_modules/ai/core/generate-object/generate-object.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/ai/4.3.19/cf6db5933c9313e6c5ac1f3374d44cd1676e4e2f2bec3336125b46373bd36ee7/node_modules/ai/core/generate-object/stream-object.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/ai/4.3.19/cf6db5933c9313e6c5ac1f3374d44cd1676e4e2f2bec3336125b46373bd36ee7/node_modules/ai/core/generate-text/generate-text.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/ai/4.3.19/cf6db5933c9313e6c5ac1f3374d44cd1676e4e2f2bec3336125b46373bd36ee7/node_modules/ai/core/generate-text/output.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/ai/4.3.19/cf6db5933c9313e6c5ac1f3374d44cd1676e4e2f2bec3336125b46373bd36ee7/node_modules/ai/core/util/merge-streams.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/ai/4.3.19/cf6db5933c9313e6c5ac1f3374d44cd1676e4e2f2bec3336125b46373bd36ee7/node_modules/ai/core/generate-text/stream-text.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/ai/4.3.19/cf6db5933c9313e6c5ac1f3374d44cd1676e4e2f2bec3336125b46373bd36ee7/node_modules/ai/core/tool/mcp/types.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/ai/4.3.19/cf6db5933c9313e6c5ac1f3374d44cd1676e4e2f2bec3336125b46373bd36ee7/node_modules/ai/core/tool/mcp/json-rpc-message.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/ai/4.3.19/cf6db5933c9313e6c5ac1f3374d44cd1676e4e2f2bec3336125b46373bd36ee7/node_modules/ai/streams/langchain-adapter.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/ai/4.3.19/cf6db5933c9313e6c5ac1f3374d44cd1676e4e2f2bec3336125b46373bd36ee7/node_modules/ai/streams/stream-callbacks.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/ai/4.3.19/cf6db5933c9313e6c5ac1f3374d44cd1676e4e2f2bec3336125b46373bd36ee7/node_modules/ai/streams/llamaindex-adapter.ts","../src/utils.ts","../src/schema-compatibility-v3.ts","../src/schema-compatibility-v4.ts","../src/schema-compatibility.ts","../src/json-schema/utils.ts","../src/null-to-undefined.ts","../src/zodTypes.ts","../src/provider-compats/openai.ts","../src/provider-compats/openai-reasoning.ts","../src/standard-schema-compat.ts","../src/provider-compats/anthropic.ts","../src/provider-compats/deepseek.ts","../src/provider-compats/google.ts","../src/provider-compats/meta.ts"],"names":["text","_AISDKError","name","marker","symbol","_a","_TypeValidationError","__toESM","zodSchema","validator","SecureJSON","ZodFirstPartyTypeKind","object","types","x","base","jsonSchema","zodToJsonSchema","schema","textStreamPart","errorStreamPart","isCompatible","DiagComponentLogger","DiagLogLevel","DiagAPI","__spreadArray","__read","BaseContext","NoopContextManager","API_NAME","ContextAPI","TraceFlags","NonRecordingSpan","NoopTracer","ProxyTracer","NoopTracerProvider","ProxyTracerProvider","SpanStatusCode","TraceAPI","AISDKError","z","createIdGenerator","asSchema","parsePartialJson","safeParseJSON","safeValidateTypes","result","formatDataStreamPart","mergeIntoDataStream","toDataStream","toDataStreamResponse","toDataStreamInternal","convertJsonSchemaToZod","convertJsonSchemaToZodV3","toStandardSchema","standardSchemaToJSONSchema","isStandardSchemaWithJSON","ZodOptional","ZodObject","ZodArray","ZodUnion","ZodString","ZodNumber","ZodNull","ZodNullable","ZodDate","ZodDefault","ZodIntersection","ALL_STRING_CHECKS","ALL_NUMBER_CHECKS","ALL_ARRAY_CHECKS","UNSUPPORTED_ZOD_TYPES","SUPPORTED_ZOD_TYPES","SchemaCompatLayer","require_json_schema_traverse","traverse","isOptional","isObj","isArr","isUnion","isString","isNumber"],"mappings":"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","file":"index.cjs","sourcesContent":["'use strict'\n\nconst hasBuffer = typeof Buffer !== 'undefined'\nconst suspectProtoRx = /\"(?:_|\\\\u005[Ff])(?:_|\\\\u005[Ff])(?:p|\\\\u0070)(?:r|\\\\u0072)(?:o|\\\\u006[Ff])(?:t|\\\\u0074)(?:o|\\\\u006[Ff])(?:_|\\\\u005[Ff])(?:_|\\\\u005[Ff])\"\\s*:/\nconst 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*:/\n\nfunction _parse (text, reviver, options) {\n // Normalize arguments\n if (options == null) {\n if (reviver !== null && typeof reviver === 'object') {\n options = reviver\n reviver = undefined\n }\n }\n\n if (hasBuffer && Buffer.isBuffer(text)) {\n text = text.toString()\n }\n\n // BOM checker\n if (text && text.charCodeAt(0) === 0xFEFF) {\n text = text.slice(1)\n }\n\n // Parse normally, allowing exceptions\n const obj = JSON.parse(text, reviver)\n\n // Ignore null and non-objects\n if (obj === null || typeof obj !== 'object') {\n return obj\n }\n\n const protoAction = (options && options.protoAction) || 'error'\n const constructorAction = (options && options.constructorAction) || 'error'\n\n // options: 'error' (default) / 'remove' / 'ignore'\n if (protoAction === 'ignore' && constructorAction === 'ignore') {\n return obj\n }\n\n if (protoAction !== 'ignore' && constructorAction !== 'ignore') {\n if (suspectProtoRx.test(text) === false && suspectConstructorRx.test(text) === false) {\n return obj\n }\n } else if (protoAction !== 'ignore' && constructorAction === 'ignore') {\n if (suspectProtoRx.test(text) === false) {\n return obj\n }\n } else {\n if (suspectConstructorRx.test(text) === false) {\n return obj\n }\n }\n\n // Scan result for proto keys\n return filter(obj, { protoAction, constructorAction, safe: options && options.safe })\n}\n\nfunction filter (obj, { protoAction = 'error', constructorAction = 'error', safe } = {}) {\n let next = [obj]\n\n while (next.length) {\n const nodes = next\n next = []\n\n for (const node of nodes) {\n if (protoAction !== 'ignore' && Object.prototype.hasOwnProperty.call(node, '__proto__')) { // Avoid calling node.hasOwnProperty directly\n if (safe === true) {\n return null\n } else if (protoAction === 'error') {\n throw new SyntaxError('Object contains forbidden prototype property')\n }\n\n delete node.__proto__ // eslint-disable-line no-proto\n }\n\n if (constructorAction !== 'ignore' &&\n Object.prototype.hasOwnProperty.call(node, 'constructor') &&\n Object.prototype.hasOwnProperty.call(node.constructor, 'prototype')) { // Avoid calling node.hasOwnProperty directly\n if (safe === true) {\n return null\n } else if (constructorAction === 'error') {\n throw new SyntaxError('Object contains forbidden prototype property')\n }\n\n delete node.constructor\n }\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}\n\nfunction parse (text, reviver, options) {\n const stackTraceLimit = Error.stackTraceLimit\n Error.stackTraceLimit = 0\n try {\n return _parse(text, reviver, options)\n } finally {\n Error.stackTraceLimit = stackTraceLimit\n }\n}\n\nfunction safeParse (text, reviver) {\n const stackTraceLimit = Error.stackTraceLimit\n Error.stackTraceLimit = 0\n try {\n return _parse(text, reviver, { safe: true })\n } catch (_e) {\n return null\n } finally {\n Error.stackTraceLimit = stackTraceLimit\n }\n}\n\nmodule.exports = parse\nmodule.exports.default = parse\nmodule.exports.parse = parse\nmodule.exports.safeParse = safeParse\nmodule.exports.scan = filter\n","/**\n * Symbol used for identifying AI SDK Error instances.\n * Enables checking if an error is an instance of AISDKError across package versions.\n */\nconst marker = 'vercel.ai.error';\nconst symbol = Symbol.for(marker);\n\n/**\n * Custom error class for AI SDK related errors.\n * @extends Error\n */\nexport class AISDKError extends Error {\n private readonly [symbol] = true; // used in isInstance\n\n /**\n * The underlying cause of the error, if any.\n */\n readonly cause?: unknown;\n\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,\n message,\n cause,\n }: {\n name: string;\n message: string;\n cause?: unknown;\n }) {\n super(message);\n\n this.name = name;\n this.cause = cause;\n }\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: unknown): error is AISDKError {\n return AISDKError.hasMarker(error, marker);\n }\n\n protected static hasMarker(error: unknown, marker: string): boolean {\n const markerSymbol = Symbol.for(marker);\n return (\n error != null &&\n typeof error === 'object' &&\n markerSymbol in error &&\n typeof error[markerSymbol] === 'boolean' &&\n error[markerSymbol] === true\n );\n }\n}\n","export function getErrorMessage(error: unknown | undefined) {\n if (error == null) {\n return 'unknown error';\n }\n\n if (typeof error === 'string') {\n return error;\n }\n\n if (error instanceof Error) {\n return error.message;\n }\n\n return JSON.stringify(error);\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_InvalidArgumentError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * A function argument is invalid.\n */\nexport class InvalidArgumentError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly argument: string;\n\n constructor({\n message,\n cause,\n argument,\n }: {\n argument: string;\n message: string;\n cause?: unknown;\n }) {\n super({ name, message, cause });\n\n this.argument = argument;\n }\n\n static isInstance(error: unknown): error is InvalidArgumentError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\nimport { getErrorMessage } from './get-error-message';\n\nconst name = 'AI_JSONParseError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n// TODO v5: rename to ParseError\nexport class JSONParseError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly text: string;\n\n constructor({ text, cause }: { text: string; cause: unknown }) {\n super({\n name,\n message:\n `JSON parsing failed: ` +\n `Text: ${text}.\\n` +\n `Error message: ${getErrorMessage(cause)}`,\n cause,\n });\n\n this.text = text;\n }\n\n static isInstance(error: unknown): error is JSONParseError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\nimport { getErrorMessage } from './get-error-message';\n\nconst name = 'AI_TypeValidationError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class TypeValidationError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly value: unknown;\n\n constructor({ value, cause }: { value: unknown; cause: unknown }) {\n super({\n name,\n message:\n `Type validation failed: ` +\n `Value: ${JSON.stringify(value)}.\\n` +\n `Error message: ${getErrorMessage(cause)}`,\n cause,\n });\n\n this.value = value;\n }\n\n static isInstance(error: unknown): error is TypeValidationError {\n return AISDKError.hasMarker(error, marker);\n }\n\n /**\n * Wraps an error into a TypeValidationError.\n * If the cause is already a TypeValidationError with the same value, 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 * @returns {TypeValidationError} A TypeValidationError instance.\n */\n static wrap({\n value,\n cause,\n }: {\n value: unknown;\n cause: unknown;\n }): TypeValidationError {\n return TypeValidationError.isInstance(cause) && cause.value === value\n ? cause\n : new TypeValidationError({ value, cause });\n }\n}\n","let urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = ''\n let i = size | 0\n while (i--) {\n id += alphabet[(Math.random() * alphabet.length) | 0]\n }\n return id\n }\n}\n\nlet nanoid = (size = 21) => {\n let id = ''\n let i = size | 0\n while (i--) {\n id += urlAlphabet[(Math.random() * 64) | 0]\n }\n return id\n}\n\nexport { nanoid, customAlphabet }\n","import {\n JSONParseError,\n JSONValue,\n TypeValidationError,\n} from '@ai-sdk/provider';\nimport SecureJSON from 'secure-json-parse';\nimport { ZodSchema } from 'zod';\nimport { safeValidateTypes, validateTypes } from './validate-types';\nimport { Validator } from './validator';\n\n/**\n * Parses a JSON string into an unknown object.\n *\n * @param text - The JSON string to parse.\n * @returns {JSONValue} - The parsed JSON object.\n */\nexport function parseJSON(options: {\n text: string;\n schema?: undefined;\n}): JSONValue;\n/**\n * Parses a JSON string into a strongly-typed object using the provided schema.\n *\n * @template T - The type of the object to parse the JSON into.\n * @param {string} text - The JSON string to parse.\n * @param {Validator<T>} schema - The schema to use for parsing the JSON.\n * @returns {T} - The parsed object.\n */\nexport function parseJSON<T>(options: {\n text: string;\n schema: ZodSchema<T> | Validator<T>;\n}): T;\nexport function parseJSON<T>({\n text,\n schema,\n}: {\n text: string;\n schema?: ZodSchema<T> | Validator<T>;\n}): T {\n try {\n const value = SecureJSON.parse(text);\n\n if (schema == null) {\n return value;\n }\n\n return validateTypes({ value, schema });\n } catch (error) {\n if (\n JSONParseError.isInstance(error) ||\n TypeValidationError.isInstance(error)\n ) {\n throw error;\n }\n\n throw new JSONParseError({ text, cause: error });\n }\n}\n\nexport type ParseResult<T> =\n | { success: true; value: T; rawValue: unknown }\n | { success: false; error: JSONParseError | TypeValidationError };\n\n/**\n * Safely parses a JSON string and returns the result as an object of type `unknown`.\n *\n * @param text - The JSON string to parse.\n * @returns {object} Either an object with `success: true` and the parsed data, or an object with `success: false` and the error that occurred.\n */\nexport function safeParseJSON(options: {\n text: string;\n schema?: undefined;\n}): ParseResult<JSONValue>;\n/**\n * Safely parses a JSON string into a strongly-typed object, using a provided schema to validate the object.\n *\n * @template T - The type of the object to parse the JSON into.\n * @param {string} text - The JSON string to parse.\n * @param {Validator<T>} schema - The schema to use for parsing the JSON.\n * @returns An object with either a `success` flag and the parsed and typed data, or a `success` flag and an error object.\n */\nexport function safeParseJSON<T>(options: {\n text: string;\n schema: ZodSchema<T> | Validator<T>;\n}): ParseResult<T>;\nexport function safeParseJSON<T>({\n text,\n schema,\n}: {\n text: string;\n schema?: ZodSchema<T> | Validator<T>;\n}): ParseResult<T> {\n try {\n const value = SecureJSON.parse(text);\n\n if (schema == null) {\n return { success: true, value: value as T, rawValue: value };\n }\n\n const validationResult = safeValidateTypes({ value, schema });\n\n return validationResult.success\n ? { ...validationResult, rawValue: value }\n : validationResult;\n } catch (error) {\n return {\n success: false,\n error: JSONParseError.isInstance(error)\n ? error\n : new JSONParseError({ text, cause: error }),\n };\n }\n}\n\nexport function isParsableJson(input: string): boolean {\n try {\n SecureJSON.parse(input);\n return true;\n } catch {\n return false;\n }\n}\n","/**\n * Converts an AsyncIterator to a ReadableStream.\n *\n * @template T - The type of elements produced by the AsyncIterator.\n * @param { <T>} iterator - The AsyncIterator to convert.\n * @returns {ReadableStream<T>} - A ReadableStream that provides the same data as the AsyncIterator.\n */\nexport function convertAsyncIteratorToReadableStream<T>(\n iterator: AsyncIterator<T>,\n): ReadableStream<T> {\n return new ReadableStream<T>({\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 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 cancel() {},\n });\n}\n","import { InvalidArgumentError } from '@ai-sdk/provider';\nimport { customAlphabet } from 'nanoid/non-secure';\n\n/**\nCreates an ID generator.\nThe total length of the ID is the sum of the prefix, separator, and random part length.\nNon-secure.\n\n@param alphabet - The alphabet to use for the ID. Default: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.\n@param prefix - The prefix of the ID to generate. Default: ''.\n@param separator - The separator between the prefix and the random part of the ID. Default: '-'.\n@param size - The size of the random part of the ID to generate. Default: 16.\n */\n// TODO 5.0 breaking change: change the return type to IDGenerator\nexport const createIdGenerator = ({\n prefix,\n size: defaultSize = 16,\n alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\n separator = '-',\n}: {\n prefix?: string;\n separator?: string;\n size?: number;\n alphabet?: string;\n} = {}): ((size?: number) => string) => {\n const generator = customAlphabet(alphabet, defaultSize);\n\n if (prefix == null) {\n return generator;\n }\n\n // check that the prefix is not part of the alphabet (otherwise prefix checking can fail randomly)\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\n return size => `${prefix}${separator}${generator(size)}`;\n};\n\n/**\nA function that generates an ID.\n */\nexport type IDGenerator = () => string;\n\n/**\nGenerates a 16-character random string to use for IDs. Not secure.\n\n@param size - The size of the ID to generate. Default: 16.\n */\nexport const generateId = createIdGenerator();\n","import { z } from 'zod';\n\n/**\n * Used to mark validator functions so we can support both Zod and custom schemas.\n */\nexport const validatorSymbol = Symbol.for('vercel.ai.validator');\n\nexport type ValidationResult<OBJECT> =\n | { success: true; value: OBJECT }\n | { success: false; error: Error };\n\nexport type Validator<OBJECT = unknown> = {\n /**\n * Used to mark validator functions so we can support both Zod and custom schemas.\n */\n [validatorSymbol]: true;\n\n /**\n * Optional. Validates that the structure of a value matches this schema,\n * and returns a typed version of the value if it does.\n */\n readonly validate?: (value: unknown) => ValidationResult<OBJECT>;\n};\n\n/**\n * Create a validator.\n *\n * @param validate A validation function for the schema.\n */\nexport function validator<OBJECT>(\n validate?: undefined | ((value: unknown) => ValidationResult<OBJECT>),\n): Validator<OBJECT> {\n return { [validatorSymbol]: true, validate };\n}\n\nexport function isValidator(value: unknown): value is Validator {\n return (\n typeof value === 'object' &&\n value !== null &&\n validatorSymbol in value &&\n value[validatorSymbol] === true &&\n 'validate' in value\n );\n}\n\nexport function asValidator<OBJECT>(\n value: Validator<OBJECT> | z.Schema<OBJECT, z.ZodTypeDef, any>,\n): Validator<OBJECT> {\n return isValidator(value) ? value : zodValidator(value);\n}\n\nexport function zodValidator<OBJECT>(\n zodSchema: z.Schema<OBJECT, z.ZodTypeDef, any>,\n): Validator<OBJECT> {\n return validator(value => {\n const result = zodSchema.safeParse(value);\n return result.success\n ? { success: true, value: result.data }\n : { success: false, error: result.error };\n });\n}\n","import { TypeValidationError } from '@ai-sdk/provider';\nimport { z } from 'zod';\nimport { Validator, asValidator } from './validator';\n\n/**\n * Validates the types of an unknown object using a schema and\n * return a strongly-typed object.\n *\n * @template T - The type of the object to validate.\n * @param {string} options.value - The object to validate.\n * @param {Validator<T>} options.schema - The schema to use for validating the JSON.\n * @returns {T} - The typed object.\n */\nexport function validateTypes<T>({\n value,\n schema: inputSchema,\n}: {\n value: unknown;\n schema: z.Schema<T, z.ZodTypeDef, any> | Validator<T>;\n}): T {\n const result = safeValidateTypes({ value, schema: inputSchema });\n\n if (!result.success) {\n throw TypeValidationError.wrap({ value, cause: result.error });\n }\n\n return result.value;\n}\n\n/**\n * Safely validates the types of an unknown object using a schema and\n * return a strongly-typed object.\n *\n * @template T - The type of the object to validate.\n * @param {string} options.value - The JSON object to validate.\n * @param {Validator<T>} options.schema - The schema to use for validating the JSON.\n * @returns An object with either a `success` flag and the parsed and typed data, or a `success` flag and an error object.\n */\nexport function safeValidateTypes<T>({\n value,\n schema,\n}: {\n value: unknown;\n schema: z.Schema<T, z.ZodTypeDef, any> | Validator<T>;\n}):\n | { success: true; value: T }\n | { success: false; error: TypeValidationError } {\n const validator = asValidator(schema);\n\n try {\n if (validator.validate == null) {\n return { success: true, value: value as T };\n }\n\n const result = validator.validate(value);\n\n if (result.success) {\n return result;\n }\n\n return {\n success: false,\n error: TypeValidationError.wrap({ value, cause: result.error }),\n };\n } catch (error) {\n return {\n success: false,\n error: TypeValidationError.wrap({ value, cause: error }),\n };\n }\n}\n","export const ignoreOverride = Symbol(\"Let zodToJsonSchema decide on which parser to use\");\nexport const jsonDescription = (jsonSchema, def) => {\n if (def.description) {\n try {\n return {\n ...jsonSchema,\n ...JSON.parse(def.description),\n };\n }\n catch { }\n }\n return jsonSchema;\n};\nexport const defaultOptions = {\n name: undefined,\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 target: \"jsonSchema7\",\n strictUnions: false,\n definitions: {},\n errorMessages: false,\n markdownDescription: false,\n patternStrategy: \"escape\",\n applyRegexFlags: false,\n emailStrategy: \"format:email\",\n base64Strategy: \"contentEncoding:base64\",\n nameStrategy: \"ref\",\n openAiAnyTypeName: \"OpenAiAnyType\"\n};\nexport const getDefaultOptions = (options) => (typeof options === \"string\"\n ? {\n ...defaultOptions,\n name: options,\n }\n : {\n ...defaultOptions,\n ...options,\n });\n","import { getDefaultOptions } from \"./Options.js\";\nexport const getRefs = (options) => {\n const _options = getDefaultOptions(options);\n const currentPath = _options.name !== undefined\n ? [..._options.basePath, _options.definitionPath, _options.name]\n : _options.basePath;\n return {\n ..._options,\n flags: { hasReferencedOpenAiAnyType: false },\n currentPath: currentPath,\n propertyPath: undefined,\n seen: new Map(Object.entries(_options.definitions).map(([name, def]) => [\n def._def,\n {\n def: def._def,\n path: [..._options.basePath, _options.definitionPath, name],\n // Resolution of references will be forced even though seen, so it's ok that the schema is undefined here for now.\n jsonSchema: undefined,\n },\n ])),\n };\n};\n","export function addErrorMessage(res, key, errorMessage, refs) {\n if (!refs?.errorMessages)\n return;\n if (errorMessage) {\n res.errorMessage = {\n ...res.errorMessage,\n [key]: errorMessage,\n };\n }\n}\nexport function setResponseValueAndErrors(res, key, value, errorMessage, refs) {\n res[key] = value;\n addErrorMessage(res, key, errorMessage, refs);\n}\n","export const getRelativePath = (pathA, pathB) => {\n let i = 0;\n for (; i < pathA.length && i < pathB.length; i++) {\n if (pathA[i] !== pathB[i])\n break;\n }\n return [(pathA.length - i).toString(), ...pathB.slice(i)].join(\"/\");\n};\n","import { getRelativePath } from \"../getRelativePath.js\";\nexport function parseAnyDef(refs) {\n if (refs.target !== \"openAi\") {\n return {};\n }\n const anyDefinitionPath = [\n ...refs.basePath,\n refs.definitionPath,\n refs.openAiAnyTypeName,\n ];\n refs.flags.hasReferencedOpenAiAnyType = true;\n return {\n $ref: refs.$refStrategy === \"relative\"\n ? getRelativePath(anyDefinitionPath, refs.currentPath)\n : anyDefinitionPath.join(\"/\"),\n };\n}\n","import { ZodFirstPartyTypeKind } from \"zod/v3\";\nimport { setResponseValueAndErrors } from \"../errorMessages.js\";\nimport { parseDef } from \"../parseDef.js\";\nexport function parseArrayDef(def, refs) {\n const res = {\n type: \"array\",\n };\n if (def.type?._def &&\n def.type?._def?.typeName !== ZodFirstPartyTypeKind.ZodAny) {\n res.items = parseDef(def.type._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\"],\n });\n }\n if (def.minLength) {\n setResponseValueAndErrors(res, \"minItems\", def.minLength.value, def.minLength.message, refs);\n }\n if (def.maxLength) {\n setResponseValueAndErrors(res, \"maxItems\", def.maxLength.value, def.maxLength.message, refs);\n }\n if (def.exactLength) {\n setResponseValueAndErrors(res, \"minItems\", def.exactLength.value, def.exactLength.message, refs);\n setResponseValueAndErrors(res, \"maxItems\", def.exactLength.value, def.exactLength.message, refs);\n }\n return res;\n}\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nexport function parseBigintDef(def, refs) {\n const res = {\n type: \"integer\",\n format: \"int64\",\n };\n if (!def.checks)\n return res;\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n }\n else {\n setResponseValueAndErrors(res, \"exclusiveMinimum\", check.value, check.message, refs);\n }\n }\n else {\n if (!check.inclusive) {\n res.exclusiveMinimum = true;\n }\n setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n }\n break;\n case \"max\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n }\n else {\n setResponseValueAndErrors(res, \"exclusiveMaximum\", check.value, check.message, refs);\n }\n }\n else {\n if (!check.inclusive) {\n res.exclusiveMaximum = true;\n }\n setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n }\n break;\n case \"multipleOf\":\n setResponseValueAndErrors(res, \"multipleOf\", check.value, check.message, refs);\n break;\n }\n }\n return res;\n}\n","export function parseBooleanDef() {\n return {\n type: \"boolean\",\n };\n}\n","import { parseDef } from \"../parseDef.js\";\nexport function parseBrandedDef(_def, refs) {\n return parseDef(_def.type._def, refs);\n}\n","import { parseDef } from \"../parseDef.js\";\nexport const parseCatchDef = (def, refs) => {\n return parseDef(def.innerType._def, refs);\n};\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nexport function parseDateDef(def, refs, overrideDateStrategy) {\n const strategy = overrideDateStrategy ?? refs.dateStrategy;\n if (Array.isArray(strategy)) {\n return {\n anyOf: strategy.map((item, i) => 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, refs);\n }\n}\nconst integerDateParser = (def, refs) => {\n const res = {\n type: \"integer\",\n format: \"unix-time\",\n };\n if (refs.target === \"openApi3\") {\n return res;\n }\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n setResponseValueAndErrors(res, \"minimum\", check.value, // This is in milliseconds\n check.message, refs);\n break;\n case \"max\":\n setResponseValueAndErrors(res, \"maximum\", check.value, // This is in milliseconds\n check.message, refs);\n break;\n }\n }\n return res;\n};\n","import { parseDef } from \"../parseDef.js\";\nexport function parseDefaultDef(_def, refs) {\n return {\n ...parseDef(_def.innerType._def, refs),\n default: _def.defaultValue(),\n };\n}\n","import { parseDef } from \"../parseDef.js\";\nimport { parseAnyDef } from \"./any.js\";\nexport function parseEffectsDef(_def, refs) {\n return refs.effectStrategy === \"input\"\n ? parseDef(_def.schema._def, refs)\n : parseAnyDef(refs);\n}\n","export function parseEnumDef(def) {\n return {\n type: \"string\",\n enum: Array.from(def.values),\n };\n}\n","import { parseDef } from \"../parseDef.js\";\nconst isJsonSchema7AllOfType = (type) => {\n if (\"type\" in type && type.type === \"string\")\n return false;\n return \"allOf\" in type;\n};\nexport function 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 let unevaluatedProperties = refs.target === \"jsonSchema2019-09\"\n ? { unevaluatedProperties: false }\n : undefined;\n const mergedAllOf = [];\n // If either of the schemas is an allOf, merge them into a single allOf\n allOf.forEach((schema) => {\n if (isJsonSchema7AllOfType(schema)) {\n mergedAllOf.push(...schema.allOf);\n if (schema.unevaluatedProperties === undefined) {\n // If one of the schemas has no unevaluatedProperties set,\n // the merged schema should also have no unevaluatedProperties set\n unevaluatedProperties = undefined;\n }\n }\n else {\n let nestedSchema = schema;\n if (\"additionalProperties\" in schema &&\n schema.additionalProperties === false) {\n const { additionalProperties, ...rest } = schema;\n nestedSchema = rest;\n }\n else {\n // As soon as one of the schemas has additionalProperties set not to false, we allow unevaluatedProperties\n unevaluatedProperties = undefined;\n }\n mergedAllOf.push(nestedSchema);\n }\n });\n return mergedAllOf.length\n ? {\n allOf: mergedAllOf,\n ...unevaluatedProperties,\n }\n : undefined;\n}\n","export function parseLiteralDef(def, refs) {\n const parsedType = typeof def.value;\n if (parsedType !== \"bigint\" &&\n parsedType !== \"number\" &&\n parsedType !== \"boolean\" &&\n parsedType !== \"string\") {\n return {\n type: Array.isArray(def.value) ? \"array\" : \"object\",\n };\n }\n if (refs.target === \"openApi3\") {\n return {\n type: parsedType === \"bigint\" ? \"integer\" : parsedType,\n enum: [def.value],\n };\n }\n return {\n type: parsedType === \"bigint\" ? \"integer\" : parsedType,\n const: def.value,\n };\n}\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nlet emojiRegex = undefined;\n/**\n * Generated from the regular expressions found here as of 2024-05-22:\n * https://github.com/colinhacks/zod/blob/master/src/types.ts.\n *\n * Expressions with /i flag have been changed accordingly.\n */\nexport const 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 === undefined) {\n emojiRegex = RegExp(\"^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$\", \"u\");\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};\nexport function 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 setResponseValueAndErrors(res, \"minLength\", typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"max\":\n setResponseValueAndErrors(res, \"maxLength\", typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value, check.message, refs);\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(res, RegExp(`^${escapeLiteralCheckValue(check.value, refs)}`), check.message, refs);\n break;\n case \"endsWith\":\n addPattern(res, RegExp(`${escapeLiteralCheckValue(check.value, refs)}$`), check.message, refs);\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 setResponseValueAndErrors(res, \"minLength\", typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value, check.message, refs);\n setResponseValueAndErrors(res, \"maxLength\", typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"includes\": {\n addPattern(res, RegExp(escapeLiteralCheckValue(check.value, refs)), check.message, refs);\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 setResponseValueAndErrors(res, \"contentEncoding\", \"base64\", check.message, refs);\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 ((_) => { })(check);\n }\n }\n }\n return res;\n}\nfunction escapeLiteralCheckValue(literal, refs) {\n return refs.patternStrategy === \"escape\"\n ? escapeNonAlphaNumeric(literal)\n : literal;\n}\nconst ALPHA_NUMERIC = new Set(\"ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789\");\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}\n// Adds a \"format\" keyword to the schema. If a format exists, both formats will be joined in an allOf-node, along with subsequent ones.\nfunction addFormat(schema, value, message, refs) {\n if (schema.format || schema.anyOf?.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 ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { format: schema.errorMessage.format },\n }),\n });\n delete schema.format;\n if (schema.errorMessage) {\n delete schema.errorMessage.format;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n schema.anyOf.push({\n format: value,\n ...(message &&\n refs.errorMessages && { errorMessage: { format: message } }),\n });\n }\n else {\n setResponseValueAndErrors(schema, \"format\", value, message, refs);\n }\n}\n// Adds a \"pattern\" keyword to the schema. If a pattern exists, both patterns will be joined in an allOf-node, along with subsequent ones.\nfunction addPattern(schema, regex, message, refs) {\n if (schema.pattern || schema.allOf?.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 ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { pattern: schema.errorMessage.pattern },\n }),\n });\n delete schema.pattern;\n if (schema.errorMessage) {\n delete schema.errorMessage.pattern;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n schema.allOf.push({\n pattern: stringifyRegExpWithFlags(regex, refs),\n ...(message &&\n refs.errorMessages && { errorMessage: { pattern: message } }),\n });\n }\n else {\n setResponseValueAndErrors(schema, \"pattern\", stringifyRegExpWithFlags(regex, refs), message, refs);\n }\n}\n// Mutate z.string.regex() in a best attempt to accommodate for regex flags when applyRegexFlags is true\nfunction stringifyRegExpWithFlags(regex, refs) {\n if (!refs.applyRegexFlags || !regex.flags) {\n return regex.source;\n }\n // Currently handled flags\n const flags = {\n i: regex.flags.includes(\"i\"),\n m: regex.flags.includes(\"m\"),\n s: regex.flags.includes(\"s\"), // `.` matches newlines\n };\n // The general principle here is to step through each character, one at a time, applying mutations as flags require. We keep track when the current character is escaped, and when it's inside a group /like [this]/ or (also) a range like /[a-z]/. The following is fairly brittle imperative code; edit at your peril!\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 }\n else if (source[i + 1] === \"-\" && source[i + 2]?.match(/[a-z]/)) {\n pattern += source[i];\n inCharRange = true;\n }\n else {\n pattern += `${source[i]}${source[i].toUpperCase()}`;\n }\n continue;\n }\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 }\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 }\n else if (inCharGroup && source[i] === \"]\") {\n inCharGroup = false;\n }\n else if (!inCharGroup && source[i] === \"[\") {\n inCharGroup = true;\n }\n }\n try {\n new RegExp(pattern);\n }\n catch {\n console.warn(`Could not convert regex pattern at ${refs.currentPath.join(\"/\")} to a flag-independent form! Falling back to the flag-ignorant source`);\n return regex.source;\n }\n return pattern;\n}\n","import { ZodFirstPartyTypeKind, } from \"zod/v3\";\nimport { parseDef } from \"../parseDef.js\";\nimport { parseStringDef } from \"./string.js\";\nimport { parseBrandedDef } from \"./branded.js\";\nimport { parseAnyDef } from \"./any.js\";\nexport function parseRecordDef(def, refs) {\n if (refs.target === \"openAi\") {\n console.warn(\"Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead.\");\n }\n if (refs.target === \"openApi3\" &&\n def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {\n return {\n type: \"object\",\n required: def.keyType._def.values,\n properties: def.keyType._def.values.reduce((acc, key) => ({\n ...acc,\n [key]: parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"properties\", key],\n }) ?? parseAnyDef(refs),\n }), {}),\n additionalProperties: refs.rejectedAdditionalProperties,\n };\n }\n const schema = {\n type: \"object\",\n additionalProperties: parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"additionalProperties\"],\n }) ?? refs.allowedAdditionalProperties,\n };\n if (refs.target === \"openApi3\") {\n return schema;\n }\n if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n def.keyType._def.checks?.length) {\n const { type, ...keyType } = parseStringDef(def.keyType._def, refs);\n return {\n ...schema,\n propertyNames: keyType,\n };\n }\n else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {\n return {\n ...schema,\n propertyNames: {\n enum: def.keyType._def.values,\n },\n };\n }\n else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodBranded &&\n def.keyType._def.type._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n def.keyType._def.type._def.checks?.length) {\n const { type, ...keyType } = parseBrandedDef(def.keyType._def, refs);\n return {\n ...schema,\n propertyNames: keyType,\n };\n }\n return schema;\n}\n","import { parseDef } from \"../parseDef.js\";\nimport { parseRecordDef } from \"./record.js\";\nimport { parseAnyDef } from \"./any.js\";\nexport function 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(refs);\n const values = parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", \"items\", \"1\"],\n }) || parseAnyDef(refs);\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","export function 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(new Set(actualValues.map((values) => typeof values)));\n return {\n type: parsedTypes.length === 1\n ? parsedTypes[0] === \"string\"\n ? \"string\"\n : \"number\"\n : [\"string\", \"number\"],\n enum: actualValues,\n };\n}\n","import { parseAnyDef } from \"./any.js\";\nexport function parseNeverDef(refs) {\n return refs.target === \"openAi\"\n ? undefined\n : {\n not: parseAnyDef({\n ...refs,\n currentPath: [...refs.currentPath, \"not\"],\n }),\n };\n}\n","export function parseNullDef(refs) {\n return refs.target === \"openApi3\"\n ? {\n enum: [\"null\"],\n nullable: true,\n }\n : {\n type: \"null\",\n };\n}\n","import { parseDef } from \"../parseDef.js\";\nexport const primitiveMappings = {\n ZodString: \"string\",\n ZodNumber: \"number\",\n ZodBigInt: \"integer\",\n ZodBoolean: \"boolean\",\n ZodNull: \"null\",\n};\nexport function parseUnionDef(def, refs) {\n if (refs.target === \"openApi3\")\n return asAnyOf(def, refs);\n const options = def.options instanceof Map ? Array.from(def.options.values()) : def.options;\n // This blocks tries to look ahead a bit to produce nicer looking schemas with type array instead of anyOf.\n if (options.every((x) => x._def.typeName in primitiveMappings &&\n (!x._def.checks || !x._def.checks.length))) {\n // all types in union are primitive and lack checks, so might as well squash into {type: [...]}\n const types = options.reduce((types, x) => {\n const type = primitiveMappings[x._def.typeName]; //Can be safely casted due to row 43\n return type && !types.includes(type) ? [...types, type] : types;\n }, []);\n return {\n type: types.length > 1 ? types : types[0],\n };\n }\n else if (options.every((x) => x._def.typeName === \"ZodLiteral\" && !x.description)) {\n // all options literals\n const types = options.reduce((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)\n return [...acc, \"null\"];\n case \"symbol\":\n case \"undefined\":\n case \"function\":\n default:\n return acc;\n }\n }, []);\n if (types.length === options.length) {\n // all the literals are primitive, as far as null can be considered primitive\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((acc, x) => {\n return acc.includes(x._def.value) ? acc : [...acc, x._def.value];\n }, []),\n };\n }\n }\n else if (options.every((x) => x._def.typeName === \"ZodEnum\")) {\n return {\n type: \"string\",\n enum: options.reduce((acc, x) => [\n ...acc,\n ...x._def.values.filter((x) => !acc.includes(x)),\n ], []),\n };\n }\n return asAnyOf(def, refs);\n}\nconst asAnyOf = (def, refs) => {\n const anyOf = (def.options instanceof Map\n ? Array.from(def.options.values())\n : def.options)\n .map((x, i) => parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"anyOf\", `${i}`],\n }))\n .filter((x) => !!x &&\n (!refs.strictUnions ||\n (typeof x === \"object\" && Object.keys(x).length > 0)));\n return anyOf.length ? { anyOf } : undefined;\n};\n","import { parseDef } from \"../parseDef.js\";\nimport { primitiveMappings } from \"./union.js\";\nexport function parseNullableDef(def, refs) {\n if ([\"ZodString\", \"ZodNumber\", \"ZodBigInt\", \"ZodBoolean\", \"ZodNull\"].includes(def.innerType._def.typeName) &&\n (!def.innerType._def.checks || !def.innerType._def.checks.length)) {\n if (refs.target === \"openApi3\") {\n return {\n type: primitiveMappings[def.innerType._def.typeName],\n nullable: true,\n };\n }\n return {\n type: [\n primitiveMappings[def.innerType._def.typeName],\n \"null\",\n ],\n };\n }\n if (refs.target === \"openApi3\") {\n const base = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath],\n });\n if (base && \"$ref\" in base)\n return { allOf: [base], nullable: true };\n return base && { ...base, nullable: true };\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","import { addErrorMessage, setResponseValueAndErrors, } from \"../errorMessages.js\";\nexport function parseNumberDef(def, refs) {\n const res = {\n type: \"number\",\n };\n if (!def.checks)\n return res;\n for (const check of def.checks) {\n switch (check.kind) {\n case \"int\":\n res.type = \"integer\";\n addErrorMessage(res, \"type\", check.message, refs);\n break;\n case \"min\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n }\n else {\n setResponseValueAndErrors(res, \"exclusiveMinimum\", check.value, check.message, refs);\n }\n }\n else {\n if (!check.inclusive) {\n res.exclusiveMinimum = true;\n }\n setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n }\n break;\n case \"max\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n }\n else {\n setResponseValueAndErrors(res, \"exclusiveMaximum\", check.value, check.message, refs);\n }\n }\n else {\n if (!check.inclusive) {\n res.exclusiveMaximum = true;\n }\n setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n }\n break;\n case \"multipleOf\":\n setResponseValueAndErrors(res, \"multipleOf\", check.value, check.message, refs);\n break;\n }\n }\n return res;\n}\n","import { parseDef } from \"../parseDef.js\";\nexport function parseObjectDef(def, refs) {\n const forceOptionalIntoNullable = refs.target === \"openAi\";\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 === undefined || propDef._def === undefined) {\n continue;\n }\n let propOptional = safeIsOptional(propDef);\n if (propOptional && forceOptionalIntoNullable) {\n if (propDef._def.typeName === \"ZodOptional\") {\n propDef = propDef._def.innerType;\n }\n if (!propDef.isNullable()) {\n propDef = propDef.nullable();\n }\n propOptional = false;\n }\n const parsedDef = parseDef(propDef._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"properties\", propName],\n propertyPath: [...refs.currentPath, \"properties\", propName],\n });\n if (parsedDef === undefined) {\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 !== undefined) {\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\"\n ? refs.allowedAdditionalProperties\n : refs.rejectedAdditionalProperties;\n }\n}\nfunction safeIsOptional(schema) {\n try {\n return schema.isOptional();\n }\n catch {\n return true;\n }\n}\n","import { parseDef } from \"../parseDef.js\";\nimport { parseAnyDef } from \"./any.js\";\nexport const parseOptionalDef = (def, refs) => {\n if (refs.currentPath.toString() === refs.propertyPath?.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\n ? {\n anyOf: [\n {\n not: parseAnyDef(refs),\n },\n innerSchema,\n ],\n }\n : parseAnyDef(refs);\n};\n","import { parseDef } from \"../parseDef.js\";\nexport const parsePipelineDef = (def, refs) => {\n if (refs.pipeStrategy === \"input\") {\n return parseDef(def.in._def, refs);\n }\n else if (refs.pipeStrategy === \"output\") {\n return parseDef(def.out._def, refs);\n }\n const a = parseDef(def.in._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", \"0\"],\n });\n const b = parseDef(def.out._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", a ? \"1\" : \"0\"],\n });\n return {\n allOf: [a, b].filter((x) => x !== undefined),\n };\n};\n","import { parseDef } from \"../parseDef.js\";\nexport function parsePromiseDef(def, refs) {\n return parseDef(def.type._def, refs);\n}\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nimport { parseDef } from \"../parseDef.js\";\nexport function 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 setResponseValueAndErrors(schema, \"minItems\", def.minSize.value, def.minSize.message, refs);\n }\n if (def.maxSize) {\n setResponseValueAndErrors(schema, \"maxItems\", def.maxSize.value, def.maxSize.message, refs);\n }\n return schema;\n}\n","import { parseDef } from \"../parseDef.js\";\nexport function parseTupleDef(def, refs) {\n if (def.rest) {\n return {\n type: \"array\",\n minItems: def.items.length,\n items: def.items\n .map((x, i) => parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", `${i}`],\n }))\n .reduce((acc, x) => (x === undefined ? acc : [...acc, x]), []),\n additionalItems: parseDef(def.rest._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"additionalItems\"],\n }),\n };\n }\n else {\n return {\n type: \"array\",\n minItems: def.items.length,\n maxItems: def.items.length,\n items: def.items\n .map((x, i) => parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", `${i}`],\n }))\n .reduce((acc, x) => (x === undefined ? acc : [...acc, x]), []),\n };\n }\n}\n","import { parseAnyDef } from \"./any.js\";\nexport function parseUndefinedDef(refs) {\n return {\n not: parseAnyDef(refs),\n };\n}\n","import { parseAnyDef } from \"./any.js\";\nexport function parseUnknownDef(refs) {\n return parseAnyDef(refs);\n}\n","import { parseDef } from \"../parseDef.js\";\nexport const parseReadonlyDef = (def, refs) => {\n return parseDef(def.innerType._def, refs);\n};\n","import { ZodFirstPartyTypeKind } from \"zod/v3\";\nimport { parseAnyDef } from \"./parsers/any.js\";\nimport { parseArrayDef } from \"./parsers/array.js\";\nimport { parseBigintDef } from \"./parsers/bigint.js\";\nimport { parseBooleanDef } from \"./parsers/boolean.js\";\nimport { parseBrandedDef } from \"./parsers/branded.js\";\nimport { parseCatchDef } from \"./parsers/catch.js\";\nimport { parseDateDef } from \"./parsers/date.js\";\nimport { parseDefaultDef } from \"./parsers/default.js\";\nimport { parseEffectsDef } from \"./parsers/effects.js\";\nimport { parseEnumDef } from \"./parsers/enum.js\";\nimport { parseIntersectionDef } from \"./parsers/intersection.js\";\nimport { parseLiteralDef } from \"./parsers/literal.js\";\nimport { parseMapDef } from \"./parsers/map.js\";\nimport { parseNativeEnumDef } from \"./parsers/nativeEnum.js\";\nimport { parseNeverDef } from \"./parsers/never.js\";\nimport { parseNullDef } from \"./parsers/null.js\";\nimport { parseNullableDef } from \"./parsers/nullable.js\";\nimport { parseNumberDef } from \"./parsers/number.js\";\nimport { parseObjectDef } from \"./parsers/object.js\";\nimport { parseOptionalDef } from \"./parsers/optional.js\";\nimport { parsePipelineDef } from \"./parsers/pipeline.js\";\nimport { parsePromiseDef } from \"./parsers/promise.js\";\nimport { parseRecordDef } from \"./parsers/record.js\";\nimport { parseSetDef } from \"./parsers/set.js\";\nimport { parseStringDef } from \"./parsers/string.js\";\nimport { parseTupleDef } from \"./parsers/tuple.js\";\nimport { parseUndefinedDef } from \"./parsers/undefined.js\";\nimport { parseUnionDef } from \"./parsers/union.js\";\nimport { parseUnknownDef } from \"./parsers/unknown.js\";\nimport { parseReadonlyDef } from \"./parsers/readonly.js\";\nexport const selectParser = (def, typeName, refs) => {\n switch (typeName) {\n case ZodFirstPartyTypeKind.ZodString:\n return parseStringDef(def, refs);\n case ZodFirstPartyTypeKind.ZodNumber:\n return parseNumberDef(def, refs);\n case ZodFirstPartyTypeKind.ZodObject:\n return parseObjectDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBigInt:\n return parseBigintDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBoolean:\n return parseBooleanDef();\n case ZodFirstPartyTypeKind.ZodDate:\n return parseDateDef(def, refs);\n case ZodFirstPartyTypeKind.ZodUndefined:\n return parseUndefinedDef(refs);\n case ZodFirstPartyTypeKind.ZodNull:\n return parseNullDef(refs);\n case ZodFirstPartyTypeKind.ZodArray:\n return parseArrayDef(def, refs);\n case ZodFirstPartyTypeKind.ZodUnion:\n case ZodFirstPartyTypeKind.ZodDiscriminatedUnion:\n return parseUnionDef(def, refs);\n case ZodFirstPartyTypeKind.ZodIntersection:\n return parseIntersectionDef(def, refs);\n case ZodFirstPartyTypeKind.ZodTuple:\n return parseTupleDef(def, refs);\n case ZodFirstPartyTypeKind.ZodRecord:\n return parseRecordDef(def, refs);\n case ZodFirstPartyTypeKind.ZodLiteral:\n return parseLiteralDef(def, refs);\n case ZodFirstPartyTypeKind.ZodEnum:\n return parseEnumDef(def);\n case ZodFirstPartyTypeKind.ZodNativeEnum:\n return parseNativeEnumDef(def);\n case ZodFirstPartyTypeKind.ZodNullable:\n return parseNullableDef(def, refs);\n case ZodFirstPartyTypeKind.ZodOptional:\n return parseOptionalDef(def, refs);\n case ZodFirstPartyTypeKind.ZodMap:\n return parseMapDef(def, refs);\n case ZodFirstPartyTypeKind.ZodSet:\n return parseSetDef(def, refs);\n case ZodFirstPartyTypeKind.ZodLazy:\n return () => def.getter()._def;\n case ZodFirstPartyTypeKind.ZodPromise:\n return parsePromiseDef(def, refs);\n case ZodFirstPartyTypeKind.ZodNaN:\n case ZodFirstPartyTypeKind.ZodNever:\n return parseNeverDef(refs);\n case ZodFirstPartyTypeKind.ZodEffects:\n return parseEffectsDef(def, refs);\n case ZodFirstPartyTypeKind.ZodAny:\n return parseAnyDef(refs);\n case ZodFirstPartyTypeKind.ZodUnknown:\n return parseUnknownDef(refs);\n case ZodFirstPartyTypeKind.ZodDefault:\n return parseDefaultDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBranded:\n return parseBrandedDef(def, refs);\n case ZodFirstPartyTypeKind.ZodReadonly:\n return parseReadonlyDef(def, refs);\n case ZodFirstPartyTypeKind.ZodCatch:\n return parseCatchDef(def, refs);\n case ZodFirstPartyTypeKind.ZodPipeline:\n return parsePipelineDef(def, refs);\n case ZodFirstPartyTypeKind.ZodFunction:\n case ZodFirstPartyTypeKind.ZodVoid:\n case ZodFirstPartyTypeKind.ZodSymbol:\n return undefined;\n default:\n return ((_) => undefined)(typeName);\n }\n};\n","import { ignoreOverride } from \"./Options.js\";\nimport { selectParser } from \"./selectParser.js\";\nimport { getRelativePath } from \"./getRelativePath.js\";\nimport { parseAnyDef } from \"./parsers/any.js\";\nexport function parseDef(def, refs, forceResolution = false) {\n const seenItem = refs.seen.get(def);\n if (refs.override) {\n const overrideResult = refs.override?.(def, refs, seenItem, forceResolution);\n if (overrideResult !== ignoreOverride) {\n return overrideResult;\n }\n }\n if (seenItem && !forceResolution) {\n const seenSchema = get$ref(seenItem, refs);\n if (seenSchema !== undefined) {\n return seenSchema;\n }\n }\n const newItem = { def, path: refs.currentPath, jsonSchema: undefined };\n refs.seen.set(def, newItem);\n const jsonSchemaOrGetter = selectParser(def, def.typeName, refs);\n // If the return was a function, then the inner definition needs to be extracted before a call to parseDef (recursive)\n const jsonSchema = typeof jsonSchemaOrGetter === \"function\"\n ? parseDef(jsonSchemaOrGetter(), refs)\n : jsonSchemaOrGetter;\n if (jsonSchema) {\n addMeta(def, refs, jsonSchema);\n }\n if (refs.postProcess) {\n const postProcessResult = refs.postProcess(jsonSchema, def, refs);\n newItem.jsonSchema = jsonSchema;\n return postProcessResult;\n }\n newItem.jsonSchema = jsonSchema;\n return jsonSchema;\n}\nconst 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 &&\n item.path.every((value, index) => refs.currentPath[index] === value)) {\n console.warn(`Recursive reference detected at ${refs.currentPath.join(\"/\")}! Defaulting to any`);\n return parseAnyDef(refs);\n }\n return refs.$refStrategy === \"seen\" ? parseAnyDef(refs) : undefined;\n }\n }\n};\nconst addMeta = (def, refs, jsonSchema) => {\n if (def.description) {\n jsonSchema.description = def.description;\n if (refs.markdownDescription) {\n jsonSchema.markdownDescription = def.description;\n }\n }\n return jsonSchema;\n};\n","import { parseDef } from \"./parseDef.js\";\nimport { getRefs } from \"./Refs.js\";\nimport { parseAnyDef } from \"./parsers/any.js\";\nconst zodToJsonSchema = (schema, options) => {\n const refs = getRefs(options);\n let definitions = typeof options === \"object\" && options.definitions\n ? Object.entries(options.definitions).reduce((acc, [name, schema]) => ({\n ...acc,\n [name]: parseDef(schema._def, {\n ...refs,\n currentPath: [...refs.basePath, refs.definitionPath, name],\n }, true) ?? parseAnyDef(refs),\n }), {})\n : undefined;\n const name = typeof options === \"string\"\n ? options\n : options?.nameStrategy === \"title\"\n ? undefined\n : options?.name;\n const main = parseDef(schema._def, name === undefined\n ? refs\n : {\n ...refs,\n currentPath: [...refs.basePath, refs.definitionPath, name],\n }, false) ?? parseAnyDef(refs);\n const title = typeof options === \"object\" &&\n options.name !== undefined &&\n options.nameStrategy === \"title\"\n ? options.name\n : undefined;\n if (title !== undefined) {\n main.title = title;\n }\n if (refs.flags.hasReferencedOpenAiAnyType) {\n if (!definitions) {\n definitions = {};\n }\n if (!definitions[refs.openAiAnyTypeName]) {\n definitions[refs.openAiAnyTypeName] = {\n // Skipping \"object\" as no properties can be defined and additionalProperties must be \"false\"\n type: [\"string\", \"number\", \"integer\", \"boolean\", \"array\", \"null\"],\n items: {\n $ref: refs.$refStrategy === \"relative\"\n ? \"1\"\n : [\n ...refs.basePath,\n refs.definitionPath,\n refs.openAiAnyTypeName,\n ].join(\"/\"),\n },\n };\n }\n }\n const combined = name === undefined\n ? definitions\n ? {\n ...main,\n [refs.definitionPath]: definitions,\n }\n : main\n : {\n $ref: [\n ...(refs.$refStrategy === \"relative\" ? [] : refs.basePath),\n refs.definitionPath,\n name,\n ].join(\"/\"),\n [refs.definitionPath]: {\n ...definitions,\n [name]: main,\n },\n };\n if (refs.target === \"jsonSchema7\") {\n combined.$schema = \"http://json-schema.org/draft-07/schema#\";\n }\n else if (refs.target === \"jsonSchema2019-09\" || refs.target === \"openAi\") {\n combined.$schema = \"https://json-schema.org/draft/2019-09/schema#\";\n }\n if (refs.target === \"openAi\" &&\n (\"anyOf\" in combined ||\n \"oneOf\" in combined ||\n \"allOf\" in combined ||\n (\"type\" in combined && Array.isArray(combined.type)))) {\n console.warn(\"Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property.\");\n }\n return combined;\n};\nexport { zodToJsonSchema };\n","export * from \"./Options.js\";\nexport * from \"./Refs.js\";\nexport * from \"./errorMessages.js\";\nexport * from \"./getRelativePath.js\";\nexport * from \"./parseDef.js\";\nexport * from \"./parseTypes.js\";\nexport * from \"./parsers/any.js\";\nexport * from \"./parsers/array.js\";\nexport * from \"./parsers/bigint.js\";\nexport * from \"./parsers/boolean.js\";\nexport * from \"./parsers/branded.js\";\nexport * from \"./parsers/catch.js\";\nexport * from \"./parsers/date.js\";\nexport * from \"./parsers/default.js\";\nexport * from \"./parsers/effects.js\";\nexport * from \"./parsers/enum.js\";\nexport * from \"./parsers/intersection.js\";\nexport * from \"./parsers/literal.js\";\nexport * from \"./parsers/map.js\";\nexport * from \"./parsers/nativeEnum.js\";\nexport * from \"./parsers/never.js\";\nexport * from \"./parsers/null.js\";\nexport * from \"./parsers/nullable.js\";\nexport * from \"./parsers/number.js\";\nexport * from \"./parsers/object.js\";\nexport * from \"./parsers/optional.js\";\nexport * from \"./parsers/pipeline.js\";\nexport * from \"./parsers/promise.js\";\nexport * from \"./parsers/readonly.js\";\nexport * from \"./parsers/record.js\";\nexport * from \"./parsers/set.js\";\nexport * from \"./parsers/string.js\";\nexport * from \"./parsers/tuple.js\";\nexport * from \"./parsers/undefined.js\";\nexport * from \"./parsers/union.js\";\nexport * from \"./parsers/unknown.js\";\nexport * from \"./selectParser.js\";\nexport * from \"./zodToJsonSchema.js\";\nimport { zodToJsonSchema } from \"./zodToJsonSchema.js\";\nexport default zodToJsonSchema;\n","type State =\n | 'ROOT'\n | 'FINISH'\n | 'INSIDE_STRING'\n | 'INSIDE_STRING_ESCAPE'\n | 'INSIDE_LITERAL'\n | 'INSIDE_NUMBER'\n | 'INSIDE_OBJECT_START'\n | 'INSIDE_OBJECT_KEY'\n | 'INSIDE_OBJECT_AFTER_KEY'\n | 'INSIDE_OBJECT_BEFORE_VALUE'\n | 'INSIDE_OBJECT_AFTER_VALUE'\n | 'INSIDE_OBJECT_AFTER_COMMA'\n | 'INSIDE_ARRAY_START'\n | 'INSIDE_ARRAY_AFTER_VALUE'\n | 'INSIDE_ARRAY_AFTER_COMMA';\n\n// Implemented as a scanner with additional fixing\n// that performs a single linear time scan pass over the partial JSON.\n//\n// The states should ideally match relevant states from the JSON spec:\n// https://www.json.org/json-en.html\n//\n// Please note that invalid JSON is not considered/covered, because it\n// is assumed that the resulting JSON will be processed by a standard\n// JSON parser that will detect any invalid JSON.\nexport function fixJson(input: string): string {\n const stack: State[] = ['ROOT'];\n let lastValidIndex = -1;\n let literalStart: number | null = null;\n\n function processValueStart(char: string, i: number, swapState: State) {\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\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\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\n case '{': {\n lastValidIndex = i;\n stack.pop();\n stack.push(swapState);\n stack.push('INSIDE_OBJECT_START');\n break;\n }\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\n function processAfterObjectValue(char: string, i: number) {\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\n function processAfterArrayValue(char: string, i: number) {\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\n for (let i = 0; i < input.length; i++) {\n const char = input[i];\n const currentState = stack[stack.length - 1];\n\n switch (currentState) {\n case 'ROOT':\n processValueStart(char, i, 'FINISH');\n break;\n\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\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\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\n case 'INSIDE_OBJECT_AFTER_KEY': {\n switch (char) {\n case ':': {\n stack.pop();\n stack.push('INSIDE_OBJECT_BEFORE_VALUE');\n\n break;\n }\n }\n break;\n }\n\n case 'INSIDE_OBJECT_BEFORE_VALUE': {\n processValueStart(char, i, 'INSIDE_OBJECT_AFTER_VALUE');\n break;\n }\n\n case 'INSIDE_OBJECT_AFTER_VALUE': {\n processAfterObjectValue(char, i);\n break;\n }\n\n case 'INSIDE_STRING': {\n switch (char) {\n case '\"': {\n stack.pop();\n lastValidIndex = i;\n break;\n }\n\n case '\\\\': {\n stack.push('INSIDE_STRING_ESCAPE');\n break;\n }\n\n default: {\n lastValidIndex = i;\n }\n }\n\n break;\n }\n\n case 'INSIDE_ARRAY_START': {\n switch (char) {\n case ']': {\n lastValidIndex = i;\n stack.pop();\n break;\n }\n\n default: {\n lastValidIndex = i;\n processValueStart(char, i, 'INSIDE_ARRAY_AFTER_VALUE');\n break;\n }\n }\n break;\n }\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\n case ']': {\n lastValidIndex = i;\n stack.pop();\n break;\n }\n\n default: {\n lastValidIndex = i;\n break;\n }\n }\n\n break;\n }\n\n case 'INSIDE_ARRAY_AFTER_COMMA': {\n processValueStart(char, i, 'INSIDE_ARRAY_AFTER_VALUE');\n break;\n }\n\n case 'INSIDE_STRING_ESCAPE': {\n stack.pop();\n lastValidIndex = i;\n\n break;\n }\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\n case 'e':\n case 'E':\n case '-':\n case '.': {\n break;\n }\n\n case ',': {\n stack.pop();\n\n if (stack[stack.length - 1] === 'INSIDE_ARRAY_AFTER_VALUE') {\n processAfterArrayValue(char, i);\n }\n\n if (stack[stack.length - 1] === 'INSIDE_OBJECT_AFTER_VALUE') {\n processAfterObjectValue(char, i);\n }\n\n break;\n }\n\n case '}': {\n stack.pop();\n\n if (stack[stack.length - 1] === 'INSIDE_OBJECT_AFTER_VALUE') {\n processAfterObjectValue(char, i);\n }\n\n break;\n }\n\n case ']': {\n stack.pop();\n\n if (stack[stack.length - 1] === 'INSIDE_ARRAY_AFTER_VALUE') {\n processAfterArrayValue(char, i);\n }\n\n break;\n }\n\n default: {\n stack.pop();\n break;\n }\n }\n\n break;\n }\n\n case 'INSIDE_LITERAL': {\n const partialLiteral = input.substring(literalStart!, i + 1);\n\n if (\n !'false'.startsWith(partialLiteral) &&\n !'true'.startsWith(partialLiteral) &&\n !'null'.startsWith(partialLiteral)\n ) {\n stack.pop();\n\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\n break;\n }\n }\n }\n\n let result = input.slice(0, lastValidIndex + 1);\n\n for (let i = stack.length - 1; i >= 0; i--) {\n const state = stack[i];\n\n switch (state) {\n case 'INSIDE_STRING': {\n result += '\"';\n break;\n }\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\n case 'INSIDE_ARRAY_START':\n case 'INSIDE_ARRAY_AFTER_COMMA':\n case 'INSIDE_ARRAY_AFTER_VALUE': {\n result += ']';\n break;\n }\n\n case 'INSIDE_LITERAL': {\n const partialLiteral = input.substring(literalStart!, input.length);\n\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\n return result;\n}\n","import { JSONValue } from '@ai-sdk/provider';\nimport { safeParseJSON } from '@ai-sdk/provider-utils';\nimport { fixJson } from './fix-json';\n\nexport function parsePartialJson(jsonText: string | undefined): {\n value: JSONValue | undefined;\n state:\n | 'undefined-input'\n | 'successful-parse'\n | 'repaired-parse'\n | 'failed-parse';\n} {\n if (jsonText === undefined) {\n return { value: undefined, state: 'undefined-input' };\n }\n\n let result = safeParseJSON({ text: jsonText });\n\n if (result.success) {\n return { value: result.value, state: 'successful-parse' };\n }\n\n result = safeParseJSON({ text: fixJson(jsonText) });\n\n if (result.success) {\n return { value: result.value, state: 'repaired-parse' };\n }\n\n return { value: undefined, state: 'failed-parse' };\n}\n","import {\n LanguageModelV1FinishReason,\n LanguageModelV1Source,\n} from '@ai-sdk/provider';\nimport { ToolCall, ToolResult } from '@ai-sdk/provider-utils';\nimport { JSONValue } from './types';\n\nexport type DataStreamString =\n `${(typeof DataStreamStringPrefixes)[keyof typeof DataStreamStringPrefixes]}:${string}\\n`;\n\nexport interface DataStreamPart<\n CODE extends string,\n NAME extends string,\n TYPE,\n> {\n code: CODE;\n name: NAME;\n parse: (value: JSONValue) => { type: NAME; value: TYPE };\n}\n\nconst textStreamPart: DataStreamPart<'0', 'text', string> = {\n code: '0',\n name: 'text',\n parse: (value: JSONValue) => {\n if (typeof value !== 'string') {\n throw new Error('\"text\" parts expect a string value.');\n }\n return { type: 'text', value };\n },\n};\n\nconst dataStreamPart: DataStreamPart<'2', 'data', Array<JSONValue>> = {\n code: '2',\n name: 'data',\n parse: (value: JSONValue) => {\n if (!Array.isArray(value)) {\n throw new Error('\"data\" parts expect an array value.');\n }\n\n return { type: 'data', value };\n },\n};\n\nconst errorStreamPart: DataStreamPart<'3', 'error', string> = {\n code: '3',\n name: 'error',\n parse: (value: JSONValue) => {\n if (typeof value !== 'string') {\n throw new Error('\"error\" parts expect a string value.');\n }\n return { type: 'error', value };\n },\n};\n\nconst messageAnnotationsStreamPart: DataStreamPart<\n '8',\n 'message_annotations',\n Array<JSONValue>\n> = {\n code: '8',\n name: 'message_annotations',\n parse: (value: JSONValue) => {\n if (!Array.isArray(value)) {\n throw new Error('\"message_annotations\" parts expect an array value.');\n }\n\n return { type: 'message_annotations', value };\n },\n};\n\nconst toolCallStreamPart: DataStreamPart<\n '9',\n 'tool_call',\n ToolCall<string, any>\n> = {\n code: '9',\n name: 'tool_call',\n parse: (value: JSONValue) => {\n if (\n value == null ||\n typeof value !== 'object' ||\n !('toolCallId' in value) ||\n typeof value.toolCallId !== 'string' ||\n !('toolName' in value) ||\n typeof value.toolName !== 'string' ||\n !('args' in value) ||\n typeof value.args !== 'object'\n ) {\n throw new Error(\n '\"tool_call\" parts expect an object with a \"toolCallId\", \"toolName\", and \"args\" property.',\n );\n }\n\n return {\n type: 'tool_call',\n value: value as unknown as ToolCall<string, any>,\n };\n },\n};\n\nconst toolResultStreamPart: DataStreamPart<\n 'a',\n 'tool_result',\n Omit<ToolResult<string, any, any>, 'args' | 'toolName'>\n> = {\n code: 'a',\n name: 'tool_result',\n parse: (value: JSONValue) => {\n if (\n value == null ||\n typeof value !== 'object' ||\n !('toolCallId' in value) ||\n typeof value.toolCallId !== 'string' ||\n !('result' in value)\n ) {\n throw new Error(\n '\"tool_result\" parts expect an object with a \"toolCallId\" and a \"result\" property.',\n );\n }\n\n return {\n type: 'tool_result',\n value: value as unknown as Omit<\n ToolResult<string, any, any>,\n 'args' | 'toolName'\n >,\n };\n },\n};\n\nconst toolCallStreamingStartStreamPart: DataStreamPart<\n 'b',\n 'tool_call_streaming_start',\n { toolCallId: string; toolName: string }\n> = {\n code: 'b',\n name: 'tool_call_streaming_start',\n parse: (value: JSONValue) => {\n if (\n value == null ||\n typeof value !== 'object' ||\n !('toolCallId' in value) ||\n typeof value.toolCallId !== 'string' ||\n !('toolName' in value) ||\n typeof value.toolName !== 'string'\n ) {\n throw new Error(\n '\"tool_call_streaming_start\" parts expect an object with a \"toolCallId\" and \"toolName\" property.',\n );\n }\n\n return {\n type: 'tool_call_streaming_start',\n value: value as unknown as { toolCallId: string; toolName: string },\n };\n },\n};\n\nconst toolCallDeltaStreamPart: DataStreamPart<\n 'c',\n 'tool_call_delta',\n { toolCallId: string; argsTextDelta: string }\n> = {\n code: 'c',\n name: 'tool_call_delta',\n parse: (value: JSONValue) => {\n if (\n value == null ||\n typeof value !== 'object' ||\n !('toolCallId' in value) ||\n typeof value.toolCallId !== 'string' ||\n !('argsTextDelta' in value) ||\n typeof value.argsTextDelta !== 'string'\n ) {\n throw new Error(\n '\"tool_call_delta\" parts expect an object with a \"toolCallId\" and \"argsTextDelta\" property.',\n );\n }\n\n return {\n type: 'tool_call_delta',\n value: value as unknown as {\n toolCallId: string;\n argsTextDelta: string;\n },\n };\n },\n};\n\nconst finishMessageStreamPart: DataStreamPart<\n 'd',\n 'finish_message',\n {\n finishReason: LanguageModelV1FinishReason;\n // TODO v5 remove usage from finish event (only on step-finish)\n usage?: {\n promptTokens: number;\n completionTokens: number;\n };\n }\n> = {\n code: 'd',\n name: 'finish_message',\n parse: (value: JSONValue) => {\n if (\n value == null ||\n typeof value !== 'object' ||\n !('finishReason' in value) ||\n typeof value.finishReason !== 'string'\n ) {\n throw new Error(\n '\"finish_message\" parts expect an object with a \"finishReason\" property.',\n );\n }\n\n const result: {\n finishReason: LanguageModelV1FinishReason;\n usage?: {\n promptTokens: number;\n completionTokens: number;\n };\n } = {\n finishReason: value.finishReason as LanguageModelV1FinishReason,\n };\n\n if (\n 'usage' in value &&\n value.usage != null &&\n typeof value.usage === 'object' &&\n 'promptTokens' in value.usage &&\n 'completionTokens' in value.usage\n ) {\n result.usage = {\n promptTokens:\n typeof value.usage.promptTokens === 'number'\n ? value.usage.promptTokens\n : Number.NaN,\n completionTokens:\n typeof value.usage.completionTokens === 'number'\n ? value.usage.completionTokens\n : Number.NaN,\n };\n }\n\n return {\n type: 'finish_message',\n value: result,\n };\n },\n};\n\nconst finishStepStreamPart: DataStreamPart<\n 'e',\n 'finish_step',\n {\n isContinued: boolean;\n finishReason: LanguageModelV1FinishReason;\n usage?: {\n promptTokens: number;\n completionTokens: number;\n };\n }\n> = {\n code: 'e',\n name: 'finish_step',\n parse: (value: JSONValue) => {\n if (\n value == null ||\n typeof value !== 'object' ||\n !('finishReason' in value) ||\n typeof value.finishReason !== 'string'\n ) {\n throw new Error(\n '\"finish_step\" parts expect an object with a \"finishReason\" property.',\n );\n }\n\n const result: {\n isContinued: boolean;\n finishReason: LanguageModelV1FinishReason;\n usage?: {\n promptTokens: number;\n completionTokens: number;\n };\n } = {\n finishReason: value.finishReason as LanguageModelV1FinishReason,\n isContinued: false,\n };\n\n if (\n 'usage' in value &&\n value.usage != null &&\n typeof value.usage === 'object' &&\n 'promptTokens' in value.usage &&\n 'completionTokens' in value.usage\n ) {\n result.usage = {\n promptTokens:\n typeof value.usage.promptTokens === 'number'\n ? value.usage.promptTokens\n : Number.NaN,\n completionTokens:\n typeof value.usage.completionTokens === 'number'\n ? value.usage.completionTokens\n : Number.NaN,\n };\n }\n\n if ('isContinued' in value && typeof value.isContinued === 'boolean') {\n result.isContinued = value.isContinued;\n }\n\n return {\n type: 'finish_step',\n value: result,\n };\n },\n};\n\nconst startStepStreamPart: DataStreamPart<\n 'f',\n 'start_step',\n {\n messageId: string;\n }\n> = {\n code: 'f',\n name: 'start_step',\n parse: (value: JSONValue) => {\n if (\n value == null ||\n typeof value !== 'object' ||\n !('messageId' in value) ||\n typeof value.messageId !== 'string'\n ) {\n throw new Error(\n '\"start_step\" parts expect an object with an \"id\" property.',\n );\n }\n\n return {\n type: 'start_step',\n value: {\n messageId: value.messageId,\n },\n };\n },\n};\n\nconst reasoningStreamPart: DataStreamPart<'g', 'reasoning', string> = {\n code: 'g',\n name: 'reasoning',\n parse: (value: JSONValue) => {\n if (typeof value !== 'string') {\n throw new Error('\"reasoning\" parts expect a string value.');\n }\n return { type: 'reasoning', value };\n },\n};\n\nconst sourcePart: DataStreamPart<'h', 'source', LanguageModelV1Source> = {\n code: 'h',\n name: 'source',\n parse: (value: JSONValue) => {\n if (value == null || typeof value !== 'object') {\n throw new Error('\"source\" parts expect a Source object.');\n }\n\n return {\n type: 'source',\n value: value as LanguageModelV1Source,\n };\n },\n};\n\nconst redactedReasoningStreamPart: DataStreamPart<\n 'i',\n 'redacted_reasoning',\n { data: string }\n> = {\n code: 'i',\n name: 'redacted_reasoning',\n parse: (value: JSONValue) => {\n if (\n value == null ||\n typeof value !== 'object' ||\n !('data' in value) ||\n typeof value.data !== 'string'\n ) {\n throw new Error(\n '\"redacted_reasoning\" parts expect an object with a \"data\" property.',\n );\n }\n return { type: 'redacted_reasoning', value: { data: value.data } };\n },\n};\n\nconst reasoningSignatureStreamPart: DataStreamPart<\n 'j',\n 'reasoning_signature',\n { signature: string }\n> = {\n code: 'j',\n name: 'reasoning_signature',\n parse: (value: JSONValue) => {\n if (\n value == null ||\n typeof value !== 'object' ||\n !('signature' in value) ||\n typeof value.signature !== 'string'\n ) {\n throw new Error(\n '\"reasoning_signature\" parts expect an object with a \"signature\" property.',\n );\n }\n return {\n type: 'reasoning_signature',\n value: { signature: value.signature },\n };\n },\n};\n\nconst fileStreamPart: DataStreamPart<\n 'k',\n 'file',\n {\n data: string; // base64 encoded data\n mimeType: string;\n }\n> = {\n code: 'k',\n name: 'file',\n parse: (value: JSONValue) => {\n if (\n value == null ||\n typeof value !== 'object' ||\n !('data' in value) ||\n typeof value.data !== 'string' ||\n !('mimeType' in value) ||\n typeof value.mimeType !== 'string'\n ) {\n throw new Error(\n '\"file\" parts expect an object with a \"data\" and \"mimeType\" property.',\n );\n }\n return { type: 'file', value: value as { data: string; mimeType: string } };\n },\n};\n\nconst dataStreamParts = [\n textStreamPart,\n dataStreamPart,\n errorStreamPart,\n messageAnnotationsStreamPart,\n toolCallStreamPart,\n toolResultStreamPart,\n toolCallStreamingStartStreamPart,\n toolCallDeltaStreamPart,\n finishMessageStreamPart,\n finishStepStreamPart,\n startStepStreamPart,\n reasoningStreamPart,\n sourcePart,\n redactedReasoningStreamPart,\n reasoningSignatureStreamPart,\n fileStreamPart,\n] as const;\n\nexport const dataStreamPartsByCode = Object.fromEntries(\n dataStreamParts.map(part => [part.code, part]),\n) as {\n [K in (typeof dataStreamParts)[number]['code']]: (typeof dataStreamParts)[number];\n};\n\ntype DataStreamParts = (typeof dataStreamParts)[number];\n\n/**\n * Maps the type of a stream part to its value type.\n */\ntype DataStreamPartValueType = {\n [P in DataStreamParts as P['name']]: ReturnType<P['parse']>['value'];\n};\n\nexport type DataStreamPartType = ReturnType<DataStreamParts['parse']>;\n\n/**\n * The map of prefixes for data in the stream\n *\n * - 0: Text from the LLM response\n * - 1: (OpenAI) function_call responses\n * - 2: custom JSON added by the user using `Data`\n * - 6: (OpenAI) tool_call responses\n *\n * Example:\n * ```\n * 0:Vercel\n * 0:'s\n * 0: AI\n * 0: AI\n * 0: SDK\n * 0: is great\n * 0:!\n * 2: { \"someJson\": \"value\" }\n * 1: {\"function_call\": {\"name\": \"get_current_weather\", \"arguments\": \"{\\\\n\\\\\"location\\\\\": \\\\\"Charlottesville, Virginia\\\\\",\\\\n\\\\\"format\\\\\": \\\\\"celsius\\\\\"\\\\n}\"}}\n * 6: {\"tool_call\": {\"id\": \"tool_0\", \"type\": \"function\", \"function\": {\"name\": \"get_current_weather\", \"arguments\": \"{\\\\n\\\\\"location\\\\\": \\\\\"Charlottesville, Virginia\\\\\",\\\\n\\\\\"format\\\\\": \\\\\"celsius\\\\\"\\\\n}\"}}}\n *```\n */\nexport const DataStreamStringPrefixes = Object.fromEntries(\n dataStreamParts.map(part => [part.name, part.code]),\n) as {\n [K in DataStreamParts['name']]: (typeof dataStreamParts)[number]['code'];\n};\n\nexport const validCodes = dataStreamParts.map(part => part.code);\n\n/**\nParses a stream part from a string.\n\n@param line The string to parse.\n@returns The parsed stream part.\n@throws An error if the string cannot be parsed.\n */\nexport const parseDataStreamPart = (line: string): DataStreamPartType => {\n const firstSeparatorIndex = line.indexOf(':');\n\n if (firstSeparatorIndex === -1) {\n throw new Error('Failed to parse stream string. No separator found.');\n }\n\n const prefix = line.slice(0, firstSeparatorIndex);\n\n if (!validCodes.includes(prefix as keyof typeof dataStreamPartsByCode)) {\n throw new Error(`Failed to parse stream string. Invalid code ${prefix}.`);\n }\n\n const code = prefix as keyof typeof dataStreamPartsByCode;\n\n const textValue = line.slice(firstSeparatorIndex + 1);\n const jsonValue: JSONValue = JSON.parse(textValue);\n\n return dataStreamPartsByCode[code].parse(jsonValue);\n};\n\n/**\nPrepends a string with a prefix from the `StreamChunkPrefixes`, JSON-ifies it,\nand appends a new line.\n\nIt ensures type-safety for the part type and value.\n */\nexport function formatDataStreamPart<T extends keyof DataStreamPartValueType>(\n type: T,\n value: DataStreamPartValueType[T],\n): DataStreamString {\n const streamPart = dataStreamParts.find(part => part.name === type);\n\n if (!streamPart) {\n throw new Error(`Invalid stream part type: ${type}`);\n }\n\n return `${streamPart.code}:${JSON.stringify(value)}\\n`;\n}\n","import { JSONSchema7 } from 'json-schema';\nimport { z } from 'zod';\nimport zodToJsonSchema from 'zod-to-json-schema';\nimport { jsonSchema, Schema } from './schema';\n\nexport function zodSchema<OBJECT>(\n zodSchema: z.Schema<OBJECT, z.ZodTypeDef, any>,\n options?: {\n /**\n * Enables support for references in the schema.\n * This is required for recursive schemas, e.g. with `z.lazy`.\n * However, not all language models and providers support such references.\n * Defaults to `false`.\n */\n useReferences?: boolean;\n },\n): Schema<OBJECT> {\n // default to no references (to support openapi conversion for google)\n const useReferences = options?.useReferences ?? false;\n\n return jsonSchema(\n zodToJsonSchema(zodSchema, {\n $refStrategy: useReferences ? 'root' : 'none',\n target: 'jsonSchema7', // note: openai mode breaks various gemini conversions\n }) as JSONSchema7,\n {\n validate: value => {\n const result = zodSchema.safeParse(value);\n return result.success\n ? { success: true, value: result.data }\n : { success: false, error: result.error };\n },\n },\n );\n}\n","import { Validator, validatorSymbol } from '@ai-sdk/provider-utils';\nimport { JSONSchema7 } from 'json-schema';\nimport { z } from 'zod';\nimport { zodSchema } from './zod-schema';\n\n/**\n * Used to mark schemas so we can support both Zod and custom schemas.\n */\nconst schemaSymbol = Symbol.for('vercel.ai.schema');\n\nexport type Schema<OBJECT = unknown> = Validator<OBJECT> & {\n /**\n * Used to mark schemas so we can support both Zod and custom schemas.\n */\n [schemaSymbol]: true;\n\n /**\n * Schema type for inference.\n */\n _type: OBJECT;\n\n /**\n * The JSON Schema for the schema. It is passed to the providers.\n */\n readonly jsonSchema: JSONSchema7;\n};\n\n/**\n * Create a schema using a JSON Schema.\n *\n * @param jsonSchema The JSON Schema for the schema.\n * @param options.validate Optional. A validation function for the schema.\n */\nexport function jsonSchema<OBJECT = unknown>(\n jsonSchema: JSONSchema7,\n {\n validate,\n }: {\n validate?: (\n value: unknown,\n ) => { success: true; value: OBJECT } | { success: false; error: Error };\n } = {},\n): Schema<OBJECT> {\n return {\n [schemaSymbol]: true,\n _type: undefined as OBJECT, // should never be used directly\n [validatorSymbol]: true,\n jsonSchema,\n validate,\n };\n}\n\nfunction isSchema(value: unknown): value is Schema {\n return (\n typeof value === 'object' &&\n value !== null &&\n schemaSymbol in value &&\n value[schemaSymbol] === true &&\n 'jsonSchema' in value &&\n 'validate' in value\n );\n}\n\nexport function asSchema<OBJECT>(\n schema: z.Schema<OBJECT, z.ZodTypeDef, any> | Schema<OBJECT>,\n): Schema<OBJECT> {\n return isSchema(schema) ? schema : zodSchema(schema);\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line node/no-unsupported-features/es-builtins\nexport const _globalThis = typeof globalThis === 'object' ? globalThis : global;\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '1.9.0';\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { VERSION } from '../version';\n\nconst re = /^(\\d+)\\.(\\d+)\\.(\\d+)(-(.+))?$/;\n\n/**\n * Create a function to test an API version to see if it is compatible with the provided ownVersion.\n *\n * The returned function has the following semantics:\n * - Exact match is always compatible\n * - Major versions must match exactly\n * - 1.x package cannot use global 2.x package\n * - 2.x package cannot use global 1.x package\n * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n * - Patch and build tag differences are not considered at this time\n *\n * @param ownVersion version which should be checked against\n */\nexport function _makeCompatibilityCheck(\n ownVersion: string\n): (globalVersion: string) => boolean {\n const acceptedVersions = new Set<string>([ownVersion]);\n const rejectedVersions = new Set<string>();\n\n const myVersionMatch = ownVersion.match(re);\n if (!myVersionMatch) {\n // we cannot guarantee compatibility so we always return noop\n return () => false;\n }\n\n const ownVersionParsed = {\n major: +myVersionMatch[1],\n minor: +myVersionMatch[2],\n patch: +myVersionMatch[3],\n prerelease: myVersionMatch[4],\n };\n\n // if ownVersion has a prerelease tag, versions must match exactly\n if (ownVersionParsed.prerelease != null) {\n return function isExactmatch(globalVersion: string): boolean {\n return globalVersion === ownVersion;\n };\n }\n\n function _reject(v: string) {\n rejectedVersions.add(v);\n return false;\n }\n\n function _accept(v: string) {\n acceptedVersions.add(v);\n return true;\n }\n\n return function isCompatible(globalVersion: string): boolean {\n if (acceptedVersions.has(globalVersion)) {\n return true;\n }\n\n if (rejectedVersions.has(globalVersion)) {\n return false;\n }\n\n const globalVersionMatch = globalVersion.match(re);\n if (!globalVersionMatch) {\n // cannot parse other version\n // we cannot guarantee compatibility so we always noop\n return _reject(globalVersion);\n }\n\n const globalVersionParsed = {\n major: +globalVersionMatch[1],\n minor: +globalVersionMatch[2],\n patch: +globalVersionMatch[3],\n prerelease: globalVersionMatch[4],\n };\n\n // if globalVersion has a prerelease tag, versions must match exactly\n if (globalVersionParsed.prerelease != null) {\n return _reject(globalVersion);\n }\n\n // major versions must match\n if (ownVersionParsed.major !== globalVersionParsed.major) {\n return _reject(globalVersion);\n }\n\n if (ownVersionParsed.major === 0) {\n if (\n ownVersionParsed.minor === globalVersionParsed.minor &&\n ownVersionParsed.patch <= globalVersionParsed.patch\n ) {\n return _accept(globalVersion);\n }\n\n return _reject(globalVersion);\n }\n\n if (ownVersionParsed.minor <= globalVersionParsed.minor) {\n return _accept(globalVersion);\n }\n\n return _reject(globalVersion);\n };\n}\n\n/**\n * Test an API version to see if it is compatible with this API.\n *\n * - Exact match is always compatible\n * - Major versions must match exactly\n * - 1.x package cannot use global 2.x package\n * - 2.x package cannot use global 1.x package\n * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n * - Patch and build tag differences are not considered at this time\n *\n * @param version version of the API requesting an instance of the global API\n */\nexport const isCompatible = _makeCompatibilityCheck(VERSION);\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { MeterProvider } from '../metrics/MeterProvider';\nimport { ContextManager } from '../context/types';\nimport { DiagLogger } from '../diag/types';\nimport { _globalThis } from '../platform';\nimport { TextMapPropagator } from '../propagation/TextMapPropagator';\nimport type { TracerProvider } from '../trace/tracer_provider';\nimport { VERSION } from '../version';\nimport { isCompatible } from './semver';\n\nconst major = VERSION.split('.')[0];\nconst GLOBAL_OPENTELEMETRY_API_KEY = Symbol.for(\n `opentelemetry.js.api.${major}`\n);\n\nconst _global = _globalThis as OTelGlobal;\n\nexport function registerGlobal<Type extends keyof OTelGlobalAPI>(\n type: Type,\n instance: OTelGlobalAPI[Type],\n diag: DiagLogger,\n allowOverride = false\n): boolean {\n const api = (_global[GLOBAL_OPENTELEMETRY_API_KEY] = _global[\n GLOBAL_OPENTELEMETRY_API_KEY\n ] ?? {\n version: VERSION,\n });\n\n if (!allowOverride && api[type]) {\n // already registered an API of this type\n const err = new Error(\n `@opentelemetry/api: Attempted duplicate registration of API: ${type}`\n );\n diag.error(err.stack || err.message);\n return false;\n }\n\n if (api.version !== VERSION) {\n // All registered APIs must be of the same version exactly\n const err = new Error(\n `@opentelemetry/api: Registration of version v${api.version} for ${type} does not match previously registered API v${VERSION}`\n );\n diag.error(err.stack || err.message);\n return false;\n }\n\n api[type] = instance;\n diag.debug(\n `@opentelemetry/api: Registered a global for ${type} v${VERSION}.`\n );\n\n return true;\n}\n\nexport function getGlobal<Type extends keyof OTelGlobalAPI>(\n type: Type\n): OTelGlobalAPI[Type] | undefined {\n const globalVersion = _global[GLOBAL_OPENTELEMETRY_API_KEY]?.version;\n if (!globalVersion || !isCompatible(globalVersion)) {\n return;\n }\n return _global[GLOBAL_OPENTELEMETRY_API_KEY]?.[type];\n}\n\nexport function unregisterGlobal(type: keyof OTelGlobalAPI, diag: DiagLogger) {\n diag.debug(\n `@opentelemetry/api: Unregistering a global for ${type} v${VERSION}.`\n );\n const api = _global[GLOBAL_OPENTELEMETRY_API_KEY];\n\n if (api) {\n delete api[type];\n }\n}\n\ntype OTelGlobal = {\n [GLOBAL_OPENTELEMETRY_API_KEY]?: OTelGlobalAPI;\n};\n\ntype OTelGlobalAPI = {\n version: string;\n\n diag?: DiagLogger;\n trace?: TracerProvider;\n context?: ContextManager;\n metrics?: MeterProvider;\n propagation?: TextMapPropagator;\n};\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getGlobal } from '../internal/global-utils';\nimport { ComponentLoggerOptions, DiagLogger, DiagLogFunction } from './types';\n\n/**\n * Component Logger which is meant to be used as part of any component which\n * will add automatically additional namespace in front of the log message.\n * It will then forward all message to global diag logger\n * @example\n * const cLogger = diag.createComponentLogger({ namespace: '@opentelemetry/instrumentation-http' });\n * cLogger.debug('test');\n * // @opentelemetry/instrumentation-http test\n */\nexport class DiagComponentLogger implements DiagLogger {\n private _namespace: string;\n\n constructor(props: ComponentLoggerOptions) {\n this._namespace = props.namespace || 'DiagComponentLogger';\n }\n\n public debug(...args: any[]): void {\n return logProxy('debug', this._namespace, args);\n }\n\n public error(...args: any[]): void {\n return logProxy('error', this._namespace, args);\n }\n\n public info(...args: any[]): void {\n return logProxy('info', this._namespace, args);\n }\n\n public warn(...args: any[]): void {\n return logProxy('warn', this._namespace, args);\n }\n\n public verbose(...args: any[]): void {\n return logProxy('verbose', this._namespace, args);\n }\n}\n\nfunction logProxy(\n funcName: keyof DiagLogger,\n namespace: string,\n args: any\n): void {\n const logger = getGlobal('diag');\n // shortcut if logger not set\n if (!logger) {\n return;\n }\n\n args.unshift(namespace);\n return logger[funcName](...(args as Parameters<DiagLogFunction>));\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport type DiagLogFunction = (message: string, ...args: unknown[]) => void;\n\n/**\n * Defines an internal diagnostic logger interface which is used to log internal diagnostic\n * messages, you can set the default diagnostic logger via the {@link DiagAPI} setLogger function.\n * API provided implementations include :-\n * - a No-Op {@link createNoopDiagLogger}\n * - a {@link DiagLogLevel} filtering wrapper {@link createLogLevelDiagLogger}\n * - a general Console {@link DiagConsoleLogger} version.\n */\nexport interface DiagLogger {\n /** Log an error scenario that was not expected and caused the requested operation to fail. */\n error: DiagLogFunction;\n\n /**\n * Log a warning scenario to inform the developer of an issues that should be investigated.\n * The requested operation may or may not have succeeded or completed.\n */\n warn: DiagLogFunction;\n\n /**\n * Log a general informational message, this should not affect functionality.\n * This is also the default logging level so this should NOT be used for logging\n * debugging level information.\n */\n info: DiagLogFunction;\n\n /**\n * Log a general debug message that can be useful for identifying a failure.\n * Information logged at this level may include diagnostic details that would\n * help identify a failure scenario.\n * For example: Logging the order of execution of async operations.\n */\n debug: DiagLogFunction;\n\n /**\n * Log a detailed (verbose) trace level logging that can be used to identify failures\n * where debug level logging would be insufficient, this level of tracing can include\n * input and output parameters and as such may include PII information passing through\n * the API. As such it is recommended that this level of tracing should not be enabled\n * in a production environment.\n */\n verbose: DiagLogFunction;\n}\n\n/**\n * Defines the available internal logging levels for the diagnostic logger, the numeric values\n * of the levels are defined to match the original values from the initial LogLevel to avoid\n * compatibility/migration issues for any implementation that assume the numeric ordering.\n */\nexport enum DiagLogLevel {\n /** Diagnostic Logging level setting to disable all logging (except and forced logs) */\n NONE = 0,\n\n /** Identifies an error scenario */\n ERROR = 30,\n\n /** Identifies a warning scenario */\n WARN = 50,\n\n /** General informational log message */\n INFO = 60,\n\n /** General debug log message */\n DEBUG = 70,\n\n /**\n * Detailed trace level logging should only be used for development, should only be set\n * in a development environment.\n */\n VERBOSE = 80,\n\n /** Used to set the logging level to include all logging */\n ALL = 9999,\n}\n\n/**\n * Defines options for ComponentLogger\n */\nexport interface ComponentLoggerOptions {\n namespace: string;\n}\n\nexport interface DiagLoggerOptions {\n /**\n * The {@link DiagLogLevel} used to filter logs sent to the logger.\n *\n * @defaultValue DiagLogLevel.INFO\n */\n logLevel?: DiagLogLevel;\n\n /**\n * Setting this value to `true` will suppress the warning message normally emitted when registering a logger when another logger is already registered.\n */\n suppressOverrideMessage?: boolean;\n}\n\nexport interface DiagLoggerApi {\n /**\n * Set the global DiagLogger and DiagLogLevel.\n * If a global diag logger is already set, this will override it.\n *\n * @param logger - The {@link DiagLogger} instance to set as the default logger.\n * @param options - A {@link DiagLoggerOptions} object. If not provided, default values will be set.\n * @returns `true` if the logger was successfully registered, else `false`\n */\n setLogger(logger: DiagLogger, options?: DiagLoggerOptions): boolean;\n\n /**\n *\n * @param logger - The {@link DiagLogger} instance to set as the default logger.\n * @param logLevel - The {@link DiagLogLevel} used to filter logs sent to the logger. If not provided it will default to {@link DiagLogLevel.INFO}.\n * @returns `true` if the logger was successfully registered, else `false`\n */\n setLogger(logger: DiagLogger, logLevel?: DiagLogLevel): boolean;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DiagLogFunction, DiagLogger, DiagLogLevel } from '../types';\n\nexport function createLogLevelDiagLogger(\n maxLevel: DiagLogLevel,\n logger: DiagLogger\n): DiagLogger {\n if (maxLevel < DiagLogLevel.NONE) {\n maxLevel = DiagLogLevel.NONE;\n } else if (maxLevel > DiagLogLevel.ALL) {\n maxLevel = DiagLogLevel.ALL;\n }\n\n // In case the logger is null or undefined\n logger = logger || {};\n\n function _filterFunc(\n funcName: keyof DiagLogger,\n theLevel: DiagLogLevel\n ): DiagLogFunction {\n const theFunc = logger[funcName];\n\n if (typeof theFunc === 'function' && maxLevel >= theLevel) {\n return theFunc.bind(logger);\n }\n return function () {};\n }\n\n return {\n error: _filterFunc('error', DiagLogLevel.ERROR),\n warn: _filterFunc('warn', DiagLogLevel.WARN),\n info: _filterFunc('info', DiagLogLevel.INFO),\n debug: _filterFunc('debug', DiagLogLevel.DEBUG),\n verbose: _filterFunc('verbose', DiagLogLevel.VERBOSE),\n };\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DiagComponentLogger } from '../diag/ComponentLogger';\nimport { createLogLevelDiagLogger } from '../diag/internal/logLevelLogger';\nimport {\n ComponentLoggerOptions,\n DiagLogFunction,\n DiagLogger,\n DiagLoggerApi,\n DiagLogLevel,\n} from '../diag/types';\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\n\nconst API_NAME = 'diag';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry internal\n * diagnostic API\n */\nexport class DiagAPI implements DiagLogger, DiagLoggerApi {\n private static _instance?: DiagAPI;\n\n /** Get the singleton instance of the DiagAPI API */\n public static instance(): DiagAPI {\n if (!this._instance) {\n this._instance = new DiagAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Private internal constructor\n * @private\n */\n private constructor() {\n function _logProxy(funcName: keyof DiagLogger): DiagLogFunction {\n return function (...args) {\n const logger = getGlobal('diag');\n // shortcut if logger not set\n if (!logger) return;\n return logger[funcName](...args);\n };\n }\n\n // Using self local variable for minification purposes as 'this' cannot be minified\n const self = this;\n\n // DiagAPI specific functions\n\n const setLogger: DiagLoggerApi['setLogger'] = (\n logger,\n optionsOrLogLevel = { logLevel: DiagLogLevel.INFO }\n ) => {\n if (logger === self) {\n // There isn't much we can do here.\n // Logging to the console might break the user application.\n // Try to log to self. If a logger was previously registered it will receive the log.\n const err = new Error(\n 'Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation'\n );\n self.error(err.stack ?? err.message);\n return false;\n }\n\n if (typeof optionsOrLogLevel === 'number') {\n optionsOrLogLevel = {\n logLevel: optionsOrLogLevel,\n };\n }\n\n const oldLogger = getGlobal('diag');\n const newLogger = createLogLevelDiagLogger(\n optionsOrLogLevel.logLevel ?? DiagLogLevel.INFO,\n logger\n );\n // There already is an logger registered. We'll let it know before overwriting it.\n if (oldLogger && !optionsOrLogLevel.suppressOverrideMessage) {\n const stack = new Error().stack ?? '<failed to generate stacktrace>';\n oldLogger.warn(`Current logger will be overwritten from ${stack}`);\n newLogger.warn(\n `Current logger will overwrite one already registered from ${stack}`\n );\n }\n\n return registerGlobal('diag', newLogger, self, true);\n };\n\n self.setLogger = setLogger;\n\n self.disable = () => {\n unregisterGlobal(API_NAME, self);\n };\n\n self.createComponentLogger = (options: ComponentLoggerOptions) => {\n return new DiagComponentLogger(options);\n };\n\n self.verbose = _logProxy('verbose');\n self.debug = _logProxy('debug');\n self.info = _logProxy('info');\n self.warn = _logProxy('warn');\n self.error = _logProxy('error');\n }\n\n public setLogger!: DiagLoggerApi['setLogger'];\n /**\n *\n */\n public createComponentLogger!: (\n options: ComponentLoggerOptions\n ) => DiagLogger;\n\n // DiagLogger implementation\n public verbose!: DiagLogFunction;\n public debug!: DiagLogFunction;\n public info!: DiagLogFunction;\n public warn!: DiagLogFunction;\n public error!: DiagLogFunction;\n\n /**\n * Unregister the global logger and return to Noop\n */\n public disable!: () => void;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Context } from './types';\n\n/** Get a key to uniquely identify a context value */\nexport function createContextKey(description: string) {\n // The specification states that for the same input, multiple calls should\n // return different keys. Due to the nature of the JS dependency management\n // system, this creates problems where multiple versions of some package\n // could hold different keys for the same property.\n //\n // Therefore, we use Symbol.for which returns the same key for the same input.\n return Symbol.for(description);\n}\n\nclass BaseContext implements Context {\n private _currentContext!: Map<symbol, unknown>;\n\n /**\n * Construct a new context which inherits values from an optional parent context.\n *\n * @param parentContext a context from which to inherit values\n */\n constructor(parentContext?: Map<symbol, unknown>) {\n // for minification\n const self = this;\n\n self._currentContext = parentContext ? new Map(parentContext) : new Map();\n\n self.getValue = (key: symbol) => self._currentContext.get(key);\n\n self.setValue = (key: symbol, value: unknown): Context => {\n const context = new BaseContext(self._currentContext);\n context._currentContext.set(key, value);\n return context;\n };\n\n self.deleteValue = (key: symbol): Context => {\n const context = new BaseContext(self._currentContext);\n context._currentContext.delete(key);\n return context;\n };\n }\n\n /**\n * Get a value from the context.\n *\n * @param key key which identifies a context value\n */\n public getValue!: (key: symbol) => unknown;\n\n /**\n * Create a new context which inherits from this context and has\n * the given key set to the given value.\n *\n * @param key context key for which to set the value\n * @param value value to set for the given key\n */\n public setValue!: (key: symbol, value: unknown) => Context;\n\n /**\n * Return a new context which inherits from this context but does\n * not contain a value for the given key.\n *\n * @param key context key for which to clear a value\n */\n public deleteValue!: (key: symbol) => Context;\n}\n\n/** The root context is used as the default parent context when there is no active context */\nexport const ROOT_CONTEXT: Context = new BaseContext();\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ROOT_CONTEXT } from './context';\nimport * as types from './types';\n\nexport class NoopContextManager implements types.ContextManager {\n active(): types.Context {\n return ROOT_CONTEXT;\n }\n\n with<A extends unknown[], F extends (...args: A) => ReturnType<F>>(\n _context: types.Context,\n fn: F,\n thisArg?: ThisParameterType<F>,\n ...args: A\n ): ReturnType<F> {\n return fn.call(thisArg, ...args);\n }\n\n bind<T>(_context: types.Context, target: T): T {\n return target;\n }\n\n enable(): this {\n return this;\n }\n\n disable(): this {\n return this;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NoopContextManager } from '../context/NoopContextManager';\nimport { Context, ContextManager } from '../context/types';\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'context';\nconst NOOP_CONTEXT_MANAGER = new NoopContextManager();\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Context API\n */\nexport class ContextAPI {\n private static _instance?: ContextAPI;\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Context API */\n public static getInstance(): ContextAPI {\n if (!this._instance) {\n this._instance = new ContextAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Set the current context manager.\n *\n * @returns true if the context manager was successfully registered, else false\n */\n public setGlobalContextManager(contextManager: ContextManager): boolean {\n return registerGlobal(API_NAME, contextManager, DiagAPI.instance());\n }\n\n /**\n * Get the currently active context\n */\n public active(): Context {\n return this._getContextManager().active();\n }\n\n /**\n * Execute a function with an active context\n *\n * @param context context to be active during function execution\n * @param fn function to execute in a context\n * @param thisArg optional receiver to be used for calling fn\n * @param args optional arguments forwarded to fn\n */\n public with<A extends unknown[], F extends (...args: A) => ReturnType<F>>(\n context: Context,\n fn: F,\n thisArg?: ThisParameterType<F>,\n ...args: A\n ): ReturnType<F> {\n return this._getContextManager().with(context, fn, thisArg, ...args);\n }\n\n /**\n * Bind a context to a target function or event emitter\n *\n * @param context context to bind to the event emitter or function. Defaults to the currently active context\n * @param target function or event emitter to bind\n */\n public bind<T>(context: Context, target: T): T {\n return this._getContextManager().bind(context, target);\n }\n\n private _getContextManager(): ContextManager {\n return getGlobal(API_NAME) || NOOP_CONTEXT_MANAGER;\n }\n\n /** Disable and remove the global context manager */\n public disable() {\n this._getContextManager().disable();\n unregisterGlobal(API_NAME, DiagAPI.instance());\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport enum TraceFlags {\n /** Represents no flag set. */\n NONE = 0x0,\n /** Bit to represent whether trace is sampled in trace flags. */\n SAMPLED = 0x1 << 0,\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SpanContext } from './span_context';\nimport { TraceFlags } from './trace_flags';\n\nexport const INVALID_SPANID = '0000000000000000';\nexport const INVALID_TRACEID = '00000000000000000000000000000000';\nexport const INVALID_SPAN_CONTEXT: SpanContext = {\n traceId: INVALID_TRACEID,\n spanId: INVALID_SPANID,\n traceFlags: TraceFlags.NONE,\n};\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Exception } from '../common/Exception';\nimport { TimeInput } from '../common/Time';\nimport { SpanAttributes } from './attributes';\nimport { INVALID_SPAN_CONTEXT } from './invalid-span-constants';\nimport { Span } from './span';\nimport { SpanContext } from './span_context';\nimport { SpanStatus } from './status';\nimport { Link } from './link';\n\n/**\n * The NonRecordingSpan is the default {@link Span} that is used when no Span\n * implementation is available. All operations are no-op including context\n * propagation.\n */\nexport class NonRecordingSpan implements Span {\n constructor(\n private readonly _spanContext: SpanContext = INVALID_SPAN_CONTEXT\n ) {}\n\n // Returns a SpanContext.\n spanContext(): SpanContext {\n return this._spanContext;\n }\n\n // By default does nothing\n setAttribute(_key: string, _value: unknown): this {\n return this;\n }\n\n // By default does nothing\n setAttributes(_attributes: SpanAttributes): this {\n return this;\n }\n\n // By default does nothing\n addEvent(_name: string, _attributes?: SpanAttributes): this {\n return this;\n }\n\n addLink(_link: Link): this {\n return this;\n }\n\n addLinks(_links: Link[]): this {\n return this;\n }\n\n // By default does nothing\n setStatus(_status: SpanStatus): this {\n return this;\n }\n\n // By default does nothing\n updateName(_name: string): this {\n return this;\n }\n\n // By default does nothing\n end(_endTime?: TimeInput): void {}\n\n // isRecording always returns false for NonRecordingSpan.\n isRecording(): boolean {\n return false;\n }\n\n // By default does nothing\n recordException(_exception: Exception, _time?: TimeInput): void {}\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createContextKey } from '../context/context';\nimport { Context } from '../context/types';\nimport { Span } from './span';\nimport { SpanContext } from './span_context';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { ContextAPI } from '../api/context';\n\n/**\n * span key\n */\nconst SPAN_KEY = createContextKey('OpenTelemetry Context Key SPAN');\n\n/**\n * Return the span if one exists\n *\n * @param context context to get span from\n */\nexport function getSpan(context: Context): Span | undefined {\n return (context.getValue(SPAN_KEY) as Span) || undefined;\n}\n\n/**\n * Gets the span from the current context, if one exists.\n */\nexport function getActiveSpan(): Span | undefined {\n return getSpan(ContextAPI.getInstance().active());\n}\n\n/**\n * Set the span on a context\n *\n * @param context context to use as parent\n * @param span span to set active\n */\nexport function setSpan(context: Context, span: Span): Context {\n return context.setValue(SPAN_KEY, span);\n}\n\n/**\n * Remove current span stored in the context\n *\n * @param context context to delete span from\n */\nexport function deleteSpan(context: Context): Context {\n return context.deleteValue(SPAN_KEY);\n}\n\n/**\n * Wrap span context in a NoopSpan and set as span in a new\n * context\n *\n * @param context context to set active span on\n * @param spanContext span context to be wrapped\n */\nexport function setSpanContext(\n context: Context,\n spanContext: SpanContext\n): Context {\n return setSpan(context, new NonRecordingSpan(spanContext));\n}\n\n/**\n * Get the span context of the span if it exists.\n *\n * @param context context to get values from\n */\nexport function getSpanContext(context: Context): SpanContext | undefined {\n return getSpan(context)?.spanContext();\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { INVALID_SPANID, INVALID_TRACEID } from './invalid-span-constants';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { Span } from './span';\nimport { SpanContext } from './span_context';\n\nconst VALID_TRACEID_REGEX = /^([0-9a-f]{32})$/i;\nconst VALID_SPANID_REGEX = /^[0-9a-f]{16}$/i;\n\nexport function isValidTraceId(traceId: string): boolean {\n return VALID_TRACEID_REGEX.test(traceId) && traceId !== INVALID_TRACEID;\n}\n\nexport function isValidSpanId(spanId: string): boolean {\n return VALID_SPANID_REGEX.test(spanId) && spanId !== INVALID_SPANID;\n}\n\n/**\n * Returns true if this {@link SpanContext} is valid.\n * @return true if this {@link SpanContext} is valid.\n */\nexport function isSpanContextValid(spanContext: SpanContext): boolean {\n return (\n isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId)\n );\n}\n\n/**\n * Wrap the given {@link SpanContext} in a new non-recording {@link Span}\n *\n * @param spanContext span context to be wrapped\n * @returns a new non-recording {@link Span} with the provided context\n */\nexport function wrapSpanContext(spanContext: SpanContext): Span {\n return new NonRecordingSpan(spanContext);\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ContextAPI } from '../api/context';\nimport { Context } from '../context/types';\nimport { getSpanContext, setSpan } from '../trace/context-utils';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { Span } from './span';\nimport { isSpanContextValid } from './spancontext-utils';\nimport { SpanOptions } from './SpanOptions';\nimport { SpanContext } from './span_context';\nimport { Tracer } from './tracer';\n\nconst contextApi = ContextAPI.getInstance();\n\n/**\n * No-op implementations of {@link Tracer}.\n */\nexport class NoopTracer implements Tracer {\n // startSpan starts a noop span.\n startSpan(\n name: string,\n options?: SpanOptions,\n context = contextApi.active()\n ): Span {\n const root = Boolean(options?.root);\n if (root) {\n return new NonRecordingSpan();\n }\n\n const parentFromContext = context && getSpanContext(context);\n\n if (\n isSpanContext(parentFromContext) &&\n isSpanContextValid(parentFromContext)\n ) {\n return new NonRecordingSpan(parentFromContext);\n } else {\n return new NonRecordingSpan();\n }\n }\n\n startActiveSpan<F extends (span: Span) => ReturnType<F>>(\n name: string,\n fn: F\n ): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => ReturnType<F>>(\n name: string,\n opts: SpanOptions | undefined,\n fn: F\n ): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => ReturnType<F>>(\n name: string,\n opts: SpanOptions | undefined,\n ctx: Context | undefined,\n fn: F\n ): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => ReturnType<F>>(\n name: string,\n arg2?: F | SpanOptions,\n arg3?: F | Context,\n arg4?: F\n ): ReturnType<F> | undefined {\n let opts: SpanOptions | undefined;\n let ctx: Context | undefined;\n let fn: F;\n\n if (arguments.length < 2) {\n return;\n } else if (arguments.length === 2) {\n fn = arg2 as F;\n } else if (arguments.length === 3) {\n opts = arg2 as SpanOptions | undefined;\n fn = arg3 as F;\n } else {\n opts = arg2 as SpanOptions | undefined;\n ctx = arg3 as Context | undefined;\n fn = arg4 as F;\n }\n\n const parentContext = ctx ?? contextApi.active();\n const span = this.startSpan(name, opts, parentContext);\n const contextWithSpanSet = setSpan(parentContext, span);\n\n return contextApi.with(contextWithSpanSet, fn, undefined, span);\n }\n}\n\nfunction isSpanContext(spanContext: any): spanContext is SpanContext {\n return (\n typeof spanContext === 'object' &&\n typeof spanContext['spanId'] === 'string' &&\n typeof spanContext['traceId'] === 'string' &&\n typeof spanContext['traceFlags'] === 'number'\n );\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Context } from '../context/types';\nimport { NoopTracer } from './NoopTracer';\nimport { Span } from './span';\nimport { SpanOptions } from './SpanOptions';\nimport { Tracer } from './tracer';\nimport { TracerOptions } from './tracer_options';\n\nconst NOOP_TRACER = new NoopTracer();\n\n/**\n * Proxy tracer provided by the proxy tracer provider\n */\nexport class ProxyTracer implements Tracer {\n // When a real implementation is provided, this will be it\n private _delegate?: Tracer;\n\n constructor(\n private _provider: TracerDelegator,\n public readonly name: string,\n public readonly version?: string,\n public readonly options?: TracerOptions\n ) {}\n\n startSpan(name: string, options?: SpanOptions, context?: Context): Span {\n return this._getTracer().startSpan(name, options, context);\n }\n\n startActiveSpan<F extends (span: Span) => unknown>(\n _name: string,\n _options: F | SpanOptions,\n _context?: F | Context,\n _fn?: F\n ): ReturnType<F> {\n const tracer = this._getTracer();\n return Reflect.apply(tracer.startActiveSpan, tracer, arguments);\n }\n\n /**\n * Try to get a tracer from the proxy tracer provider.\n * If the proxy tracer provider has no delegate, return a noop tracer.\n */\n private _getTracer() {\n if (this._delegate) {\n return this._delegate;\n }\n\n const tracer = this._provider.getDelegateTracer(\n this.name,\n this.version,\n this.options\n );\n\n if (!tracer) {\n return NOOP_TRACER;\n }\n\n this._delegate = tracer;\n return this._delegate;\n }\n}\n\nexport interface TracerDelegator {\n getDelegateTracer(\n name: string,\n version?: string,\n options?: TracerOptions\n ): Tracer | undefined;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NoopTracer } from './NoopTracer';\nimport { Tracer } from './tracer';\nimport { TracerOptions } from './tracer_options';\nimport { TracerProvider } from './tracer_provider';\n\n/**\n * An implementation of the {@link TracerProvider} which returns an impotent\n * Tracer for all calls to `getTracer`.\n *\n * All operations are no-op.\n */\nexport class NoopTracerProvider implements TracerProvider {\n getTracer(\n _name?: string,\n _version?: string,\n _options?: TracerOptions\n ): Tracer {\n return new NoopTracer();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Tracer } from './tracer';\nimport { TracerProvider } from './tracer_provider';\nimport { ProxyTracer } from './ProxyTracer';\nimport { NoopTracerProvider } from './NoopTracerProvider';\nimport { TracerOptions } from './tracer_options';\n\nconst NOOP_TRACER_PROVIDER = new NoopTracerProvider();\n\n/**\n * Tracer provider which provides {@link ProxyTracer}s.\n *\n * Before a delegate is set, tracers provided are NoOp.\n * When a delegate is set, traces are provided from the delegate.\n * When a delegate is set after tracers have already been provided,\n * all tracers already provided will use the provided delegate implementation.\n */\nexport class ProxyTracerProvider implements TracerProvider {\n private _delegate?: TracerProvider;\n\n /**\n * Get a {@link ProxyTracer}\n */\n getTracer(name: string, version?: string, options?: TracerOptions): Tracer {\n return (\n this.getDelegateTracer(name, version, options) ??\n new ProxyTracer(this, name, version, options)\n );\n }\n\n getDelegate(): TracerProvider {\n return this._delegate ?? NOOP_TRACER_PROVIDER;\n }\n\n /**\n * Set the delegate tracer provider\n */\n setDelegate(delegate: TracerProvider) {\n this._delegate = delegate;\n }\n\n getDelegateTracer(\n name: string,\n version?: string,\n options?: TracerOptions\n ): Tracer | undefined {\n return this._delegate?.getTracer(name, version, options);\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport interface SpanStatus {\n /** The status code of this message. */\n code: SpanStatusCode;\n /** A developer-facing error message. */\n message?: string;\n}\n\n/**\n * An enumeration of status codes.\n */\nexport enum SpanStatusCode {\n /**\n * The default status.\n */\n UNSET = 0,\n /**\n * The operation has been validated by an Application developer or\n * Operator to have completed successfully.\n */\n OK = 1,\n /**\n * The operation contains an error.\n */\n ERROR = 2,\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport { ProxyTracerProvider } from '../trace/ProxyTracerProvider';\nimport {\n isSpanContextValid,\n wrapSpanContext,\n} from '../trace/spancontext-utils';\nimport { Tracer } from '../trace/tracer';\nimport { TracerProvider } from '../trace/tracer_provider';\nimport {\n deleteSpan,\n getActiveSpan,\n getSpan,\n getSpanContext,\n setSpan,\n setSpanContext,\n} from '../trace/context-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'trace';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Tracing API\n */\nexport class TraceAPI {\n private static _instance?: TraceAPI;\n\n private _proxyTracerProvider = new ProxyTracerProvider();\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Trace API */\n public static getInstance(): TraceAPI {\n if (!this._instance) {\n this._instance = new TraceAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Set the current global tracer.\n *\n * @returns true if the tracer provider was successfully registered, else false\n */\n public setGlobalTracerProvider(provider: TracerProvider): boolean {\n const success = registerGlobal(\n API_NAME,\n this._proxyTracerProvider,\n DiagAPI.instance()\n );\n if (success) {\n this._proxyTracerProvider.setDelegate(provider);\n }\n return success;\n }\n\n /**\n * Returns the global tracer provider.\n */\n public getTracerProvider(): TracerProvider {\n return getGlobal(API_NAME) || this._proxyTracerProvider;\n }\n\n /**\n * Returns a tracer from the global tracer provider.\n */\n public getTracer(name: string, version?: string): Tracer {\n return this.getTracerProvider().getTracer(name, version);\n }\n\n /** Remove the global tracer provider */\n public disable() {\n unregisterGlobal(API_NAME, DiagAPI.instance());\n this._proxyTracerProvider = new ProxyTracerProvider();\n }\n\n public wrapSpanContext = wrapSpanContext;\n\n public isSpanContextValid = isSpanContextValid;\n\n public deleteSpan = deleteSpan;\n\n public getSpan = getSpan;\n\n public getActiveSpan = getActiveSpan;\n\n public getSpanContext = getSpanContext;\n\n public setSpan = setSpan;\n\n public setSpanContext = setSpanContext;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { TraceAPI } from './api/trace';\n/** Entrypoint for trace API */\nexport const trace = TraceAPI.getInstance();\n","export function prepareResponseHeaders(\n headers: HeadersInit | undefined,\n {\n contentType,\n dataStreamVersion,\n }: { contentType: string; dataStreamVersion?: 'v1' | undefined },\n) {\n const responseHeaders = new Headers(headers ?? {});\n\n if (!responseHeaders.has('Content-Type')) {\n responseHeaders.set('Content-Type', contentType);\n }\n\n if (dataStreamVersion !== undefined) {\n responseHeaders.set('X-Vercel-AI-Data-Stream', dataStreamVersion);\n }\n\n return responseHeaders;\n}\n","import { AISDKError } from '@ai-sdk/provider';\nimport { LanguageModelResponseMetadata } from '../core/types/language-model-response-metadata';\nimport { LanguageModelUsage } from '../core/types/usage';\nimport { FinishReason } from '../core';\n\nconst name = 'AI_NoObjectGeneratedError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\nThrown when no object could be generated. This can have several causes:\n\n- The model failed to generate a response.\n- The model generated a response that could not be parsed.\n- The model generated a response that could not be validated against the schema.\n\nThe error contains the following properties:\n\n- `text`: The text that was generated by the model. This can be the raw text or the tool call text, depending on the model.\n */\nexport class NoObjectGeneratedError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n /**\n The text that was generated by the model. This can be the raw text or the tool call text, depending on the model.\n */\n readonly text: string | undefined;\n\n /**\n The response metadata.\n */\n readonly response: LanguageModelResponseMetadata | undefined;\n\n /**\n The usage of the model.\n */\n readonly usage: LanguageModelUsage | undefined;\n\n /**\n Reason why the model finished generating a response.\n */\n readonly finishReason: FinishReason | undefined;\n\n constructor({\n message = 'No object generated.',\n cause,\n text,\n response,\n usage,\n finishReason,\n }: {\n message?: string;\n cause?: Error;\n text?: string;\n response: LanguageModelResponseMetadata;\n usage: LanguageModelUsage;\n finishReason: FinishReason;\n }) {\n super({ name, message, cause });\n\n this.text = text;\n this.response = response;\n this.usage = usage;\n this.finishReason = finishReason;\n }\n\n static isInstance(error: unknown): error is NoObjectGeneratedError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n\nexport function verifyNoObjectGeneratedError(\n error: unknown,\n expected: {\n message: string;\n response: LanguageModelResponseMetadata;\n usage: LanguageModelUsage;\n finishReason: FinishReason;\n },\n) {\n expect(NoObjectGeneratedError.isInstance(error)).toBeTruthy();\n const noObjectGeneratedError = error as NoObjectGeneratedError;\n expect(noObjectGeneratedError.message).toStrictEqual(expected.message);\n expect(noObjectGeneratedError.response).toStrictEqual(expected.response);\n expect(noObjectGeneratedError.usage).toStrictEqual(expected.usage);\n expect(noObjectGeneratedError.finishReason).toStrictEqual(\n expected.finishReason,\n );\n}\n","import {\n convertBase64ToUint8Array,\n convertUint8ArrayToBase64,\n} from '@ai-sdk/provider-utils';\nimport { InvalidDataContentError } from './invalid-data-content-error';\nimport { z } from 'zod';\n\n/**\nData content. Can either be a base64-encoded string, a Uint8Array, an ArrayBuffer, or a Buffer.\n */\nexport type DataContent = string | Uint8Array | ArrayBuffer | Buffer;\n\n/**\n@internal\n */\nexport const dataContentSchema: z.ZodType<DataContent> = z.union([\n z.string(),\n z.instanceof(Uint8Array),\n z.instanceof(ArrayBuffer),\n z.custom(\n // Buffer might not be available in some environments such as CloudFlare:\n (value: unknown): value is Buffer =>\n globalThis.Buffer?.isBuffer(value) ?? false,\n { message: 'Must be a Buffer' },\n ),\n]);\n\n/**\nConverts data content to a base64-encoded string.\n\n@param content - Data content to convert.\n@returns Base64-encoded string.\n*/\nexport function convertDataContentToBase64String(content: DataContent): string {\n if (typeof content === 'string') {\n return content;\n }\n\n if (content instanceof ArrayBuffer) {\n return convertUint8ArrayToBase64(new Uint8Array(content));\n }\n\n return convertUint8ArrayToBase64(content);\n}\n\n/**\nConverts data content to a Uint8Array.\n\n@param content - Data content to convert.\n@returns Uint8Array.\n */\nexport function convertDataContentToUint8Array(\n content: DataContent,\n): Uint8Array {\n if (content instanceof Uint8Array) {\n return content;\n }\n\n if (typeof content === 'string') {\n try {\n return convertBase64ToUint8Array(content);\n } catch (error) {\n throw new InvalidDataContentError({\n message:\n 'Invalid data content. Content string is not a base64-encoded media.',\n content,\n cause: error,\n });\n }\n }\n\n if (content instanceof ArrayBuffer) {\n return new Uint8Array(content);\n }\n\n throw new InvalidDataContentError({ content });\n}\n\n/**\n * Converts a Uint8Array to a string of text.\n *\n * @param uint8Array - The Uint8Array to convert.\n * @returns The converted string.\n */\nexport function convertUint8ArrayToText(uint8Array: Uint8Array): string {\n try {\n return new TextDecoder().decode(uint8Array);\n } catch (error) {\n throw new Error('Error decoding Uint8Array to text');\n }\n}\n","import { JSONValue } from '@ai-sdk/provider';\nimport { z } from 'zod';\n\nexport const jsonValueSchema: z.ZodType<JSONValue> = z.lazy(() =>\n z.union([\n z.null(),\n z.string(),\n z.number(),\n z.boolean(),\n z.record(z.string(), jsonValueSchema),\n z.array(jsonValueSchema),\n ]),\n);\n","import { LanguageModelV1ProviderMetadata } from '@ai-sdk/provider';\nimport { z } from 'zod';\nimport { jsonValueSchema } from './json-value';\n\n/**\nAdditional provider-specific metadata that is returned from the provider.\n\nThis is needed to enable provider-specific functionality that can be\nfully encapsulated in the provider.\n */\nexport type ProviderMetadata = LanguageModelV1ProviderMetadata;\n\n/**\nAdditional provider-specific options.\n\nThey are passed through to the provider from the AI SDK and enable\nprovider-specific functionality that can be fully encapsulated in the provider.\n */\n// TODO change to LanguageModelV2ProviderOptions in language model v2\nexport type ProviderOptions = LanguageModelV1ProviderMetadata;\n\nexport const providerMetadataSchema: z.ZodType<ProviderMetadata> = z.record(\n z.string(),\n z.record(z.string(), jsonValueSchema),\n);\n","import { z } from 'zod';\n\nexport type ToolResultContent = Array<\n | {\n type: 'text';\n text: string;\n }\n | {\n type: 'image';\n data: string; // base64 encoded png image, e.g. screenshot\n mimeType?: string; // e.g. 'image/png';\n }\n>;\n\nexport const toolResultContentSchema: z.ZodType<ToolResultContent> = z.array(\n z.union([\n z.object({ type: z.literal('text'), text: z.string() }),\n z.object({\n type: z.literal('image'),\n data: z.string(),\n mimeType: z.string().optional(),\n }),\n ]),\n);\n\nexport function isToolResultContent(\n value: unknown,\n): value is ToolResultContent {\n if (!Array.isArray(value) || value.length === 0) {\n return false;\n }\n\n return value.every(part => {\n if (typeof part !== 'object' || part === null) {\n return false;\n }\n\n if (part.type === 'text') {\n return typeof part.text === 'string';\n }\n\n if (part.type === 'image') {\n return (\n typeof part.data === 'string' &&\n (part.mimeType === undefined || typeof part.mimeType === 'string')\n );\n }\n\n return false;\n });\n}\n","import { z } from 'zod';\nimport {\n ProviderMetadata,\n providerMetadataSchema,\n ProviderOptions,\n} from '../types/provider-metadata';\nimport { DataContent, dataContentSchema } from './data-content';\nimport {\n ToolResultContent,\n toolResultContentSchema,\n} from './tool-result-content';\n\n/**\nText content part of a prompt. It contains a string of text.\n */\nexport interface TextPart {\n type: 'text';\n\n /**\nThe text content.\n */\n text: string;\n\n /**\nAdditional provider-specific metadata. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n */\n providerOptions?: ProviderOptions;\n\n /**\n@deprecated Use `providerOptions` instead.\n */\n experimental_providerMetadata?: ProviderMetadata;\n}\n\n/**\n@internal\n */\nexport const textPartSchema: z.ZodType<TextPart> = z.object({\n type: z.literal('text'),\n text: z.string(),\n providerOptions: providerMetadataSchema.optional(),\n experimental_providerMetadata: providerMetadataSchema.optional(),\n});\n\n/**\nImage content part of a prompt. It contains an image.\n */\nexport interface ImagePart {\n type: 'image';\n\n /**\nImage data. Can either be:\n\n- data: a base64-encoded string, a Uint8Array, an ArrayBuffer, or a Buffer\n- URL: a URL that points to the image\n */\n image: DataContent | URL;\n\n /**\nOptional mime type of the image.\n */\n mimeType?: string;\n\n /**\nAdditional provider-specific metadata. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n */\n providerOptions?: ProviderOptions;\n\n /**\n@deprecated Use `providerOptions` instead.\n */\n experimental_providerMetadata?: ProviderMetadata;\n}\n\n/**\n@internal\n */\nexport const imagePartSchema: z.ZodType<ImagePart> = z.object({\n type: z.literal('image'),\n image: z.union([dataContentSchema, z.instanceof(URL)]),\n mimeType: z.string().optional(),\n providerOptions: providerMetadataSchema.optional(),\n experimental_providerMetadata: providerMetadataSchema.optional(),\n});\n\n/**\nFile content part of a prompt. It contains a file.\n */\nexport interface FilePart {\n type: 'file';\n\n /**\nFile data. Can either be:\n\n- data: a base64-encoded string, a Uint8Array, an ArrayBuffer, or a Buffer\n- URL: a URL that points to the image\n */\n data: DataContent | URL;\n\n /**\nOptional filename of the file.\n */\n filename?: string;\n\n /**\nMime type of the file.\n */\n mimeType: string;\n\n /**\nAdditional provider-specific metadata. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n */\n providerOptions?: ProviderOptions;\n\n /**\n@deprecated Use `providerOptions` instead.\n */\n experimental_providerMetadata?: ProviderMetadata;\n}\n\n/**\n@internal\n */\nexport const filePartSchema: z.ZodType<FilePart> = z.object({\n type: z.literal('file'),\n data: z.union([dataContentSchema, z.instanceof(URL)]),\n filename: z.string().optional(),\n mimeType: z.string(),\n providerOptions: providerMetadataSchema.optional(),\n experimental_providerMetadata: providerMetadataSchema.optional(),\n});\n\n/**\n * Reasoning content part of a prompt. It contains a reasoning.\n */\nexport interface ReasoningPart {\n type: 'reasoning';\n\n /**\nThe reasoning text.\n */\n text: string;\n\n /**\nAn optional signature for verifying that the reasoning originated from the model.\n */\n signature?: string;\n\n /**\nAdditional provider-specific metadata. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n */\n providerOptions?: ProviderOptions;\n\n /**\n@deprecated Use `providerOptions` instead.\n */\n experimental_providerMetadata?: ProviderMetadata;\n}\n\n/**\n@internal\n */\nexport const reasoningPartSchema: z.ZodType<ReasoningPart> = z.object({\n type: z.literal('reasoning'),\n text: z.string(),\n providerOptions: providerMetadataSchema.optional(),\n experimental_providerMetadata: providerMetadataSchema.optional(),\n});\n\n/**\nRedacted reasoning content part of a prompt.\n */\nexport interface RedactedReasoningPart {\n type: 'redacted-reasoning';\n\n /**\nRedacted reasoning data.\n */\n data: string;\n\n /**\nAdditional provider-specific metadata. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n */\n providerOptions?: ProviderOptions;\n\n /**\n@deprecated Use `providerOptions` instead.\n */\n experimental_providerMetadata?: ProviderMetadata;\n}\n\n/**\n@internal\n */\nexport const redactedReasoningPartSchema: z.ZodType<RedactedReasoningPart> =\n z.object({\n type: z.literal('redacted-reasoning'),\n data: z.string(),\n providerOptions: providerMetadataSchema.optional(),\n experimental_providerMetadata: providerMetadataSchema.optional(),\n });\n\n/**\nTool call content part of a prompt. It contains a tool call (usually generated by the AI model).\n */\nexport interface ToolCallPart {\n type: 'tool-call';\n\n /**\nID of the tool call. This ID is used to match the tool call with the tool result.\n */\n toolCallId: string;\n\n /**\nName of the tool that is being called.\n */\n toolName: string;\n\n /**\nArguments of the tool call. This is a JSON-serializable object that matches the tool's input schema.\n */\n args: unknown;\n\n /**\nAdditional provider-specific metadata. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n */\n providerOptions?: ProviderOptions;\n\n /**\n@deprecated Use `providerOptions` instead.\n */\n experimental_providerMetadata?: ProviderMetadata;\n}\n\n/**\n@internal\n */\nexport const toolCallPartSchema: z.ZodType<ToolCallPart> = z.object({\n type: z.literal('tool-call'),\n toolCallId: z.string(),\n toolName: z.string(),\n args: z.unknown(),\n providerOptions: providerMetadataSchema.optional(),\n experimental_providerMetadata: providerMetadataSchema.optional(),\n}) as z.ZodType<ToolCallPart>; // necessary bc args is optional on Zod type\n\n/**\nTool result content part of a prompt. It contains the result of the tool call with the matching ID.\n */\nexport interface ToolResultPart {\n type: 'tool-result';\n\n /**\nID of the tool call that this result is associated with.\n */\n toolCallId: string;\n\n /**\nName of the tool that generated this result.\n */\n toolName: string;\n\n /**\nResult of the tool call. This is a JSON-serializable object.\n */\n result: unknown;\n\n /**\nMulti-part content of the tool result. Only for tools that support multipart results.\n */\n experimental_content?: ToolResultContent;\n\n /**\nOptional flag if the result is an error or an error message.\n */\n isError?: boolean;\n\n /**\nAdditional provider-specific metadata. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n */\n providerOptions?: ProviderOptions;\n\n /**\n@deprecated Use `providerOptions` instead.\n */\n experimental_providerMetadata?: ProviderMetadata;\n}\n\n/**\n@internal\n */\nexport const toolResultPartSchema: z.ZodType<ToolResultPart> = z.object({\n type: z.literal('tool-result'),\n toolCallId: z.string(),\n toolName: z.string(),\n result: z.unknown(),\n content: toolResultContentSchema.optional(),\n isError: z.boolean().optional(),\n providerOptions: providerMetadataSchema.optional(),\n experimental_providerMetadata: providerMetadataSchema.optional(),\n}) as z.ZodType<ToolResultPart>; // necessary bc result is optional on Zod type\n","import { z } from 'zod';\nimport { ProviderMetadata } from '../types';\nimport {\n providerMetadataSchema,\n ProviderOptions,\n} from '../types/provider-metadata';\nimport {\n FilePart,\n filePartSchema,\n ImagePart,\n imagePartSchema,\n ReasoningPart,\n reasoningPartSchema,\n RedactedReasoningPart,\n redactedReasoningPartSchema,\n TextPart,\n textPartSchema,\n ToolCallPart,\n toolCallPartSchema,\n ToolResultPart,\n toolResultPartSchema,\n} from './content-part';\n\n/**\n A system message. It can contain system information.\n\n Note: using the \"system\" part of the prompt is strongly preferred\n to increase the resilience against prompt injection attacks,\n and because not all providers support several system messages.\n */\nexport type CoreSystemMessage = {\n role: 'system';\n content: string;\n\n /**\nAdditional provider-specific metadata. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n */\n providerOptions?: ProviderOptions;\n\n /**\n@deprecated Use `providerOptions` instead.\n */\n experimental_providerMetadata?: ProviderMetadata;\n};\n\nexport const coreSystemMessageSchema: z.ZodType<CoreSystemMessage> = z.object({\n role: z.literal('system'),\n content: z.string(),\n providerOptions: providerMetadataSchema.optional(),\n experimental_providerMetadata: providerMetadataSchema.optional(),\n});\n\n/**\nA user message. It can contain text or a combination of text and images.\n */\nexport type CoreUserMessage = {\n role: 'user';\n content: UserContent;\n\n /**\nAdditional provider-specific metadata. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n */\n providerOptions?: ProviderOptions;\n\n /**\n@deprecated Use `providerOptions` instead.\n*/\n experimental_providerMetadata?: ProviderMetadata;\n};\n\nexport const coreUserMessageSchema: z.ZodType<CoreUserMessage> = z.object({\n role: z.literal('user'),\n content: z.union([\n z.string(),\n z.array(z.union([textPartSchema, imagePartSchema, filePartSchema])),\n ]),\n providerOptions: providerMetadataSchema.optional(),\n experimental_providerMetadata: providerMetadataSchema.optional(),\n});\n\n/**\nContent of a user message. It can be a string or an array of text and image parts.\n */\nexport type UserContent = string | Array<TextPart | ImagePart | FilePart>;\n\n/**\nAn assistant message. It can contain text, tool calls, or a combination of text and tool calls.\n */\nexport type CoreAssistantMessage = {\n role: 'assistant';\n content: AssistantContent;\n\n /**\nAdditional provider-specific metadata. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n */\n providerOptions?: ProviderOptions;\n\n /**\n@deprecated Use `providerOptions` instead.\n*/\n experimental_providerMetadata?: ProviderMetadata;\n};\n\nexport const coreAssistantMessageSchema: z.ZodType<CoreAssistantMessage> =\n z.object({\n role: z.literal('assistant'),\n content: z.union([\n z.string(),\n z.array(\n z.union([\n textPartSchema,\n filePartSchema,\n reasoningPartSchema,\n redactedReasoningPartSchema,\n toolCallPartSchema,\n ]),\n ),\n ]),\n providerOptions: providerMetadataSchema.optional(),\n experimental_providerMetadata: providerMetadataSchema.optional(),\n });\n\n/**\nContent of an assistant message.\nIt can be a string or an array of text, image, reasoning, redacted reasoning, and tool call parts.\n */\nexport type AssistantContent =\n | string\n | Array<\n TextPart | FilePart | ReasoningPart | RedactedReasoningPart | ToolCallPart\n >;\n\n/**\nA tool message. It contains the result of one or more tool calls.\n */\nexport type CoreToolMessage = {\n role: 'tool';\n content: ToolContent;\n\n /**\nAdditional provider-specific metadata. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n */\n providerOptions?: ProviderOptions;\n\n /**\n@deprecated Use `providerOptions` instead.\n*/\n experimental_providerMetadata?: ProviderMetadata;\n};\n\nexport const coreToolMessageSchema: z.ZodType<CoreToolMessage> = z.object({\n role: z.literal('tool'),\n content: z.array(toolResultPartSchema),\n providerOptions: providerMetadataSchema.optional(),\n experimental_providerMetadata: providerMetadataSchema.optional(),\n});\n\n/**\nContent of a tool message. It is an array of tool result parts.\n */\nexport type ToolContent = Array<ToolResultPart>;\n\n/**\nA message that can be used in the `messages` field of a prompt.\nIt can be a user message, an assistant message, or a tool message.\n */\nexport type CoreMessage =\n | CoreSystemMessage\n | CoreUserMessage\n | CoreAssistantMessage\n | CoreToolMessage;\n\nexport const coreMessageSchema: z.ZodType<CoreMessage> = z.union([\n coreSystemMessageSchema,\n coreUserMessageSchema,\n coreAssistantMessageSchema,\n coreToolMessageSchema,\n]);\n","import { JSONSchema7 } from '@ai-sdk/provider';\n\nconst DEFAULT_SCHEMA_PREFIX = 'JSON schema:';\nconst DEFAULT_SCHEMA_SUFFIX =\n 'You MUST answer with a JSON object that matches the JSON schema above.';\nconst DEFAULT_GENERIC_SUFFIX = 'You MUST answer with JSON.';\n\nexport function injectJsonInstruction({\n prompt,\n schema,\n schemaPrefix = schema != null ? DEFAULT_SCHEMA_PREFIX : undefined,\n schemaSuffix = schema != null\n ? DEFAULT_SCHEMA_SUFFIX\n : DEFAULT_GENERIC_SUFFIX,\n}: {\n prompt?: string;\n schema?: JSONSchema7;\n schemaPrefix?: string;\n schemaSuffix?: string;\n}): string {\n return [\n prompt != null && prompt.length > 0 ? prompt : undefined,\n prompt != null && prompt.length > 0 ? '' : undefined, // add a newline if prompt is not null\n schemaPrefix,\n schema != null ? JSON.stringify(schema) : undefined,\n schemaSuffix,\n ]\n .filter(line => line != null)\n .join('\\n');\n}\n","import {\n JSONParseError,\n JSONValue,\n TypeValidationError,\n} from '@ai-sdk/provider';\nimport { createIdGenerator, safeParseJSON } from '@ai-sdk/provider-utils';\nimport { Schema } from '@ai-sdk/ui-utils';\nimport { z } from 'zod';\nimport { NoObjectGeneratedError } from '../../errors/no-object-generated-error';\nimport { CallSettings } from '../prompt/call-settings';\nimport { convertToLanguageModelPrompt } from '../prompt/convert-to-language-model-prompt';\nimport { prepareCallSettings } from '../prompt/prepare-call-settings';\nimport { prepareRetries } from '../prompt/prepare-retries';\nimport { Prompt } from '../prompt/prompt';\nimport { standardizePrompt } from '../prompt/standardize-prompt';\nimport { assembleOperationName } from '../telemetry/assemble-operation-name';\nimport { getBaseTelemetryAttributes } from '../telemetry/get-base-telemetry-attributes';\nimport { getTracer } from '../telemetry/get-tracer';\nimport { recordSpan } from '../telemetry/record-span';\nimport { selectTelemetryAttributes } from '../telemetry/select-telemetry-attributes';\nimport { TelemetrySettings } from '../telemetry/telemetry-settings';\nimport {\n CallWarning,\n FinishReason,\n LanguageModel,\n LogProbs,\n ProviderMetadata,\n} from '../types';\nimport { LanguageModelRequestMetadata } from '../types/language-model-request-metadata';\nimport { LanguageModelResponseMetadata } from '../types/language-model-response-metadata';\nimport { ProviderOptions } from '../types/provider-metadata';\nimport { calculateLanguageModelUsage } from '../types/usage';\nimport { prepareResponseHeaders } from '../util/prepare-response-headers';\nimport { GenerateObjectResult } from './generate-object-result';\nimport { injectJsonInstruction } from './inject-json-instruction';\nimport { getOutputStrategy } from './output-strategy';\nimport { validateObjectGenerationInput } from './validate-object-generation-input';\nimport { stringifyForTelemetry } from '../prompt/stringify-for-telemetry';\nimport { UnsupportedModelVersionError } from '../../errors/unsupported-model-version-error';\n\nconst originalGenerateId = createIdGenerator({ prefix: 'aiobj', size: 24 });\n\n/**\nA function that attempts to repair the raw output of the mode\nto enable JSON parsing.\n\nShould return the repaired text or null if the text cannot be repaired.\n */\nexport type RepairTextFunction = (options: {\n text: string;\n error: JSONParseError | TypeValidationError;\n}) => Promise<string | null>;\n\n/**\nGenerate a structured, typed object for a given prompt and schema using a language model.\n\nThis function does not stream the output. If you want to stream the output, use `streamObject` instead.\n\n@returns\nA result object that contains the generated object, the finish reason, the token usage, and additional information.\n */\nexport async function generateObject<OBJECT>(\n options: Omit<CallSettings, 'stopSequences'> &\n Prompt & {\n output?: 'object' | undefined;\n\n /**\nThe language model to use.\n */\n model: LanguageModel;\n\n /**\nThe schema of the object that the model should generate.\n */\n schema: z.Schema<OBJECT, z.ZodTypeDef, any> | Schema<OBJECT>;\n\n /**\nOptional name of the output that should be generated.\nUsed by some providers for additional LLM guidance, e.g.\nvia tool or schema name.\n */\n schemaName?: string;\n\n /**\nOptional description of the output that should be generated.\nUsed by some providers for additional LLM guidance, e.g.\nvia tool or schema description.\n */\n schemaDescription?: string;\n\n /**\nThe mode to use for object generation.\n\nThe schema is converted into a JSON schema and used in one of the following ways\n\n- 'auto': The provider will choose the best mode for the model.\n- 'tool': A tool with the JSON schema as parameters is provided and the provider is instructed to use it.\n- 'json': The JSON schema and an instruction are injected into the prompt. If the provider supports JSON mode, it is enabled. If the provider supports JSON grammars, the grammar is used.\n\nPlease note that most providers do not support all modes.\n\nDefault and recommended: 'auto' (best mode for the model).\n */\n mode?: 'auto' | 'json' | 'tool';\n\n /**\nA function that attempts to repair the raw output of the mode\nto enable JSON parsing.\n */\n experimental_repairText?: RepairTextFunction;\n\n /**\nOptional telemetry configuration (experimental).\n */\n\n experimental_telemetry?: TelemetrySettings;\n\n /**\nAdditional provider-specific options. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n */\n providerOptions?: ProviderOptions;\n\n /**\n@deprecated Use `providerOptions` instead.\n*/\n experimental_providerMetadata?: ProviderMetadata;\n\n /**\n * Internal. For test use only. May change without notice.\n */\n _internal?: {\n generateId?: () => string;\n currentDate?: () => Date;\n };\n },\n): Promise<GenerateObjectResult<OBJECT>>;\n/**\nGenerate an array with structured, typed elements for a given prompt and element schema using a language model.\n\nThis function does not stream the output. If you want to stream the output, use `streamObject` instead.\n\n@return\nA result object that contains the generated object, the finish reason, the token usage, and additional information.\n */\nexport async function generateObject<ELEMENT>(\n options: Omit<CallSettings, 'stopSequences'> &\n Prompt & {\n output: 'array';\n\n /**\nThe language model to use.\n */\n model: LanguageModel;\n\n /**\nThe element schema of the array that the model should generate.\n */\n schema: z.Schema<ELEMENT, z.ZodTypeDef, any> | Schema<ELEMENT>;\n\n /**\nOptional name of the array that should be generated.\nUsed by some providers for additional LLM guidance, e.g.\nvia tool or schema name.\n */\n schemaName?: string;\n\n /**\nOptional description of the array that should be generated.\nUsed by some providers for additional LLM guidance, e.g.\nvia tool or schema description.\n */\n schemaDescription?: string;\n\n /**\nThe mode to use for object generation.\n\nThe schema is converted into a JSON schema and used in one of the following ways\n\n- 'auto': The provider will choose the best mode for the model.\n- 'tool': A tool with the JSON schema as parameters is provided and the provider is instructed to use it.\n- 'json': The JSON schema and an instruction are injected into the prompt. If the provider supports JSON mode, it is enabled. If the provider supports JSON grammars, the grammar is used.\n\nPlease note that most providers do not support all modes.\n\nDefault and recommended: 'auto' (best mode for the model).\n */\n mode?: 'auto' | 'json' | 'tool';\n\n /**\nA function that attempts to repair the raw output of the mode\nto enable JSON parsing.\n */\n experimental_repairText?: RepairTextFunction;\n\n /**\nOptional telemetry configuration (experimental).\n */\n experimental_telemetry?: TelemetrySettings;\n\n /**\nAdditional provider-specific options. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n */\n providerOptions?: ProviderOptions;\n\n /**\n@deprecated Use `providerOptions` instead.\n*/\n experimental_providerMetadata?: ProviderMetadata;\n\n /**\n * Internal. For test use only. May change without notice.\n */\n _internal?: {\n generateId?: () => string;\n currentDate?: () => Date;\n };\n },\n): Promise<GenerateObjectResult<Array<ELEMENT>>>;\n/**\nGenerate a value from an enum (limited list of string values) using a language model.\n\nThis function does not stream the output.\n\n@return\nA result object that contains the generated value, the finish reason, the token usage, and additional information.\n */\nexport async function generateObject<ENUM extends string>(\n options: Omit<CallSettings, 'stopSequences'> &\n Prompt & {\n output: 'enum';\n\n /**\nThe language model to use.\n */\n model: LanguageModel;\n\n /**\nThe enum values that the model should use.\n */\n enum: Array<ENUM>;\n\n /**\nThe mode to use for object generation.\n\nThe schema is converted into a JSON schema and used in one of the following ways\n\n- 'auto': The provider will choose the best mode for the model.\n- 'tool': A tool with the JSON schema as parameters is provided and the provider is instructed to use it.\n- 'json': The JSON schema and an instruction are injected into the prompt. If the provider supports JSON mode, it is enabled. If the provider supports JSON grammars, the grammar is used.\n\nPlease note that most providers do not support all modes.\n\nDefault and recommended: 'auto' (best mode for the model).\n */\n mode?: 'auto' | 'json' | 'tool';\n\n /**\nA function that attempts to repair the raw output of the mode\nto enable JSON parsing.\n */\n experimental_repairText?: RepairTextFunction;\n\n /**\nOptional telemetry configuration (experimental).\n */\n experimental_telemetry?: TelemetrySettings;\n\n /**\nAdditional provider-specific options. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n */\n providerOptions?: ProviderOptions;\n\n /**\n@deprecated Use `providerOptions` instead.\n*/\n experimental_providerMetadata?: ProviderMetadata;\n\n /**\n * Internal. For test use only. May change without notice.\n */\n _internal?: {\n generateId?: () => string;\n currentDate?: () => Date;\n };\n },\n): Promise<GenerateObjectResult<ENUM>>;\n/**\nGenerate JSON with any schema for a given prompt using a language model.\n\nThis function does not stream the output. If you want to stream the output, use `streamObject` instead.\n\n@returns\nA result object that contains the generated object, the finish reason, the token usage, and additional information.\n */\nexport async function generateObject(\n options: Omit<CallSettings, 'stopSequences'> &\n Prompt & {\n output: 'no-schema';\n\n /**\nThe language model to use.\n */\n model: LanguageModel;\n\n /**\nThe mode to use for object generation. Must be \"json\" for no-schema output.\n */\n mode?: 'json';\n\n /**\nA function that attempts to repair the raw output of the mode\nto enable JSON parsing.\n */\n experimental_repairText?: RepairTextFunction;\n\n /**\nOptional telemetry configuration (experimental).\n */\n experimental_telemetry?: TelemetrySettings;\n\n /**\nAdditional provider-specific options. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n */\n providerOptions?: ProviderOptions;\n\n /**\n@deprecated Use `providerOptions` instead.\n*/\n experimental_providerMetadata?: ProviderMetadata;\n\n /**\n * Internal. For test use only. May change without notice.\n */\n _internal?: {\n generateId?: () => string;\n currentDate?: () => Date;\n };\n },\n): Promise<GenerateObjectResult<JSONValue>>;\nexport async function generateObject<SCHEMA, RESULT>({\n model,\n enum: enumValues, // rename bc enum is reserved by typescript\n schema: inputSchema,\n schemaName,\n schemaDescription,\n mode,\n output = 'object',\n system,\n prompt,\n messages,\n maxRetries: maxRetriesArg,\n abortSignal,\n headers,\n experimental_repairText: repairText,\n experimental_telemetry: telemetry,\n experimental_providerMetadata,\n providerOptions = experimental_providerMetadata,\n _internal: {\n generateId = originalGenerateId,\n currentDate = () => new Date(),\n } = {},\n ...settings\n}: Omit<CallSettings, 'stopSequences'> &\n Prompt & {\n /**\n * The expected structure of the output.\n *\n * - 'object': Generate a single object that conforms to the schema.\n * - 'array': Generate an array of objects that conform to the schema.\n * - 'no-schema': Generate any JSON object. No schema is specified.\n *\n * Default is 'object' if not specified.\n */\n output?: 'object' | 'array' | 'enum' | 'no-schema';\n\n model: LanguageModel;\n enum?: Array<SCHEMA>;\n schema?: z.Schema<SCHEMA, z.ZodTypeDef, any> | Schema<SCHEMA>;\n schemaName?: string;\n schemaDescription?: string;\n mode?: 'auto' | 'json' | 'tool';\n experimental_repairText?: RepairTextFunction;\n experimental_telemetry?: TelemetrySettings;\n experimental_providerMetadata?: ProviderMetadata;\n providerOptions?: ProviderOptions;\n\n /**\n * Internal. For test use only. May change without notice.\n */\n _internal?: {\n generateId?: () => string;\n currentDate?: () => Date;\n };\n }): Promise<GenerateObjectResult<RESULT>> {\n if (typeof model === 'string' || model.specificationVersion !== 'v1') {\n throw new UnsupportedModelVersionError();\n }\n\n validateObjectGenerationInput({\n output,\n mode,\n schema: inputSchema,\n schemaName,\n schemaDescription,\n enumValues,\n });\n\n const { maxRetries, retry } = prepareRetries({ maxRetries: maxRetriesArg });\n\n const outputStrategy = getOutputStrategy({\n output,\n schema: inputSchema,\n enumValues,\n });\n\n // automatically set mode to 'json' for no-schema output\n if (outputStrategy.type === 'no-schema' && mode === undefined) {\n mode = 'json';\n }\n\n const baseTelemetryAttributes = getBaseTelemetryAttributes({\n model,\n telemetry,\n headers,\n settings: { ...settings, maxRetries },\n });\n\n const tracer = getTracer(telemetry);\n\n return recordSpan({\n name: 'ai.generateObject',\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: 'ai.generateObject',\n telemetry,\n }),\n ...baseTelemetryAttributes,\n // specific settings that only make sense on the outer level:\n 'ai.prompt': {\n input: () => JSON.stringify({ system, prompt, messages }),\n },\n 'ai.schema':\n outputStrategy.jsonSchema != null\n ? { input: () => JSON.stringify(outputStrategy.jsonSchema) }\n : undefined,\n 'ai.schema.name': schemaName,\n 'ai.schema.description': schemaDescription,\n 'ai.settings.output': outputStrategy.type,\n 'ai.settings.mode': mode,\n },\n }),\n tracer,\n fn: async span => {\n // use the default provider mode when the mode is set to 'auto' or unspecified\n if (mode === 'auto' || mode == null) {\n mode = model.defaultObjectGenerationMode;\n }\n\n let result: string;\n let finishReason: FinishReason;\n let usage: Parameters<typeof calculateLanguageModelUsage>[0];\n let warnings: CallWarning[] | undefined;\n let rawResponse:\n | { headers?: Record<string, string>; body?: unknown }\n | undefined;\n let response: LanguageModelResponseMetadata;\n let request: LanguageModelRequestMetadata;\n let logprobs: LogProbs | undefined;\n let resultProviderMetadata: ProviderMetadata | undefined;\n\n switch (mode) {\n case 'json': {\n const standardizedPrompt = standardizePrompt({\n prompt: {\n system:\n outputStrategy.jsonSchema == null\n ? injectJsonInstruction({ prompt: system })\n : model.supportsStructuredOutputs\n ? system\n : injectJsonInstruction({\n prompt: system,\n schema: outputStrategy.jsonSchema,\n }),\n prompt,\n messages,\n },\n tools: undefined,\n });\n\n const promptMessages = await convertToLanguageModelPrompt({\n prompt: standardizedPrompt,\n modelSupportsImageUrls: model.supportsImageUrls,\n modelSupportsUrl: model.supportsUrl?.bind(model), // support 'this' context\n });\n\n const generateResult = await retry(() =>\n recordSpan({\n name: 'ai.generateObject.doGenerate',\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: 'ai.generateObject.doGenerate',\n telemetry,\n }),\n ...baseTelemetryAttributes,\n 'ai.prompt.format': {\n input: () => standardizedPrompt.type,\n },\n 'ai.prompt.messages': {\n input: () => JSON.stringify(promptMessages),\n },\n 'ai.settings.mode': mode,\n\n // standardized gen-ai llm span attributes:\n 'gen_ai.system': model.provider,\n 'gen_ai.request.model': model.modelId,\n 'gen_ai.request.frequency_penalty': settings.frequencyPenalty,\n 'gen_ai.request.max_tokens': settings.maxTokens,\n 'gen_ai.request.presence_penalty': settings.presencePenalty,\n 'gen_ai.request.temperature': settings.temperature,\n 'gen_ai.request.top_k': settings.topK,\n 'gen_ai.request.top_p': settings.topP,\n },\n }),\n tracer,\n fn: async span => {\n const result = await model.doGenerate({\n mode: {\n type: 'object-json',\n schema: outputStrategy.jsonSchema,\n name: schemaName,\n description: schemaDescription,\n },\n ...prepareCallSettings(settings),\n inputFormat: standardizedPrompt.type,\n prompt: promptMessages,\n providerMetadata: providerOptions,\n abortSignal,\n headers,\n });\n\n const responseData = {\n id: result.response?.id ?? generateId(),\n timestamp: result.response?.timestamp ?? currentDate(),\n modelId: result.response?.modelId ?? model.modelId,\n };\n\n if (result.text === undefined) {\n throw new NoObjectGeneratedError({\n message:\n 'No object generated: the model did not return a response.',\n response: responseData,\n usage: calculateLanguageModelUsage(result.usage),\n finishReason: result.finishReason,\n });\n }\n\n // Add response information to the span:\n span.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n 'ai.response.finishReason': result.finishReason,\n 'ai.response.object': { output: () => result.text },\n 'ai.response.id': responseData.id,\n 'ai.response.model': responseData.modelId,\n 'ai.response.timestamp':\n responseData.timestamp.toISOString(),\n 'ai.response.providerMetadata': JSON.stringify(\n result.providerMetadata,\n ),\n 'ai.usage.promptTokens': result.usage.promptTokens,\n 'ai.usage.completionTokens':\n result.usage.completionTokens,\n\n // standardized gen-ai llm span attributes:\n 'gen_ai.response.finish_reasons': [result.finishReason],\n 'gen_ai.response.id': responseData.id,\n 'gen_ai.response.model': responseData.modelId,\n 'gen_ai.usage.prompt_tokens': result.usage.promptTokens,\n 'gen_ai.usage.completion_tokens':\n result.usage.completionTokens,\n },\n }),\n );\n\n return { ...result, objectText: result.text, responseData };\n },\n }),\n );\n\n result = generateResult.objectText;\n finishReason = generateResult.finishReason;\n usage = generateResult.usage;\n warnings = generateResult.warnings;\n rawResponse = generateResult.rawResponse;\n logprobs = generateResult.logprobs;\n resultProviderMetadata = generateResult.providerMetadata;\n request = generateResult.request ?? {};\n response = generateResult.responseData;\n\n break;\n }\n\n case 'tool': {\n const standardizedPrompt = standardizePrompt({\n prompt: { system, prompt, messages },\n tools: undefined,\n });\n\n const promptMessages = await convertToLanguageModelPrompt({\n prompt: standardizedPrompt,\n modelSupportsImageUrls: model.supportsImageUrls,\n modelSupportsUrl: model.supportsUrl?.bind(model), // support 'this' context,\n });\n const inputFormat = standardizedPrompt.type;\n\n const generateResult = await retry(() =>\n recordSpan({\n name: 'ai.generateObject.doGenerate',\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: 'ai.generateObject.doGenerate',\n telemetry,\n }),\n ...baseTelemetryAttributes,\n 'ai.prompt.format': {\n input: () => inputFormat,\n },\n 'ai.prompt.messages': {\n input: () => stringifyForTelemetry(promptMessages),\n },\n 'ai.settings.mode': mode,\n\n // standardized gen-ai llm span attributes:\n 'gen_ai.system': model.provider,\n 'gen_ai.request.model': model.modelId,\n 'gen_ai.request.frequency_penalty': settings.frequencyPenalty,\n 'gen_ai.request.max_tokens': settings.maxTokens,\n 'gen_ai.request.presence_penalty': settings.presencePenalty,\n 'gen_ai.request.temperature': settings.temperature,\n 'gen_ai.request.top_k': settings.topK,\n 'gen_ai.request.top_p': settings.topP,\n },\n }),\n tracer,\n fn: async span => {\n const result = await model.doGenerate({\n mode: {\n type: 'object-tool',\n tool: {\n type: 'function',\n name: schemaName ?? 'json',\n description:\n schemaDescription ?? 'Respond with a JSON object.',\n parameters: outputStrategy.jsonSchema!,\n },\n },\n ...prepareCallSettings(settings),\n inputFormat,\n prompt: promptMessages,\n providerMetadata: providerOptions,\n abortSignal,\n headers,\n });\n\n const objectText = result.toolCalls?.[0]?.args;\n\n const responseData = {\n id: result.response?.id ?? generateId(),\n timestamp: result.response?.timestamp ?? currentDate(),\n modelId: result.response?.modelId ?? model.modelId,\n };\n\n if (objectText === undefined) {\n throw new NoObjectGeneratedError({\n message: 'No object generated: the tool was not called.',\n response: responseData,\n usage: calculateLanguageModelUsage(result.usage),\n finishReason: result.finishReason,\n });\n }\n\n // Add response information to the span:\n span.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n 'ai.response.finishReason': result.finishReason,\n 'ai.response.object': { output: () => objectText },\n 'ai.response.id': responseData.id,\n 'ai.response.model': responseData.modelId,\n 'ai.response.timestamp':\n responseData.timestamp.toISOString(),\n 'ai.response.providerMetadata': JSON.stringify(\n result.providerMetadata,\n ),\n 'ai.usage.promptTokens': result.usage.promptTokens,\n 'ai.usage.completionTokens':\n result.usage.completionTokens,\n\n // standardized gen-ai llm span attributes:\n 'gen_ai.response.finish_reasons': [result.finishReason],\n 'gen_ai.response.id': responseData.id,\n 'gen_ai.response.model': responseData.modelId,\n 'gen_ai.usage.input_tokens': result.usage.promptTokens,\n 'gen_ai.usage.output_tokens':\n result.usage.completionTokens,\n },\n }),\n );\n\n return { ...result, objectText, responseData };\n },\n }),\n );\n\n result = generateResult.objectText;\n finishReason = generateResult.finishReason;\n usage = generateResult.usage;\n warnings = generateResult.warnings;\n rawResponse = generateResult.rawResponse;\n logprobs = generateResult.logprobs;\n resultProviderMetadata = generateResult.providerMetadata;\n request = generateResult.request ?? {};\n response = generateResult.responseData;\n\n break;\n }\n\n case undefined: {\n throw new Error(\n 'Model does not have a default object generation mode.',\n );\n }\n\n default: {\n const _exhaustiveCheck: never = mode;\n throw new Error(`Unsupported mode: ${_exhaustiveCheck}`);\n }\n }\n\n function processResult(result: string): RESULT {\n const parseResult = safeParseJSON({ text: result });\n\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,\n usage: calculateLanguageModelUsage(usage),\n finishReason: finishReason,\n });\n }\n\n const validationResult = outputStrategy.validateFinalResult(\n parseResult.value,\n {\n text: result,\n response,\n usage: calculateLanguageModelUsage(usage),\n },\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,\n usage: calculateLanguageModelUsage(usage),\n finishReason: finishReason,\n });\n }\n\n return validationResult.value;\n }\n\n let object: RESULT;\n try {\n object = processResult(result);\n } catch (error) {\n if (\n repairText != null &&\n NoObjectGeneratedError.isInstance(error) &&\n (JSONParseError.isInstance(error.cause) ||\n TypeValidationError.isInstance(error.cause))\n ) {\n const repairedText = await repairText({\n text: result,\n error: error.cause,\n });\n\n if (repairedText === null) {\n throw error;\n }\n\n object = processResult(repairedText);\n } else {\n throw error;\n }\n }\n\n // Add response information to the span:\n span.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n 'ai.response.finishReason': finishReason,\n 'ai.response.object': {\n output: () => JSON.stringify(object),\n },\n\n 'ai.usage.promptTokens': usage.promptTokens,\n 'ai.usage.completionTokens': usage.completionTokens,\n },\n }),\n );\n\n return new DefaultGenerateObjectResult({\n object,\n finishReason,\n usage: calculateLanguageModelUsage(usage),\n warnings,\n request,\n response: {\n ...response,\n headers: rawResponse?.headers,\n body: rawResponse?.body,\n },\n logprobs,\n providerMetadata: resultProviderMetadata,\n });\n },\n });\n}\n\nclass DefaultGenerateObjectResult<T> implements GenerateObjectResult<T> {\n readonly object: GenerateObjectResult<T>['object'];\n readonly finishReason: GenerateObjectResult<T>['finishReason'];\n readonly usage: GenerateObjectResult<T>['usage'];\n readonly warnings: GenerateObjectResult<T>['warnings'];\n readonly logprobs: GenerateObjectResult<T>['logprobs'];\n readonly experimental_providerMetadata: GenerateObjectResult<T>['experimental_providerMetadata'];\n readonly providerMetadata: GenerateObjectResult<T>['providerMetadata'];\n readonly response: GenerateObjectResult<T>['response'];\n readonly request: GenerateObjectResult<T>['request'];\n\n constructor(options: {\n object: GenerateObjectResult<T>['object'];\n finishReason: GenerateObjectResult<T>['finishReason'];\n usage: GenerateObjectResult<T>['usage'];\n warnings: GenerateObjectResult<T>['warnings'];\n logprobs: GenerateObjectResult<T>['logprobs'];\n providerMetadata: GenerateObjectResult<T>['providerMetadata'];\n response: GenerateObjectResult<T>['response'];\n request: GenerateObjectResult<T>['request'];\n }) {\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.experimental_providerMetadata = options.providerMetadata;\n this.response = options.response;\n this.request = options.request;\n this.logprobs = options.logprobs;\n }\n\n toJsonResponse(init?: ResponseInit): Response {\n return new Response(JSON.stringify(this.object), {\n status: init?.status ?? 200,\n headers: prepareResponseHeaders(init?.headers, {\n contentType: 'application/json; charset=utf-8',\n }),\n });\n }\n}\n","import {\n JSONValue,\n LanguageModelV1CallOptions,\n LanguageModelV1FinishReason,\n LanguageModelV1StreamPart,\n} from '@ai-sdk/provider';\nimport { createIdGenerator } from '@ai-sdk/provider-utils';\nimport {\n DeepPartial,\n Schema,\n isDeepEqualData,\n parsePartialJson,\n} from '@ai-sdk/ui-utils';\nimport { ServerResponse } from 'http';\nimport { z } from 'zod';\nimport { NoObjectGeneratedError } from '../../errors/no-object-generated-error';\nimport { DelayedPromise } from '../../util/delayed-promise';\nimport { CallSettings } from '../prompt/call-settings';\nimport { convertToLanguageModelPrompt } from '../prompt/convert-to-language-model-prompt';\nimport { prepareCallSettings } from '../prompt/prepare-call-settings';\nimport { prepareRetries } from '../prompt/prepare-retries';\nimport { Prompt } from '../prompt/prompt';\nimport { standardizePrompt } from '../prompt/standardize-prompt';\nimport { assembleOperationName } from '../telemetry/assemble-operation-name';\nimport { getBaseTelemetryAttributes } from '../telemetry/get-base-telemetry-attributes';\nimport { getTracer } from '../telemetry/get-tracer';\nimport { recordSpan } from '../telemetry/record-span';\nimport { selectTelemetryAttributes } from '../telemetry/select-telemetry-attributes';\nimport { TelemetrySettings } from '../telemetry/telemetry-settings';\nimport {\n CallWarning,\n FinishReason,\n LanguageModel,\n LogProbs,\n} from '../types/language-model';\nimport { LanguageModelRequestMetadata } from '../types/language-model-request-metadata';\nimport { LanguageModelResponseMetadata } from '../types/language-model-response-metadata';\nimport { ProviderMetadata, ProviderOptions } from '../types/provider-metadata';\nimport {\n LanguageModelUsage,\n calculateLanguageModelUsage,\n} from '../types/usage';\nimport {\n AsyncIterableStream,\n createAsyncIterableStream,\n} from '../util/async-iterable-stream';\nimport { createStitchableStream } from '../util/create-stitchable-stream';\nimport { now as originalNow } from '../util/now';\nimport { prepareOutgoingHttpHeaders } from '../util/prepare-outgoing-http-headers';\nimport { prepareResponseHeaders } from '../util/prepare-response-headers';\nimport { writeToServerResponse } from '../util/write-to-server-response';\nimport { injectJsonInstruction } from './inject-json-instruction';\nimport { OutputStrategy, getOutputStrategy } from './output-strategy';\nimport { ObjectStreamPart, StreamObjectResult } from './stream-object-result';\nimport { validateObjectGenerationInput } from './validate-object-generation-input';\nimport { stringifyForTelemetry } from '../prompt/stringify-for-telemetry';\nimport { UnsupportedModelVersionError } from '../../errors/unsupported-model-version-error';\n\nconst originalGenerateId = createIdGenerator({ prefix: 'aiobj', size: 24 });\n\n/**\nCallback that is set using the `onError` option.\n\n@param event - The event that is passed to the callback.\n */\nexport type StreamObjectOnErrorCallback = (event: {\n error: unknown;\n}) => Promise<void> | void;\n\n/**\nCallback that is set using the `onFinish` option.\n\n@param event - The event that is passed to the callback.\n */\nexport type StreamObjectOnFinishCallback<RESULT> = (event: {\n /**\nThe token usage of the generated response.\n*/\n usage: LanguageModelUsage;\n\n /**\nThe generated object. Can be undefined if the final object does not match the schema.\n*/\n object: RESULT | undefined;\n\n /**\nOptional error object. This is e.g. a TypeValidationError when the final object does not match the schema.\n*/\n error: unknown | undefined;\n\n /**\nResponse metadata.\n */\n response: LanguageModelResponseMetadata;\n\n /**\nWarnings from the model provider (e.g. unsupported settings).\n*/\n warnings?: CallWarning[];\n\n /**\nAdditional provider-specific metadata. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n*/\n providerMetadata: ProviderMetadata | undefined;\n\n /**\n@deprecated Use `providerMetadata` instead.\n*/\n experimental_providerMetadata?: ProviderMetadata;\n}) => Promise<void> | void;\n\n/**\nGenerate a structured, typed object for a given prompt and schema using a language model.\n\nThis function streams the output. If you do not want to stream the output, use `generateObject` instead.\n\n@return\nA result object for accessing the partial object stream and additional information.\n */\nexport function streamObject<OBJECT>(\n options: Omit<CallSettings, 'stopSequences'> &\n Prompt & {\n output?: 'object' | undefined;\n\n /**\nThe language model to use.\n */\n model: LanguageModel;\n\n /**\nThe schema of the object that the model should generate.\n */\n schema: z.Schema<OBJECT, z.ZodTypeDef, any> | Schema<OBJECT>;\n\n /**\nOptional name of the output that should be generated.\nUsed by some providers for additional LLM guidance, e.g.\nvia tool or schema name.\n */\n schemaName?: string;\n\n /**\nOptional description of the output that should be generated.\nUsed by some providers for additional LLM guidance, e.g.\nvia tool or schema description.\n */\n schemaDescription?: string;\n\n /**\nThe mode to use for object generation.\n\nThe schema is converted into a JSON schema and used in one of the following ways\n\n- 'auto': The provider will choose the best mode for the model.\n- 'tool': A tool with the JSON schema as parameters is provided and the provider is instructed to use it.\n- 'json': The JSON schema and an instruction are injected into the prompt. If the provider supports JSON mode, it is enabled. If the provider supports JSON grammars, the grammar is used.\n\nPlease note that most providers do not support all modes.\n\nDefault and recommended: 'auto' (best mode for the model).\n */\n mode?: 'auto' | 'json' | 'tool';\n\n /**\nOptional telemetry configuration (experimental).\n */\n experimental_telemetry?: TelemetrySettings;\n\n /**\nAdditional provider-specific options. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n */\n providerOptions?: ProviderOptions;\n\n /**\n@deprecated Use `providerOptions` instead.\n*/\n experimental_providerMetadata?: ProviderMetadata;\n\n /**\nCallback that is invoked when an error occurs during streaming.\nYou can use it to log errors.\nThe stream processing will pause until the callback promise is resolved.\n */\n onError?: StreamObjectOnErrorCallback;\n\n /**\nCallback that is called when the LLM response and the final object validation are finished.\n */\n onFinish?: StreamObjectOnFinishCallback<OBJECT>;\n\n /**\n * Internal. For test use only. May change without notice.\n */\n _internal?: {\n generateId?: () => string;\n currentDate?: () => Date;\n now?: () => number;\n };\n },\n): StreamObjectResult<DeepPartial<OBJECT>, OBJECT, never>;\n/**\nGenerate an array with structured, typed elements for a given prompt and element schema using a language model.\n\nThis function streams the output. If you do not want to stream the output, use `generateObject` instead.\n\n@return\nA result object for accessing the partial object stream and additional information.\n */\nexport function streamObject<ELEMENT>(\n options: Omit<CallSettings, 'stopSequences'> &\n Prompt & {\n output: 'array';\n\n /**\nThe language model to use.\n */\n model: LanguageModel;\n\n /**\nThe element schema of the array that the model should generate.\n */\n schema: z.Schema<ELEMENT, z.ZodTypeDef, any> | Schema<ELEMENT>;\n\n /**\nOptional name of the array that should be generated.\nUsed by some providers for additional LLM guidance, e.g.\nvia tool or schema name.\n */\n schemaName?: string;\n\n /**\nOptional description of the array that should be generated.\nUsed by some providers for additional LLM guidance, e.g.\nvia tool or schema description.\n */\n schemaDescription?: string;\n\n /**\nThe mode to use for object generation.\n\nThe schema is converted into a JSON schema and used in one of the following ways\n\n- 'auto': The provider will choose the best mode for the model.\n- 'tool': A tool with the JSON schema as parameters is provided and the provider is instructed to use it.\n- 'json': The JSON schema and an instruction are injected into the prompt. If the provider supports JSON mode, it is enabled. If the provider supports JSON grammars, the grammar is used.\n\nPlease note that most providers do not support all modes.\n\nDefault and recommended: 'auto' (best mode for the model).\n */\n mode?: 'auto' | 'json' | 'tool';\n\n /**\nOptional telemetry configuration (experimental).\n */\n experimental_telemetry?: TelemetrySettings;\n\n /**\nAdditional provider-specific options. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n */\n providerOptions?: ProviderOptions;\n\n /**\n@deprecated Use `providerOptions` instead.\n*/\n experimental_providerMetadata?: ProviderMetadata;\n\n /**\nCallback that is invoked when an error occurs during streaming.\nYou can use it to log errors.\nThe stream processing will pause until the callback promise is resolved.\n */\n onError?: StreamObjectOnErrorCallback;\n\n /**\nCallback that is called when the LLM response and the final object validation are finished.\n */\n onFinish?: StreamObjectOnFinishCallback<Array<ELEMENT>>;\n\n /**\n * Internal. For test use only. May change without notice.\n */\n _internal?: {\n generateId?: () => string;\n currentDate?: () => Date;\n now?: () => number;\n };\n },\n): StreamObjectResult<\n Array<ELEMENT>,\n Array<ELEMENT>,\n AsyncIterableStream<ELEMENT>\n>;\n/**\nGenerate JSON with any schema for a given prompt using a language model.\n\nThis function streams the output. If you do not want to stream the output, use `generateObject` instead.\n\n@return\nA result object for accessing the partial object stream and additional information.\n */\nexport function streamObject(\n options: Omit<CallSettings, 'stopSequences'> &\n Prompt & {\n output: 'no-schema';\n\n /**\nThe language model to use.\n */\n model: LanguageModel;\n\n /**\nThe mode to use for object generation. Must be \"json\" for no-schema output.\n */\n mode?: 'json';\n\n /**\nOptional telemetry configuration (experimental).\n */\n experimental_telemetry?: TelemetrySettings;\n\n /**\nAdditional provider-specific options. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n */\n providerOptions?: ProviderOptions;\n\n /**\n@deprecated Use `providerOptions` instead.\n*/\n experimental_providerMetadata?: ProviderMetadata;\n\n /**\nCallback that is invoked when an error occurs during streaming.\nYou can use it to log errors.\nThe stream processing will pause until the callback promise is resolved.\n */\n onError?: StreamObjectOnErrorCallback;\n\n /**\nCallback that is called when the LLM response and the final object validation are finished.\n */\n onFinish?: StreamObjectOnFinishCallback<JSONValue>;\n\n /**\n * Internal. For test use only. May change without notice.\n */\n _internal?: {\n generateId?: () => string;\n currentDate?: () => Date;\n now?: () => number;\n };\n },\n): StreamObjectResult<JSONValue, JSONValue, never>;\nexport function streamObject<SCHEMA, PARTIAL, RESULT, ELEMENT_STREAM>({\n model,\n schema: inputSchema,\n schemaName,\n schemaDescription,\n mode,\n output = 'object',\n system,\n prompt,\n messages,\n maxRetries,\n abortSignal,\n headers,\n experimental_telemetry: telemetry,\n experimental_providerMetadata,\n providerOptions = experimental_providerMetadata,\n onError,\n onFinish,\n _internal: {\n generateId = originalGenerateId,\n currentDate = () => new Date(),\n now = originalNow,\n } = {},\n ...settings\n}: Omit<CallSettings, 'stopSequences'> &\n Prompt & {\n /**\n * The expected structure of the output.\n *\n * - 'object': Generate a single object that conforms to the schema.\n * - 'array': Generate an array of objects that conform to the schema.\n * - 'no-schema': Generate any JSON object. No schema is specified.\n *\n * Default is 'object' if not specified.\n */\n output?: 'object' | 'array' | 'no-schema';\n\n model: LanguageModel;\n schema?: z.Schema<SCHEMA, z.ZodTypeDef, any> | Schema<SCHEMA>;\n schemaName?: string;\n schemaDescription?: string;\n mode?: 'auto' | 'json' | 'tool';\n experimental_telemetry?: TelemetrySettings;\n providerOptions?: ProviderOptions;\n experimental_providerMetadata?: ProviderMetadata;\n onError?: StreamObjectOnErrorCallback;\n onFinish?: StreamObjectOnFinishCallback<RESULT>;\n _internal?: {\n generateId?: () => string;\n currentDate?: () => Date;\n now?: () => number;\n };\n }): StreamObjectResult<PARTIAL, RESULT, ELEMENT_STREAM> {\n if (typeof model === 'string' || model.specificationVersion !== 'v1') {\n throw new UnsupportedModelVersionError();\n }\n\n validateObjectGenerationInput({\n output,\n mode,\n schema: inputSchema,\n schemaName,\n schemaDescription,\n });\n\n const outputStrategy = getOutputStrategy({ output, schema: inputSchema });\n\n // automatically set mode to 'json' for no-schema output\n if (outputStrategy.type === 'no-schema' && mode === undefined) {\n mode = 'json';\n }\n\n return new DefaultStreamObjectResult({\n model,\n telemetry,\n headers,\n settings,\n maxRetries,\n abortSignal,\n outputStrategy,\n system,\n prompt,\n messages,\n schemaName,\n schemaDescription,\n providerOptions,\n mode,\n onError,\n onFinish,\n generateId,\n currentDate,\n now,\n });\n}\n\nclass DefaultStreamObjectResult<PARTIAL, RESULT, ELEMENT_STREAM>\n implements StreamObjectResult<PARTIAL, RESULT, ELEMENT_STREAM>\n{\n private readonly objectPromise = new DelayedPromise<RESULT>();\n private readonly usagePromise = new DelayedPromise<LanguageModelUsage>();\n private readonly providerMetadataPromise = new DelayedPromise<\n ProviderMetadata | undefined\n >();\n private readonly warningsPromise = new DelayedPromise<\n CallWarning[] | undefined\n >();\n private readonly requestPromise =\n new DelayedPromise<LanguageModelRequestMetadata>();\n private readonly responsePromise =\n new DelayedPromise<LanguageModelResponseMetadata>();\n\n private readonly baseStream: ReadableStream<ObjectStreamPart<PARTIAL>>;\n\n private readonly outputStrategy: OutputStrategy<\n PARTIAL,\n RESULT,\n ELEMENT_STREAM\n >;\n\n constructor({\n model,\n headers,\n telemetry,\n settings,\n maxRetries: maxRetriesArg,\n abortSignal,\n outputStrategy,\n system,\n prompt,\n messages,\n schemaName,\n schemaDescription,\n providerOptions,\n mode,\n onError,\n onFinish,\n generateId,\n currentDate,\n now,\n }: {\n model: LanguageModel;\n telemetry: TelemetrySettings | undefined;\n headers: Record<string, string | undefined> | undefined;\n settings: Omit<CallSettings, 'abortSignal' | 'headers'>;\n maxRetries: number | undefined;\n abortSignal: AbortSignal | undefined;\n outputStrategy: OutputStrategy<PARTIAL, RESULT, ELEMENT_STREAM>;\n system: Prompt['system'];\n prompt: Prompt['prompt'];\n messages: Prompt['messages'];\n schemaName: string | undefined;\n schemaDescription: string | undefined;\n providerOptions: ProviderOptions | undefined;\n mode: 'auto' | 'json' | 'tool' | undefined;\n onError: StreamObjectOnErrorCallback | undefined;\n onFinish: StreamObjectOnFinishCallback<RESULT> | undefined;\n generateId: () => string;\n currentDate: () => Date;\n now: () => number;\n }) {\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n });\n\n const baseTelemetryAttributes = getBaseTelemetryAttributes({\n model,\n telemetry,\n headers,\n settings: { ...settings, maxRetries },\n });\n\n const tracer = getTracer(telemetry);\n const self = this;\n\n const stitchableStream =\n createStitchableStream<ObjectStreamPart<PARTIAL>>();\n\n const eventProcessor = new TransformStream<\n ObjectStreamPart<PARTIAL>,\n ObjectStreamPart<PARTIAL>\n >({\n transform(chunk, controller) {\n controller.enqueue(chunk);\n\n if (chunk.type === 'error') {\n onError?.({ error: chunk.error });\n }\n },\n });\n\n this.baseStream = stitchableStream.stream.pipeThrough(eventProcessor);\n\n recordSpan({\n name: 'ai.streamObject',\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: 'ai.streamObject',\n telemetry,\n }),\n ...baseTelemetryAttributes,\n // specific settings that only make sense on the outer level:\n 'ai.prompt': {\n input: () => JSON.stringify({ system, prompt, messages }),\n },\n 'ai.schema':\n outputStrategy.jsonSchema != null\n ? { input: () => JSON.stringify(outputStrategy.jsonSchema) }\n : undefined,\n 'ai.schema.name': schemaName,\n 'ai.schema.description': schemaDescription,\n 'ai.settings.output': outputStrategy.type,\n 'ai.settings.mode': mode,\n },\n }),\n tracer,\n endWhenDone: false,\n fn: async rootSpan => {\n // use the default provider mode when the mode is set to 'auto' or unspecified\n if (mode === 'auto' || mode == null) {\n mode = model.defaultObjectGenerationMode;\n }\n\n let callOptions: LanguageModelV1CallOptions;\n let transformer: Transformer<\n LanguageModelV1StreamPart,\n string | Omit<LanguageModelV1StreamPart, 'text-delta'>\n >;\n\n switch (mode) {\n case 'json': {\n const standardizedPrompt = standardizePrompt({\n prompt: {\n system:\n outputStrategy.jsonSchema == null\n ? injectJsonInstruction({ prompt: system })\n : model.supportsStructuredOutputs\n ? system\n : injectJsonInstruction({\n prompt: system,\n schema: outputStrategy.jsonSchema,\n }),\n prompt,\n messages,\n },\n tools: undefined,\n });\n\n callOptions = {\n mode: {\n type: 'object-json',\n schema: outputStrategy.jsonSchema,\n name: schemaName,\n description: schemaDescription,\n },\n ...prepareCallSettings(settings),\n inputFormat: standardizedPrompt.type,\n prompt: await convertToLanguageModelPrompt({\n prompt: standardizedPrompt,\n modelSupportsImageUrls: model.supportsImageUrls,\n modelSupportsUrl: model.supportsUrl?.bind(model), // support 'this' context\n }),\n providerMetadata: providerOptions,\n abortSignal,\n headers,\n };\n\n transformer = {\n transform: (chunk, controller) => {\n switch (chunk.type) {\n case 'text-delta':\n controller.enqueue(chunk.textDelta);\n break;\n case 'response-metadata':\n case 'finish':\n case 'error':\n controller.enqueue(chunk);\n break;\n }\n },\n };\n\n break;\n }\n\n case 'tool': {\n const standardizedPrompt = standardizePrompt({\n prompt: { system, prompt, messages },\n tools: undefined,\n });\n\n callOptions = {\n mode: {\n type: 'object-tool',\n tool: {\n type: 'function',\n name: schemaName ?? 'json',\n description:\n schemaDescription ?? 'Respond with a JSON object.',\n parameters: outputStrategy.jsonSchema!,\n },\n },\n ...prepareCallSettings(settings),\n inputFormat: standardizedPrompt.type,\n prompt: await convertToLanguageModelPrompt({\n prompt: standardizedPrompt,\n modelSupportsImageUrls: model.supportsImageUrls,\n modelSupportsUrl: model.supportsUrl?.bind(model), // support 'this' context,\n }),\n providerMetadata: providerOptions,\n abortSignal,\n headers,\n };\n\n transformer = {\n transform(chunk, controller) {\n switch (chunk.type) {\n case 'tool-call-delta':\n controller.enqueue(chunk.argsTextDelta);\n break;\n case 'response-metadata':\n case 'finish':\n case 'error':\n controller.enqueue(chunk);\n break;\n }\n },\n };\n\n break;\n }\n\n case undefined: {\n throw new Error(\n 'Model does not have a default object generation mode.',\n );\n }\n\n default: {\n const _exhaustiveCheck: never = mode;\n throw new Error(`Unsupported mode: ${_exhaustiveCheck}`);\n }\n }\n\n const {\n result: { stream, warnings, rawResponse, request },\n doStreamSpan,\n startTimestampMs,\n } = await retry(() =>\n recordSpan({\n name: 'ai.streamObject.doStream',\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: 'ai.streamObject.doStream',\n telemetry,\n }),\n ...baseTelemetryAttributes,\n 'ai.prompt.format': {\n input: () => callOptions.inputFormat,\n },\n 'ai.prompt.messages': {\n input: () => stringifyForTelemetry(callOptions.prompt),\n },\n 'ai.settings.mode': mode,\n\n // standardized gen-ai llm span attributes:\n 'gen_ai.system': model.provider,\n 'gen_ai.request.model': model.modelId,\n 'gen_ai.request.frequency_penalty': settings.frequencyPenalty,\n 'gen_ai.request.max_tokens': settings.maxTokens,\n 'gen_ai.request.presence_penalty': settings.presencePenalty,\n 'gen_ai.request.temperature': settings.temperature,\n 'gen_ai.request.top_k': settings.topK,\n 'gen_ai.request.top_p': settings.topP,\n },\n }),\n tracer,\n endWhenDone: false,\n fn: async doStreamSpan => ({\n startTimestampMs: now(),\n doStreamSpan,\n result: await model.doStream(callOptions),\n }),\n }),\n );\n\n self.requestPromise.resolve(request ?? {});\n\n // store information for onFinish callback:\n let usage: LanguageModelUsage | undefined;\n let finishReason: LanguageModelV1FinishReason | undefined;\n let providerMetadata: ProviderMetadata | undefined;\n let object: RESULT | undefined;\n let error: unknown | undefined;\n\n // pipe chunks through a transformation stream that extracts metadata:\n let accumulatedText = '';\n let textDelta = '';\n let response: {\n id: string;\n timestamp: Date;\n modelId: string;\n } = {\n id: generateId(),\n timestamp: currentDate(),\n modelId: model.modelId,\n };\n\n // Keep track of raw parse result before type validation, since e.g. Zod might\n // change the object by mapping properties.\n let latestObjectJson: JSONValue | undefined = undefined;\n let latestObject: PARTIAL | undefined = undefined;\n let isFirstChunk = true;\n let isFirstDelta = true;\n\n const transformedStream = stream\n .pipeThrough(new TransformStream(transformer))\n .pipeThrough(\n new TransformStream<\n string | ObjectStreamInputPart,\n ObjectStreamPart<PARTIAL>\n >({\n async transform(chunk, controller): Promise<void> {\n // Telemetry event for first chunk:\n if (isFirstChunk) {\n const msToFirstChunk = now() - startTimestampMs;\n\n isFirstChunk = false;\n\n doStreamSpan.addEvent('ai.stream.firstChunk', {\n 'ai.stream.msToFirstChunk': msToFirstChunk,\n });\n\n doStreamSpan.setAttributes({\n 'ai.stream.msToFirstChunk': msToFirstChunk,\n });\n }\n\n // process partial text chunks\n if (typeof chunk === 'string') {\n accumulatedText += chunk;\n textDelta += chunk;\n\n const { value: currentObjectJson, state: parseState } =\n parsePartialJson(accumulatedText);\n\n if (\n currentObjectJson !== undefined &&\n !isDeepEqualData(latestObjectJson, currentObjectJson)\n ) {\n const validationResult =\n outputStrategy.validatePartialResult({\n value: currentObjectJson,\n textDelta,\n latestObject,\n isFirstDelta,\n isFinalDelta: parseState === 'successful-parse',\n });\n\n if (\n validationResult.success &&\n !isDeepEqualData(\n latestObject,\n validationResult.value.partial,\n )\n ) {\n // inside inner check to correctly parse the final element in array mode:\n latestObjectJson = currentObjectJson;\n latestObject = validationResult.value.partial;\n\n controller.enqueue({\n type: 'object',\n object: latestObject,\n });\n\n controller.enqueue({\n type: 'text-delta',\n textDelta: validationResult.value.textDelta,\n });\n\n textDelta = '';\n isFirstDelta = false;\n }\n }\n\n return;\n }\n\n switch (chunk.type) {\n case 'response-metadata': {\n response = {\n id: chunk.id ?? response.id,\n timestamp: chunk.timestamp ?? response.timestamp,\n modelId: chunk.modelId ?? response.modelId,\n };\n break;\n }\n\n case 'finish': {\n // send final text delta:\n if (textDelta !== '') {\n controller.enqueue({ type: 'text-delta', textDelta });\n }\n\n // store finish reason for telemetry:\n finishReason = chunk.finishReason;\n\n // store usage and metadata for promises and onFinish callback:\n usage = calculateLanguageModelUsage(chunk.usage);\n providerMetadata = chunk.providerMetadata;\n\n controller.enqueue({ ...chunk, usage, response });\n\n // resolve promises that can be resolved now:\n self.usagePromise.resolve(usage);\n self.providerMetadataPromise.resolve(providerMetadata);\n self.responsePromise.resolve({\n ...response,\n headers: rawResponse?.headers,\n });\n\n // resolve the object promise with the latest object:\n const validationResult = outputStrategy.validateFinalResult(\n latestObjectJson,\n {\n text: accumulatedText,\n response,\n usage,\n },\n );\n\n if (validationResult.success) {\n object = validationResult.value;\n self.objectPromise.resolve(object);\n } else {\n error = new NoObjectGeneratedError({\n message:\n 'No object generated: response did not match schema.',\n cause: validationResult.error,\n text: accumulatedText,\n response,\n usage,\n finishReason: finishReason,\n });\n self.objectPromise.reject(error);\n }\n\n break;\n }\n\n default: {\n controller.enqueue(chunk);\n break;\n }\n }\n },\n\n // invoke onFinish callback and resolve toolResults promise when the stream is about to close:\n async flush(controller) {\n try {\n const finalUsage = usage ?? {\n promptTokens: NaN,\n completionTokens: NaN,\n totalTokens: NaN,\n };\n\n doStreamSpan.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n 'ai.response.finishReason': finishReason,\n 'ai.response.object': {\n output: () => JSON.stringify(object),\n },\n 'ai.response.id': response.id,\n 'ai.response.model': response.modelId,\n 'ai.response.timestamp':\n response.timestamp.toISOString(),\n 'ai.response.providerMetadata':\n JSON.stringify(providerMetadata),\n\n 'ai.usage.promptTokens': finalUsage.promptTokens,\n 'ai.usage.completionTokens':\n finalUsage.completionTokens,\n\n // standardized gen-ai llm span attributes:\n 'gen_ai.response.finish_reasons': [finishReason],\n 'gen_ai.response.id': response.id,\n 'gen_ai.response.model': response.modelId,\n 'gen_ai.usage.input_tokens': finalUsage.promptTokens,\n 'gen_ai.usage.output_tokens':\n finalUsage.completionTokens,\n },\n }),\n );\n\n // finish doStreamSpan before other operations for correct timing:\n doStreamSpan.end();\n\n // Add response information to the root span:\n rootSpan.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n 'ai.usage.promptTokens': finalUsage.promptTokens,\n 'ai.usage.completionTokens':\n finalUsage.completionTokens,\n 'ai.response.object': {\n output: () => JSON.stringify(object),\n },\n 'ai.response.providerMetadata':\n JSON.stringify(providerMetadata),\n },\n }),\n );\n\n // call onFinish callback:\n await onFinish?.({\n usage: finalUsage,\n object,\n error,\n response: {\n ...response,\n headers: rawResponse?.headers,\n },\n warnings,\n providerMetadata,\n experimental_providerMetadata: providerMetadata,\n });\n } catch (error) {\n controller.enqueue({ type: 'error', error });\n } finally {\n rootSpan.end();\n }\n },\n }),\n );\n\n stitchableStream.addStream(transformedStream);\n },\n })\n .catch(error => {\n // add an empty stream with an error to break the stream:\n stitchableStream.addStream(\n new ReadableStream({\n start(controller) {\n controller.enqueue({ type: 'error', error });\n controller.close();\n },\n }),\n );\n })\n .finally(() => {\n stitchableStream.close();\n });\n\n this.outputStrategy = outputStrategy;\n }\n\n get object() {\n return this.objectPromise.value;\n }\n\n get usage() {\n return this.usagePromise.value;\n }\n\n get experimental_providerMetadata() {\n return this.providerMetadataPromise.value;\n }\n\n get providerMetadata() {\n return this.providerMetadataPromise.value;\n }\n\n get warnings() {\n return this.warningsPromise.value;\n }\n\n get request() {\n return this.requestPromise.value;\n }\n\n get response() {\n return this.responsePromise.value;\n }\n\n get partialObjectStream(): AsyncIterableStream<PARTIAL> {\n return createAsyncIterableStream(\n this.baseStream.pipeThrough(\n new TransformStream<ObjectStreamPart<PARTIAL>, PARTIAL>({\n transform(chunk, controller) {\n switch (chunk.type) {\n case 'object':\n controller.enqueue(chunk.object);\n break;\n\n case 'text-delta':\n case 'finish':\n case 'error': // suppress error (use onError instead)\n break;\n\n default: {\n const _exhaustiveCheck: never = chunk;\n throw new Error(`Unsupported chunk type: ${_exhaustiveCheck}`);\n }\n }\n },\n }),\n ),\n );\n }\n\n get elementStream(): ELEMENT_STREAM {\n return this.outputStrategy.createElementStream(this.baseStream);\n }\n\n get textStream(): AsyncIterableStream<string> {\n return createAsyncIterableStream(\n this.baseStream.pipeThrough(\n new TransformStream<ObjectStreamPart<PARTIAL>, string>({\n transform(chunk, controller) {\n switch (chunk.type) {\n case 'text-delta':\n controller.enqueue(chunk.textDelta);\n break;\n\n case 'object':\n case 'finish':\n case 'error': // suppress error (use onError instead)\n break;\n\n default: {\n const _exhaustiveCheck: never = chunk;\n throw new Error(`Unsupported chunk type: ${_exhaustiveCheck}`);\n }\n }\n },\n }),\n ),\n );\n }\n\n get fullStream(): AsyncIterableStream<ObjectStreamPart<PARTIAL>> {\n return createAsyncIterableStream(this.baseStream);\n }\n\n pipeTextStreamToResponse(response: ServerResponse, init?: ResponseInit) {\n writeToServerResponse({\n response,\n status: init?.status,\n statusText: init?.statusText,\n headers: prepareOutgoingHttpHeaders(init?.headers, {\n contentType: 'text/plain; charset=utf-8',\n }),\n stream: this.textStream.pipeThrough(new TextEncoderStream()),\n });\n }\n\n toTextStreamResponse(init?: ResponseInit): Response {\n return new Response(this.textStream.pipeThrough(new TextEncoderStream()), {\n status: init?.status ?? 200,\n headers: prepareResponseHeaders(init?.headers, {\n contentType: 'text/plain; charset=utf-8',\n }),\n });\n }\n}\n\nexport type ObjectStreamInputPart =\n | {\n type: 'error';\n error: unknown;\n }\n | {\n type: 'response-metadata';\n id?: string;\n timestamp?: Date;\n modelId?: string;\n }\n | {\n type: 'finish';\n finishReason: FinishReason;\n logprobs?: LogProbs;\n usage: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n };\n","import { createIdGenerator, IDGenerator } from '@ai-sdk/provider-utils';\nimport { Tracer } from '@opentelemetry/api';\nimport { InvalidArgumentError } from '../../errors/invalid-argument-error';\nimport { NoOutputSpecifiedError } from '../../errors/no-output-specified-error';\nimport { ToolExecutionError } from '../../errors/tool-execution-error';\nimport { UnsupportedModelVersionError } from '../../errors/unsupported-model-version-error';\nimport { CoreAssistantMessage, CoreMessage } from '../prompt';\nimport { CallSettings } from '../prompt/call-settings';\nimport { convertToLanguageModelPrompt } from '../prompt/convert-to-language-model-prompt';\nimport { prepareCallSettings } from '../prompt/prepare-call-settings';\nimport { prepareRetries } from '../prompt/prepare-retries';\nimport { prepareToolsAndToolChoice } from '../prompt/prepare-tools-and-tool-choice';\nimport { Prompt } from '../prompt/prompt';\nimport { standardizePrompt } from '../prompt/standardize-prompt';\nimport { stringifyForTelemetry } from '../prompt/stringify-for-telemetry';\nimport { assembleOperationName } from '../telemetry/assemble-operation-name';\nimport { getBaseTelemetryAttributes } from '../telemetry/get-base-telemetry-attributes';\nimport { getTracer } from '../telemetry/get-tracer';\nimport { recordErrorOnSpan, recordSpan } from '../telemetry/record-span';\nimport { selectTelemetryAttributes } from '../telemetry/select-telemetry-attributes';\nimport { TelemetrySettings } from '../telemetry/telemetry-settings';\nimport { LanguageModel, ToolChoice } from '../types';\nimport { ProviderMetadata, ProviderOptions } from '../types/provider-metadata';\nimport {\n addLanguageModelUsage,\n calculateLanguageModelUsage,\n LanguageModelUsage,\n} from '../types/usage';\nimport { removeTextAfterLastWhitespace } from '../util/remove-text-after-last-whitespace';\nimport { GenerateTextResult } from './generate-text-result';\nimport { DefaultGeneratedFile, GeneratedFile } from './generated-file';\nimport { Output } from './output';\nimport { parseToolCall } from './parse-tool-call';\nimport { asReasoningText, ReasoningDetail } from './reasoning-detail';\nimport { ResponseMessage, StepResult } from './step-result';\nimport { toResponseMessages } from './to-response-messages';\nimport { ToolCallArray } from './tool-call';\nimport { ToolCallRepairFunction } from './tool-call-repair';\nimport { ToolResultArray } from './tool-result';\nimport { ToolSet } from './tool-set';\n\nconst originalGenerateId = createIdGenerator({\n prefix: 'aitxt',\n size: 24,\n});\n\nconst originalGenerateMessageId = createIdGenerator({\n prefix: 'msg',\n size: 24,\n});\n\n/**\nCallback that is set using the `onStepFinish` option.\n\n@param stepResult - The result of the step.\n */\nexport type GenerateTextOnStepFinishCallback<TOOLS extends ToolSet> = (\n stepResult: StepResult<TOOLS>,\n) => Promise<void> | void;\n\n/**\nGenerate a text and call tools for a given prompt using a language model.\n\nThis function does not stream the output. If you want to stream the output, use `streamText` instead.\n\n@param model - The language model to use.\n\n@param tools - Tools that are accessible to and can be called by the model. The model needs to support calling tools.\n@param toolChoice - The tool choice strategy. Default: 'auto'.\n\n@param system - A system message that will be part of the prompt.\n@param prompt - A simple text prompt. You can either use `prompt` or `messages` but not both.\n@param messages - A list of messages. You can either use `prompt` or `messages` but not both.\n\n@param maxTokens - Maximum number of tokens to generate.\n@param temperature - Temperature setting.\nThe value is passed through to the provider. The range depends on the provider and model.\nIt is recommended to set either `temperature` or `topP`, but not both.\n@param topP - Nucleus sampling.\nThe value is passed through to the provider. The range depends on the provider and model.\nIt is recommended to set either `temperature` or `topP`, but not both.\n@param topK - Only sample from the top K options for each subsequent token.\nUsed to remove \"long tail\" low probability responses.\nRecommended for advanced use cases only. You usually only need to use temperature.\n@param presencePenalty - Presence penalty setting.\nIt affects the likelihood of the model to repeat information that is already in the prompt.\nThe value is passed through to the provider. The range depends on the provider and model.\n@param frequencyPenalty - Frequency penalty setting.\nIt affects the likelihood of the model to repeatedly use the same words or phrases.\nThe value is passed through to the provider. The range depends on the provider and model.\n@param stopSequences - Stop sequences.\nIf set, the model will stop generating text when one of the stop sequences is generated.\n@param seed - The seed (integer) to use for random sampling.\nIf set and supported by the model, calls will generate deterministic results.\n\n@param maxRetries - Maximum number of retries. Set to 0 to disable retries. Default: 2.\n@param abortSignal - An optional abort signal that can be used to cancel the call.\n@param headers - Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers.\n\n@param maxSteps - Maximum number of sequential LLM calls (steps), e.g. when you use tool calls.\n@param experimental_generateMessageId - Generate a unique ID for each message.\n\n@param onStepFinish - Callback that is called when each step (LLM call) is finished, including intermediate steps.\n\n@returns\nA result object that contains the generated text, the results of the tool calls, and additional information.\n */\nexport async function generateText<\n TOOLS extends ToolSet,\n OUTPUT = never,\n OUTPUT_PARTIAL = never,\n>({\n model,\n tools,\n toolChoice,\n system,\n prompt,\n messages,\n maxRetries: maxRetriesArg,\n abortSignal,\n headers,\n maxSteps = 1,\n experimental_generateMessageId: generateMessageId = originalGenerateMessageId,\n experimental_output: output,\n experimental_continueSteps: continueSteps = false,\n experimental_telemetry: telemetry,\n experimental_providerMetadata,\n providerOptions = experimental_providerMetadata,\n experimental_activeTools: activeTools,\n experimental_prepareStep: prepareStep,\n experimental_repairToolCall: repairToolCall,\n _internal: {\n generateId = originalGenerateId,\n currentDate = () => new Date(),\n } = {},\n onStepFinish,\n ...settings\n}: CallSettings &\n Prompt & {\n /**\nThe language model to use.\n */\n model: LanguageModel;\n\n /**\nThe tools that the model can call. The model needs to support calling tools.\n*/\n tools?: TOOLS;\n\n /**\nThe tool choice strategy. Default: 'auto'.\n */\n toolChoice?: ToolChoice<TOOLS>;\n\n /**\nMaximum number of sequential LLM calls (steps), e.g. when you use tool calls. Must be at least 1.\n\nA maximum number is required to prevent infinite loops in the case of misconfigured tools.\n\nBy default, it's set to 1, which means that only a single LLM call is made.\n */\n maxSteps?: number;\n\n /**\nGenerate a unique ID for each message.\n */\n experimental_generateMessageId?: IDGenerator;\n\n /**\nWhen enabled, the model will perform additional steps if the finish reason is \"length\" (experimental).\n\nBy default, it's set to false.\n */\n experimental_continueSteps?: boolean;\n\n /**\nOptional telemetry configuration (experimental).\n */\n experimental_telemetry?: TelemetrySettings;\n\n /**\nAdditional provider-specific options. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n */\n providerOptions?: ProviderOptions;\n\n /**\n@deprecated Use `providerOptions` instead.\n */\n experimental_providerMetadata?: ProviderMetadata;\n\n /**\nLimits the tools that are available for the model to call without\nchanging the tool call and result types in the result.\n */\n experimental_activeTools?: Array<keyof TOOLS>;\n\n /**\nOptional specification for parsing structured outputs from the LLM response.\n */\n experimental_output?: Output<OUTPUT, OUTPUT_PARTIAL>;\n\n /**\nOptional function that you can use to provide different settings for a step.\n\n@param options - The options for the step.\n@param options.steps - The steps that have been executed so far.\n@param options.stepNumber - The number of the step that is being executed.\n@param options.maxSteps - The maximum number of steps.\n@param options.model - The model that is being used.\n\n@returns An object that contains the settings for the step.\nIf you return undefined (or for undefined settings), the settings from the outer level will be used.\n */\n experimental_prepareStep?: (options: {\n steps: Array<StepResult<TOOLS>>;\n stepNumber: number;\n maxSteps: number;\n model: LanguageModel;\n }) => PromiseLike<\n | {\n model?: LanguageModel;\n toolChoice?: ToolChoice<TOOLS>;\n experimental_activeTools?: Array<keyof TOOLS>;\n }\n | undefined\n >;\n\n /**\nA function that attempts to repair a tool call that failed to parse.\n */\n experimental_repairToolCall?: ToolCallRepairFunction<TOOLS>;\n\n /**\n Callback that is called when each step (LLM call) is finished, including intermediate steps.\n */\n onStepFinish?: GenerateTextOnStepFinishCallback<TOOLS>;\n\n /**\n * Internal. For test use only. May change without notice.\n */\n _internal?: {\n generateId?: IDGenerator;\n currentDate?: () => Date;\n };\n }): Promise<GenerateTextResult<TOOLS, OUTPUT>> {\n if (typeof model === 'string' || model.specificationVersion !== 'v1') {\n throw new UnsupportedModelVersionError();\n }\n\n if (maxSteps < 1) {\n throw new InvalidArgumentError({\n parameter: 'maxSteps',\n value: maxSteps,\n message: 'maxSteps must be at least 1',\n });\n }\n\n const { maxRetries, retry } = prepareRetries({ maxRetries: maxRetriesArg });\n\n const baseTelemetryAttributes = getBaseTelemetryAttributes({\n model,\n telemetry,\n headers,\n settings: { ...settings, maxRetries },\n });\n\n const initialPrompt = standardizePrompt({\n prompt: {\n system: output?.injectIntoSystemPrompt({ system, model }) ?? system,\n prompt,\n messages,\n },\n tools,\n });\n\n const tracer = getTracer(telemetry);\n\n return recordSpan({\n name: 'ai.generateText',\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: 'ai.generateText',\n telemetry,\n }),\n ...baseTelemetryAttributes,\n // model:\n 'ai.model.provider': model.provider,\n 'ai.model.id': model.modelId,\n // specific settings that only make sense on the outer level:\n 'ai.prompt': {\n input: () => JSON.stringify({ system, prompt, messages }),\n },\n 'ai.settings.maxSteps': maxSteps,\n },\n }),\n tracer,\n fn: async span => {\n const callSettings = prepareCallSettings(settings);\n\n let currentModelResponse: Awaited<\n ReturnType<LanguageModel['doGenerate']>\n > & { response: { id: string; timestamp: Date; modelId: string } };\n let currentToolCalls: ToolCallArray<TOOLS> = [];\n let currentToolResults: ToolResultArray<TOOLS> = [];\n let currentReasoningDetails: Array<ReasoningDetail> = [];\n let stepCount = 0;\n const responseMessages: Array<ResponseMessage> = [];\n let text = '';\n const sources: GenerateTextResult<TOOLS, OUTPUT>['sources'] = [];\n const steps: GenerateTextResult<TOOLS, OUTPUT>['steps'] = [];\n let usage: LanguageModelUsage = {\n completionTokens: 0,\n promptTokens: 0,\n totalTokens: 0,\n };\n\n let stepType: 'initial' | 'tool-result' | 'continue' | 'done' = 'initial';\n\n do {\n // after the 1st step, we need to switch to messages format:\n const promptFormat = stepCount === 0 ? initialPrompt.type : 'messages';\n\n const stepInputMessages = [\n ...initialPrompt.messages,\n ...responseMessages,\n ];\n\n const prepareStepResult = await prepareStep?.({\n model,\n steps,\n maxSteps,\n stepNumber: stepCount,\n });\n\n const stepToolChoice = prepareStepResult?.toolChoice ?? toolChoice;\n const stepActiveTools =\n prepareStepResult?.experimental_activeTools ?? activeTools;\n const stepModel = prepareStepResult?.model ?? model;\n\n const promptMessages = await convertToLanguageModelPrompt({\n prompt: {\n type: promptFormat,\n system: initialPrompt.system,\n messages: stepInputMessages,\n },\n modelSupportsImageUrls: stepModel.supportsImageUrls,\n modelSupportsUrl: stepModel.supportsUrl?.bind(stepModel), // support 'this' context\n });\n\n const mode = {\n type: 'regular' as const,\n ...prepareToolsAndToolChoice({\n tools,\n toolChoice: stepToolChoice,\n activeTools: stepActiveTools,\n }),\n };\n\n currentModelResponse = await retry(() =>\n recordSpan({\n name: 'ai.generateText.doGenerate',\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: 'ai.generateText.doGenerate',\n telemetry,\n }),\n ...baseTelemetryAttributes,\n // model:\n 'ai.model.provider': stepModel.provider,\n 'ai.model.id': stepModel.modelId,\n // prompt:\n 'ai.prompt.format': { input: () => promptFormat },\n 'ai.prompt.messages': {\n input: () => stringifyForTelemetry(promptMessages),\n },\n 'ai.prompt.tools': {\n // convert the language model level tools:\n input: () => mode.tools?.map(tool => JSON.stringify(tool)),\n },\n 'ai.prompt.toolChoice': {\n input: () =>\n mode.toolChoice != null\n ? JSON.stringify(mode.toolChoice)\n : undefined,\n },\n\n // standardized gen-ai llm span attributes:\n 'gen_ai.system': stepModel.provider,\n 'gen_ai.request.model': stepModel.modelId,\n 'gen_ai.request.frequency_penalty': settings.frequencyPenalty,\n 'gen_ai.request.max_tokens': settings.maxTokens,\n 'gen_ai.request.presence_penalty': settings.presencePenalty,\n 'gen_ai.request.stop_sequences': settings.stopSequences,\n 'gen_ai.request.temperature': settings.temperature,\n 'gen_ai.request.top_k': settings.topK,\n 'gen_ai.request.top_p': settings.topP,\n },\n }),\n tracer,\n fn: async span => {\n const result = await stepModel.doGenerate({\n mode,\n ...callSettings,\n inputFormat: promptFormat,\n responseFormat: output?.responseFormat({ model }),\n prompt: promptMessages,\n providerMetadata: providerOptions,\n abortSignal,\n headers,\n });\n\n // Fill in default values:\n const responseData = {\n id: result.response?.id ?? generateId(),\n timestamp: result.response?.timestamp ?? currentDate(),\n modelId: result.response?.modelId ?? stepModel.modelId,\n };\n\n // Add response information to the span:\n span.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n 'ai.response.finishReason': result.finishReason,\n 'ai.response.text': {\n output: () => result.text,\n },\n 'ai.response.toolCalls': {\n output: () => JSON.stringify(result.toolCalls),\n },\n 'ai.response.id': responseData.id,\n 'ai.response.model': responseData.modelId,\n 'ai.response.timestamp':\n responseData.timestamp.toISOString(),\n 'ai.response.providerMetadata': JSON.stringify(\n result.providerMetadata,\n ),\n\n 'ai.usage.promptTokens': result.usage.promptTokens,\n 'ai.usage.completionTokens': result.usage.completionTokens,\n\n // standardized gen-ai llm span attributes:\n 'gen_ai.response.finish_reasons': [result.finishReason],\n 'gen_ai.response.id': responseData.id,\n 'gen_ai.response.model': responseData.modelId,\n 'gen_ai.usage.input_tokens': result.usage.promptTokens,\n 'gen_ai.usage.output_tokens': result.usage.completionTokens,\n },\n }),\n );\n\n return { ...result, response: responseData };\n },\n }),\n );\n\n // parse tool calls:\n currentToolCalls = await Promise.all(\n (currentModelResponse.toolCalls ?? []).map(toolCall =>\n parseToolCall({\n toolCall,\n tools,\n repairToolCall,\n system,\n messages: stepInputMessages,\n }),\n ),\n );\n\n // execute tools:\n currentToolResults =\n tools == null\n ? []\n : await executeTools({\n toolCalls: currentToolCalls,\n tools,\n tracer,\n telemetry,\n messages: stepInputMessages,\n abortSignal,\n });\n\n // token usage:\n const currentUsage = calculateLanguageModelUsage(\n currentModelResponse.usage,\n );\n usage = addLanguageModelUsage(usage, currentUsage);\n\n // check if another step is needed:\n let nextStepType: 'done' | 'continue' | 'tool-result' = 'done';\n if (++stepCount < maxSteps) {\n if (\n continueSteps &&\n currentModelResponse.finishReason === 'length' &&\n // only use continue when there are no tool calls:\n currentToolCalls.length === 0\n ) {\n nextStepType = 'continue';\n } else if (\n // there are tool calls:\n currentToolCalls.length > 0 &&\n // all current tool calls have results:\n currentToolResults.length === currentToolCalls.length\n ) {\n nextStepType = 'tool-result';\n }\n }\n\n // text:\n const originalText = currentModelResponse.text ?? '';\n const stepTextLeadingWhitespaceTrimmed =\n stepType === 'continue' && // only for continue steps\n text.trimEnd() !== text // only trim when there is preceding whitespace\n ? originalText.trimStart()\n : originalText;\n const stepText =\n nextStepType === 'continue'\n ? removeTextAfterLastWhitespace(stepTextLeadingWhitespaceTrimmed)\n : stepTextLeadingWhitespaceTrimmed;\n\n text =\n nextStepType === 'continue' || stepType === 'continue'\n ? text + stepText\n : stepText;\n\n currentReasoningDetails = asReasoningDetails(\n currentModelResponse.reasoning,\n );\n\n // sources:\n sources.push(...(currentModelResponse.sources ?? []));\n\n // append to messages for potential next step:\n if (stepType === 'continue') {\n // continue step: update the last assistant message\n // continue is only possible when there are no tool calls,\n // so we can assume that there is a single last assistant message:\n const lastMessage = responseMessages[\n responseMessages.length - 1\n ] as CoreAssistantMessage;\n\n if (typeof lastMessage.content === 'string') {\n lastMessage.content += stepText;\n } else {\n lastMessage.content.push({\n text: stepText,\n type: 'text',\n });\n }\n } else {\n responseMessages.push(\n ...toResponseMessages({\n text,\n files: asFiles(currentModelResponse.files),\n reasoning: asReasoningDetails(currentModelResponse.reasoning),\n tools: tools ?? ({} as TOOLS),\n toolCalls: currentToolCalls,\n toolResults: currentToolResults,\n messageId: generateMessageId(),\n generateMessageId,\n }),\n );\n }\n\n // Add step information (after response messages are updated):\n const currentStepResult: StepResult<TOOLS> = {\n stepType,\n text: stepText,\n // TODO v5: rename reasoning to reasoningText (and use reasoning for composite array)\n reasoning: asReasoningText(currentReasoningDetails),\n reasoningDetails: currentReasoningDetails,\n files: asFiles(currentModelResponse.files),\n sources: currentModelResponse.sources ?? [],\n toolCalls: currentToolCalls,\n toolResults: currentToolResults,\n finishReason: currentModelResponse.finishReason,\n usage: currentUsage,\n warnings: currentModelResponse.warnings,\n logprobs: currentModelResponse.logprobs,\n request: currentModelResponse.request ?? {},\n response: {\n ...currentModelResponse.response,\n headers: currentModelResponse.rawResponse?.headers,\n body: currentModelResponse.rawResponse?.body,\n\n // deep clone msgs to avoid mutating past messages in multi-step:\n messages: structuredClone(responseMessages),\n },\n providerMetadata: currentModelResponse.providerMetadata,\n experimental_providerMetadata: currentModelResponse.providerMetadata,\n isContinued: nextStepType === 'continue',\n };\n steps.push(currentStepResult);\n await onStepFinish?.(currentStepResult);\n\n stepType = nextStepType;\n } while (stepType !== 'done');\n\n // Add response information to the span:\n span.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n 'ai.response.finishReason': currentModelResponse.finishReason,\n 'ai.response.text': {\n output: () => currentModelResponse.text,\n },\n 'ai.response.toolCalls': {\n output: () => JSON.stringify(currentModelResponse.toolCalls),\n },\n\n 'ai.usage.promptTokens': currentModelResponse.usage.promptTokens,\n 'ai.usage.completionTokens':\n currentModelResponse.usage.completionTokens,\n 'ai.response.providerMetadata': JSON.stringify(\n currentModelResponse.providerMetadata,\n ),\n },\n }),\n );\n\n return new DefaultGenerateTextResult({\n text,\n files: asFiles(currentModelResponse.files),\n reasoning: asReasoningText(currentReasoningDetails),\n reasoningDetails: currentReasoningDetails,\n sources,\n outputResolver: () => {\n if (output == null) {\n throw new NoOutputSpecifiedError();\n }\n\n return output.parseOutput(\n { text },\n {\n response: currentModelResponse.response,\n usage,\n finishReason: currentModelResponse.finishReason,\n },\n );\n },\n toolCalls: currentToolCalls,\n toolResults: currentToolResults,\n finishReason: currentModelResponse.finishReason,\n usage,\n warnings: currentModelResponse.warnings,\n request: currentModelResponse.request ?? {},\n response: {\n ...currentModelResponse.response,\n headers: currentModelResponse.rawResponse?.headers,\n body: currentModelResponse.rawResponse?.body,\n messages: responseMessages,\n },\n logprobs: currentModelResponse.logprobs,\n steps,\n providerMetadata: currentModelResponse.providerMetadata,\n });\n },\n });\n}\n\nasync function executeTools<TOOLS extends ToolSet>({\n toolCalls,\n tools,\n tracer,\n telemetry,\n messages,\n abortSignal,\n}: {\n toolCalls: ToolCallArray<TOOLS>;\n tools: TOOLS;\n tracer: Tracer;\n telemetry: TelemetrySettings | undefined;\n messages: CoreMessage[];\n abortSignal: AbortSignal | undefined;\n}): Promise<ToolResultArray<TOOLS>> {\n const toolResults = await Promise.all(\n toolCalls.map(async ({ toolCallId, toolName, args }) => {\n const tool = tools[toolName];\n\n if (tool?.execute == null) {\n return undefined;\n }\n\n const result = await recordSpan({\n name: 'ai.toolCall',\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: 'ai.toolCall',\n telemetry,\n }),\n 'ai.toolCall.name': toolName,\n 'ai.toolCall.id': toolCallId,\n 'ai.toolCall.args': {\n output: () => JSON.stringify(args),\n },\n },\n }),\n tracer,\n fn: async span => {\n try {\n const result = await tool.execute!(args, {\n toolCallId,\n messages,\n abortSignal,\n });\n\n try {\n span.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n 'ai.toolCall.result': {\n output: () => JSON.stringify(result),\n },\n },\n }),\n );\n } catch (ignored) {\n // JSON stringify might fail if the result is not serializable,\n // in which case we just ignore it. In the future we might want to\n // add an optional serialize method to the tool interface and warn\n // if the result is not serializable.\n }\n\n return result;\n } catch (error) {\n recordErrorOnSpan(span, error);\n throw new ToolExecutionError({\n toolCallId,\n toolName,\n toolArgs: args,\n cause: error,\n });\n }\n },\n });\n\n return {\n type: 'tool-result',\n toolCallId,\n toolName,\n args,\n result,\n } as ToolResultArray<TOOLS>[number];\n }),\n );\n\n return toolResults.filter(\n (result): result is NonNullable<typeof result> => result != null,\n );\n}\n\nclass DefaultGenerateTextResult<TOOLS extends ToolSet, OUTPUT>\n implements GenerateTextResult<TOOLS, OUTPUT>\n{\n readonly text: GenerateTextResult<TOOLS, OUTPUT>['text'];\n readonly files: GenerateTextResult<TOOLS, OUTPUT>['files'];\n readonly reasoning: GenerateTextResult<TOOLS, OUTPUT>['reasoning'];\n readonly reasoningDetails: GenerateTextResult<\n TOOLS,\n OUTPUT\n >['reasoningDetails'];\n readonly toolCalls: GenerateTextResult<TOOLS, OUTPUT>['toolCalls'];\n readonly toolResults: GenerateTextResult<TOOLS, OUTPUT>['toolResults'];\n readonly finishReason: GenerateTextResult<TOOLS, OUTPUT>['finishReason'];\n readonly usage: GenerateTextResult<TOOLS, OUTPUT>['usage'];\n readonly warnings: GenerateTextResult<TOOLS, OUTPUT>['warnings'];\n readonly steps: GenerateTextResult<TOOLS, OUTPUT>['steps'];\n readonly logprobs: GenerateTextResult<TOOLS, OUTPUT>['logprobs'];\n readonly experimental_providerMetadata: GenerateTextResult<\n TOOLS,\n OUTPUT\n >['experimental_providerMetadata'];\n readonly providerMetadata: GenerateTextResult<\n TOOLS,\n OUTPUT\n >['providerMetadata'];\n readonly response: GenerateTextResult<TOOLS, OUTPUT>['response'];\n readonly request: GenerateTextResult<TOOLS, OUTPUT>['request'];\n readonly sources: GenerateTextResult<TOOLS, OUTPUT>['sources'];\n\n private readonly outputResolver: () => GenerateTextResult<\n TOOLS,\n OUTPUT\n >['experimental_output'];\n\n constructor(options: {\n text: GenerateTextResult<TOOLS, OUTPUT>['text'];\n files: GenerateTextResult<TOOLS, OUTPUT>['files'];\n reasoning: GenerateTextResult<TOOLS, OUTPUT>['reasoning'];\n reasoningDetails: GenerateTextResult<TOOLS, OUTPUT>['reasoningDetails'];\n toolCalls: GenerateTextResult<TOOLS, OUTPUT>['toolCalls'];\n toolResults: GenerateTextResult<TOOLS, OUTPUT>['toolResults'];\n finishReason: GenerateTextResult<TOOLS, OUTPUT>['finishReason'];\n usage: GenerateTextResult<TOOLS, OUTPUT>['usage'];\n warnings: GenerateTextResult<TOOLS, OUTPUT>['warnings'];\n logprobs: GenerateTextResult<TOOLS, OUTPUT>['logprobs'];\n steps: GenerateTextResult<TOOLS, OUTPUT>['steps'];\n providerMetadata: GenerateTextResult<TOOLS, OUTPUT>['providerMetadata'];\n response: GenerateTextResult<TOOLS, OUTPUT>['response'];\n request: GenerateTextResult<TOOLS, OUTPUT>['request'];\n outputResolver: () => GenerateTextResult<\n TOOLS,\n OUTPUT\n >['experimental_output'];\n sources: GenerateTextResult<TOOLS, OUTPUT>['sources'];\n }) {\n this.text = options.text;\n this.files = options.files;\n this.reasoning = options.reasoning;\n this.reasoningDetails = options.reasoningDetails;\n this.toolCalls = options.toolCalls;\n this.toolResults = options.toolResults;\n this.finishReason = options.finishReason;\n this.usage = options.usage;\n this.warnings = options.warnings;\n this.request = options.request;\n this.response = options.response;\n this.steps = options.steps;\n this.experimental_providerMetadata = options.providerMetadata;\n this.providerMetadata = options.providerMetadata;\n this.logprobs = options.logprobs;\n this.outputResolver = options.outputResolver;\n this.sources = options.sources;\n }\n\n get experimental_output() {\n return this.outputResolver();\n }\n}\n\nfunction asReasoningDetails(\n reasoning:\n | string\n | Array<\n | { type: 'text'; text: string; signature?: string }\n | { type: 'redacted'; data: string }\n >\n | undefined,\n): Array<\n | { type: 'text'; text: string; signature?: string }\n | { type: 'redacted'; data: string }\n> {\n if (reasoning == null) {\n return [];\n }\n\n if (typeof reasoning === 'string') {\n return [{ type: 'text', text: reasoning }];\n }\n\n return reasoning;\n}\n\nfunction asFiles(\n files:\n | Array<{\n data: string | Uint8Array;\n mimeType: string;\n }>\n | undefined,\n): Array<GeneratedFile> {\n return files?.map(file => new DefaultGeneratedFile(file)) ?? [];\n}\n","import { safeParseJSON, safeValidateTypes } from '@ai-sdk/provider-utils';\nimport {\n asSchema,\n DeepPartial,\n parsePartialJson,\n Schema,\n} from '@ai-sdk/ui-utils';\nimport { z } from 'zod';\nimport { NoObjectGeneratedError } from '../../errors';\nimport { injectJsonInstruction } from '../generate-object/inject-json-instruction';\nimport {\n FinishReason,\n LanguageModel,\n LanguageModelV1CallOptions,\n} from '../types/language-model';\nimport { LanguageModelResponseMetadata } from '../types/language-model-response-metadata';\nimport { LanguageModelUsage } from '../types/usage';\n\nexport interface Output<OUTPUT, PARTIAL> {\n readonly type: 'object' | 'text';\n injectIntoSystemPrompt(options: {\n system: string | undefined;\n model: LanguageModel;\n }): string | undefined;\n\n responseFormat: (options: {\n model: LanguageModel;\n }) => LanguageModelV1CallOptions['responseFormat'];\n\n parsePartial(options: { text: string }): { partial: PARTIAL } | undefined;\n\n parseOutput(\n options: { text: string },\n context: {\n response: LanguageModelResponseMetadata;\n usage: LanguageModelUsage;\n finishReason: FinishReason;\n },\n ): OUTPUT;\n}\n\nexport const text = (): Output<string, string> => ({\n type: 'text',\n\n responseFormat: () => ({ type: 'text' }),\n\n injectIntoSystemPrompt({ system }: { system: string | undefined }) {\n return system;\n },\n\n parsePartial({ text }: { text: string }) {\n return { partial: text };\n },\n\n parseOutput({ text }: { text: string }) {\n return text;\n },\n});\n\nexport const object = <OUTPUT>({\n schema: inputSchema,\n}: {\n schema: z.Schema<OUTPUT, z.ZodTypeDef, any> | Schema<OUTPUT>;\n}): Output<OUTPUT, DeepPartial<OUTPUT>> => {\n const schema = asSchema(inputSchema);\n\n return {\n type: 'object',\n\n responseFormat: ({ model }) => ({\n type: 'json',\n schema: model.supportsStructuredOutputs ? schema.jsonSchema : undefined,\n }),\n\n injectIntoSystemPrompt({ system, model }) {\n // when the model supports structured outputs,\n // we can use the system prompt as is:\n return model.supportsStructuredOutputs\n ? system\n : injectJsonInstruction({\n prompt: system,\n schema: schema.jsonSchema,\n });\n },\n\n parsePartial({ text }: { text: string }) {\n const result = parsePartialJson(text);\n\n switch (result.state) {\n case 'failed-parse':\n case 'undefined-input':\n return undefined;\n\n case 'repaired-parse':\n case 'successful-parse':\n return {\n // Note: currently no validation of partial results:\n partial: result.value as DeepPartial<OUTPUT>,\n };\n\n default: {\n const _exhaustiveCheck: never = result.state;\n throw new Error(`Unsupported parse state: ${_exhaustiveCheck}`);\n }\n }\n },\n\n parseOutput(\n { text }: { text: string },\n context: {\n response: LanguageModelResponseMetadata;\n usage: LanguageModelUsage;\n finishReason: FinishReason;\n },\n ) {\n const parseResult = safeParseJSON({ text });\n\n if (!parseResult.success) {\n throw new NoObjectGeneratedError({\n message: 'No object generated: could not parse the response.',\n cause: parseResult.error,\n text,\n response: context.response,\n usage: context.usage,\n finishReason: context.finishReason,\n });\n }\n\n const validationResult = safeValidateTypes({\n value: parseResult.value,\n schema,\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,\n response: context.response,\n usage: context.usage,\n finishReason: context.finishReason,\n });\n }\n\n return validationResult.value;\n },\n };\n};\n","/**\n * Merges two readable streams into a single readable stream, emitting values\n * from each stream as they become available.\n *\n * The first stream is prioritized over the second stream. If both streams have\n * values available, the first stream's value is emitted first.\n *\n * @template VALUE1 - The type of values emitted by the first stream.\n * @template VALUE2 - The type of values emitted by the second stream.\n * @param {ReadableStream<VALUE1>} stream1 - The first readable stream.\n * @param {ReadableStream<VALUE2>} stream2 - The second readable stream.\n * @returns {ReadableStream<VALUE1 | VALUE2>} A new readable stream that emits values from both input streams.\n */\nexport function mergeStreams<VALUE1, VALUE2>(\n stream1: ReadableStream<VALUE1>,\n stream2: ReadableStream<VALUE2>,\n): ReadableStream<VALUE1 | VALUE2> {\n const reader1 = stream1.getReader();\n const reader2 = stream2.getReader();\n\n let lastRead1: Promise<ReadableStreamReadResult<VALUE1>> | undefined =\n undefined;\n let lastRead2: Promise<ReadableStreamReadResult<VALUE2>> | undefined =\n undefined;\n\n let stream1Done = false;\n let stream2Done = false;\n\n // only use when stream 2 is done:\n async function readStream1(\n controller: ReadableStreamDefaultController<VALUE1 | VALUE2>,\n ) {\n try {\n if (lastRead1 == null) {\n lastRead1 = reader1.read();\n }\n\n const result = await lastRead1;\n lastRead1 = undefined;\n\n if (!result.done) {\n controller.enqueue(result.value);\n } else {\n controller.close();\n }\n } catch (error) {\n controller.error(error);\n }\n }\n\n // only use when stream 1 is done:\n async function readStream2(\n controller: ReadableStreamDefaultController<VALUE1 | VALUE2>,\n ) {\n try {\n if (lastRead2 == null) {\n lastRead2 = reader2.read();\n }\n\n const result = await lastRead2;\n lastRead2 = undefined;\n\n if (!result.done) {\n controller.enqueue(result.value);\n } else {\n controller.close();\n }\n } catch (error) {\n controller.error(error);\n }\n }\n\n return new ReadableStream<VALUE1 | VALUE2>({\n async pull(controller) {\n try {\n // stream 1 is done, we can only read from stream 2:\n if (stream1Done) {\n await readStream2(controller);\n return;\n }\n\n // stream 2 is done, we can only read from stream 1:\n if (stream2Done) {\n await readStream1(controller);\n return;\n }\n\n // pull the next value from the stream that was read last:\n if (lastRead1 == null) {\n lastRead1 = reader1.read();\n }\n if (lastRead2 == null) {\n lastRead2 = reader2.read();\n }\n\n // Note on Promise.race (prioritizing stream 1 over stream 2):\n // If the iterable contains one or more non-promise values and/or an already settled promise,\n // then Promise.race() will settle to the first of these values found in the iterable.\n const { result, reader } = await Promise.race([\n lastRead1.then(result => ({ result, reader: reader1 })),\n lastRead2.then(result => ({ result, reader: reader2 })),\n ]);\n\n if (!result.done) {\n controller.enqueue(result.value);\n }\n\n if (reader === reader1) {\n lastRead1 = undefined;\n if (result.done) {\n // stream 1 is done, we can only read from stream 2:\n await readStream2(controller);\n stream1Done = true;\n }\n } else {\n lastRead2 = undefined;\n // stream 2 is done, we can only read from stream 1:\n if (result.done) {\n stream2Done = true;\n await readStream1(controller);\n }\n }\n } catch (error) {\n controller.error(error);\n }\n },\n cancel() {\n reader1.cancel();\n reader2.cancel();\n },\n });\n}\n","import { AISDKError, LanguageModelV1Source } from '@ai-sdk/provider';\nimport { createIdGenerator, IDGenerator } from '@ai-sdk/provider-utils';\nimport { DataStreamString, formatDataStreamPart } from '@ai-sdk/ui-utils';\nimport { Span } from '@opentelemetry/api';\nimport { ServerResponse } from 'node:http';\nimport { InvalidArgumentError } from '../../errors/invalid-argument-error';\nimport { InvalidStreamPartError } from '../../errors/invalid-stream-part-error';\nimport { NoOutputSpecifiedError } from '../../errors/no-output-specified-error';\nimport { UnsupportedModelVersionError } from '../../errors/unsupported-model-version-error';\nimport { StreamData } from '../../streams/stream-data';\nimport { asArray } from '../../util/as-array';\nimport { consumeStream } from '../../util/consume-stream';\nimport { DelayedPromise } from '../../util/delayed-promise';\nimport { DataStreamWriter } from '../data-stream/data-stream-writer';\nimport { CallSettings } from '../prompt/call-settings';\nimport { convertToLanguageModelPrompt } from '../prompt/convert-to-language-model-prompt';\nimport { CoreAssistantMessage } from '../prompt/message';\nimport { prepareCallSettings } from '../prompt/prepare-call-settings';\nimport { prepareRetries } from '../prompt/prepare-retries';\nimport { prepareToolsAndToolChoice } from '../prompt/prepare-tools-and-tool-choice';\nimport { Prompt } from '../prompt/prompt';\nimport { standardizePrompt } from '../prompt/standardize-prompt';\nimport { stringifyForTelemetry } from '../prompt/stringify-for-telemetry';\nimport { assembleOperationName } from '../telemetry/assemble-operation-name';\nimport { getBaseTelemetryAttributes } from '../telemetry/get-base-telemetry-attributes';\nimport { getTracer } from '../telemetry/get-tracer';\nimport { recordSpan } from '../telemetry/record-span';\nimport { selectTelemetryAttributes } from '../telemetry/select-telemetry-attributes';\nimport { TelemetrySettings } from '../telemetry/telemetry-settings';\nimport {\n FinishReason,\n LanguageModel,\n LogProbs,\n ToolChoice,\n} from '../types/language-model';\nimport { LanguageModelResponseMetadata } from '../types/language-model-response-metadata';\nimport { ProviderMetadata, ProviderOptions } from '../types/provider-metadata';\nimport { addLanguageModelUsage, LanguageModelUsage } from '../types/usage';\nimport {\n AsyncIterableStream,\n createAsyncIterableStream,\n} from '../util/async-iterable-stream';\nimport { createStitchableStream } from '../util/create-stitchable-stream';\nimport { mergeStreams } from '../util/merge-streams';\nimport { now as originalNow } from '../util/now';\nimport { prepareOutgoingHttpHeaders } from '../util/prepare-outgoing-http-headers';\nimport { prepareResponseHeaders } from '../util/prepare-response-headers';\nimport { splitOnLastWhitespace } from '../util/split-on-last-whitespace';\nimport { writeToServerResponse } from '../util/write-to-server-response';\nimport { GeneratedFile } from './generated-file';\nimport { Output } from './output';\nimport { asReasoningText, ReasoningDetail } from './reasoning-detail';\nimport {\n runToolsTransformation,\n SingleRequestTextStreamPart,\n} from './run-tools-transformation';\nimport { ResponseMessage, StepResult } from './step-result';\nimport {\n ConsumeStreamOptions,\n DataStreamOptions,\n StreamTextResult,\n TextStreamPart,\n} from './stream-text-result';\nimport { toResponseMessages } from './to-response-messages';\nimport { ToolCallUnion } from './tool-call';\nimport { ToolCallRepairFunction } from './tool-call-repair';\nimport { ToolResultUnion } from './tool-result';\nimport { ToolSet } from './tool-set';\n\nconst originalGenerateId = createIdGenerator({\n prefix: 'aitxt',\n size: 24,\n});\n\nconst originalGenerateMessageId = createIdGenerator({\n prefix: 'msg',\n size: 24,\n});\n\n/**\nA transformation that is applied to the stream.\n\n@param stopStream - A function that stops the source stream.\n@param tools - The tools that are accessible to and can be called by the model. The model needs to support calling tools.\n */\nexport type StreamTextTransform<TOOLS extends ToolSet> = (options: {\n tools: TOOLS; // for type inference\n stopStream: () => void;\n}) => TransformStream<TextStreamPart<TOOLS>, TextStreamPart<TOOLS>>;\n\n/**\nCallback that is set using the `onError` option.\n\n@param event - The event that is passed to the callback.\n */\nexport type StreamTextOnErrorCallback = (event: {\n error: unknown;\n}) => Promise<void> | void;\n\n/**\nCallback that is set using the `onStepFinish` option.\n\n@param stepResult - The result of the step.\n */\nexport type StreamTextOnStepFinishCallback<TOOLS extends ToolSet> = (\n stepResult: StepResult<TOOLS>,\n) => Promise<void> | void;\n\n/**\nCallback that is set using the `onChunk` option.\n\n@param event - The event that is passed to the callback.\n */\nexport type StreamTextOnChunkCallback<TOOLS extends ToolSet> = (event: {\n chunk: Extract<\n TextStreamPart<TOOLS>,\n {\n type:\n | 'text-delta'\n | 'reasoning'\n | 'source'\n | 'tool-call'\n | 'tool-call-streaming-start'\n | 'tool-call-delta'\n | 'tool-result';\n }\n >;\n}) => Promise<void> | void;\n\n/**\nCallback that is set using the `onFinish` option.\n\n@param event - The event that is passed to the callback.\n */\nexport type StreamTextOnFinishCallback<TOOLS extends ToolSet> = (\n event: Omit<StepResult<TOOLS>, 'stepType' | 'isContinued'> & {\n /**\nDetails for all steps.\n */\n readonly steps: StepResult<TOOLS>[];\n },\n) => Promise<void> | void;\n\n/**\nGenerate a text and call tools for a given prompt using a language model.\n\nThis function streams the output. If you do not want to stream the output, use `generateText` instead.\n\n@param model - The language model to use.\n@param tools - Tools that are accessible to and can be called by the model. The model needs to support calling tools.\n\n@param system - A system message that will be part of the prompt.\n@param prompt - A simple text prompt. You can either use `prompt` or `messages` but not both.\n@param messages - A list of messages. You can either use `prompt` or `messages` but not both.\n\n@param maxTokens - Maximum number of tokens to generate.\n@param temperature - Temperature setting.\nThe value is passed through to the provider. The range depends on the provider and model.\nIt is recommended to set either `temperature` or `topP`, but not both.\n@param topP - Nucleus sampling.\nThe value is passed through to the provider. The range depends on the provider and model.\nIt is recommended to set either `temperature` or `topP`, but not both.\n@param topK - Only sample from the top K options for each subsequent token.\nUsed to remove \"long tail\" low probability responses.\nRecommended for advanced use cases only. You usually only need to use temperature.\n@param presencePenalty - Presence penalty setting.\nIt affects the likelihood of the model to repeat information that is already in the prompt.\nThe value is passed through to the provider. The range depends on the provider and model.\n@param frequencyPenalty - Frequency penalty setting.\nIt affects the likelihood of the model to repeatedly use the same words or phrases.\nThe value is passed through to the provider. The range depends on the provider and model.\n@param stopSequences - Stop sequences.\nIf set, the model will stop generating text when one of the stop sequences is generated.\n@param seed - The seed (integer) to use for random sampling.\nIf set and supported by the model, calls will generate deterministic results.\n\n@param maxRetries - Maximum number of retries. Set to 0 to disable retries. Default: 2.\n@param abortSignal - An optional abort signal that can be used to cancel the call.\n@param headers - Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers.\n\n@param maxSteps - Maximum number of sequential LLM calls (steps), e.g. when you use tool calls.\n@param experimental_generateMessageId - Generate a unique ID for each message.\n\n@param onChunk - Callback that is called for each chunk of the stream. The stream processing will pause until the callback promise is resolved.\n@param onError - Callback that is called when an error occurs during streaming. You can use it to log errors.\n@param onStepFinish - Callback that is called when each step (LLM call) is finished, including intermediate steps.\n@param onFinish - Callback that is called when the LLM response and all request tool executions\n(for tools that have an `execute` function) are finished.\n\n@return\nA result object for accessing different stream types and additional information.\n */\nexport function streamText<\n TOOLS extends ToolSet,\n OUTPUT = never,\n PARTIAL_OUTPUT = never,\n>({\n model,\n tools,\n toolChoice,\n system,\n prompt,\n messages,\n maxRetries,\n abortSignal,\n headers,\n maxSteps = 1,\n experimental_generateMessageId: generateMessageId = originalGenerateMessageId,\n experimental_output: output,\n experimental_continueSteps: continueSteps = false,\n experimental_telemetry: telemetry,\n experimental_providerMetadata,\n providerOptions = experimental_providerMetadata,\n experimental_toolCallStreaming = false,\n toolCallStreaming = experimental_toolCallStreaming,\n experimental_activeTools: activeTools,\n experimental_repairToolCall: repairToolCall,\n experimental_transform: transform,\n onChunk,\n onError,\n onFinish,\n onStepFinish,\n _internal: {\n now = originalNow,\n generateId = originalGenerateId,\n currentDate = () => new Date(),\n } = {},\n ...settings\n}: CallSettings &\n Prompt & {\n /**\nThe language model to use.\n */\n model: LanguageModel;\n\n /**\nThe tools that the model can call. The model needs to support calling tools.\n */\n tools?: TOOLS;\n\n /**\nThe tool choice strategy. Default: 'auto'.\n */\n toolChoice?: ToolChoice<TOOLS>;\n\n /**\nMaximum number of sequential LLM calls (steps), e.g. when you use tool calls. Must be at least 1.\n\nA maximum number is required to prevent infinite loops in the case of misconfigured tools.\n\nBy default, it's set to 1, which means that only a single LLM call is made.\n */\n maxSteps?: number;\n\n /**\nGenerate a unique ID for each message.\n */\n experimental_generateMessageId?: IDGenerator;\n\n /**\nWhen enabled, the model will perform additional steps if the finish reason is \"length\" (experimental).\n\nBy default, it's set to false.\n */\n experimental_continueSteps?: boolean;\n\n /**\nOptional telemetry configuration (experimental).\n */\n experimental_telemetry?: TelemetrySettings;\n\n /**\nAdditional provider-specific options. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n */\n providerOptions?: ProviderOptions;\n\n /**\n@deprecated Use `providerOptions` instead.\n */\n experimental_providerMetadata?: ProviderMetadata;\n\n /**\nLimits the tools that are available for the model to call without\nchanging the tool call and result types in the result.\n */\n experimental_activeTools?: Array<keyof TOOLS>;\n\n /**\nOptional specification for parsing structured outputs from the LLM response.\n */\n experimental_output?: Output<OUTPUT, PARTIAL_OUTPUT>;\n\n /**\nA function that attempts to repair a tool call that failed to parse.\n */\n experimental_repairToolCall?: ToolCallRepairFunction<TOOLS>;\n\n /**\nEnable streaming of tool call deltas as they are generated. Disabled by default.\n */\n toolCallStreaming?: boolean;\n\n /**\n@deprecated Use `toolCallStreaming` instead.\n */\n experimental_toolCallStreaming?: boolean;\n\n /**\nOptional stream transformations.\nThey are applied in the order they are provided.\nThe stream transformations must maintain the stream structure for streamText to work correctly.\n */\n experimental_transform?:\n | StreamTextTransform<TOOLS>\n | Array<StreamTextTransform<TOOLS>>;\n\n /**\nCallback that is called for each chunk of the stream.\nThe stream processing will pause until the callback promise is resolved.\n */\n onChunk?: StreamTextOnChunkCallback<TOOLS>;\n\n /**\nCallback that is invoked when an error occurs during streaming.\nYou can use it to log errors.\nThe stream processing will pause until the callback promise is resolved.\n */\n onError?: StreamTextOnErrorCallback;\n\n /**\nCallback that is called when the LLM response and all request tool executions\n(for tools that have an `execute` function) are finished.\n\nThe usage is the combined usage of all steps.\n */\n onFinish?: StreamTextOnFinishCallback<TOOLS>;\n\n /**\nCallback that is called when each step (LLM call) is finished, including intermediate steps.\n */\n onStepFinish?: StreamTextOnStepFinishCallback<TOOLS>;\n\n /**\nInternal. For test use only. May change without notice.\n */\n _internal?: {\n now?: () => number;\n generateId?: IDGenerator;\n currentDate?: () => Date;\n };\n }): StreamTextResult<TOOLS, PARTIAL_OUTPUT> {\n if (typeof model === 'string' || model.specificationVersion !== 'v1') {\n throw new UnsupportedModelVersionError();\n }\n\n return new DefaultStreamTextResult<TOOLS, OUTPUT, PARTIAL_OUTPUT>({\n model,\n telemetry,\n headers,\n settings,\n maxRetries,\n abortSignal,\n system,\n prompt,\n messages,\n tools,\n toolChoice,\n toolCallStreaming,\n transforms: asArray(transform),\n activeTools,\n repairToolCall,\n maxSteps,\n output,\n continueSteps,\n providerOptions,\n onChunk,\n onError,\n onFinish,\n onStepFinish,\n now,\n currentDate,\n generateId,\n generateMessageId,\n });\n}\n\ntype EnrichedStreamPart<TOOLS extends ToolSet, PARTIAL_OUTPUT> = {\n part: TextStreamPart<TOOLS>;\n partialOutput: PARTIAL_OUTPUT | undefined;\n};\n\nfunction createOutputTransformStream<\n TOOLS extends ToolSet,\n OUTPUT,\n PARTIAL_OUTPUT,\n>(\n output: Output<OUTPUT, PARTIAL_OUTPUT> | undefined,\n): TransformStream<\n TextStreamPart<TOOLS>,\n EnrichedStreamPart<TOOLS, PARTIAL_OUTPUT>\n> {\n if (!output) {\n return new TransformStream<\n TextStreamPart<TOOLS>,\n EnrichedStreamPart<TOOLS, PARTIAL_OUTPUT>\n >({\n transform(chunk, controller) {\n controller.enqueue({ part: chunk, partialOutput: undefined });\n },\n });\n }\n\n let text = '';\n let textChunk = '';\n let lastPublishedJson = '';\n\n function publishTextChunk({\n controller,\n partialOutput = undefined,\n }: {\n controller: TransformStreamDefaultController<\n EnrichedStreamPart<TOOLS, PARTIAL_OUTPUT>\n >;\n partialOutput?: PARTIAL_OUTPUT;\n }) {\n controller.enqueue({\n part: { type: 'text-delta', textDelta: textChunk },\n partialOutput,\n });\n textChunk = '';\n }\n\n return new TransformStream<\n TextStreamPart<TOOLS>,\n EnrichedStreamPart<TOOLS, PARTIAL_OUTPUT>\n >({\n transform(chunk, controller) {\n // ensure that we publish the last text chunk before the step finish:\n if (chunk.type === 'step-finish') {\n publishTextChunk({ controller });\n }\n\n if (chunk.type !== 'text-delta') {\n controller.enqueue({ part: chunk, partialOutput: undefined });\n return;\n }\n\n text += chunk.textDelta;\n textChunk += chunk.textDelta;\n\n // only publish if partial json can be parsed:\n const result = output.parsePartial({ text });\n if (result != null) {\n // only send new json if it has changed:\n const currentJson = JSON.stringify(result.partial);\n if (currentJson !== lastPublishedJson) {\n publishTextChunk({ controller, partialOutput: result.partial });\n lastPublishedJson = currentJson;\n }\n }\n },\n\n flush(controller) {\n // publish remaining text (there should be none if the content was correctly formatted):\n if (textChunk.length > 0) {\n publishTextChunk({ controller });\n }\n },\n });\n}\n\nclass DefaultStreamTextResult<TOOLS extends ToolSet, OUTPUT, PARTIAL_OUTPUT>\n implements StreamTextResult<TOOLS, PARTIAL_OUTPUT>\n{\n private readonly warningsPromise = new DelayedPromise<\n Awaited<StreamTextResult<TOOLS, PARTIAL_OUTPUT>['warnings']>\n >();\n private readonly usagePromise = new DelayedPromise<\n Awaited<StreamTextResult<TOOLS, PARTIAL_OUTPUT>['usage']>\n >();\n private readonly finishReasonPromise = new DelayedPromise<\n Awaited<StreamTextResult<TOOLS, PARTIAL_OUTPUT>['finishReason']>\n >();\n private readonly providerMetadataPromise = new DelayedPromise<\n Awaited<\n StreamTextResult<TOOLS, PARTIAL_OUTPUT>['experimental_providerMetadata']\n >\n >();\n private readonly textPromise = new DelayedPromise<\n Awaited<StreamTextResult<TOOLS, PARTIAL_OUTPUT>['text']>\n >();\n private readonly reasoningPromise = new DelayedPromise<\n Awaited<StreamTextResult<TOOLS, PARTIAL_OUTPUT>['reasoning']>\n >();\n private readonly reasoningDetailsPromise = new DelayedPromise<\n Awaited<StreamTextResult<TOOLS, PARTIAL_OUTPUT>['reasoningDetails']>\n >();\n private readonly sourcesPromise = new DelayedPromise<\n Awaited<StreamTextResult<TOOLS, PARTIAL_OUTPUT>['sources']>\n >();\n private readonly filesPromise = new DelayedPromise<\n Awaited<StreamTextResult<TOOLS, PARTIAL_OUTPUT>['files']>\n >();\n private readonly toolCallsPromise = new DelayedPromise<\n Awaited<StreamTextResult<TOOLS, PARTIAL_OUTPUT>['toolCalls']>\n >();\n private readonly toolResultsPromise = new DelayedPromise<\n Awaited<StreamTextResult<TOOLS, PARTIAL_OUTPUT>['toolResults']>\n >();\n private readonly requestPromise = new DelayedPromise<\n Awaited<StreamTextResult<TOOLS, PARTIAL_OUTPUT>['request']>\n >();\n private readonly responsePromise = new DelayedPromise<\n Awaited<StreamTextResult<TOOLS, PARTIAL_OUTPUT>['response']>\n >();\n private readonly stepsPromise = new DelayedPromise<\n Awaited<StreamTextResult<TOOLS, PARTIAL_OUTPUT>['steps']>\n >();\n\n private readonly addStream: (\n stream: ReadableStream<TextStreamPart<TOOLS>>,\n ) => void;\n\n private readonly closeStream: () => void;\n\n private baseStream: ReadableStream<EnrichedStreamPart<TOOLS, PARTIAL_OUTPUT>>;\n\n private output: Output<OUTPUT, PARTIAL_OUTPUT> | undefined;\n\n constructor({\n model,\n telemetry,\n headers,\n settings,\n maxRetries: maxRetriesArg,\n abortSignal,\n system,\n prompt,\n messages,\n tools,\n toolChoice,\n toolCallStreaming,\n transforms,\n activeTools,\n repairToolCall,\n maxSteps,\n output,\n continueSteps,\n providerOptions,\n now,\n currentDate,\n generateId,\n generateMessageId,\n onChunk,\n onError,\n onFinish,\n onStepFinish,\n }: {\n model: LanguageModel;\n telemetry: TelemetrySettings | undefined;\n headers: Record<string, string | undefined> | undefined;\n settings: Omit<CallSettings, 'abortSignal' | 'headers'>;\n maxRetries: number | undefined;\n abortSignal: AbortSignal | undefined;\n system: Prompt['system'];\n prompt: Prompt['prompt'];\n messages: Prompt['messages'];\n tools: TOOLS | undefined;\n toolChoice: ToolChoice<TOOLS> | undefined;\n toolCallStreaming: boolean;\n transforms: Array<StreamTextTransform<TOOLS>>;\n activeTools: Array<keyof TOOLS> | undefined;\n repairToolCall: ToolCallRepairFunction<TOOLS> | undefined;\n maxSteps: number;\n output: Output<OUTPUT, PARTIAL_OUTPUT> | undefined;\n continueSteps: boolean;\n providerOptions: ProviderOptions | undefined;\n now: () => number;\n currentDate: () => Date;\n generateId: () => string;\n generateMessageId: () => string;\n\n // callbacks:\n onChunk: undefined | StreamTextOnChunkCallback<TOOLS>;\n onError: undefined | StreamTextOnErrorCallback;\n onFinish: undefined | StreamTextOnFinishCallback<TOOLS>;\n onStepFinish: undefined | StreamTextOnStepFinishCallback<TOOLS>;\n }) {\n if (maxSteps < 1) {\n throw new InvalidArgumentError({\n parameter: 'maxSteps',\n value: maxSteps,\n message: 'maxSteps must be at least 1',\n });\n }\n\n this.output = output;\n\n // event processor for telemetry, invoking callbacks, etc.\n // The event processor reads the transformed stream to enable correct\n // recording of the final transformed outputs.\n let recordedStepText = '';\n let recordedContinuationText = '';\n let recordedFullText = '';\n\n let stepReasoning: Array<ReasoningDetail> = [];\n let stepFiles: Array<GeneratedFile> = [];\n let activeReasoningText: undefined | (ReasoningDetail & { type: 'text' }) =\n undefined;\n\n let recordedStepSources: LanguageModelV1Source[] = [];\n const recordedSources: LanguageModelV1Source[] = [];\n\n const recordedResponse: LanguageModelResponseMetadata & {\n messages: Array<ResponseMessage>;\n } = {\n id: generateId(),\n timestamp: currentDate(),\n modelId: model.modelId,\n messages: [],\n };\n let recordedToolCalls: ToolCallUnion<TOOLS>[] = [];\n let recordedToolResults: ToolResultUnion<TOOLS>[] = [];\n let recordedFinishReason: FinishReason | undefined = undefined;\n let recordedUsage: LanguageModelUsage | undefined = undefined;\n let stepType: 'initial' | 'continue' | 'tool-result' = 'initial';\n const recordedSteps: StepResult<TOOLS>[] = [];\n let rootSpan!: Span;\n\n const eventProcessor = new TransformStream<\n EnrichedStreamPart<TOOLS, PARTIAL_OUTPUT>,\n EnrichedStreamPart<TOOLS, PARTIAL_OUTPUT>\n >({\n async transform(chunk, controller) {\n controller.enqueue(chunk); // forward the chunk to the next stream\n\n const { part } = chunk;\n\n if (\n part.type === 'text-delta' ||\n part.type === 'reasoning' ||\n part.type === 'source' ||\n part.type === 'tool-call' ||\n part.type === 'tool-result' ||\n part.type === 'tool-call-streaming-start' ||\n part.type === 'tool-call-delta'\n ) {\n await onChunk?.({ chunk: part });\n }\n\n if (part.type === 'error') {\n await onError?.({ error: part.error });\n }\n\n if (part.type === 'text-delta') {\n recordedStepText += part.textDelta;\n recordedContinuationText += part.textDelta;\n recordedFullText += part.textDelta;\n }\n\n if (part.type === 'reasoning') {\n if (activeReasoningText == null) {\n activeReasoningText = { type: 'text', text: part.textDelta };\n stepReasoning.push(activeReasoningText);\n } else {\n activeReasoningText.text += part.textDelta;\n }\n }\n\n if (part.type === 'reasoning-signature') {\n if (activeReasoningText == null) {\n throw new AISDKError({\n name: 'InvalidStreamPart',\n message: 'reasoning-signature without reasoning',\n });\n }\n\n activeReasoningText.signature = part.signature;\n activeReasoningText = undefined; // signature concludes reasoning part\n }\n\n if (part.type === 'redacted-reasoning') {\n stepReasoning.push({ type: 'redacted', data: part.data });\n }\n\n if (part.type === 'file') {\n stepFiles.push(part);\n }\n\n if (part.type === 'source') {\n recordedSources.push(part.source);\n recordedStepSources.push(part.source);\n }\n\n if (part.type === 'tool-call') {\n recordedToolCalls.push(part);\n }\n\n if (part.type === 'tool-result') {\n recordedToolResults.push(part);\n }\n\n if (part.type === 'step-finish') {\n const stepMessages = toResponseMessages({\n text: recordedContinuationText,\n files: stepFiles,\n reasoning: stepReasoning,\n tools: tools ?? ({} as TOOLS),\n toolCalls: recordedToolCalls,\n toolResults: recordedToolResults,\n messageId: part.messageId,\n generateMessageId,\n });\n\n // determine the next step type\n const currentStep = recordedSteps.length;\n let nextStepType: 'done' | 'continue' | 'tool-result' = 'done';\n if (currentStep + 1 < maxSteps) {\n if (\n continueSteps &&\n part.finishReason === 'length' &&\n // only use continue when there are no tool calls:\n recordedToolCalls.length === 0\n ) {\n nextStepType = 'continue';\n } else if (\n // there are tool calls:\n recordedToolCalls.length > 0 &&\n // all current tool calls have results:\n recordedToolResults.length === recordedToolCalls.length\n ) {\n nextStepType = 'tool-result';\n }\n }\n\n // Add step information (after response messages are updated):\n const currentStepResult: StepResult<TOOLS> = {\n stepType,\n text: recordedStepText,\n reasoning: asReasoningText(stepReasoning),\n reasoningDetails: stepReasoning,\n files: stepFiles,\n sources: recordedStepSources,\n toolCalls: recordedToolCalls,\n toolResults: recordedToolResults,\n finishReason: part.finishReason,\n usage: part.usage,\n warnings: part.warnings,\n logprobs: part.logprobs,\n request: part.request,\n response: {\n ...part.response,\n messages: [...recordedResponse.messages, ...stepMessages],\n },\n providerMetadata: part.experimental_providerMetadata,\n experimental_providerMetadata: part.experimental_providerMetadata,\n isContinued: part.isContinued,\n };\n\n await onStepFinish?.(currentStepResult);\n\n recordedSteps.push(currentStepResult);\n\n recordedToolCalls = [];\n recordedToolResults = [];\n recordedStepText = '';\n recordedStepSources = [];\n stepReasoning = [];\n stepFiles = [];\n activeReasoningText = undefined;\n\n if (nextStepType !== 'done') {\n stepType = nextStepType;\n }\n\n if (nextStepType !== 'continue') {\n recordedResponse.messages.push(...stepMessages);\n recordedContinuationText = '';\n }\n }\n\n if (part.type === 'finish') {\n recordedResponse.id = part.response.id;\n recordedResponse.timestamp = part.response.timestamp;\n recordedResponse.modelId = part.response.modelId;\n recordedResponse.headers = part.response.headers;\n recordedUsage = part.usage;\n recordedFinishReason = part.finishReason;\n }\n },\n\n async flush(controller) {\n try {\n if (recordedSteps.length === 0) {\n return; // no steps recorded (e.g. in error scenario)\n }\n\n // from last step (when there are errors there may be no last step)\n const lastStep = recordedSteps[recordedSteps.length - 1];\n\n self.warningsPromise.resolve(lastStep.warnings);\n self.requestPromise.resolve(lastStep.request);\n self.responsePromise.resolve(lastStep.response);\n self.toolCallsPromise.resolve(lastStep.toolCalls);\n self.toolResultsPromise.resolve(lastStep.toolResults);\n self.providerMetadataPromise.resolve(\n lastStep.experimental_providerMetadata,\n );\n self.reasoningPromise.resolve(lastStep.reasoning);\n self.reasoningDetailsPromise.resolve(lastStep.reasoningDetails);\n\n // derived:\n const finishReason = recordedFinishReason ?? 'unknown';\n const usage = recordedUsage ?? {\n completionTokens: NaN,\n promptTokens: NaN,\n totalTokens: NaN,\n };\n\n // from finish:\n self.finishReasonPromise.resolve(finishReason);\n self.usagePromise.resolve(usage);\n\n // aggregate results:\n self.textPromise.resolve(recordedFullText);\n self.sourcesPromise.resolve(recordedSources);\n self.filesPromise.resolve(lastStep.files);\n self.stepsPromise.resolve(recordedSteps);\n\n // call onFinish callback:\n await onFinish?.({\n finishReason,\n logprobs: undefined,\n usage,\n text: recordedFullText,\n reasoning: lastStep.reasoning,\n reasoningDetails: lastStep.reasoningDetails,\n files: lastStep.files,\n sources: lastStep.sources,\n toolCalls: lastStep.toolCalls,\n toolResults: lastStep.toolResults,\n request: lastStep.request ?? {},\n response: lastStep.response,\n warnings: lastStep.warnings,\n providerMetadata: lastStep.providerMetadata,\n experimental_providerMetadata:\n lastStep.experimental_providerMetadata,\n steps: recordedSteps,\n });\n\n // Add response information to the root span:\n rootSpan.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n 'ai.response.finishReason': finishReason,\n 'ai.response.text': { output: () => recordedFullText },\n 'ai.response.toolCalls': {\n output: () =>\n lastStep.toolCalls?.length\n ? JSON.stringify(lastStep.toolCalls)\n : undefined,\n },\n\n 'ai.usage.promptTokens': usage.promptTokens,\n 'ai.usage.completionTokens': usage.completionTokens,\n 'ai.response.providerMetadata': JSON.stringify(\n lastStep.providerMetadata,\n ),\n },\n }),\n );\n } catch (error) {\n controller.error(error);\n } finally {\n rootSpan.end();\n }\n },\n });\n\n // initialize the stitchable stream and the transformed stream:\n const stitchableStream = createStitchableStream<TextStreamPart<TOOLS>>();\n this.addStream = stitchableStream.addStream;\n this.closeStream = stitchableStream.close;\n\n let stream = stitchableStream.stream;\n\n // transform the stream before output parsing\n // to enable replacement of stream segments:\n for (const transform of transforms) {\n stream = stream.pipeThrough(\n transform({\n tools: tools as TOOLS,\n stopStream() {\n stitchableStream.terminate();\n },\n }),\n );\n }\n\n this.baseStream = stream\n .pipeThrough(createOutputTransformStream(output))\n .pipeThrough(eventProcessor);\n\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n });\n\n const tracer = getTracer(telemetry);\n\n const baseTelemetryAttributes = getBaseTelemetryAttributes({\n model,\n telemetry,\n headers,\n settings: { ...settings, maxRetries },\n });\n\n const initialPrompt = standardizePrompt({\n prompt: {\n system: output?.injectIntoSystemPrompt({ system, model }) ?? system,\n prompt,\n messages,\n },\n tools,\n });\n\n const self = this;\n\n recordSpan({\n name: 'ai.streamText',\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({ operationId: 'ai.streamText', telemetry }),\n ...baseTelemetryAttributes,\n // specific settings that only make sense on the outer level:\n 'ai.prompt': {\n input: () => JSON.stringify({ system, prompt, messages }),\n },\n 'ai.settings.maxSteps': maxSteps,\n },\n }),\n tracer,\n endWhenDone: false,\n fn: async rootSpanArg => {\n rootSpan = rootSpanArg;\n\n async function streamStep({\n currentStep,\n responseMessages,\n usage,\n stepType,\n previousStepText,\n hasLeadingWhitespace,\n messageId,\n }: {\n currentStep: number;\n responseMessages: Array<ResponseMessage>;\n usage: LanguageModelUsage;\n stepType: 'initial' | 'continue' | 'tool-result';\n previousStepText: string;\n hasLeadingWhitespace: boolean;\n messageId: string;\n }) {\n // after the 1st step, we need to switch to messages format:\n const promptFormat =\n responseMessages.length === 0 ? initialPrompt.type : 'messages';\n\n const stepInputMessages = [\n ...initialPrompt.messages,\n ...responseMessages,\n ];\n\n const promptMessages = await convertToLanguageModelPrompt({\n prompt: {\n type: promptFormat,\n system: initialPrompt.system,\n messages: stepInputMessages,\n },\n modelSupportsImageUrls: model.supportsImageUrls,\n modelSupportsUrl: model.supportsUrl?.bind(model), // support 'this' context\n });\n\n const mode = {\n type: 'regular' as const,\n ...prepareToolsAndToolChoice({ tools, toolChoice, activeTools }),\n };\n\n const {\n result: { stream, warnings, rawResponse, request },\n doStreamSpan,\n startTimestampMs,\n } = await retry(() =>\n recordSpan({\n name: 'ai.streamText.doStream',\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: 'ai.streamText.doStream',\n telemetry,\n }),\n ...baseTelemetryAttributes,\n 'ai.prompt.format': {\n input: () => promptFormat,\n },\n 'ai.prompt.messages': {\n input: () => stringifyForTelemetry(promptMessages),\n },\n 'ai.prompt.tools': {\n // convert the language model level tools:\n input: () => mode.tools?.map(tool => JSON.stringify(tool)),\n },\n 'ai.prompt.toolChoice': {\n input: () =>\n mode.toolChoice != null\n ? JSON.stringify(mode.toolChoice)\n : undefined,\n },\n\n // standardized gen-ai llm span attributes:\n 'gen_ai.system': model.provider,\n 'gen_ai.request.model': model.modelId,\n 'gen_ai.request.frequency_penalty': settings.frequencyPenalty,\n 'gen_ai.request.max_tokens': settings.maxTokens,\n 'gen_ai.request.presence_penalty': settings.presencePenalty,\n 'gen_ai.request.stop_sequences': settings.stopSequences,\n 'gen_ai.request.temperature': settings.temperature,\n 'gen_ai.request.top_k': settings.topK,\n 'gen_ai.request.top_p': settings.topP,\n },\n }),\n tracer,\n endWhenDone: false,\n fn: async doStreamSpan => ({\n startTimestampMs: now(), // get before the call\n doStreamSpan,\n result: await model.doStream({\n mode,\n ...prepareCallSettings(settings),\n inputFormat: promptFormat,\n responseFormat: output?.responseFormat({ model }),\n prompt: promptMessages,\n providerMetadata: providerOptions,\n abortSignal,\n headers,\n }),\n }),\n }),\n );\n\n const transformedStream = runToolsTransformation({\n tools,\n generatorStream: stream,\n toolCallStreaming,\n tracer,\n telemetry,\n system,\n messages: stepInputMessages,\n repairToolCall,\n abortSignal,\n });\n\n const stepRequest = request ?? {};\n const stepToolCalls: ToolCallUnion<TOOLS>[] = [];\n const stepToolResults: ToolResultUnion<TOOLS>[] = [];\n\n const stepReasoning: Array<ReasoningDetail> = [];\n const stepFiles: Array<GeneratedFile> = [];\n let activeReasoningText:\n | undefined\n | (ReasoningDetail & { type: 'text' }) = undefined;\n\n let stepFinishReason: FinishReason = 'unknown';\n let stepUsage: LanguageModelUsage = {\n promptTokens: 0,\n completionTokens: 0,\n totalTokens: 0,\n };\n let stepProviderMetadata: ProviderMetadata | undefined;\n let stepFirstChunk = true;\n let stepText = '';\n let fullStepText = stepType === 'continue' ? previousStepText : '';\n let stepLogProbs: LogProbs | undefined;\n let stepResponse: { id: string; timestamp: Date; modelId: string } = {\n id: generateId(),\n timestamp: currentDate(),\n modelId: model.modelId,\n };\n\n // chunk buffer when using continue:\n let chunkBuffer = '';\n let chunkTextPublished = false;\n let inWhitespacePrefix = true;\n let hasWhitespaceSuffix = false; // for next step. when true, step ended with whitespace\n\n async function publishTextChunk({\n controller,\n chunk,\n }: {\n controller: TransformStreamDefaultController<TextStreamPart<TOOLS>>;\n chunk: TextStreamPart<TOOLS> & { type: 'text-delta' };\n }) {\n controller.enqueue(chunk);\n\n stepText += chunk.textDelta;\n fullStepText += chunk.textDelta;\n chunkTextPublished = true;\n hasWhitespaceSuffix = chunk.textDelta.trimEnd() !== chunk.textDelta;\n }\n\n self.addStream(\n transformedStream.pipeThrough(\n new TransformStream<\n SingleRequestTextStreamPart<TOOLS>,\n TextStreamPart<TOOLS>\n >({\n async transform(chunk, controller): Promise<void> {\n if (stepFirstChunk) {\n // Telemetry for first chunk:\n const msToFirstChunk = now() - startTimestampMs;\n\n stepFirstChunk = false;\n\n doStreamSpan.addEvent('ai.stream.firstChunk', {\n 'ai.response.msToFirstChunk': msToFirstChunk,\n });\n\n doStreamSpan.setAttributes({\n 'ai.response.msToFirstChunk': msToFirstChunk,\n });\n\n // Step start:\n controller.enqueue({\n type: 'step-start',\n messageId,\n request: stepRequest,\n warnings: warnings ?? [],\n });\n }\n\n // Filter out empty text deltas\n if (\n chunk.type === 'text-delta' &&\n chunk.textDelta.length === 0\n ) {\n return;\n }\n\n const chunkType = chunk.type;\n switch (chunkType) {\n case 'text-delta': {\n if (continueSteps) {\n // when a new step starts, leading whitespace is to be discarded\n // when there is already preceding whitespace in the chunk buffer\n const trimmedChunkText =\n inWhitespacePrefix && hasLeadingWhitespace\n ? chunk.textDelta.trimStart()\n : chunk.textDelta;\n\n if (trimmedChunkText.length === 0) {\n break;\n }\n\n inWhitespacePrefix = false;\n chunkBuffer += trimmedChunkText;\n\n const split = splitOnLastWhitespace(chunkBuffer);\n\n // publish the text until the last whitespace:\n if (split != null) {\n chunkBuffer = split.suffix;\n\n await publishTextChunk({\n controller,\n chunk: {\n type: 'text-delta',\n textDelta: split.prefix + split.whitespace,\n },\n });\n }\n } else {\n await publishTextChunk({ controller, chunk });\n }\n break;\n }\n\n case 'reasoning': {\n controller.enqueue(chunk);\n\n if (activeReasoningText == null) {\n activeReasoningText = {\n type: 'text',\n text: chunk.textDelta,\n };\n stepReasoning.push(activeReasoningText);\n } else {\n activeReasoningText.text += chunk.textDelta;\n }\n\n break;\n }\n\n case 'reasoning-signature': {\n controller.enqueue(chunk);\n\n if (activeReasoningText == null) {\n throw new InvalidStreamPartError({\n chunk,\n message: 'reasoning-signature without reasoning',\n });\n }\n\n activeReasoningText.signature = chunk.signature;\n activeReasoningText = undefined; // signature concludes reasoning part\n break;\n }\n\n case 'redacted-reasoning': {\n controller.enqueue(chunk);\n stepReasoning.push({\n type: 'redacted',\n data: chunk.data,\n });\n\n break;\n }\n\n case 'tool-call': {\n controller.enqueue(chunk);\n // store tool calls for onFinish callback and toolCalls promise:\n stepToolCalls.push(chunk);\n break;\n }\n\n case 'tool-result': {\n controller.enqueue(chunk);\n // store tool results for onFinish callback and toolResults promise:\n stepToolResults.push(chunk);\n break;\n }\n\n case 'response-metadata': {\n stepResponse = {\n id: chunk.id ?? stepResponse.id,\n timestamp: chunk.timestamp ?? stepResponse.timestamp,\n modelId: chunk.modelId ?? stepResponse.modelId,\n };\n break;\n }\n\n case 'finish': {\n // Note: tool executions might not be finished yet when the finish event is emitted.\n // store usage and finish reason for promises and onFinish callback:\n stepUsage = chunk.usage;\n stepFinishReason = chunk.finishReason;\n stepProviderMetadata =\n chunk.experimental_providerMetadata;\n stepLogProbs = chunk.logprobs;\n\n // Telemetry for finish event timing\n // (since tool executions can take longer and distort calculations)\n const msToFinish = now() - startTimestampMs;\n doStreamSpan.addEvent('ai.stream.finish');\n doStreamSpan.setAttributes({\n 'ai.response.msToFinish': msToFinish,\n 'ai.response.avgCompletionTokensPerSecond':\n (1000 * stepUsage.completionTokens) / msToFinish,\n });\n\n break;\n }\n\n case 'file': {\n stepFiles.push(chunk);\n controller.enqueue(chunk);\n break;\n }\n\n // forward:\n case 'source':\n case 'tool-call-streaming-start':\n case 'tool-call-delta': {\n controller.enqueue(chunk);\n break;\n }\n\n case 'error': {\n controller.enqueue(chunk);\n stepFinishReason = 'error';\n break;\n }\n\n default: {\n const exhaustiveCheck: never = chunkType;\n throw new Error(`Unknown chunk type: ${exhaustiveCheck}`);\n }\n }\n },\n\n // invoke onFinish callback and resolve toolResults promise when the stream is about to close:\n async flush(controller) {\n const stepToolCallsJson =\n stepToolCalls.length > 0\n ? JSON.stringify(stepToolCalls)\n : undefined;\n\n // determine the next step type\n let nextStepType: 'done' | 'continue' | 'tool-result' =\n 'done';\n if (currentStep + 1 < maxSteps) {\n if (\n continueSteps &&\n stepFinishReason === 'length' &&\n // only use continue when there are no tool calls:\n stepToolCalls.length === 0\n ) {\n nextStepType = 'continue';\n } else if (\n // there are tool calls:\n stepToolCalls.length > 0 &&\n // all current tool calls have results:\n stepToolResults.length === stepToolCalls.length\n ) {\n nextStepType = 'tool-result';\n }\n }\n\n // when using continuation, publish buffer on final step or if there\n // was no whitespace in the step:\n if (\n continueSteps &&\n chunkBuffer.length > 0 &&\n (nextStepType !== 'continue' || // when the next step is a regular step, publish the buffer\n (stepType === 'continue' && !chunkTextPublished)) // when the next step is a continue step, publish the buffer if no text was published in the step\n ) {\n await publishTextChunk({\n controller,\n chunk: {\n type: 'text-delta',\n textDelta: chunkBuffer,\n },\n });\n chunkBuffer = '';\n }\n\n // record telemetry information first to ensure best effort timing\n try {\n doStreamSpan.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n 'ai.response.finishReason': stepFinishReason,\n 'ai.response.text': { output: () => stepText },\n 'ai.response.toolCalls': {\n output: () => stepToolCallsJson,\n },\n 'ai.response.id': stepResponse.id,\n 'ai.response.model': stepResponse.modelId,\n 'ai.response.timestamp':\n stepResponse.timestamp.toISOString(),\n 'ai.response.providerMetadata':\n JSON.stringify(stepProviderMetadata),\n\n 'ai.usage.promptTokens': stepUsage.promptTokens,\n 'ai.usage.completionTokens':\n stepUsage.completionTokens,\n\n // standardized gen-ai llm span attributes:\n 'gen_ai.response.finish_reasons': [stepFinishReason],\n 'gen_ai.response.id': stepResponse.id,\n 'gen_ai.response.model': stepResponse.modelId,\n 'gen_ai.usage.input_tokens': stepUsage.promptTokens,\n 'gen_ai.usage.output_tokens':\n stepUsage.completionTokens,\n },\n }),\n );\n } catch (error) {\n // ignore error setting telemetry attributes\n } finally {\n // finish doStreamSpan before other operations for correct timing:\n doStreamSpan.end();\n }\n\n controller.enqueue({\n type: 'step-finish',\n finishReason: stepFinishReason,\n usage: stepUsage,\n providerMetadata: stepProviderMetadata,\n experimental_providerMetadata: stepProviderMetadata,\n logprobs: stepLogProbs,\n request: stepRequest,\n response: {\n ...stepResponse,\n headers: rawResponse?.headers,\n },\n warnings,\n isContinued: nextStepType === 'continue',\n messageId,\n });\n\n const combinedUsage = addLanguageModelUsage(usage, stepUsage);\n\n if (nextStepType === 'done') {\n controller.enqueue({\n type: 'finish',\n finishReason: stepFinishReason,\n usage: combinedUsage,\n providerMetadata: stepProviderMetadata,\n experimental_providerMetadata: stepProviderMetadata,\n logprobs: stepLogProbs,\n response: {\n ...stepResponse,\n headers: rawResponse?.headers,\n },\n });\n\n self.closeStream(); // close the stitchable stream\n } else {\n // append to messages for the next step:\n if (stepType === 'continue') {\n // continue step: update the last assistant message\n // continue is only possible when there are no tool calls,\n // so we can assume that there is a single last assistant message:\n const lastMessage = responseMessages[\n responseMessages.length - 1\n ] as CoreAssistantMessage;\n\n if (typeof lastMessage.content === 'string') {\n lastMessage.content += stepText;\n } else {\n lastMessage.content.push({\n text: stepText,\n type: 'text',\n });\n }\n } else {\n responseMessages.push(\n ...toResponseMessages({\n text: stepText,\n files: stepFiles,\n reasoning: stepReasoning,\n tools: tools ?? ({} as TOOLS),\n toolCalls: stepToolCalls,\n toolResults: stepToolResults,\n messageId,\n generateMessageId,\n }),\n );\n }\n\n await streamStep({\n currentStep: currentStep + 1,\n responseMessages,\n usage: combinedUsage,\n stepType: nextStepType,\n previousStepText: fullStepText,\n hasLeadingWhitespace: hasWhitespaceSuffix,\n messageId:\n // keep the same id when continuing a step:\n nextStepType === 'continue'\n ? messageId\n : generateMessageId(),\n });\n }\n },\n }),\n ),\n );\n }\n\n // add the initial stream to the stitchable stream\n await streamStep({\n currentStep: 0,\n responseMessages: [],\n usage: {\n promptTokens: 0,\n completionTokens: 0,\n totalTokens: 0,\n },\n previousStepText: '',\n stepType: 'initial',\n hasLeadingWhitespace: false,\n messageId: generateMessageId(),\n });\n },\n }).catch(error => {\n // add an error stream part and close the streams:\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\n get warnings() {\n return this.warningsPromise.value;\n }\n\n get usage() {\n return this.usagePromise.value;\n }\n\n get finishReason() {\n return this.finishReasonPromise.value;\n }\n\n get experimental_providerMetadata() {\n return this.providerMetadataPromise.value;\n }\n\n get providerMetadata() {\n return this.providerMetadataPromise.value;\n }\n\n get text() {\n return this.textPromise.value;\n }\n\n get reasoning() {\n return this.reasoningPromise.value;\n }\n\n get reasoningDetails() {\n return this.reasoningDetailsPromise.value;\n }\n\n get sources() {\n return this.sourcesPromise.value;\n }\n\n get files() {\n return this.filesPromise.value;\n }\n\n get toolCalls() {\n return this.toolCallsPromise.value;\n }\n\n get toolResults() {\n return this.toolResultsPromise.value;\n }\n\n get request() {\n return this.requestPromise.value;\n }\n\n get response() {\n return this.responsePromise.value;\n }\n\n get steps() {\n return this.stepsPromise.value;\n }\n\n /**\nSplit out a new stream from the original stream.\nThe original stream is replaced to allow for further splitting,\nsince we do not know how many times the stream will be split.\n\nNote: this leads to buffering the stream content on the server.\nHowever, the LLM results are expected to be small enough to not cause issues.\n */\n private teeStream() {\n const [stream1, stream2] = this.baseStream.tee();\n this.baseStream = stream2;\n return stream1;\n }\n\n get textStream(): AsyncIterableStream<string> {\n return createAsyncIterableStream(\n this.teeStream().pipeThrough(\n new TransformStream<EnrichedStreamPart<TOOLS, PARTIAL_OUTPUT>, string>({\n transform({ part }, controller) {\n if (part.type === 'text-delta') {\n controller.enqueue(part.textDelta);\n }\n },\n }),\n ),\n );\n }\n\n get fullStream(): AsyncIterableStream<TextStreamPart<TOOLS>> {\n return createAsyncIterableStream(\n this.teeStream().pipeThrough(\n new TransformStream<\n EnrichedStreamPart<TOOLS, PARTIAL_OUTPUT>,\n TextStreamPart<TOOLS>\n >({\n transform({ part }, controller) {\n controller.enqueue(part);\n },\n }),\n ),\n );\n }\n\n async consumeStream(options?: ConsumeStreamOptions): Promise<void> {\n try {\n await consumeStream({\n stream: this.fullStream,\n onError: options?.onError,\n });\n } catch (error) {\n options?.onError?.(error);\n }\n }\n\n get experimental_partialOutputStream(): AsyncIterableStream<PARTIAL_OUTPUT> {\n if (this.output == null) {\n throw new NoOutputSpecifiedError();\n }\n\n return createAsyncIterableStream(\n this.teeStream().pipeThrough(\n new TransformStream<\n EnrichedStreamPart<TOOLS, PARTIAL_OUTPUT>,\n PARTIAL_OUTPUT\n >({\n transform({ partialOutput }, controller) {\n if (partialOutput != null) {\n controller.enqueue(partialOutput);\n }\n },\n }),\n ),\n );\n }\n\n private toDataStreamInternal({\n getErrorMessage = () => 'An error occurred.', // mask error messages for safety by default\n sendUsage = true,\n sendReasoning = false,\n sendSources = false,\n experimental_sendFinish = true,\n }: {\n getErrorMessage: ((error: unknown) => string) | undefined;\n sendUsage: boolean | undefined;\n sendReasoning: boolean | undefined;\n sendSources: boolean | undefined;\n experimental_sendFinish: boolean | undefined;\n }): ReadableStream<DataStreamString> {\n return this.fullStream.pipeThrough(\n new TransformStream<TextStreamPart<TOOLS>, DataStreamString>({\n transform: async (chunk, controller) => {\n const chunkType = chunk.type;\n switch (chunkType) {\n case 'text-delta': {\n controller.enqueue(formatDataStreamPart('text', chunk.textDelta));\n break;\n }\n\n case 'reasoning': {\n if (sendReasoning) {\n controller.enqueue(\n formatDataStreamPart('reasoning', chunk.textDelta),\n );\n }\n break;\n }\n\n case 'redacted-reasoning': {\n if (sendReasoning) {\n controller.enqueue(\n formatDataStreamPart('redacted_reasoning', {\n data: chunk.data,\n }),\n );\n }\n break;\n }\n\n case 'reasoning-signature': {\n if (sendReasoning) {\n controller.enqueue(\n formatDataStreamPart('reasoning_signature', {\n signature: chunk.signature,\n }),\n );\n }\n break;\n }\n\n case 'file': {\n controller.enqueue(\n formatDataStreamPart('file', {\n mimeType: chunk.mimeType,\n data: chunk.base64,\n }),\n );\n break;\n }\n\n case 'source': {\n if (sendSources) {\n controller.enqueue(\n formatDataStreamPart('source', chunk.source),\n );\n }\n break;\n }\n\n case 'tool-call-streaming-start': {\n controller.enqueue(\n formatDataStreamPart('tool_call_streaming_start', {\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n }),\n );\n break;\n }\n\n case 'tool-call-delta': {\n controller.enqueue(\n formatDataStreamPart('tool_call_delta', {\n toolCallId: chunk.toolCallId,\n argsTextDelta: chunk.argsTextDelta,\n }),\n );\n break;\n }\n\n case 'tool-call': {\n controller.enqueue(\n formatDataStreamPart('tool_call', {\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n args: chunk.args,\n }),\n );\n break;\n }\n\n case 'tool-result': {\n controller.enqueue(\n formatDataStreamPart('tool_result', {\n toolCallId: chunk.toolCallId,\n result: chunk.result,\n }),\n );\n break;\n }\n\n case 'error': {\n controller.enqueue(\n formatDataStreamPart('error', getErrorMessage(chunk.error)),\n );\n break;\n }\n\n case 'step-start': {\n controller.enqueue(\n formatDataStreamPart('start_step', {\n messageId: chunk.messageId,\n }),\n );\n break;\n }\n\n case 'step-finish': {\n controller.enqueue(\n formatDataStreamPart('finish_step', {\n finishReason: chunk.finishReason,\n usage: sendUsage\n ? {\n promptTokens: chunk.usage.promptTokens,\n completionTokens: chunk.usage.completionTokens,\n }\n : undefined,\n isContinued: chunk.isContinued,\n }),\n );\n break;\n }\n\n case 'finish': {\n if (experimental_sendFinish) {\n controller.enqueue(\n formatDataStreamPart('finish_message', {\n finishReason: chunk.finishReason,\n usage: sendUsage\n ? {\n promptTokens: chunk.usage.promptTokens,\n completionTokens: chunk.usage.completionTokens,\n }\n : undefined,\n }),\n );\n }\n break;\n }\n\n default: {\n const exhaustiveCheck: never = chunkType;\n throw new Error(`Unknown chunk type: ${exhaustiveCheck}`);\n }\n }\n },\n }),\n );\n }\n\n pipeDataStreamToResponse(\n response: ServerResponse,\n {\n status,\n statusText,\n headers,\n data,\n getErrorMessage,\n sendUsage,\n sendReasoning,\n sendSources,\n experimental_sendFinish,\n }: ResponseInit &\n DataStreamOptions & {\n data?: StreamData;\n getErrorMessage?: (error: unknown) => string;\n } = {},\n ) {\n writeToServerResponse({\n response,\n status,\n statusText,\n headers: prepareOutgoingHttpHeaders(headers, {\n contentType: 'text/plain; charset=utf-8',\n dataStreamVersion: 'v1',\n }),\n stream: this.toDataStream({\n data,\n getErrorMessage,\n sendUsage,\n sendReasoning,\n sendSources,\n experimental_sendFinish,\n }),\n });\n }\n\n pipeTextStreamToResponse(response: ServerResponse, init?: ResponseInit) {\n writeToServerResponse({\n response,\n status: init?.status,\n statusText: init?.statusText,\n headers: prepareOutgoingHttpHeaders(init?.headers, {\n contentType: 'text/plain; charset=utf-8',\n }),\n stream: this.textStream.pipeThrough(new TextEncoderStream()),\n });\n }\n\n // TODO breaking change 5.0: remove pipeThrough(new TextEncoderStream())\n toDataStream(\n options?: DataStreamOptions & {\n data?: StreamData;\n getErrorMessage?: (error: unknown) => string;\n },\n ) {\n const stream = this.toDataStreamInternal({\n getErrorMessage: options?.getErrorMessage,\n sendUsage: options?.sendUsage,\n sendReasoning: options?.sendReasoning,\n sendSources: options?.sendSources,\n experimental_sendFinish: options?.experimental_sendFinish,\n }).pipeThrough(new TextEncoderStream());\n\n return options?.data ? mergeStreams(options?.data.stream, stream) : stream;\n }\n\n mergeIntoDataStream(writer: DataStreamWriter, options?: DataStreamOptions) {\n writer.merge(\n this.toDataStreamInternal({\n getErrorMessage: writer.onError,\n sendUsage: options?.sendUsage,\n sendReasoning: options?.sendReasoning,\n sendSources: options?.sendSources,\n experimental_sendFinish: options?.experimental_sendFinish,\n }),\n );\n }\n\n toDataStreamResponse({\n headers,\n status,\n statusText,\n data,\n getErrorMessage,\n sendUsage,\n sendReasoning,\n sendSources,\n experimental_sendFinish,\n }: ResponseInit &\n DataStreamOptions & {\n data?: StreamData;\n getErrorMessage?: (error: unknown) => string;\n } = {}): Response {\n return new Response(\n this.toDataStream({\n data,\n getErrorMessage,\n sendUsage,\n sendReasoning,\n sendSources,\n experimental_sendFinish,\n }),\n {\n status,\n statusText,\n headers: prepareResponseHeaders(headers, {\n contentType: 'text/plain; charset=utf-8',\n dataStreamVersion: 'v1',\n }),\n },\n );\n }\n\n toTextStreamResponse(init?: ResponseInit): Response {\n return new Response(this.textStream.pipeThrough(new TextEncoderStream()), {\n status: init?.status ?? 200,\n headers: prepareResponseHeaders(init?.headers, {\n contentType: 'text/plain; charset=utf-8',\n }),\n });\n }\n}\n","import { z } from 'zod';\nimport {\n inferParameters,\n Tool,\n ToolExecutionOptions,\n ToolParameters,\n} from '../tool';\n\nexport const LATEST_PROTOCOL_VERSION = '2024-11-05';\nexport const SUPPORTED_PROTOCOL_VERSIONS = [\n LATEST_PROTOCOL_VERSION,\n '2024-10-07',\n];\n\nexport type ToolSchemas =\n | Record<string, { parameters: ToolParameters }>\n | 'automatic'\n | undefined;\n\nexport type McpToolSet<TOOL_SCHEMAS extends ToolSchemas = 'automatic'> =\n TOOL_SCHEMAS extends Record<string, { parameters: ToolParameters }>\n ? {\n [K in keyof TOOL_SCHEMAS]: Tool<\n TOOL_SCHEMAS[K]['parameters'],\n CallToolResult\n > & {\n execute: (\n args: inferParameters<TOOL_SCHEMAS[K]['parameters']>,\n options: ToolExecutionOptions,\n ) => PromiseLike<CallToolResult>;\n };\n }\n : {\n [k: string]: Tool<z.ZodUnknown, CallToolResult> & {\n execute: (\n args: unknown,\n options: ToolExecutionOptions,\n ) => PromiseLike<CallToolResult>;\n };\n };\n\nconst ClientOrServerImplementationSchema = z\n .object({\n name: z.string(),\n version: z.string(),\n })\n .passthrough();\nexport type Configuration = z.infer<typeof ClientOrServerImplementationSchema>;\n\nexport const BaseParamsSchema = z\n .object({\n _meta: z.optional(z.object({}).passthrough()),\n })\n .passthrough();\ntype BaseParams = z.infer<typeof BaseParamsSchema>;\nexport const ResultSchema = BaseParamsSchema;\n\nexport const RequestSchema = z.object({\n method: z.string(),\n params: z.optional(BaseParamsSchema),\n});\nexport type Request = z.infer<typeof RequestSchema>;\nexport type RequestOptions = {\n signal?: AbortSignal;\n timeout?: number;\n maxTotalTimeout?: number;\n};\n\nexport type Notification = z.infer<typeof RequestSchema>;\n\nconst ServerCapabilitiesSchema = z\n .object({\n experimental: z.optional(z.object({}).passthrough()),\n logging: z.optional(z.object({}).passthrough()),\n prompts: z.optional(\n z\n .object({\n listChanged: z.optional(z.boolean()),\n })\n .passthrough(),\n ),\n resources: z.optional(\n z\n .object({\n subscribe: z.optional(z.boolean()),\n listChanged: z.optional(z.boolean()),\n })\n .passthrough(),\n ),\n tools: z.optional(\n z\n .object({\n listChanged: z.optional(z.boolean()),\n })\n .passthrough(),\n ),\n })\n .passthrough();\nexport type ServerCapabilities = z.infer<typeof ServerCapabilitiesSchema>;\n\nexport const InitializeResultSchema = ResultSchema.extend({\n protocolVersion: z.string(),\n capabilities: ServerCapabilitiesSchema,\n serverInfo: ClientOrServerImplementationSchema,\n instructions: z.optional(z.string()),\n});\nexport type InitializeResult = z.infer<typeof InitializeResultSchema>;\n\nexport type PaginatedRequest = Request & {\n params?: BaseParams & {\n cursor?: string;\n };\n};\n\nconst PaginatedResultSchema = ResultSchema.extend({\n nextCursor: z.optional(z.string()),\n});\n\nconst ToolSchema = z\n .object({\n name: z.string(),\n description: z.optional(z.string()),\n inputSchema: z\n .object({\n type: z.literal('object'),\n properties: z.optional(z.object({}).passthrough()),\n })\n .passthrough(),\n })\n .passthrough();\nexport type MCPTool = z.infer<typeof ToolSchema>;\nexport const ListToolsResultSchema = PaginatedResultSchema.extend({\n tools: z.array(ToolSchema),\n});\nexport type ListToolsResult = z.infer<typeof ListToolsResultSchema>;\n\nconst TextContentSchema = z\n .object({\n type: z.literal('text'),\n text: z.string(),\n })\n .passthrough();\nconst ImageContentSchema = z\n .object({\n type: z.literal('image'),\n data: z.string().base64(),\n mimeType: z.string(),\n })\n .passthrough();\nconst ResourceContentsSchema = z\n .object({\n /**\n * The URI of this resource.\n */\n uri: z.string(),\n /**\n * The MIME type of this resource, if known.\n */\n mimeType: z.optional(z.string()),\n })\n .passthrough();\nconst TextResourceContentsSchema = ResourceContentsSchema.extend({\n text: z.string(),\n});\nconst BlobResourceContentsSchema = ResourceContentsSchema.extend({\n blob: z.string().base64(),\n});\nconst EmbeddedResourceSchema = z\n .object({\n type: z.literal('resource'),\n resource: z.union([TextResourceContentsSchema, BlobResourceContentsSchema]),\n })\n .passthrough();\n\nexport const CallToolResultSchema = ResultSchema.extend({\n content: z.array(\n z.union([TextContentSchema, ImageContentSchema, EmbeddedResourceSchema]),\n ),\n isError: z.boolean().default(false).optional(),\n}).or(\n ResultSchema.extend({\n toolResult: z.unknown(),\n }),\n);\nexport type CallToolResult = z.infer<typeof CallToolResultSchema>;\n","import { z } from 'zod';\nimport { BaseParamsSchema, RequestSchema, ResultSchema } from './types';\n\nconst JSONRPC_VERSION = '2.0';\n\nconst JSONRPCRequestSchema = z\n .object({\n jsonrpc: z.literal(JSONRPC_VERSION),\n id: z.union([z.string(), z.number().int()]),\n })\n .merge(RequestSchema)\n .strict();\n\nexport type JSONRPCRequest = z.infer<typeof JSONRPCRequestSchema>;\n\nconst JSONRPCResponseSchema = z\n .object({\n jsonrpc: z.literal(JSONRPC_VERSION),\n id: z.union([z.string(), z.number().int()]),\n result: ResultSchema,\n })\n .strict();\n\nexport type JSONRPCResponse = z.infer<typeof JSONRPCResponseSchema>;\n\nconst JSONRPCErrorSchema = z\n .object({\n jsonrpc: z.literal(JSONRPC_VERSION),\n id: z.union([z.string(), z.number().int()]),\n error: z.object({\n code: z.number().int(),\n message: z.string(),\n data: z.optional(z.unknown()),\n }),\n })\n .strict();\n\nexport type JSONRPCError = z.infer<typeof JSONRPCErrorSchema>;\n\nconst JSONRPCNotificationSchema = z\n .object({\n jsonrpc: z.literal(JSONRPC_VERSION),\n })\n .merge(\n z.object({\n method: z.string(),\n params: z.optional(BaseParamsSchema),\n }),\n )\n .strict();\n\nexport type JSONRPCNotification = z.infer<typeof JSONRPCNotificationSchema>;\n\nexport const JSONRPCMessageSchema = z.union([\n JSONRPCRequestSchema,\n JSONRPCNotificationSchema,\n JSONRPCResponseSchema,\n JSONRPCErrorSchema,\n]);\n\nexport type JSONRPCMessage = z.infer<typeof JSONRPCMessageSchema>;\n","import { formatDataStreamPart } from '@ai-sdk/ui-utils';\nimport { DataStreamWriter } from '../core/data-stream/data-stream-writer';\nimport { mergeStreams } from '../core/util/merge-streams';\nimport { prepareResponseHeaders } from '../core/util/prepare-response-headers';\nimport {\n createCallbacksTransformer,\n StreamCallbacks,\n} from './stream-callbacks';\nimport { StreamData } from './stream-data';\n\ntype LangChainImageDetail = 'auto' | 'low' | 'high';\n\ntype LangChainMessageContentText = {\n type: 'text';\n text: string;\n};\n\ntype LangChainMessageContentImageUrl = {\n type: 'image_url';\n image_url:\n | string\n | {\n url: string;\n detail?: LangChainImageDetail;\n };\n};\n\ntype LangChainMessageContentComplex =\n | LangChainMessageContentText\n | LangChainMessageContentImageUrl\n | (Record<string, any> & {\n type?: 'text' | 'image_url' | string;\n })\n | (Record<string, any> & {\n type?: never;\n });\n\ntype LangChainMessageContent = string | LangChainMessageContentComplex[];\n\ntype LangChainAIMessageChunk = {\n content: LangChainMessageContent;\n};\n\n// LC stream event v2\ntype LangChainStreamEvent = {\n event: string;\n data: any;\n};\n\nfunction toDataStreamInternal(\n stream:\n | ReadableStream<LangChainStreamEvent>\n | ReadableStream<LangChainAIMessageChunk>\n | ReadableStream<string>,\n callbacks?: StreamCallbacks,\n) {\n return stream\n .pipeThrough(\n new TransformStream<\n LangChainStreamEvent | LangChainAIMessageChunk | string\n >({\n transform: async (value, controller) => {\n // text stream:\n if (typeof value === 'string') {\n controller.enqueue(value);\n return;\n }\n\n // LC stream events v2:\n if ('event' in value) {\n // chunk is AIMessage Chunk for on_chat_model_stream event:\n if (value.event === 'on_chat_model_stream') {\n forwardAIMessageChunk(\n value.data?.chunk as LangChainAIMessageChunk,\n controller,\n );\n }\n return;\n }\n\n // AI Message chunk stream:\n forwardAIMessageChunk(value, controller);\n },\n }),\n )\n .pipeThrough(createCallbacksTransformer(callbacks))\n .pipeThrough(new TextDecoderStream())\n .pipeThrough(\n new TransformStream({\n transform: async (chunk, controller) => {\n controller.enqueue(formatDataStreamPart('text', chunk));\n },\n }),\n );\n}\n\n/**\nConverts LangChain output streams to an AI SDK Data Stream.\n\nThe following streams are supported:\n- `LangChainAIMessageChunk` streams (LangChain `model.stream` output)\n- `string` streams (LangChain `StringOutputParser` output)\n */\nexport function toDataStream(\n stream:\n | ReadableStream<LangChainStreamEvent>\n | ReadableStream<LangChainAIMessageChunk>\n | ReadableStream<string>,\n callbacks?: StreamCallbacks,\n) {\n return toDataStreamInternal(stream, callbacks).pipeThrough(\n new TextEncoderStream(),\n );\n}\n\nexport function toDataStreamResponse(\n stream:\n | ReadableStream<LangChainStreamEvent>\n | ReadableStream<LangChainAIMessageChunk>\n | ReadableStream<string>,\n options?: {\n init?: ResponseInit;\n data?: StreamData;\n callbacks?: StreamCallbacks;\n },\n) {\n const dataStream = toDataStreamInternal(\n stream,\n options?.callbacks,\n ).pipeThrough(new TextEncoderStream());\n const data = options?.data;\n const init = options?.init;\n\n const responseStream = data\n ? mergeStreams(data.stream, dataStream)\n : dataStream;\n\n return new Response(responseStream, {\n status: init?.status ?? 200,\n statusText: init?.statusText,\n headers: prepareResponseHeaders(init?.headers, {\n contentType: 'text/plain; charset=utf-8',\n dataStreamVersion: 'v1',\n }),\n });\n}\n\nexport function mergeIntoDataStream(\n stream:\n | ReadableStream<LangChainStreamEvent>\n | ReadableStream<LangChainAIMessageChunk>\n | ReadableStream<string>,\n options: { dataStream: DataStreamWriter; callbacks?: StreamCallbacks },\n) {\n options.dataStream.merge(toDataStreamInternal(stream, options.callbacks));\n}\n\nfunction forwardAIMessageChunk(\n chunk: LangChainAIMessageChunk,\n controller: TransformStreamDefaultController<any>,\n) {\n if (typeof chunk.content === 'string') {\n controller.enqueue(chunk.content);\n } else {\n const content: LangChainMessageContentComplex[] = chunk.content;\n for (const item of content) {\n if (item.type === 'text') {\n controller.enqueue(item.text);\n }\n }\n }\n}\n","/**\n * Configuration options and helper callback methods for stream lifecycle events.\n */\nexport interface StreamCallbacks {\n /** `onStart`: Called once when the stream is initialized. */\n onStart?: () => Promise<void> | void;\n\n /**\n * `onCompletion`: Called for each tokenized message.\n *\n * @deprecated Use `onFinal` instead.\n */\n onCompletion?: (completion: string) => Promise<void> | void;\n\n /** `onFinal`: Called once when the stream is closed with the final completion message. */\n onFinal?: (completion: string) => Promise<void> | void;\n\n /** `onToken`: Called for each tokenized message. */\n onToken?: (token: string) => Promise<void> | void;\n\n /** `onText`: Called for each text chunk. */\n onText?: (text: string) => Promise<void> | void;\n}\n\n/**\n * Creates a transform stream that encodes input messages and invokes optional callback functions.\n * The transform stream uses the provided callbacks to execute custom logic at different stages of the stream's lifecycle.\n * - `onStart`: Called once when the stream is initialized.\n * - `onToken`: Called for each tokenized message.\n * - `onCompletion`: Called every time a completion message is received. This can occur multiple times when using e.g. OpenAI functions\n * - `onFinal`: Called once when the stream is closed with the final completion message.\n *\n * This function is useful when you want to process a stream of messages and perform specific actions during the stream's lifecycle.\n *\n * @param {StreamCallbacks} [callbacks] - An object containing the callback functions.\n * @return {TransformStream<string, Uint8Array>} A transform stream that encodes input messages as Uint8Array and allows the execution of custom logic through callbacks.\n *\n * @example\n * const callbacks = {\n * onStart: async () => console.log('Stream started'),\n * onToken: async (token) => console.log(`Token: ${token}`),\n * onCompletion: async (completion) => console.log(`Completion: ${completion}`)\n * onFinal: async () => data.close()\n * };\n * const transformer = createCallbacksTransformer(callbacks);\n */\nexport function createCallbacksTransformer(\n callbacks: StreamCallbacks | undefined = {},\n): TransformStream<string, Uint8Array> {\n const textEncoder = new TextEncoder();\n let aggregatedResponse = '';\n\n return new TransformStream({\n async start(): Promise<void> {\n if (callbacks.onStart) await callbacks.onStart();\n },\n\n async transform(message, controller): Promise<void> {\n controller.enqueue(textEncoder.encode(message));\n\n aggregatedResponse += message;\n\n if (callbacks.onToken) await callbacks.onToken(message);\n if (callbacks.onText && typeof message === 'string') {\n await callbacks.onText(message);\n }\n },\n\n async flush(): Promise<void> {\n if (callbacks.onCompletion) {\n await callbacks.onCompletion(aggregatedResponse);\n }\n if (callbacks.onFinal) {\n await callbacks.onFinal(aggregatedResponse);\n }\n },\n });\n}\n","import { convertAsyncIteratorToReadableStream } from '@ai-sdk/provider-utils';\nimport { formatDataStreamPart } from '@ai-sdk/ui-utils';\nimport { DataStreamWriter } from '../core/data-stream/data-stream-writer';\nimport { mergeStreams } from '../core/util/merge-streams';\nimport { prepareResponseHeaders } from '../core/util/prepare-response-headers';\nimport {\n createCallbacksTransformer,\n StreamCallbacks,\n} from './stream-callbacks';\nimport { StreamData } from './stream-data';\n\ntype EngineResponse = {\n delta: string;\n};\n\nfunction toDataStreamInternal(\n stream: AsyncIterable<EngineResponse>,\n callbacks?: StreamCallbacks,\n) {\n const trimStart = trimStartOfStream();\n\n return convertAsyncIteratorToReadableStream(stream[Symbol.asyncIterator]())\n .pipeThrough(\n new TransformStream({\n async transform(message, controller): Promise<void> {\n controller.enqueue(trimStart(message.delta));\n },\n }),\n )\n .pipeThrough(createCallbacksTransformer(callbacks))\n .pipeThrough(new TextDecoderStream())\n .pipeThrough(\n new TransformStream({\n transform: async (chunk, controller) => {\n controller.enqueue(formatDataStreamPart('text', chunk));\n },\n }),\n );\n}\n\nexport function toDataStream(\n stream: AsyncIterable<EngineResponse>,\n callbacks?: StreamCallbacks,\n) {\n return toDataStreamInternal(stream, callbacks).pipeThrough(\n new TextEncoderStream(),\n );\n}\n\nexport function toDataStreamResponse(\n stream: AsyncIterable<EngineResponse>,\n options: {\n init?: ResponseInit;\n data?: StreamData;\n callbacks?: StreamCallbacks;\n } = {},\n) {\n const { init, data, callbacks } = options;\n const dataStream = toDataStreamInternal(stream, callbacks).pipeThrough(\n new TextEncoderStream(),\n );\n const responseStream = data\n ? mergeStreams(data.stream, dataStream)\n : dataStream;\n\n return new Response(responseStream, {\n status: init?.status ?? 200,\n statusText: init?.statusText,\n headers: prepareResponseHeaders(init?.headers, {\n contentType: 'text/plain; charset=utf-8',\n dataStreamVersion: 'v1',\n }),\n });\n}\n\nexport function mergeIntoDataStream(\n stream: AsyncIterable<EngineResponse>,\n options: {\n dataStream: DataStreamWriter;\n callbacks?: StreamCallbacks;\n },\n) {\n options.dataStream.merge(toDataStreamInternal(stream, options.callbacks));\n}\n\nfunction trimStartOfStream(): (text: string) => string {\n let isStreamStart = true;\n\n return (text: string): string => {\n if (isStreamStart) {\n text = text.trimStart();\n if (text) isStreamStart = false;\n }\n return text;\n };\n}\n","import { z } from 'zod';\nimport type { ZodSchema as ZodSchemaV3, ZodType as ZodTypeV3 } from 'zod/v3';\nimport type { ZodType as ZodSchemaV4, ZodType as ZodTypeV4 } from 'zod/v4';\nimport { convertJsonSchemaToZod } from 'zod-from-json-schema';\nimport { convertJsonSchemaToZod as convertJsonSchemaToZodV3 } from 'zod-from-json-schema-v3';\nimport type { Targets } from 'zod-to-json-schema';\nimport type { JSONSchema7, Schema } from './json-schema';\nimport { jsonSchema } from './json-schema';\nimport type { PublicSchema } from './schema';\nimport { isStandardSchemaWithJSON, standardSchemaToJSONSchema, toStandardSchema } from './schema';\nimport type { SchemaCompatLayer } from './schema-compatibility';\nimport { zodToJsonSchema } from './zod-to-json';\n\ntype ZodSchema = ZodSchemaV3 | ZodSchemaV4;\ntype ZodType = ZodTypeV3 | ZodTypeV4;\n\n/**\n * Converts a Zod schema to an AI SDK Schema with validation support.\n *\n * This function mirrors the behavior of Vercel's AI SDK zod-schema utility but allows\n * customization of the JSON Schema target format.\n *\n * @param zodSchema - The Zod schema to convert\n * @param target - The JSON Schema target format (defaults to 'jsonSchema7')\n * @returns An AI SDK Schema object with built-in validation\n *\n * @example\n * ```typescript\n * import { z } from 'zod';\n * import { convertZodSchemaToAISDKSchema } from '@mastra/schema-compat';\n *\n * const userSchema = z.object({\n * name: z.string(),\n * age: z.number().min(0)\n * });\n *\n * const aiSchema = convertZodSchemaToAISDKSchema(userSchema);\n * ```\n */\n// mirrors https://github.com/vercel/ai/blob/main/packages/ui-utils/src/zod-schema.ts#L21 but with a custom target\nexport function convertZodSchemaToAISDKSchema(zodSchema: ZodSchema, target: Targets = 'jsonSchema7'): Schema<any> {\n const jsonSchemaToUse = zodToJsonSchema(zodSchema, target) as JSONSchema7;\n\n return jsonSchema(jsonSchemaToUse, {\n validate: value => {\n const result = zodSchema.safeParse(value);\n return result.success ? { success: true, value: result.data } : { success: false, error: result.error };\n },\n });\n}\n\n/**\n * Checks if a value is a Zod type by examining its properties and methods.\n *\n * @param value - The value to check\n * @returns True if the value is a Zod type, false otherwise\n * @internal\n */\nexport function isZodType(value: unknown): value is ZodType {\n // Check if it's a Zod schema by looking for common Zod properties and methods\n // _def is used in Zod v3, _zod is used in Zod v4\n return (\n typeof value === 'object' &&\n value !== null &&\n ('_def' in value || '_zod' in value) &&\n 'parse' in value &&\n typeof (value as any).parse === 'function' &&\n 'safeParse' in value &&\n typeof (value as any).safeParse === 'function'\n );\n}\n\n/**\n * Converts an AI SDK Schema or Zod schema to a Zod schema.\n *\n * If the input is already a Zod schema, it returns it unchanged.\n * If the input is an AI SDK Schema, it extracts the JSON schema and converts it to Zod.\n *\n * @param schema - The schema to convert (AI SDK Schema or Zod schema)\n * @returns A Zod schema equivalent of the input\n * @throws Error if the conversion fails\n *\n * @example\n * ```typescript\n * import { jsonSchema } from 'ai';\n * import { convertSchemaToZod } from '@mastra/schema-compat';\n *\n * const aiSchema = jsonSchema({\n * type: 'object',\n * properties: {\n * name: { type: 'string' }\n * }\n * });\n *\n * const zodSchema = convertSchemaToZod(aiSchema);\n * ```\n */\nexport function convertSchemaToZod(schema: Schema | ZodSchema | JSONSchema7): ZodType {\n if (isZodType(schema)) {\n return schema;\n } else {\n const jsonSchemaToConvert = 'jsonSchema' in schema ? schema.jsonSchema : schema;\n try {\n if ('toJSONSchema' in z) {\n // @ts-expect-error - type issue in convertJsonSchemaToZod\n return convertJsonSchemaToZod(jsonSchemaToConvert);\n } else {\n // @ts-expect-error - type issue in convertJsonSchemaToZodV3\n return convertJsonSchemaToZodV3(jsonSchemaToConvert);\n }\n } catch (e: unknown) {\n const errorMessage = `[Schema Builder] Failed to convert schema parameters to Zod. Original schema: ${JSON.stringify(jsonSchemaToConvert)}`;\n console.error(errorMessage, e);\n throw new Error(errorMessage + (e instanceof Error ? `\\n${e.stack}` : '\\nUnknown error object'));\n }\n }\n}\n\n/**\n * Processes a schema using provider compatibility layers and converts it to an AI SDK Schema.\n *\n * @param options - Configuration object for schema processing\n * @param options.schema - The schema to process (AI SDK Schema or Zod object schema)\n * @param options.compatLayers - Array of compatibility layers to try\n * @param options.mode - Must be 'aiSdkSchema'\n * @returns Processed schema as an AI SDK Schema\n */\nexport function applyCompatLayer(options: {\n schema: PublicSchema<any>;\n compatLayers: SchemaCompatLayer[];\n mode: 'aiSdkSchema';\n}): Schema;\n\n/**\n * Processes a schema using provider compatibility layers and converts it to a JSON Schema.\n *\n * @param options - Configuration object for schema processing\n * @param options.schema - The schema to process (AI SDK Schema or Zod object schema)\n * @param options.compatLayers - Array of compatibility layers to try\n * @param options.mode - Must be 'jsonSchema'\n * @returns Processed schema as a JSONSchema7\n */\nexport function applyCompatLayer(options: {\n schema: PublicSchema<any>;\n compatLayers: SchemaCompatLayer[];\n mode: 'jsonSchema';\n}): JSONSchema7;\n\n/**\n * Processes a schema using provider compatibility layers and converts it to the specified format.\n *\n * This function automatically applies the first matching compatibility layer from the provided\n * list based on the model configuration. If no compatibility applies, it falls back to\n * standard conversion.\n *\n * @param options - Configuration object for schema processing\n * @param options.schema - The schema to process (AI SDK Schema or Zod object schema)\n * @param options.compatLayers - Array of compatibility layers to try\n * @param options.mode - Output format: 'jsonSchema' for JSONSchema7 or 'aiSdkSchema' for AI SDK Schema\n * @returns Processed schema in the requested format\n *\n * @example\n * ```typescript\n * import { z } from 'zod';\n * import { applyCompatLayer, OpenAISchemaCompatLayer, AnthropicSchemaCompatLayer } from '@mastra/schema-compat';\n *\n * const schema = z.object({\n * query: z.string().email(),\n * limit: z.number().min(1).max(100)\n * });\n *\n * const compatLayers = [\n * new OpenAISchemaCompatLayer(model),\n * new AnthropicSchemaCompatLayer(model)\n * ];\n *\n * const result = applyCompatLayer({\n * schema,\n * compatLayers,\n * mode: 'aiSdkSchema'\n * });\n * ```\n */\nexport function applyCompatLayer({\n schema,\n compatLayers,\n mode,\n}: {\n schema: PublicSchema<any>;\n compatLayers: SchemaCompatLayer[];\n mode: 'jsonSchema' | 'aiSdkSchema';\n}): JSONSchema7 | Schema {\n if (mode === 'jsonSchema') {\n const standardSchema = toStandardSchema(schema);\n\n for (const compat of compatLayers) {\n if (compat.shouldApply()) {\n const compatSchema = compat.processToCompatSchema(standardSchema);\n\n return standardSchemaToJSONSchema(compatSchema);\n }\n }\n\n return standardSchemaToJSONSchema(standardSchema);\n } else {\n let zodSchema: ZodSchema;\n\n if (isZodType(schema)) {\n zodSchema = schema;\n } else {\n if (isStandardSchemaWithJSON(schema)) {\n throw new Error('StandardSchemaWithJSON is not supported for applyCompatLayer and aiSdkSchema mode');\n }\n\n // Convert non-zod schema to Zod\n // After ruling out ZodType and StandardSchemaWithJSON above, remaining PublicSchema\n // types are Schema (v4/v5/v6) and JSONSchema7, all handled by convertSchemaToZod\n zodSchema = convertSchemaToZod(schema as Schema | JSONSchema7);\n }\n\n for (const compat of compatLayers) {\n if (compat.shouldApply()) {\n return compat.processToAISDKSchema(zodSchema);\n }\n }\n\n return convertZodSchemaToAISDKSchema(zodSchema);\n }\n}\n","import {\n z,\n ZodOptional,\n ZodObject,\n ZodArray,\n ZodUnion,\n ZodString,\n ZodNumber,\n ZodDate,\n ZodDefault,\n ZodNull,\n ZodNullable,\n ZodIntersection,\n} from 'zod/v3';\nimport type { ZodTypeAny } from 'zod/v3';\nimport type { Targets } from 'zod-to-json-schema';\nimport type { JSONSchema7, Schema } from './json-schema';\nimport type { SchemaCompatLayer as ParentSchemaCompatLayer } from './schema-compatibility';\nimport type { ModelInformation } from './types';\nimport { convertZodSchemaToAISDKSchema } from './utils';\n\n/**\n * All supported string validation check types that can be processed or converted to descriptions.\n * @constant\n */\nexport const ALL_STRING_CHECKS = ['regex', 'emoji', 'email', 'url', 'uuid', 'cuid', 'min', 'max'] as const;\n\n/**\n * All supported number validation check types that can be processed or converted to descriptions.\n * @constant\n */\nexport const ALL_NUMBER_CHECKS = [\n 'min', // gte internally\n 'max', // lte internally\n 'multipleOf',\n] as const;\n\n/**\n * All supported array validation check types that can be processed or converted to descriptions.\n * @constant\n */\nexport const ALL_ARRAY_CHECKS = ['min', 'max', 'length'] as const;\n\nexport const isOptional = (v: ZodTypeAny): v is ZodOptional<any> => v instanceof ZodOptional;\nexport const isObj = (v: ZodTypeAny): v is ZodObject<any, any, any> => v instanceof ZodObject;\nexport const isNull = (v: ZodTypeAny): v is ZodNull => v instanceof ZodNull;\nexport const isNullable = (v: ZodTypeAny): v is ZodNullable<any> => v instanceof ZodNullable;\nexport const isArr = (v: ZodTypeAny): v is ZodArray<any, any> => v instanceof ZodArray;\nexport const isUnion = (v: ZodTypeAny): v is ZodUnion<[ZodTypeAny, ...ZodTypeAny[]]> => v instanceof ZodUnion;\nexport const isString = (v: ZodTypeAny): v is ZodString => v instanceof ZodString;\nexport const isNumber = (v: ZodTypeAny): v is ZodNumber => v instanceof ZodNumber;\nexport const isDate = (v: ZodTypeAny): v is ZodDate => v instanceof ZodDate;\nexport const isDefault = (v: ZodTypeAny): v is ZodDefault<any> => v instanceof ZodDefault;\nexport const isIntersection = (v: ZodTypeAny): v is ZodIntersection<any, any> => v instanceof ZodIntersection;\n\n/**\n * Zod types that are not supported by most AI model providers and should be avoided.\n * @constant\n */\nexport const UNSUPPORTED_ZOD_TYPES = ['ZodIntersection', 'ZodNever', 'ZodNull', 'ZodTuple', 'ZodUndefined'] as const;\n\n/**\n * Zod types that are generally supported by AI model providers.\n * @constant\n */\nexport const SUPPORTED_ZOD_TYPES = [\n 'ZodObject',\n 'ZodArray',\n 'ZodUnion',\n 'ZodString',\n 'ZodNumber',\n 'ZodDate',\n 'ZodAny',\n 'ZodDefault',\n 'ZodNullable',\n] as const;\n\n/**\n * All Zod types (both supported and unsupported).\n * @constant\n */\nexport const ALL_ZOD_TYPES = [...SUPPORTED_ZOD_TYPES, ...UNSUPPORTED_ZOD_TYPES] as const;\n\n/**\n * Type representing string validation checks.\n */\nexport type StringCheckType = (typeof ALL_STRING_CHECKS)[number];\n\n/**\n * Type representing number validation checks.\n */\nexport type NumberCheckType = (typeof ALL_NUMBER_CHECKS)[number];\n\n/**\n * Type representing array validation checks.\n */\nexport type ArrayCheckType = (typeof ALL_ARRAY_CHECKS)[number];\n\n/**\n * Type representing unsupported Zod schema types.\n */\nexport type UnsupportedZodType = (typeof UNSUPPORTED_ZOD_TYPES)[number];\n\n/**\n * Type representing supported Zod schema types.\n */\nexport type SupportedZodType = (typeof SUPPORTED_ZOD_TYPES)[number];\n\n/**\n * Type representing all Zod schema types (supported and unsupported).\n */\nexport type AllZodType = (typeof ALL_ZOD_TYPES)[number];\n\n/**\n * Utility type to extract the shape of a Zod object schema.\n */\nexport type ZodShape<T extends z.AnyZodObject> = T['shape'];\n\n/**\n * Utility type to extract the keys from a Zod object shape.\n */\nexport type ShapeKey<T extends z.AnyZodObject> = keyof ZodShape<T>;\n\n/**\n * Utility type to extract the value types from a Zod object shape.\n */\nexport type ShapeValue<T extends z.AnyZodObject> = ZodShape<T>[ShapeKey<T>];\n\n// Add constraint types at the top\n\ntype ConstraintHelperText = string[];\n\n/**\n * Abstract base class for creating schema compatibility layers for different AI model providers.\n *\n * This class provides a framework for transforming Zod schemas to work with specific AI model\n * provider requirements and limitations. Each provider may have different support levels for\n * JSON Schema features, validation constraints, and data types.\n *\n *\n * @example\n * ```typescript\n * import { SchemaCompatLayer } from '@mastra/schema-compat';\n * import type { LanguageModelV1 } from 'ai';\n *\n * class CustomProviderCompat extends SchemaCompatLayer {\n * constructor(model: ModelInformation) {\n * super(model);\n * }\n *\n * shouldApply(): boolean {\n * return this.getModel().provider === 'custom-provider';\n * }\n *\n * getSchemaTarget() {\n * return 'jsonSchema7';\n * }\n *\n * processZodType<T extends z.AnyZodObject>(value: z.ZodTypeAny): ShapeValue<T> {\n * // Custom processing logic for this provider\n * switch (value._def.typeName) {\n * case 'ZodString':\n * return this.defaultZodStringHandler(value, ['email', 'url']);\n * default:\n * return this.defaultUnsupportedZodTypeHandler(value);\n * }\n * }\n * }\n * ```\n */\nexport class SchemaCompatLayer {\n private model: ModelInformation;\n private parent: ParentSchemaCompatLayer;\n\n /**\n * Creates a new schema compatibility instance.\n *\n * @param model - The language model this compatibility layer applies to\n */\n constructor(model: ModelInformation, parent: ParentSchemaCompatLayer) {\n this.model = model;\n this.parent = parent;\n }\n\n /**\n * Gets the language model associated with this compatibility layer.\n *\n * @returns The language model instance\n */\n getModel(): ModelInformation {\n return this.model;\n }\n\n getUnsupportedZodTypes(): readonly string[] {\n return UNSUPPORTED_ZOD_TYPES;\n }\n\n /**\n * Type guard for optional Zod types\n */\n isOptional(v: ZodTypeAny): v is ZodOptional<any> {\n return v instanceof ZodOptional;\n }\n\n /**\n * Type guard for object Zod types\n */\n isObj(v: ZodTypeAny): v is ZodObject<any, any, any> {\n return v instanceof ZodObject;\n }\n\n /**\n * Type guard for null Zod types\n */\n isNull(v: ZodTypeAny): v is ZodNull {\n return v instanceof ZodNull;\n }\n\n /**\n * Type guard for nullable Zod types\n */\n isNullable(v: ZodTypeAny): v is ZodNullable<any> {\n return v instanceof ZodNullable;\n }\n\n /**\n * Type guard for array Zod types\n */\n isArr(v: ZodTypeAny): v is ZodArray<any, any> {\n return v instanceof ZodArray;\n }\n\n /**\n * Type guard for union Zod types\n */\n isUnion(v: ZodTypeAny): v is ZodUnion<[ZodTypeAny, ...ZodTypeAny[]]> {\n return v instanceof ZodUnion;\n }\n\n /**\n * Type guard for string Zod types\n */\n isString(v: ZodTypeAny): v is ZodString {\n return v instanceof ZodString;\n }\n\n /**\n * Type guard for number Zod types\n */\n isNumber(v: ZodTypeAny): v is ZodNumber {\n return v instanceof ZodNumber;\n }\n\n /**\n * Type guard for date Zod types\n */\n isDate(v: ZodTypeAny): v is ZodDate {\n return v instanceof ZodDate;\n }\n\n /**\n * Type guard for default Zod types\n */\n isDefault(v: ZodTypeAny): v is ZodDefault<any> {\n return v instanceof ZodDefault;\n }\n\n /**\n * Type guard for intersection Zod types\n */\n isIntersection(v: ZodTypeAny): v is ZodIntersection<any, any> {\n return v instanceof ZodIntersection;\n }\n\n /**\n * Determines whether this compatibility layer should be applied for the current model.\n *\n * @returns True if this compatibility layer should be used, false otherwise\n * @abstract\n */\n shouldApply(): boolean {\n return this.parent.shouldApply();\n }\n\n /**\n * Returns the JSON Schema target format for this provider.\n *\n * @returns The schema target format, or undefined to use the default 'jsonSchema7'\n * @abstract\n */\n getSchemaTarget(): Targets | undefined {\n return this.parent.getSchemaTarget();\n }\n\n /**\n * Processes a specific Zod type according to the provider's requirements.\n *\n * @param value - The Zod type to process\n * @returns The processed Zod type\n * @abstract\n */\n processZodType(value: ZodTypeAny): ZodTypeAny {\n return this.parent.processZodType(value) as ZodTypeAny;\n }\n\n /**\n * Default handler for Zod object types. Recursively processes all properties in the object.\n *\n * @param value - The Zod object to process\n * @returns The processed Zod object\n */\n public defaultZodObjectHandler(\n value: ZodObject<any, any, any>,\n options: { passthrough?: boolean } = { passthrough: true },\n ): ZodObject<any, any, any> {\n const processedShape = Object.entries(value.shape).reduce<Record<string, ZodTypeAny>>((acc, [key, propValue]) => {\n acc[key] = this.processZodType(propValue as ZodTypeAny);\n return acc;\n }, {});\n\n let result: ZodObject<any, any, any> = z.object(processedShape);\n\n if (value._def.unknownKeys === 'strict') {\n result = result.strict();\n }\n if (value._def.catchall && !(value._def.catchall instanceof z.ZodNever)) {\n result = result.catchall(value._def.catchall);\n }\n\n if (value.description) {\n result = result.describe(value.description);\n }\n\n if (options.passthrough && value._def.unknownKeys === 'passthrough') {\n result = result.passthrough();\n }\n\n return result;\n }\n\n /**\n * Merges validation constraints into a parameter description.\n *\n * This helper method converts validation constraints that may not be supported\n * by a provider into human-readable descriptions.\n *\n * @param description - The existing parameter description\n * @param constraints - The validation constraints to merge\n * @returns The updated description with constraints, or undefined if no constraints\n */\n public mergeParameterDescription(\n description: string | undefined,\n constraints: ConstraintHelperText,\n ): string | undefined {\n if (constraints.length > 0) {\n return (description ? description + '\\n' : '') + `constraints: ${constraints.join(`, `)}`;\n } else {\n return description;\n }\n }\n\n /**\n * Default handler for unsupported Zod types. Throws an error for specified unsupported types.\n *\n * @param value - The Zod type to check\n * @param throwOnTypes - Array of type names to throw errors for\n * @returns The original value if not in the throw list\n * @throws Error if the type is in the unsupported list\n */\n public defaultUnsupportedZodTypeHandler<T extends z.AnyZodObject>(\n value: z.ZodTypeAny,\n throwOnTypes: readonly UnsupportedZodType[] = UNSUPPORTED_ZOD_TYPES,\n ): ShapeValue<T> {\n if (throwOnTypes.includes(value._def?.typeName as UnsupportedZodType)) {\n throw new Error(`${this.model.modelId} does not support zod type: ${value._def?.typeName}`);\n }\n return value as ShapeValue<T>;\n }\n\n /**\n * Default handler for Zod array types. Processes array constraints according to provider support.\n *\n * @param value - The Zod array to process\n * @param handleChecks - Array constraints to convert to descriptions vs keep as validation\n * @returns The processed Zod array\n */\n public defaultZodArrayHandler(\n value: ZodArray<any, any>,\n handleChecks: readonly ArrayCheckType[] = ALL_ARRAY_CHECKS,\n ): ZodArray<any, any> {\n const zodArrayDef = value._def;\n const processedType = this.processZodType(zodArrayDef.type);\n\n let result = z.array(processedType);\n\n const constraints: ConstraintHelperText = [];\n\n if (zodArrayDef.minLength?.value !== undefined) {\n if (handleChecks.includes('min')) {\n constraints.push(`minimum length ${zodArrayDef.minLength.value}`);\n } else {\n result = result.min(zodArrayDef.minLength.value);\n }\n }\n\n if (zodArrayDef.maxLength?.value !== undefined) {\n if (handleChecks.includes('max')) {\n constraints.push(`maximum length ${zodArrayDef.maxLength.value}`);\n } else {\n result = result.max(zodArrayDef.maxLength.value);\n }\n }\n\n if (zodArrayDef.exactLength?.value !== undefined) {\n if (handleChecks.includes('length')) {\n constraints.push(`exact length ${zodArrayDef.exactLength.value}`);\n } else {\n result = result.length(zodArrayDef.exactLength.value);\n }\n }\n\n const description = this.mergeParameterDescription(value.description, constraints);\n if (description) {\n result = result.describe(description);\n }\n return result;\n }\n\n /**\n * Default handler for Zod union types. Processes all union options.\n *\n * @param value - The Zod union to process\n * @returns The processed Zod union\n * @throws Error if union has fewer than 2 options\n */\n public defaultZodUnionHandler(value: ZodUnion<[ZodTypeAny, ...ZodTypeAny[]]>): ZodTypeAny {\n const processedOptions = value._def.options.map((option: ZodTypeAny) => this.processZodType(option));\n if (processedOptions.length < 2) throw new Error('Union must have at least 2 options');\n let result = z.union(processedOptions as [ZodTypeAny, ZodTypeAny, ...ZodTypeAny[]]);\n if (value.description) {\n result = result.describe(value.description);\n }\n return result;\n }\n\n /**\n * Default handler for Zod string types. Processes string validation constraints.\n *\n * @param value - The Zod string to process\n * @param handleChecks - String constraints to convert to descriptions vs keep as validation\n * @returns The processed Zod string\n */\n public defaultZodStringHandler(\n value: ZodString,\n handleChecks: readonly StringCheckType[] = ALL_STRING_CHECKS,\n ): ZodString {\n const constraints: ConstraintHelperText = [];\n const checks = value._def.checks || [];\n type ZodStringCheck = (typeof checks)[number];\n const newChecks: ZodStringCheck[] = [];\n for (const check of checks) {\n if ('kind' in check) {\n if (handleChecks.includes(check.kind as StringCheckType)) {\n switch (check.kind) {\n case 'regex': {\n constraints.push(`input must match this regex ${check.regex.source}`);\n break;\n }\n case 'emoji':\n case 'email':\n case 'url':\n case 'uuid':\n case 'cuid': {\n constraints.push(`a valid ${check.kind}`);\n break;\n }\n case 'min':\n case 'max': {\n constraints.push(`${check.kind}imum length ${check.value}`);\n break;\n }\n }\n } else {\n newChecks.push(check);\n }\n }\n }\n let result = z.string();\n for (const check of newChecks) {\n result = result._addCheck(check);\n }\n const description = this.mergeParameterDescription(value.description, constraints);\n if (description) {\n result = result.describe(description);\n }\n return result;\n }\n\n /**\n * Default handler for Zod number types. Processes number validation constraints.\n *\n * @param value - The Zod number to process\n * @param handleChecks - Number constraints to convert to descriptions vs keep as validation\n * @returns The processed Zod number\n */\n public defaultZodNumberHandler(\n value: ZodNumber,\n handleChecks: readonly NumberCheckType[] = ALL_NUMBER_CHECKS,\n ): ZodNumber {\n const constraints: ConstraintHelperText = [];\n const checks = value._def.checks || [];\n type ZodNumberCheck = (typeof checks)[number];\n const newChecks: ZodNumberCheck[] = [];\n for (const check of checks) {\n if ('kind' in check) {\n if (handleChecks.includes(check.kind as NumberCheckType)) {\n switch (check.kind) {\n case 'min':\n if (check.inclusive) {\n constraints.push(`greater than or equal to ${check.value}`);\n } else {\n constraints.push(`greater than ${check.value}`);\n }\n break;\n case 'max':\n if (check.inclusive) {\n constraints.push(`lower than or equal to ${check.value}`);\n } else {\n constraints.push(`lower than ${check.value}`);\n }\n break;\n case 'multipleOf': {\n constraints.push(`multiple of ${check.value}`);\n break;\n }\n }\n } else {\n newChecks.push(check);\n }\n }\n }\n let result = z.number();\n for (const check of newChecks) {\n switch (check.kind) {\n case 'int':\n result = result.int();\n break;\n case 'finite':\n result = result.finite();\n break;\n default:\n result = result._addCheck(check);\n }\n }\n const description = this.mergeParameterDescription(value.description, constraints);\n if (description) {\n result = result.describe(description);\n }\n return result;\n }\n\n /**\n * Default handler for Zod date types. Converts dates to ISO strings with constraint descriptions.\n *\n * @param value - The Zod date to process\n * @returns A Zod string schema representing the date in ISO format\n */\n public defaultZodDateHandler(value: ZodDate): ZodString {\n const constraints: ConstraintHelperText = [];\n const checks = value._def.checks || [];\n type ZodDateCheck = (typeof checks)[number];\n const newChecks: ZodDateCheck[] = [];\n for (const check of checks) {\n if ('kind' in check) {\n switch (check.kind) {\n case 'min':\n const minDate = new Date(check.value);\n if (!isNaN(minDate.getTime())) {\n constraints.push(`Date must be newer than ${minDate.toISOString()} (ISO)`);\n }\n break;\n case 'max':\n const maxDate = new Date(check.value);\n if (!isNaN(maxDate.getTime())) {\n constraints.push(`Date must be older than ${maxDate.toISOString()} (ISO)`);\n }\n break;\n default:\n newChecks.push(check);\n }\n }\n }\n constraints.push(`Date format is date-time`);\n let result = z.string().describe('date-time');\n const description = this.mergeParameterDescription(value.description, constraints);\n if (description) {\n result = result.describe(description);\n }\n return result;\n }\n\n /**\n * Default handler for Zod optional types. Processes the inner type and maintains optionality.\n *\n * @param value - The Zod optional to process\n * @param handleTypes - Types that should be processed vs passed through\n * @returns The processed Zod optional\n */\n public defaultZodOptionalHandler(\n value: ZodOptional<any>,\n handleTypes: readonly AllZodType[] = SUPPORTED_ZOD_TYPES,\n ): ZodTypeAny {\n if (handleTypes.includes(value._def.innerType._def.typeName as AllZodType)) {\n return this.processZodType(value._def.innerType).optional();\n } else {\n return value;\n }\n }\n\n /**\n * Default handler for Zod nullable types. Processes the inner type and maintains nullability.\n *\n * @param value - The Zod nullable to process\n * @param handleTypes - Types that should be processed vs passed through\n * @returns The processed Zod nullable\n */\n public defaultZodNullableHandler(\n value: ZodNullable<any>,\n handleTypes: readonly AllZodType[] = SUPPORTED_ZOD_TYPES,\n ): ZodTypeAny {\n if (handleTypes.includes(value._def.innerType._def.typeName as AllZodType)) {\n return this.processZodType(value._def.innerType).nullable();\n } else {\n return value;\n }\n }\n\n /**\n * Recursively collects leaf types from a ZodIntersection tree.\n */\n private collectIntersectionLeaves(value: ZodTypeAny): ZodTypeAny[] {\n if (value instanceof ZodIntersection) {\n return [...this.collectIntersectionLeaves(value._def.left), ...this.collectIntersectionLeaves(value._def.right)];\n }\n return [value];\n }\n\n /**\n * Default handler for Zod intersection types.\n * Flattens the intersection tree and merges object shapes into a single z.object().\n * Falls back to z.any() for non-object intersections.\n */\n public defaultZodIntersectionHandler(value: ZodIntersection<any, any>): ZodTypeAny {\n const leaves = this.collectIntersectionLeaves(value);\n const processed = leaves.map(leaf => this.processZodType(leaf));\n\n if (processed.every(p => p instanceof ZodObject)) {\n const mergedShape: Record<string, ZodTypeAny> = {};\n for (const obj of processed as ZodObject<any, any, any>[]) {\n Object.assign(mergedShape, obj.shape);\n }\n let result: ZodTypeAny = z.object(mergedShape);\n if (value.description) {\n result = result.describe(value.description);\n }\n return result;\n }\n\n return z.any().describe(value.description || 'intersection type');\n }\n\n /**\n * Processes a Zod object schema and converts it to an AI SDK Schema.\n *\n * @param zodSchema - The Zod object schema to process\n * @returns An AI SDK Schema with provider-specific compatibility applied\n */\n public processToAISDKSchema(zodSchema: z.ZodSchema): Schema {\n const processedSchema = this.processZodType(zodSchema);\n\n return convertZodSchemaToAISDKSchema(processedSchema, this.getSchemaTarget());\n }\n\n /**\n * Processes a Zod object schema and converts it to a JSON Schema.\n *\n * @param zodSchema - The Zod object schema to process\n * @returns A JSONSchema7 object with provider-specific compatibility applied\n */\n public processToJSONSchema(zodSchema: z.ZodSchema): JSONSchema7 {\n return this.processToAISDKSchema(zodSchema).jsonSchema;\n }\n}\n","import {\n z,\n ZodOptional,\n ZodObject,\n ZodArray,\n ZodUnion,\n ZodString,\n ZodNumber,\n ZodDate,\n ZodDefault,\n ZodNull,\n ZodNullable,\n ZodIntersection,\n} from 'zod/v4';\nimport type { ZodAny, ZodType } from 'zod/v4';\nimport type { Targets } from 'zod-to-json-schema';\nimport type { JSONSchema7, Schema } from './json-schema';\nimport type { SchemaCompatLayer as ParentSchemaCompatLayer } from './schema-compatibility';\nimport type { ModelInformation } from './types';\nimport { convertZodSchemaToAISDKSchema } from './utils';\n\n/**\n * All supported string validation check types that can be processed or converted to descriptions.\n * @constant\n */\nexport const ALL_STRING_CHECKS = [\n 'regex',\n 'emoji',\n 'email',\n 'url',\n 'uuid',\n 'cuid',\n 'min_length',\n 'max_length',\n 'string_format',\n] as const;\n\n/**\n * All supported number validation check types that can be processed or converted to descriptions.\n * @constant\n */\nexport const ALL_NUMBER_CHECKS = ['greater_than', 'less_than', 'multiple_of'] as const;\n\n/**\n * All supported array validation check types that can be processed or converted to descriptions.\n * @constant\n */\nexport const ALL_ARRAY_CHECKS = ['min', 'max', 'length'] as const;\n\n/**\n * Zod types that are not supported by most AI model providers and should be avoided.\n * @constant\n */\nexport const UNSUPPORTED_ZOD_TYPES = ['ZodIntersection', 'ZodNever', 'ZodNull', 'ZodTuple', 'ZodUndefined'] as const;\n\n/**\n * Zod types that are generally supported by AI model providers.\n * @constant\n */\nexport const SUPPORTED_ZOD_TYPES = [\n 'ZodObject',\n 'ZodArray',\n 'ZodUnion',\n 'ZodString',\n 'ZodNumber',\n 'ZodDate',\n 'ZodAny',\n 'ZodDefault',\n 'ZodNullable',\n] as const;\n\n/**\n * All Zod types (both supported and unsupported).\n * @constant\n */\nexport const ALL_ZOD_TYPES = [...SUPPORTED_ZOD_TYPES, ...UNSUPPORTED_ZOD_TYPES] as const;\n\n/**\n * Type representing string validation checks.\n */\nexport type StringCheckType = (typeof ALL_STRING_CHECKS)[number];\n\n/**\n * Type representing number validation checks.\n */\nexport type NumberCheckType = (typeof ALL_NUMBER_CHECKS)[number];\n\n/**\n * Type representing array validation checks.\n */\nexport type ArrayCheckType = (typeof ALL_ARRAY_CHECKS)[number];\n\n/**\n * Type representing unsupported Zod schema types.\n */\nexport type UnsupportedZodType = (typeof UNSUPPORTED_ZOD_TYPES)[number];\n\n/**\n * Type representing supported Zod schema types.\n */\nexport type SupportedZodType = (typeof SUPPORTED_ZOD_TYPES)[number];\n\n/**\n * Type representing all Zod schema types (supported and unsupported).\n */\nexport type AllZodType = (typeof ALL_ZOD_TYPES)[number];\n\n/**\n * Utility type to extract the shape of a Zod object schema.\n */\nexport type ZodShape<T extends z.ZodObject<any, any>> = T['shape'];\n\n/**\n * Utility type to extract the keys from a Zod object shape.\n */\nexport type ShapeKey<T extends z.ZodObject<any, any>> = keyof ZodShape<T>;\n\n/**\n * Utility type to extract the value types from a Zod object shape.\n */\nexport type ShapeValue<T extends z.ZodObject<any, any>> = ZodShape<T>[ShapeKey<T>];\n\ntype ConstraintHelperText = string[];\n\n/**\n * Returns the v3-style type name (e.g. \"ZodString\") for a Zod v4 schema. Zod v4\n * stores the kind as a lowercase `type` (e.g. \"string\"), so this normalizes it\n * for comparison against the `*_ZOD_TYPES` lists, mirroring the dispatcher in\n * `schema-compatibility.ts`.\n */\nfunction zodV4TypeName(value: unknown): string {\n const v4Type = (value as { _zod?: { def?: { type?: string } } } | undefined)?._zod?.def?.type;\n return v4Type ? 'Zod' + v4Type.charAt(0).toUpperCase() + v4Type.slice(1) : '';\n}\n\n/**\n * Abstract base class for creating schema compatibility layers for different AI model providers.\n *\n * This class provides a framework for transforming Zod schemas to work with specific AI model\n * provider requirements and limitations. Each provider may have different support levels for\n * JSON Schema features, validation constraints, and data types.\n *\n *\n * @example\n * ```typescript\n * import { SchemaCompatLayer } from '@mastra/schema-compat';\n * import type { LanguageModelV1 } from 'ai';\n *\n * class CustomProviderCompat extends SchemaCompatLayer {\n * constructor(model: LanguageModelV1) {\n * super(model);\n * }\n *\n * shouldApply(): boolean {\n * return this.getModel().provider === 'custom-provider';\n * }\n *\n * getSchemaTarget() {\n * return 'jsonSchema7';\n * }\n *\n * processZodType<T extends z.AnyZodObject>(value: z.ZodAny): ShapeValue<T> {\n * // Custom processing logic for this provider\n * switch (value._def.typeName) {\n * case 'ZodString':\n * return this.defaultZodStringHandler(value, ['email', 'url']);\n * default:\n * return this.defaultUnsupportedZodTypeHandler(value);\n * }\n * }\n * }\n * ```\n */\nexport class SchemaCompatLayer {\n private model: ModelInformation;\n private parent: ParentSchemaCompatLayer;\n\n /**\n * Creates a new schema compatibility instance.\n *\n * @param model - The language model this compatibility layer applies to\n */\n constructor(model: ModelInformation, parent: ParentSchemaCompatLayer) {\n this.model = model;\n this.parent = parent;\n }\n\n /**\n * Gets the language model associated with this compatibility layer.\n *\n * @returns The language model instance\n */\n getModel(): ModelInformation {\n return this.model;\n }\n\n getUnsupportedZodTypes(): readonly string[] {\n return UNSUPPORTED_ZOD_TYPES;\n }\n\n /**\n * Type guard for optional Zod types\n */\n isOptional(v: ZodAny | ZodOptional<any>): v is ZodOptional<any> {\n return v instanceof ZodOptional;\n }\n\n /**\n * Type guard for object Zod types\n */\n isObj(v: ZodAny | ZodObject<any, any>): v is ZodObject<any, any> {\n return v instanceof ZodObject;\n }\n\n /**\n * Type guard for null Zod types\n */\n isNull(v: ZodAny | ZodNull): v is ZodNull {\n return v instanceof ZodNull;\n }\n\n /**\n * Type guard for nullable Zod types\n */\n isNullable(v: ZodAny | ZodNullable<any>): v is ZodNullable<any> {\n return v instanceof ZodNullable;\n }\n\n /**\n * Type guard for array Zod types\n */\n isArr(v: ZodAny | ZodArray<any>): v is ZodArray<any> {\n return v instanceof ZodArray;\n }\n\n /**\n * Type guard for union Zod types\n */\n isUnion(v: ZodAny | ZodUnion<[ZodAny, ...ZodAny[]]>): v is ZodUnion<[ZodAny, ...ZodAny[]]> {\n return v instanceof ZodUnion;\n }\n\n /**\n * Type guard for string Zod types\n */\n isString(v: ZodAny | ZodString): v is ZodString {\n return v instanceof ZodString;\n }\n\n /**\n * Type guard for number Zod types\n */\n isNumber(v: ZodAny | ZodNumber): v is ZodNumber {\n return v instanceof ZodNumber;\n }\n\n /**\n * Type guard for date Zod types\n */\n isDate(v: ZodAny | ZodDate): v is ZodDate {\n return v instanceof ZodDate;\n }\n\n /**\n * Type guard for default Zod types\n */\n isDefault(v: ZodAny | ZodDefault<any>): v is ZodDefault<any> {\n return v instanceof ZodDefault;\n }\n\n /**\n * Type guard for intersection Zod types\n */\n isIntersection(v: ZodAny | ZodIntersection<any, any>): v is ZodIntersection<any, any> {\n return v instanceof ZodIntersection;\n }\n\n /**\n * Determines whether this compatibility layer should be applied for the current model.\n *\n * @returns True if this compatibility layer should be used, false otherwise\n * @abstract\n */\n shouldApply(): boolean {\n return this.parent.shouldApply();\n }\n\n /**\n * Returns the JSON Schema target format for this provider.\n *\n * @returns The schema target format, or undefined to use the default 'jsonSchema7'\n * @abstract\n */\n getSchemaTarget(): Targets | undefined {\n return this.parent.getSchemaTarget();\n }\n\n /**\n * Processes a specific Zod type according to the provider's requirements.\n *\n * @param value - The Zod type to process\n * @returns The processed Zod type\n * @abstract\n */\n processZodType(value: ZodType): ZodType {\n return this.parent.processZodType(value) as ZodType;\n }\n\n /**\n * Default handler for Zod object types. Recursively processes all properties in the object.\n *\n * @param value - The Zod object to process\n * @returns The processed Zod object\n */\n public defaultZodObjectHandler(\n value: ZodObject<any, any>,\n options: { passthrough?: boolean } = { passthrough: true },\n ): ZodObject<any, any> {\n const processedShape = Object.entries(value.shape).reduce<Record<string, ZodType>>((acc, [key, propValue]) => {\n acc[key] = this.processZodType(propValue as ZodAny);\n return acc;\n }, {});\n\n let result: ZodObject<any, any> = z.object(processedShape);\n\n // Handle strict objects (catchall is ZodNever) - preserve strict behavior\n if (value._zod.def.catchall instanceof z.ZodNever) {\n result = z.strictObject(processedShape);\n }\n // Handle passthrough objects (catchall is ZodUnknown)\n else if (value._zod.def.catchall instanceof z.ZodUnknown) {\n if (options.passthrough) {\n // Preserve passthrough behavior\n result = z.looseObject(processedShape);\n }\n // else: use default z.object() which strips unknown keys\n }\n // Handle custom catchall (not ZodNever or ZodUnknown)\n else if (value._zod.def.catchall) {\n result = result.catchall(value._zod.def.catchall);\n }\n\n if (value.description) {\n result = result.describe(value.description);\n }\n\n return result;\n }\n\n /**\n * Merges validation constraints into a parameter description.\n *\n * This helper method converts validation constraints that may not be supported\n * by a provider into human-readable descriptions.\n *\n * @param description - The existing parameter description\n * @param constraints - The validation constraints to merge\n * @returns The updated description with constraints, or undefined if no constraints\n */\n public mergeParameterDescription(\n description: string | undefined,\n constraints: ConstraintHelperText,\n ): string | undefined {\n if (constraints.length > 0) {\n return (description ? description + '\\n' : '') + `constraints: ${constraints.join(`, `)}`;\n } else {\n return description;\n }\n }\n\n /**\n * Default handler for unsupported Zod types. Throws an error for specified unsupported types.\n *\n * @param value - The Zod type to check\n * @param throwOnTypes - Array of type names to throw errors for\n * @returns The original value if not in the throw list\n * @throws Error if the type is in the unsupported list\n */\n public defaultUnsupportedZodTypeHandler<T extends z.ZodObject<any, any>>(\n value: z.ZodAny,\n throwOnTypes: readonly UnsupportedZodType[] = UNSUPPORTED_ZOD_TYPES,\n ): ShapeValue<T> {\n if (throwOnTypes.includes(value.constructor.name as UnsupportedZodType)) {\n throw new Error(`${this.model.modelId} does not support zod type: ${value.constructor.name}`);\n }\n return value as ShapeValue<T>;\n }\n\n /**\n * Default handler for Zod array types. Processes array constraints according to provider support.\n *\n * @param value - The Zod array to process\n * @param handleChecks - Array constraints to convert to descriptions vs keep as validation\n * @returns The processed Zod array\n */\n public defaultZodArrayHandler(\n value: ZodArray<any>,\n handleChecks: readonly ArrayCheckType[] = ALL_ARRAY_CHECKS,\n ): ZodArray<any> {\n const zodArrayDef = value._zod.def;\n const processedType = this.processZodType(zodArrayDef.element);\n\n let result = z.array(processedType);\n\n const constraints: ConstraintHelperText = [];\n if (zodArrayDef.checks) {\n for (const check of zodArrayDef.checks) {\n if (check._zod.def.check === 'min_length') {\n if (handleChecks.includes('min')) {\n // @ts-expect-error - fix later\n constraints.push(`minimum length ${check._zod.def.minimum}`);\n } else {\n // @ts-expect-error - fix later\n result = result.min(check._zod.def.minimum);\n }\n }\n if (check._zod.def.check === 'max_length') {\n if (handleChecks.includes('max')) {\n // @ts-expect-error - fix later\n constraints.push(`maximum length ${check._zod.def.maximum}`);\n } else {\n // @ts-expect-error - fix later\n result = result.max(check._zod.def.maximum);\n }\n }\n if (check._zod.def.check === 'length_equals') {\n if (handleChecks.includes('length')) {\n // @ts-expect-error - fix later\n constraints.push(`exact length ${check._zod.def.length}`);\n } else {\n // @ts-expect-error - fix later\n result = result.length(check._zod.def.length);\n }\n }\n }\n }\n\n const metaDescription = value.meta()?.description;\n const legacyDescription = value.description;\n\n const description = this.mergeParameterDescription(metaDescription || legacyDescription, constraints);\n if (description) {\n result = result.describe(description);\n }\n return result;\n }\n\n /**\n * Default handler for Zod union types. Processes all union options.\n *\n * @param value - The Zod union to process\n * @returns The processed Zod union\n * @throws Error if union has fewer than 2 options\n */\n public defaultZodUnionHandler(value: ZodUnion<[ZodAny, ...ZodAny[]]>): ZodAny {\n const processedOptions = value._zod.def.options.map((option: ZodAny) => this.processZodType(option));\n if (processedOptions.length < 2) throw new Error('Union must have at least 2 options');\n let result = z.union(processedOptions as [ZodAny, ZodAny, ...ZodAny[]]);\n if (value.description) {\n result = result.describe(value.description);\n }\n // @ts-expect-error - fix later\n return result;\n }\n\n /**\n * Default handler for Zod string types. Processes string validation constraints.\n *\n * @param value - The Zod string to process\n * @param handleChecks - String constraints to convert to descriptions vs keep as validation\n * @returns The processed Zod string\n */\n public defaultZodStringHandler(\n value: ZodString,\n handleChecks: readonly StringCheckType[] = ALL_STRING_CHECKS,\n ): ZodString {\n const constraints: ConstraintHelperText = [];\n const checks = value._zod.def.checks || [];\n type ZodStringCheck = (typeof checks)[number];\n const newChecks: ZodStringCheck[] = [];\n\n if (checks) {\n for (const check of checks) {\n if (handleChecks.includes(check._zod.def.check as StringCheckType)) {\n switch (check._zod.def.check) {\n case 'min_length':\n // @ts-expect-error - fix later\n constraints.push(`minimum length ${check._zod.def.minimum}`);\n break;\n case 'max_length':\n // @ts-expect-error - fix later\n constraints.push(`maximum length ${check._zod.def.maximum}`);\n break;\n case 'string_format':\n {\n // @ts-expect-error - fix later\n switch (check._zod.def.format) {\n case 'email':\n case 'url':\n case 'emoji':\n case 'uuid':\n case 'cuid':\n // @ts-expect-error - fix later\n constraints.push(`a valid ${check._zod.def.format}`);\n break;\n case 'regex':\n // @ts-expect-error - fix later\n constraints.push(`input must match this regex ${check._zod.def.pattern}`);\n break;\n default:\n // Formats without a textual description (ipv4, datetime,\n // base64, etc.) must be preserved as real validation instead\n // of being silently dropped.\n newChecks.push(check);\n break;\n }\n }\n break;\n }\n } else {\n newChecks.push(check);\n }\n }\n }\n\n let result = z.string();\n for (const check of newChecks) {\n result = result.check(check);\n }\n\n const metaDescription = value.meta()?.description;\n const legacyDescription = value.description;\n\n const description = this.mergeParameterDescription(metaDescription || legacyDescription, constraints);\n if (description) {\n result = result.describe(description);\n }\n return result;\n }\n\n /**\n * Default handler for Zod number types. Processes number validation constraints.\n *\n * @param value - The Zod number to process\n * @param handleChecks - Number constraints to convert to descriptions vs keep as validation\n * @returns The processed Zod number\n */\n public defaultZodNumberHandler(\n value: ZodNumber,\n handleChecks: readonly NumberCheckType[] = ALL_NUMBER_CHECKS,\n ): ZodNumber {\n const constraints: ConstraintHelperText = [];\n const checks = value._zod.def.checks || [];\n type ZodNumberCheck = (typeof checks)[number];\n const newChecks: ZodNumberCheck[] = [];\n\n if (checks) {\n for (const check of checks) {\n if (handleChecks.includes(check._zod.def.check as NumberCheckType)) {\n switch (check._zod.def.check) {\n case 'greater_than':\n // @ts-expect-error - fix later\n if (check._zod.def.inclusive) {\n // @ts-expect-error - fix later\n constraints.push(`greater than or equal to ${check._zod.def.value}`);\n } else {\n // @ts-expect-error - fix later\n constraints.push(`greater than ${check._zod.def.value}`);\n }\n break;\n case 'less_than':\n // @ts-expect-error - fix later\n if (check._zod.def.inclusive) {\n // @ts-expect-error - fix later\n constraints.push(`lower than or equal to ${check._zod.def.value}`);\n } else {\n // @ts-expect-error - fix later\n constraints.push(`lower than ${check._zod.def.value}`);\n }\n break;\n case 'multiple_of': {\n // @ts-expect-error - fix later\n constraints.push(`multiple of ${check._zod.def.value}`);\n break;\n }\n }\n } else {\n newChecks.push(check);\n }\n }\n }\n let result = z.number();\n\n for (const check of newChecks) {\n switch (check._zod.def.check) {\n case 'number_format': {\n // @ts-expect-error - fix later\n switch (check._zod.def.format) {\n case 'safeint':\n result = result.int();\n break;\n }\n break;\n }\n default:\n // @ts-expect-error - fix later\n result = result.check(check);\n }\n }\n const description = this.mergeParameterDescription(value.description, constraints);\n if (description) {\n result = result.describe(description);\n }\n return result;\n }\n\n /**\n * Default handler for Zod date types. Converts dates to ISO strings with constraint descriptions.\n *\n * @param value - The Zod date to process\n * @returns A Zod string schema representing the date in ISO format\n */\n public defaultZodDateHandler(value: ZodDate): ZodString {\n const constraints: ConstraintHelperText = [];\n const checks = value._zod.def.checks || [];\n type ZodDateCheck = (typeof checks)[number];\n const newChecks: ZodDateCheck[] = [];\n if (checks) {\n for (const check of checks) {\n switch (check._zod.def.check) {\n // `.max(d)` lowers the upper bound, stored as a `less_than` check: the date must be older than `d`.\n case 'less_than':\n // @ts-expect-error - fix later\n const maxDate = new Date(check._zod.def.value);\n if (!isNaN(maxDate.getTime())) {\n constraints.push(`Date must be older than ${maxDate.toISOString()} (ISO)`);\n }\n break;\n // `.min(d)` raises the lower bound, stored as a `greater_than` check: the date must be newer than `d`.\n case 'greater_than':\n // @ts-expect-error - fix later\n const minDate = new Date(check._zod.def.value);\n if (!isNaN(minDate.getTime())) {\n constraints.push(`Date must be newer than ${minDate.toISOString()} (ISO)`);\n }\n break;\n default:\n newChecks.push(check);\n }\n }\n }\n constraints.push(`Date format is date-time`);\n let result = z.string().describe('date-time');\n const description = this.mergeParameterDescription(value.description, constraints);\n if (description) {\n result = result.describe(description);\n }\n return result;\n }\n\n /**\n * Default handler for Zod optional types. Processes the inner type and maintains optionality.\n *\n * @param value - The Zod optional to process\n * @param handleTypes - Types that should be processed vs passed through\n * @returns The processed Zod optional\n */\n public defaultZodOptionalHandler(\n value: ZodOptional<any>,\n handleTypes: readonly AllZodType[] = SUPPORTED_ZOD_TYPES,\n ): ZodType {\n const innerType = value._zod?.def?.innerType;\n // Gate on the INNER type, not the wrapper. `value.constructor.name` is always\n // \"ZodOptional\", so it never reflects what is being wrapped.\n if (innerType && handleTypes.includes(zodV4TypeName(innerType) as AllZodType)) {\n return this.processZodType(innerType).optional();\n } else {\n return value;\n }\n }\n\n /**\n * Default handler for Zod nullable types. Processes the inner type and maintains nullability.\n *\n * @param value - The Zod nullable to process\n * @param handleTypes - Types that should be processed vs passed through\n * @returns The processed Zod nullable\n */\n public defaultZodNullableHandler(\n value: ZodNullable<any>,\n handleTypes: readonly AllZodType[] = SUPPORTED_ZOD_TYPES,\n ): ZodType {\n const innerType = value._zod?.def?.innerType;\n // Gate on the INNER type, not the wrapper. `value.constructor.name` is always\n // \"ZodNullable\", so it never reflects what is being wrapped.\n if (innerType && handleTypes.includes(zodV4TypeName(innerType) as AllZodType)) {\n return this.processZodType(innerType).nullable();\n } else {\n return value;\n }\n }\n\n /**\n * Recursively collects leaf types from a ZodIntersection tree.\n */\n private collectIntersectionLeaves(value: ZodType): ZodType[] {\n if (value instanceof ZodIntersection) {\n return [\n ...this.collectIntersectionLeaves(value._zod.def.left as ZodType),\n ...this.collectIntersectionLeaves(value._zod.def.right as ZodType),\n ];\n }\n return [value];\n }\n\n /**\n * Default handler for Zod intersection types.\n * Flattens the intersection tree and merges object shapes into a single z.object().\n * Falls back to z.any() for non-object intersections.\n */\n public defaultZodIntersectionHandler(value: ZodIntersection<any, any>): ZodType {\n const leaves = this.collectIntersectionLeaves(value);\n const processed = leaves.map(leaf => this.processZodType(leaf));\n\n if (processed.every(p => p instanceof ZodObject)) {\n const mergedShape: Record<string, ZodType> = {};\n for (const obj of processed as ZodObject<any, any>[]) {\n for (const [key, field] of Object.entries(obj.shape)) {\n if (key in mergedShape) {\n throw new Error('Cannot flatten intersections with overlapping keys');\n }\n mergedShape[key] = field as ZodType;\n }\n }\n let result: ZodType = z.object(mergedShape);\n if (value.description) {\n result = result.describe(value.description);\n }\n return result;\n }\n\n return z.any().describe(value.description || 'intersection type');\n }\n\n /**\n * Processes a Zod object schema and converts it to an AI SDK Schema.\n *\n * @param zodSchema - The Zod object schema to process\n * @returns An AI SDK Schema with provider-specific compatibility applied\n */\n public processToAISDKSchema(zodSchema: ZodType): Schema {\n const processedSchema = this.processZodType(zodSchema);\n\n return convertZodSchemaToAISDKSchema(processedSchema, this.getSchemaTarget());\n }\n\n /**\n * Processes a Zod object schema and converts it to a JSON Schema.\n *\n * @param zodSchema - The Zod object schema to process\n * @returns A JSONSchema7 object with provider-specific compatibility applied\n */\n public processToJSONSchema(zodSchema: ZodType): JSONSchema7 {\n return this.processToAISDKSchema(zodSchema).jsonSchema;\n }\n}\n","import type { StandardJSONSchemaV1 } from '@standard-schema/spec';\nimport traverse from 'json-schema-traverse';\nimport type { z as zV3 } from 'zod/v3';\nimport type { z as zV4 } from 'zod/v4';\nimport type { Targets } from 'zod-to-json-schema';\nimport type { JSONSchema7, Schema } from './json-schema';\nimport * as jsonSchemaUtils from './json-schema/utils';\nimport type { PublicSchema, StandardSchemaWithJSON } from './schema';\nimport * as v3 from './schema-compatibility-v3';\nimport { SchemaCompatLayer as SchemaCompatLayerV3 } from './schema-compatibility-v3';\nimport * as v4 from './schema-compatibility-v4';\nimport { SchemaCompatLayer as SchemaCompatLayerV4 } from './schema-compatibility-v4';\nimport type { ZodType, ZodUnion } from './schema.types';\nimport { standardSchemaToJSONSchema, toStandardSchema } from './standard-schema/standard-schema';\nimport type { ModelInformation } from './types';\nimport { convertZodSchemaToAISDKSchema } from './utils';\n\n// Re-export constants and types\nexport {\n ALL_STRING_CHECKS,\n ALL_NUMBER_CHECKS,\n ALL_ARRAY_CHECKS,\n UNSUPPORTED_ZOD_TYPES as UNSUPPORTED_ZOD_TYPES_V3,\n SUPPORTED_ZOD_TYPES as SUPPORTED_ZOD_TYPES_V3,\n} from './schema-compatibility-v3';\nexport type {\n UnsupportedZodType as UnsupportedZodTypeV3,\n ShapeValue as ShapeValueV3,\n StringCheckType,\n NumberCheckType,\n ArrayCheckType,\n AllZodType as AllZodTypeV3,\n} from './schema-compatibility-v3';\nexport {\n UNSUPPORTED_ZOD_TYPES as UNSUPPORTED_ZOD_TYPES_V4,\n SUPPORTED_ZOD_TYPES as SUPPORTED_ZOD_TYPES_V4,\n} from './schema-compatibility-v4';\nexport type {\n UnsupportedZodType as UnsupportedZodTypeV4,\n ShapeValue as ShapeValueV4,\n AllZodType as AllZodTypeV4,\n} from './schema-compatibility-v4';\n\ntype ConstraintHelperText = string[];\n\nexport abstract class SchemaCompatLayer {\n private model: ModelInformation;\n private v3Layer: SchemaCompatLayerV3;\n private v4Layer: SchemaCompatLayerV4;\n\n /**\n * Creates a new schema compatibility instance.\n *\n * @param model - The language model this compatibility layer applies to\n */\n constructor(model: ModelInformation) {\n this.model = model;\n this.v3Layer = new SchemaCompatLayerV3(model, this);\n this.v4Layer = new SchemaCompatLayerV4(model, this);\n }\n\n public preProcessJSONNode(_schema: JSONSchema7, _parentSchema?: JSONSchema7): void {}\n public postProcessJSONNode(_schema: JSONSchema7, _parentSchema?: JSONSchema7): void {}\n\n /**\n * Gets the language model associated with this compatibility layer.\n *\n * @returns The language model instance\n */\n getModel(): ModelInformation {\n return this.model;\n }\n\n getUnsupportedZodTypes(value: ZodType): readonly string[] {\n if ('_zod' in value) {\n return this.v4Layer.getUnsupportedZodTypes();\n } else {\n return this.v3Layer.getUnsupportedZodTypes();\n }\n }\n\n isOptional(v: zV3.ZodType | zV4.ZodType): v is zV3.ZodOptional<any> | zV4.ZodOptional<any> {\n if ('_zod' in v) {\n return this.v4Layer.isOptional(v as any);\n } else {\n return this.v3Layer.isOptional(v as any);\n }\n }\n\n isObj(v: zV3.ZodType | zV4.ZodType): v is zV3.ZodObject<any, any, any, any, any> | zV4.ZodObject<any, any> {\n if ('_zod' in v) {\n return this.v4Layer.isObj(v as any);\n } else {\n return this.v3Layer.isObj(v as any);\n }\n }\n\n isNull(v: zV3.ZodType | zV4.ZodType): v is zV3.ZodNull | zV4.ZodNull {\n if ('_zod' in v) {\n return this.v4Layer.isNull(v as any);\n } else {\n return this.v3Layer.isNull(v as any);\n }\n }\n\n isNullable(v: zV3.ZodType | zV4.ZodType): v is zV3.ZodNullable<any> | zV4.ZodNullable<any> {\n if ('_zod' in v) {\n return this.v4Layer.isNullable(v as any);\n } else {\n return this.v3Layer.isNullable(v as any);\n }\n }\n\n isArr(v: zV3.ZodType | zV4.ZodType): v is zV3.ZodArray<any, any> | zV4.ZodArray<any> {\n if ('_zod' in v) {\n return this.v4Layer.isArr(v as any);\n } else {\n return this.v3Layer.isArr(v as any);\n }\n }\n\n isUnion(\n v: zV3.ZodType | zV4.ZodType,\n ): v is zV3.ZodUnion<[zV3.ZodType, ...zV3.ZodType[]]> | zV4.ZodUnion<[zV4.ZodType, ...zV4.ZodType[]]> {\n if ('_zod' in v) {\n return this.v4Layer.isUnion(v as any);\n } else {\n return this.v3Layer.isUnion(v as any);\n }\n }\n\n isString(v: zV3.ZodType | zV4.ZodType): v is zV3.ZodString | zV4.ZodString {\n if ('_zod' in v) {\n return this.v4Layer.isString(v as any);\n } else {\n return this.v3Layer.isString(v as any);\n }\n }\n\n isNumber(v: zV3.ZodType | zV4.ZodType): v is zV3.ZodNumber | zV4.ZodNumber {\n if ('_zod' in v) {\n return this.v4Layer.isNumber(v as any);\n } else {\n return this.v3Layer.isNumber(v as any);\n }\n }\n\n isDate(v: zV3.ZodType | zV4.ZodType): v is zV3.ZodDate | zV4.ZodDate {\n if ('_zod' in v) {\n return this.v4Layer.isDate(v as any);\n } else {\n return this.v3Layer.isDate(v as any);\n }\n }\n\n isDefault(v: zV3.ZodType | zV4.ZodType): v is zV3.ZodDefault<any> | zV4.ZodDefault<any> {\n if ('_zod' in v) {\n return this.v4Layer.isDefault(v as any);\n } else {\n return this.v3Layer.isDefault(v as any);\n }\n }\n\n isIntersection(v: zV3.ZodType | zV4.ZodType): v is zV3.ZodIntersection<any, any> | zV4.ZodIntersection<any, any> {\n if ('_zod' in v) {\n return this.v4Layer.isIntersection(v as any);\n } else {\n return this.v3Layer.isIntersection(v as any);\n }\n }\n\n abstract shouldApply(): boolean;\n abstract getSchemaTarget(): Targets | undefined;\n abstract processZodType(value: ZodType): ZodType;\n\n public defaultZodObjectHandler(\n value: zV3.ZodObject<any, any, any, any, any> | zV4.ZodObject<any, any>,\n options: { passthrough?: boolean } = { passthrough: true },\n ): zV3.ZodObject<any, any, any, any, any> | zV4.ZodObject<any, any> {\n if ('_zod' in value) {\n return this.v4Layer.defaultZodObjectHandler(value, options);\n } else {\n return this.v3Layer.defaultZodObjectHandler(value, options);\n }\n }\n\n public mergeParameterDescription(\n description: string | undefined,\n constraints: ConstraintHelperText,\n ): string | undefined {\n return this.v3Layer.mergeParameterDescription(description, constraints);\n }\n\n public defaultUnsupportedZodTypeHandler(\n value: zV3.ZodType | zV4.ZodType,\n throwOnTypes?: readonly (v3.UnsupportedZodType | v4.UnsupportedZodType)[],\n ): zV3.ZodType | zV4.ZodType {\n if ('_zod' in value) {\n return this.v4Layer.defaultUnsupportedZodTypeHandler(\n value as any,\n (throwOnTypes ?? v4.UNSUPPORTED_ZOD_TYPES) as typeof v4.UNSUPPORTED_ZOD_TYPES,\n );\n } else {\n return this.v3Layer.defaultUnsupportedZodTypeHandler(\n value as any,\n (throwOnTypes ?? v3.UNSUPPORTED_ZOD_TYPES) as typeof v3.UNSUPPORTED_ZOD_TYPES,\n );\n }\n }\n\n public defaultZodArrayHandler(\n value: zV3.ZodArray<any, any> | zV4.ZodArray<any>,\n handleChecks: readonly v3.ArrayCheckType[] = v3.ALL_ARRAY_CHECKS,\n ): zV3.ZodArray<any, any> | zV4.ZodArray<any> {\n if ('_zod' in value) {\n return this.v4Layer.defaultZodArrayHandler(value, handleChecks);\n } else {\n return this.v3Layer.defaultZodArrayHandler(value, handleChecks);\n }\n }\n\n public defaultZodUnionHandler(value: ZodUnion): zV3.ZodType | zV4.ZodType {\n if ('_zod' in value) {\n return this.v4Layer.defaultZodUnionHandler(value as any);\n } else {\n return this.v3Layer.defaultZodUnionHandler(value as any);\n }\n }\n\n public defaultZodStringHandler(\n value: zV3.ZodString | zV4.ZodString,\n handleChecks: readonly v3.StringCheckType[] = v3.ALL_STRING_CHECKS,\n ): zV3.ZodString | zV4.ZodString {\n if ('_zod' in value) {\n return this.v4Layer.defaultZodStringHandler(value);\n } else {\n return this.v3Layer.defaultZodStringHandler(value, handleChecks);\n }\n }\n\n public defaultZodNumberHandler(\n value: zV3.ZodNumber | zV4.ZodNumber,\n handleChecks: readonly v3.NumberCheckType[] = v3.ALL_NUMBER_CHECKS,\n ): zV3.ZodNumber | zV4.ZodNumber {\n if ('_zod' in value) {\n return this.v4Layer.defaultZodNumberHandler(value);\n } else {\n return this.v3Layer.defaultZodNumberHandler(value, handleChecks);\n }\n }\n\n public defaultZodDateHandler(value: zV3.ZodDate | zV4.ZodDate): zV3.ZodString | zV4.ZodString {\n if ('_zod' in value) {\n return this.v4Layer.defaultZodDateHandler(value);\n } else {\n return this.v3Layer.defaultZodDateHandler(value);\n }\n }\n\n public defaultZodOptionalHandler(\n value: zV3.ZodOptional<any> | zV4.ZodOptional<any>,\n handleTypes?: readonly string[],\n ): zV3.ZodType | zV4.ZodType {\n if (!handleTypes) {\n handleTypes = ['ZodObject', 'ZodArray', 'ZodUnion', 'ZodString', 'ZodNumber'];\n }\n\n // Get the inner type name to check if it should be processed\n // Zod v3 uses typeName (e.g., \"ZodString\"), v4 uses type (e.g., \"string\")\n let innerTypeName: string;\n if ('_zod' in value) {\n // Zod v4: type is lowercase without \"Zod\" prefix (e.g., \"string\", \"object\", \"array\")\n // Add defensive checks for nested property access\n const innerType = value._zod?.def?.innerType;\n const v4Type = innerType?._zod?.def?.type as string | undefined;\n if (!v4Type) {\n // If nested properties are missing, return the value unchanged\n return value;\n }\n // Convert to v3-style name for comparison (e.g., \"string\" -> \"ZodString\")\n innerTypeName = 'Zod' + v4Type.charAt(0).toUpperCase() + v4Type.slice(1);\n } else {\n innerTypeName = value._def.innerType._def.typeName;\n }\n\n if (handleTypes.includes(innerTypeName)) {\n if ('_zod' in value) {\n const innerType = value._zod?.def?.innerType;\n if (!innerType) {\n return value;\n }\n return this.processZodType(innerType).optional();\n } else {\n return this.processZodType(value._def.innerType).optional();\n }\n } else {\n return value;\n }\n }\n\n public defaultZodNullableHandler(\n value: zV3.ZodNullable<any> | zV4.ZodNullable<any>,\n handleTypes?: readonly string[],\n ): zV3.ZodType | zV4.ZodType {\n if ('_zod' in value) {\n return this.v4Layer.defaultZodNullableHandler(\n value,\n (handleTypes ?? v4.SUPPORTED_ZOD_TYPES) as typeof v4.SUPPORTED_ZOD_TYPES,\n );\n } else {\n return this.v3Layer.defaultZodNullableHandler(\n value as any,\n (handleTypes ?? v3.SUPPORTED_ZOD_TYPES) as typeof v3.SUPPORTED_ZOD_TYPES,\n );\n }\n }\n\n public defaultZodIntersectionHandler(\n value: zV3.ZodIntersection<any, any> | zV4.ZodIntersection<any, any>,\n ): zV3.ZodType | zV4.ZodType {\n if ('_zod' in value) {\n return this.v4Layer.defaultZodIntersectionHandler(value as any);\n } else {\n return this.v3Layer.defaultZodIntersectionHandler(value as any);\n }\n }\n\n /**\n * @deprecated please use processToCompatSchema to usse StandardSchemaWithJSON\n * @param zodSchema\n * @returns\n */\n public processToAISDKSchema(zodSchema: zV3.ZodSchema | zV4.ZodType): Schema {\n const processedSchema = this.processZodType(zodSchema);\n\n return convertZodSchemaToAISDKSchema(processedSchema, this.getSchemaTarget());\n }\n\n /**\n * @param schema\n * @returns\n */\n public processToJSONSchema(schema: PublicSchema<any>, io: 'input' | 'output' = 'input'): JSONSchema7 {\n const standardSchema = toStandardSchema(schema);\n\n const jsonSchema = standardSchemaToJSONSchema(standardSchema, {\n target: 'draft-07',\n io, // Use input mode so fields with defaults are optional\n });\n\n traverse(jsonSchema, {\n cb: {\n pre: schema => {\n this.preProcessJSONNode(schema);\n },\n post: schema => {\n this.postProcessJSONNode(schema);\n },\n },\n });\n\n return jsonSchema;\n }\n\n public processToCompatSchema<T>(schema: PublicSchema<T>): StandardSchemaWithJSON<T> {\n return {\n '~standard': {\n version: 1,\n vendor: 'mastra',\n validate: (value: unknown) => toStandardSchema(schema)['~standard'].validate(value),\n jsonSchema: {\n input: () => {\n return this.processToJSONSchema(schema, 'input') as Record<string, unknown>;\n },\n output: () => {\n return this.processToJSONSchema(schema, 'output') as Record<string, unknown>;\n },\n },\n },\n };\n }\n\n // ==========================================\n // JSON Schema Default Handlers\n // ==========================================\n\n /**\n * Default handler for JSON Schema objects.\n * Processes object schemas with properties and required fields.\n */\n protected defaultObjectHandler(schema: JSONSchema7): JSONSchema7 {\n // Ensure additionalProperties is set appropriately for strict mode\n if (schema.properties && schema.additionalProperties === undefined) {\n schema.additionalProperties = false;\n }\n\n if (!Object.keys(schema.properties ?? {}).length) {\n schema.required = [];\n }\n\n return schema;\n }\n\n /**\n * Default handler for JSON Schema arrays.\n * Converts array constraints (minItems, maxItems) to description text.\n */\n protected defaultArrayHandler(schema: JSONSchema7): JSONSchema7 {\n let constraints: string[] = [];\n\n const minItems = schema.minItems;\n const maxItems = schema.maxItems;\n\n if (minItems !== undefined && maxItems !== undefined && minItems === maxItems) {\n constraints = [`exact length ${minItems}`];\n delete schema.minItems;\n delete schema.maxItems;\n } else {\n if (minItems !== undefined) {\n constraints.push(`minimum length ${minItems}`);\n delete schema.minItems;\n }\n if (maxItems !== undefined) {\n constraints.push(`maximum length ${maxItems}`);\n delete schema.maxItems;\n }\n }\n\n if (constraints.length) {\n schema.description = this.mergeParameterDescription(schema.description, constraints);\n }\n\n return schema;\n }\n\n /**\n * Default handler for JSON Schema strings.\n * Converts string constraints (minLength, maxLength, pattern, format) to description text.\n */\n protected defaultStringHandler(schema: JSONSchema7): JSONSchema7 {\n const constraints: string[] = [];\n\n if (schema.minLength !== undefined) {\n constraints.push(`minimum length ${schema.minLength}`);\n delete schema.minLength;\n }\n if (schema.maxLength !== undefined) {\n constraints.push(`maximum length ${schema.maxLength}`);\n delete schema.maxLength;\n }\n\n switch (schema.format) {\n case 'email':\n case 'emoji':\n case 'uri':\n case 'uuid':\n case 'date-time':\n case 'date':\n case 'time': {\n constraints.push(`a valid ${schema.format}`);\n\n delete schema.pattern;\n delete schema.format;\n break;\n }\n }\n\n if (constraints.length === 0 && schema.pattern !== undefined) {\n constraints.push(`input must match this regex ${schema.pattern}`);\n delete schema.pattern;\n }\n\n if (constraints.length) {\n schema.description = this.mergeParameterDescription(schema.description, constraints);\n }\n\n return schema;\n }\n\n /**\n * Default handler for JSON Schema numbers/integers.\n * Converts number constraints (minimum, maximum, multipleOf, exclusiveMinimum, exclusiveMaximum) to description text.\n */\n protected defaultNumberHandler(schema: JSONSchema7): JSONSchema7 {\n const constraints: string[] = [];\n if (schema.minimum !== undefined) {\n if (schema.minimum !== Number.MIN_SAFE_INTEGER) {\n constraints.push(`greater than or equal to ${schema.minimum}`);\n }\n\n delete schema.minimum;\n }\n if (schema.maximum !== undefined) {\n if (schema.maximum !== Number.MAX_SAFE_INTEGER) {\n constraints.push(`lower than or equal to ${schema.maximum}`);\n }\n\n delete schema.maximum;\n }\n if (schema.exclusiveMinimum !== undefined) {\n constraints.push(`greater than ${schema.exclusiveMinimum}`);\n delete schema.exclusiveMinimum;\n }\n if (schema.exclusiveMaximum !== undefined) {\n constraints.push(`lower than ${schema.exclusiveMaximum}`);\n delete schema.exclusiveMaximum;\n }\n if (schema.multipleOf !== undefined) {\n constraints.push(`multiple of ${schema.multipleOf}`);\n delete schema.multipleOf;\n }\n\n if (constraints.length) {\n schema.description = this.mergeParameterDescription(schema.description, constraints);\n }\n\n return schema;\n }\n\n /**\n * Default handler for JSON Schema unions (anyOf/oneOf).\n * Processes union schemas and can convert anyOf patterns to type arrays for simple primitives.\n */\n protected defaultUnionHandler(schema: JSONSchema7): JSONSchema7 {\n // if (Array.isArray(schema.type)) {\n // schema.anyOf = schema.type.map(type => {\n // const result = { type };\n\n // return result;\n // });\n\n // delete schema.type;\n // }\n\n if (Array.isArray(schema.anyOf)) {\n // const hasNull = schema.anyOf.some(subSchema => typeof subSchema === 'object' && subSchema.type === 'null');\n // const hasString = schema.anyOf.some(subSchema => typeof subSchema === 'object' && subSchema.type === 'string');\n\n schema.anyOf = schema.anyOf\n .map(subSchema => {\n if (typeof subSchema !== 'object' || subSchema === null) {\n return false;\n }\n\n // if (subSchema.type === 'string' && hasNull) {\n // // @ts-expect-error - nullable is a valid property for JSON Schema\n // subSchema.nullable = true;\n // } else if (subSchema.type === 'array') {\n // subSchema.items = [];\n // } else if (subSchema.type === 'null' && hasString) {\n // return false;\n // }\n\n this.preProcessJSONNode(subSchema);\n this.postProcessJSONNode(subSchema);\n\n // if (hasNull && subSchema.type && subSchema.type !== 'null') {\n // subSchema.type = [].concat(subSchema.type, 'null');\n // }\n\n return subSchema;\n })\n .filter(Boolean);\n\n if (schema.anyOf.length === 1) {\n schema = schema.anyOf[0] as unknown as JSONSchema7;\n }\n }\n\n return schema;\n }\n\n /**\n * Default handler for JSON Schema allOf (intersection) types.\n * Flattens allOf sub-schemas by merging properties and required arrays into a single object schema.\n */\n protected defaultAllOfHandler(schema: JSONSchema7): JSONSchema7 {\n if (!schema.allOf || !Array.isArray(schema.allOf)) return schema;\n\n const mergedProperties: Record<string, JSONSchema7> = {};\n const mergedRequired: string[] = [];\n\n for (const subSchema of schema.allOf as JSONSchema7[]) {\n if (subSchema.properties) {\n Object.assign(mergedProperties, subSchema.properties);\n }\n if (Array.isArray(subSchema.required)) {\n mergedRequired.push(...subSchema.required);\n }\n }\n\n delete schema.allOf;\n schema.type = 'object';\n schema.properties = mergedProperties;\n if (mergedRequired.length > 0) {\n schema.required = [...new Set(mergedRequired)];\n }\n schema.additionalProperties = false;\n\n return schema;\n }\n\n /**\n * Default handler for JSON Schema nullable types.\n * Ensures nullable types are represented correctly.\n */\n protected defaultNullableHandler(schema: JSONSchema7): JSONSchema7 {\n return this.defaultUnionHandler(schema);\n }\n\n /**\n * Default handler for JSON Schema dates (string with date/date-time format).\n * Converts date formats to string type with format constraint in description.\n */\n protected defaultDateHandler(schema: JSONSchema7): JSONSchema7 {\n if (schema.format === 'date' || schema.format === 'date-time') {\n const format = schema.format;\n delete schema.format;\n schema.description = this.mergeParameterDescription(schema.description, [`format: ${format}`]);\n }\n return schema;\n }\n\n /**\n * Default handler for empty JSON schemas.\n * Converts empty {} schemas to a union of primitive types.\n */\n protected defaultEmptySchemaHandler(schema: JSONSchema7): JSONSchema7 {\n if (Object.keys(schema).length === 0) {\n schema.type = ['string', 'number', 'boolean', 'null'] as JSONSchema7['type'];\n }\n return schema;\n }\n\n /**\n * Default handler for unsupported JSON Schema features.\n * Can be used to strip or convert unsupported keywords.\n */\n protected defaultUnsupportedHandler(schema: JSONSchema7, unsupportedKeywords: string[] = []): JSONSchema7 {\n for (const keyword of unsupportedKeywords) {\n if (keyword in schema) {\n delete (schema as Record<string, unknown>)[keyword];\n }\n }\n return schema;\n }\n\n // ==========================================\n // JSON Schema Type Checkers (delegating to json-schema/utils)\n // ==========================================\n\n protected isObjectSchema(schema: JSONSchema7): boolean {\n return jsonSchemaUtils.isObjectSchema(schema);\n }\n\n protected isArraySchema(schema: JSONSchema7): boolean {\n return jsonSchemaUtils.isArraySchema(schema);\n }\n\n protected isStringSchema(schema: JSONSchema7): boolean {\n return jsonSchemaUtils.isStringSchema(schema);\n }\n\n protected isNumberSchema(schema: JSONSchema7): boolean {\n return jsonSchemaUtils.isNumberSchema(schema);\n }\n\n protected isUnionSchema(schema: JSONSchema7): boolean {\n return jsonSchemaUtils.isUnionSchema(schema);\n }\n\n protected isAllOfSchema(schema: JSONSchema7): schema is JSONSchema7 & { allOf: JSONSchema7[] } {\n return jsonSchemaUtils.isAllOfSchema(schema);\n }\n\n /**\n * Checks if a property is optional within a parent object schema.\n * A property is optional if it's not in the parent's `required` array.\n * @param propertyName - The name of the property to check\n * @param parentSchema - The parent object schema containing the property\n */\n protected isOptionalProperty(propertyName: string, parentSchema: JSONSchema7): boolean {\n return jsonSchemaUtils.isOptionalSchema(propertyName, parentSchema);\n }\n\n /**\n * Converts a Zod schema to JSON Schema using the standard-schema interface\n * and applies pre/post processing via traverse.\n *\n * Uses 'input' io mode so that fields with defaults are optional (appropriate for tool parameters).\n * @deprecated please use processToCompatSchema\n */\n public toJSONSchema(zodSchema: ZodType): JSONSchema7 {\n const SCHEMA_TARGET_TO_STANDARD: Record<string, StandardJSONSchemaV1.Target> = {\n jsonSchema7: 'draft-07',\n 'jsonSchema2019-09': 'draft-2020-12',\n openApi3: 'openapi-3.0',\n };\n const schemaTarget = this.getSchemaTarget();\n const target = (schemaTarget && SCHEMA_TARGET_TO_STANDARD[schemaTarget]) ?? schemaTarget;\n const standardSchema = toStandardSchema(zodSchema);\n const jsonSchema = standardSchemaToJSONSchema(standardSchema, {\n target,\n io: 'input', // Use input mode so fields with defaults are optional\n });\n\n traverse(jsonSchema, {\n cb: {\n pre: schema => {\n this.preProcessJSONNode(schema);\n },\n post: schema => {\n this.postProcessJSONNode(schema);\n },\n },\n });\n\n return jsonSchema;\n }\n}\n","import type { JSONSchema7, JSONSchema7TypeName } from 'json-schema';\n\n/**\n * Type guard to check if a JSON Schema has a specific type\n */\nfunction hasType(schema: JSONSchema7, type: JSONSchema7TypeName): boolean {\n if (schema.type === type) return true;\n if (Array.isArray(schema.type) && schema.type.includes(type)) return true;\n return false;\n}\n\n/**\n * Check if a JSON Schema represents an object type\n */\nexport function isObjectSchema(schema: JSONSchema7): boolean {\n return hasType(schema, 'object') || schema.properties !== undefined;\n}\n\n/**\n * Check if a JSON Schema represents an array type\n */\nexport function isArraySchema(schema: JSONSchema7): boolean {\n return hasType(schema, 'array') || schema.items !== undefined;\n}\n\n/**\n * Check if a JSON Schema represents a string type\n */\nexport function isStringSchema(schema: JSONSchema7): boolean {\n return hasType(schema, 'string');\n}\n\n/**\n * Check if a JSON Schema represents a number type (number or integer)\n */\nexport function isNumberSchema(schema: JSONSchema7): boolean {\n return hasType(schema, 'number') || hasType(schema, 'integer');\n}\n\n/**\n * Check if a JSON Schema uses anyOf\n */\nexport function isAnyOfSchema(schema: JSONSchema7): schema is JSONSchema7 & { anyOf: JSONSchema7[] } {\n return Array.isArray(schema.anyOf) && schema.anyOf.length > 0;\n}\n\n/**\n * Check if a JSON Schema uses oneOf\n */\nexport function isOneOfSchema(schema: JSONSchema7): schema is JSONSchema7 & { oneOf: JSONSchema7[] } {\n return Array.isArray(schema.oneOf) && schema.oneOf.length > 0;\n}\n\n/**\n * Check if a JSON Schema is a union type (anyOf or oneOf)\n */\nexport function isUnionSchema(schema: JSONSchema7): boolean {\n return isAnyOfSchema(schema) || isOneOfSchema(schema) || Array.isArray(schema.type);\n}\n\n/**\n * Check if a JSON Schema is an enum type\n */\nexport function isEnumSchema(schema: JSONSchema7): boolean {\n return Array.isArray(schema.enum) && schema.enum.length > 0;\n}\n\n/**\n * Check if a JSON Schema is a nullable type\n */\nexport function isNullableSchema(schema: JSONSchema7): boolean {\n return schema.type === 'null';\n}\n\n/**\n * Check if a JSON Schema uses allOf (intersection)\n */\nexport function isAllOfSchema(schema: JSONSchema7): schema is JSONSchema7 & { allOf: JSONSchema7[] } {\n return Array.isArray(schema.allOf) && schema.allOf.length > 0;\n}\n\n/**\n * Check if a JSON Schema has number constraints (minimum, maximum, etc.)\n */\nexport function hasNumberConstraints(schema: JSONSchema7): boolean {\n return (\n schema.minimum !== undefined ||\n schema.maximum !== undefined ||\n schema.exclusiveMinimum !== undefined ||\n schema.exclusiveMaximum !== undefined ||\n schema.multipleOf !== undefined\n );\n}\n\n/**\n * Check if a JSON Schema has string constraints (minLength, maxLength, pattern, format)\n */\nexport function hasStringConstraints(schema: JSONSchema7): boolean {\n return (\n schema.minLength !== undefined ||\n schema.maxLength !== undefined ||\n schema.pattern !== undefined ||\n schema.format !== undefined\n );\n}\n\n/**\n * Check if a JSON Schema has array constraints (minItems, maxItems, uniqueItems)\n */\nexport function hasArrayConstraints(schema: JSONSchema7): boolean {\n return schema.minItems !== undefined || schema.maxItems !== undefined || schema.uniqueItems !== undefined;\n}\n\n/**\n * Check if a property is optional within a parent object schema.\n * A property is optional if it's not in the parent's `required` array.\n * @param propertyName - The name of the property to check\n * @param parentSchema - The parent object schema containing the property\n */\nexport function isOptionalSchema(propertyName: string, parentSchema: JSONSchema7): boolean {\n if (!parentSchema.required || !Array.isArray(parentSchema.required)) {\n return true; // If no required array, all properties are optional\n }\n return !parentSchema.required.includes(propertyName);\n}\n","import type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type { StandardSchemaWithJSON } from './standard-schema/standard-schema.types';\n\n/**\n * Recursively converts null values to undefined in an object based on which\n * properties are optional in the JSON Schema. This is needed because OpenAI\n * strict mode sends null for optional fields, but schemas like Zod's .optional()\n * reject null.\n *\n * Only converts null→undefined for properties that are NOT in the schema's\n * `required` array, preserving null for explicitly .nullable() fields.\n */\nexport function transformNullToUndefined(value: unknown, jsonSchema: Record<string, unknown>): unknown {\n if (value === null || value === undefined) {\n return value;\n }\n\n if (typeof value !== 'object' || Array.isArray(value)) {\n if (Array.isArray(value) && jsonSchema.items && typeof jsonSchema.items === 'object') {\n return value.map(item => transformNullToUndefined(item, jsonSchema.items as Record<string, unknown>));\n }\n return value;\n }\n\n const properties = jsonSchema.properties as Record<string, Record<string, unknown>> | undefined;\n if (!properties) {\n return value;\n }\n\n const required = (jsonSchema.required as string[]) || [];\n const result: Record<string, unknown> = {};\n\n for (const [key, val] of Object.entries(value as Record<string, unknown>)) {\n if (val === null && !required.includes(key)) {\n // Optional field with null value → convert to undefined\n result[key] = undefined;\n } else if (val !== null && typeof val === 'object' && properties[key]) {\n // Recurse into nested objects/arrays\n result[key] = transformNullToUndefined(val, properties[key]);\n } else {\n result[key] = val;\n }\n }\n\n return result;\n}\n\n/**\n * Wraps a StandardSchemaWithJSON to transform null values to undefined for\n * optional fields before validation. This is a schema-agnostic solution for\n * OpenAI strict mode, which sends null for optional fields.\n *\n * The wrapper:\n * 1. Extracts the JSON Schema from the inner schema to determine optional fields\n * 2. Before validation, transforms null→undefined for non-required properties\n * 3. Delegates validation to the inner schema with the transformed value\n * 4. Delegates JSON Schema conversion to the inner schema unchanged\n */\nexport function wrapSchemaWithNullTransform<Input = unknown, Output = Input>(\n schema: StandardSchemaWithJSON<Input, Output>,\n): StandardSchemaWithJSON<Input, Output> {\n // Extract JSON Schema to know which fields are optional\n let jsonSchema: Record<string, unknown> | undefined;\n try {\n jsonSchema = schema['~standard'].jsonSchema.input({ target: 'draft-07' });\n } catch {\n // If we can't get JSON Schema, fall through to unwrapped validation\n }\n\n if (!jsonSchema) {\n return schema;\n }\n\n const innerProps = schema['~standard'];\n\n return {\n '~standard': {\n version: innerProps.version,\n vendor: innerProps.vendor,\n types: innerProps.types,\n validate: (\n value: unknown,\n options?: StandardSchemaV1.Options,\n ): StandardSchemaV1.Result<Output> | Promise<StandardSchemaV1.Result<Output>> => {\n const transformed = transformNullToUndefined(value, jsonSchema);\n return innerProps.validate(transformed, options);\n },\n jsonSchema: innerProps.jsonSchema,\n },\n } as StandardSchemaWithJSON<Input, Output>;\n}\n","import type { z as zV3 } from 'zod/v3';\nimport type { z as zV4 } from 'zod/v4';\n\n/**\n * All supported string validation check types that can be processed or converted to descriptions.\n * @constant\n */\nexport const ALL_STRING_CHECKS = ['regex', 'emoji', 'email', 'url', 'uuid', 'cuid', 'min', 'max'] as const;\n\n/**\n * All supported number validation check types that can be processed or converted to descriptions.\n * @constant\n */\nexport const ALL_NUMBER_CHECKS = [\n 'min', // gte internally\n 'max', // lte internally\n 'multipleOf',\n] as const;\n\n/**\n * All supported array validation check types that can be processed or converted to descriptions.\n * @constant\n */\nexport const ALL_ARRAY_CHECKS = ['min', 'max', 'length'] as const;\n\n/**\n * Zod types that are not supported by most AI model providers and should be avoided.\n * @constant\n */\nexport const UNSUPPORTED_ZOD_TYPES = ['ZodIntersection', 'ZodNever', 'ZodNull', 'ZodTuple', 'ZodUndefined'] as const;\n\n/**\n * Zod types that are generally supported by AI model providers.\n * @constant\n */\nexport const SUPPORTED_ZOD_TYPES = [\n 'ZodObject',\n 'ZodArray',\n 'ZodUnion',\n 'ZodString',\n 'ZodNumber',\n 'ZodDate',\n 'ZodAny',\n 'ZodDefault',\n 'ZodNullable',\n] as const;\n\n/**\n * All Zod types (both supported and unsupported).\n * @constant\n */\nexport const ALL_ZOD_TYPES = [...SUPPORTED_ZOD_TYPES, ...UNSUPPORTED_ZOD_TYPES] as const;\n\n/**\n * Type representing string validation checks.\n */\nexport type StringCheckType = (typeof ALL_STRING_CHECKS)[number];\n\n/**\n * Type representing number validation checks.\n */\nexport type NumberCheckType = (typeof ALL_NUMBER_CHECKS)[number];\n\n/**\n * Type representing array validation checks.\n */\nexport type ArrayCheckType = (typeof ALL_ARRAY_CHECKS)[number];\n\n/**\n * Type representing unsupported Zod schema types.\n */\nexport type UnsupportedZodType = (typeof UNSUPPORTED_ZOD_TYPES)[number];\n\n/**\n * Type representing supported Zod schema types.\n */\nexport type SupportedZodType = (typeof SUPPORTED_ZOD_TYPES)[number];\n\n/**\n * Type representing all Zod schema types (supported and unsupported).\n */\nexport type AllZodType = (typeof ALL_ZOD_TYPES)[number];\n\n/**\n * Utility type to extract the shape of a Zod object schema.\n */\nexport type ZodShape<T extends zV3.ZodObject<any, any, any> | zV4.ZodObject<any, any>> = T['shape'];\n\n/**\n * Utility type to extract the keys from a Zod object shape.\n */\nexport type ShapeKey<T extends zV3.ZodObject<any, any, any> | zV4.ZodObject<any, any>> = keyof ZodShape<T>;\n\n/**\n * Utility type to extract the value types from a Zod object shape.\n */\nexport type ShapeValue<T extends zV3.ZodObject<any, any, any> | zV4.ZodObject<any, any>> = ZodShape<T>[ShapeKey<T>];\n\nexport function isOptional<Z extends typeof zV3>(z: Z): (v: any) => v is zV3.ZodOptional<any>;\nexport function isOptional<Z extends typeof zV4>(z: Z): (v: any) => v is zV4.ZodOptional<any>;\nexport function isOptional<Z extends typeof zV3 | typeof zV4>(z: Z) {\n return (v: any): v is Z['ZodOptional'] => v instanceof z['ZodOptional'];\n}\n\nexport function isObj<Z extends typeof zV3>(z: Z): (v: any) => v is zV3.ZodObject<any>;\nexport function isObj<Z extends typeof zV4>(z: Z): (v: any) => v is zV4.ZodObject;\nexport function isObj<Z extends typeof zV3 | typeof zV4>(z: Z) {\n return (v: any): v is Z['ZodObject'] => v instanceof z['ZodObject'];\n}\n\nexport function isNull<Z extends typeof zV3>(z: Z): (v: any) => v is zV3.ZodNull;\nexport function isNull<Z extends typeof zV4>(z: Z): (v: any) => v is zV4.ZodNull;\nexport function isNull<Z extends typeof zV3 | typeof zV4>(z: Z) {\n return (v: any): v is Z['ZodNull'] => v instanceof z['ZodNull'];\n}\n\nexport function isArr<Z extends typeof zV3>(z: Z): (v: any) => v is zV3.ZodArray<any>;\nexport function isArr<Z extends typeof zV4>(z: Z): (v: any) => v is zV4.ZodArray;\nexport function isArr<Z extends typeof zV3 | typeof zV4>(z: Z) {\n return (v: any): v is Z['ZodArray'] => v instanceof z['ZodArray'];\n}\n\nexport function isUnion<Z extends typeof zV3>(z: Z): (v: any) => v is zV3.ZodUnion<any>;\nexport function isUnion<Z extends typeof zV4>(z: Z): (v: any) => v is zV4.ZodUnion;\nexport function isUnion<Z extends typeof zV3 | typeof zV4>(z: Z) {\n return (v: any): v is Z['ZodUnion'] => v instanceof z['ZodUnion'];\n}\n\nexport function isString<Z extends typeof zV3>(z: Z): (v: any) => v is zV3.ZodString;\nexport function isString<Z extends typeof zV4>(z: Z): (v: any) => v is zV4.ZodString;\nexport function isString<Z extends typeof zV3 | typeof zV4>(z: Z) {\n return (v: any): v is Z['ZodString'] => v instanceof z['ZodString'];\n}\n\nexport function isNumber<Z extends typeof zV3>(z: Z): (v: any) => v is zV3.ZodNumber;\nexport function isNumber<Z extends typeof zV4>(z: Z): (v: any) => v is zV4.ZodNumber;\nexport function isNumber<Z extends typeof zV3 | typeof zV4>(z: Z) {\n return (v: any): v is Z['ZodNumber'] => v instanceof z['ZodNumber'];\n}\n\nexport function isDate<Z extends typeof zV3>(z: Z): (v: any) => v is zV3.ZodDate;\nexport function isDate<Z extends typeof zV4>(z: Z): (v: any) => v is zV4.ZodDate;\nexport function isDate<Z extends typeof zV3 | typeof zV4>(z: Z) {\n return (v: any): v is Z['ZodDate'] => v instanceof z['ZodDate'];\n}\n\nexport function isDefault<Z extends typeof zV3>(z: Z): (v: any) => v is zV3.ZodDefault<any>;\nexport function isDefault<Z extends typeof zV4>(z: Z): (v: any) => v is zV4.ZodDefault;\nexport function isDefault<Z extends typeof zV3 | typeof zV4>(z: Z) {\n return (v: any): v is Z['ZodDefault'] => v instanceof z['ZodDefault'];\n}\n\nexport function isNullable<Z extends typeof zV3>(z: Z): (v: any) => v is zV3.ZodNullable<any>;\nexport function isNullable<Z extends typeof zV4>(z: Z): (v: any) => v is zV4.ZodNullable;\nexport function isNullable<Z extends typeof zV3 | typeof zV4>(z: Z) {\n return (v: any): v is Z['ZodNullable'] => v instanceof z['ZodNullable'];\n}\n\nexport function isIntersection<Z extends typeof zV3>(z: Z): (v: any) => v is zV3.ZodIntersection<any, any>;\nexport function isIntersection<Z extends typeof zV4>(z: Z): (v: any) => v is zV4.ZodIntersection;\nexport function isIntersection<Z extends typeof zV3 | typeof zV4>(z: Z) {\n return (v: any): v is Z['ZodIntersection'] => v instanceof z['ZodIntersection'];\n}\n","import type { JSONSchema7 } from 'json-schema';\nimport { z } from 'zod';\nimport type { ZodType as ZodTypeV3, ZodObject as ZodObjectV3 } from 'zod/v3';\nimport type { ZodType as ZodTypeV4, ZodObject as ZodObjectV4 } from 'zod/v4';\nimport type { Targets } from 'zod-to-json-schema';\nimport type { Schema } from '../json-schema';\nimport { jsonSchema } from '../json-schema';\nimport {\n isAllOfSchema,\n isArraySchema,\n isNumberSchema,\n isObjectSchema,\n isStringSchema,\n isUnionSchema,\n} from '../json-schema/utils';\nimport { SchemaCompatLayer } from '../schema-compatibility';\nimport type { PublicSchema, ZodType } from '../schema.types';\nimport { standardSchemaToJSONSchema, toStandardSchema } from '../standard-schema/standard-schema';\nimport type { StandardSchemaWithJSON } from '../standard-schema/standard-schema.types';\nimport { isOptional, isObj, isUnion, isArr, isString, isNullable, isDefault, isIntersection } from '../zodTypes';\n\n// @see https://developers.openai.com/api/docs/guides/structured-outputs#supported-schemas\nconst allowedStringFormats = [\n 'date-time',\n 'time',\n 'date',\n 'duration',\n 'email',\n 'hostname',\n 'ipv4',\n 'ipv6',\n 'uuid',\n] as const;\n\nexport class OpenAISchemaCompatLayer extends SchemaCompatLayer {\n getSchemaTarget(): Targets | undefined {\n return `jsonSchema7`;\n }\n\n isReasoningModel(): boolean {\n // there isn't a good way to automatically detect reasoning models besides doing this.\n // in the future when o5 is released this compat wont apply and we'll want to come back and update this class + our tests\n const modelId = this.getModel().modelId;\n if (!modelId) return false;\n return modelId.includes(`o3`) || modelId.includes(`o4`) || modelId.includes(`o1`);\n }\n\n shouldApply(): boolean {\n const model = this.getModel();\n if (\n !this.isReasoningModel() &&\n (model.provider.includes(`openai`) || model.modelId?.includes(`openai`) || model.provider.includes(`groq`))\n ) {\n return true;\n }\n\n return false;\n }\n\n processZodType(value: ZodType): ZodType {\n if (isOptional(z)(value)) {\n // For OpenAI strict mode, convert .optional() to .nullable() with transform\n // This ensures all fields are in the required array but can accept null values\n // The transform converts null -> undefined to match original .optional() semantics\n const innerType = '_def' in value ? value._def.innerType : (value as any)._zod?.def?.innerType;\n\n if (innerType) {\n // If inner is nullable, just process and return it with transform (strips the optional wrapper)\n // This converts .optional().nullable() -> .nullable() with transform\n if (isNullable(z)(innerType)) {\n const processed = this.processZodType(innerType);\n return processed.transform((val: any) => (val === null ? undefined : val));\n }\n\n // Otherwise, process inner, make it nullable, and add transform\n // This converts .optional() -> .nullable() with transform that converts null to undefined\n const processedInner = this.processZodType(innerType);\n return processedInner.nullable().transform((val: any) => (val === null ? undefined : val));\n }\n\n return value;\n } else if (isNullable(z)(value)) {\n // Process nullable: unwrap, process inner, and re-wrap with nullable\n const innerType = '_def' in value ? value._def.innerType : (value as any)._zod?.def?.innerType;\n if (innerType) {\n // Special case: if inner is optional, strip it and add transform for OpenAI strict mode\n // This converts .nullable().optional() -> .nullable() with transform\n if (isOptional(z)(innerType)) {\n const innerInnerType =\n '_def' in innerType ? innerType._def.innerType : (innerType as any)._zod?.def?.innerType;\n if (innerInnerType) {\n const processedInnerInner = this.processZodType(innerInnerType);\n return processedInnerInner.nullable().transform((val: any) => (val === null ? undefined : val));\n }\n }\n\n const processedInner = this.processZodType(innerType);\n return processedInner.nullable();\n }\n return value;\n } else if (isDefault(z)(value)) {\n // For OpenAI strict mode, convert .default() to .nullable() with transform\n // This ensures all fields are in the required array but can accept null values\n // The transform converts null -> default value to match original .default() semantics\n const innerType = '_def' in value ? value._def.innerType : (value as any)._zod?.def?.innerType;\n const defaultValue = '_def' in value ? value._def.defaultValue : (value as any)._zod?.def?.defaultValue;\n\n if (innerType) {\n const processedInner = this.processZodType(innerType);\n // Transform null -> default value (call defaultValue() if it's a function)\n return processedInner.nullable().transform((val: any) => {\n if (val === null) {\n return typeof defaultValue === 'function' ? defaultValue() : defaultValue;\n }\n return val;\n });\n }\n\n return value;\n } else if (isObj(z)(value)) {\n return this.defaultZodObjectHandler(value);\n } else if (isUnion(z)(value)) {\n return this.defaultZodUnionHandler(value);\n } else if (isArr(z)(value)) {\n return this.defaultZodArrayHandler(value);\n } else if (isString(z)(value)) {\n const model = this.getModel();\n const checks = ['emoji'] as const;\n\n if (model.modelId?.includes('gpt-4o-mini')) {\n return this.defaultZodStringHandler(value, ['emoji', 'regex']);\n }\n\n return this.defaultZodStringHandler(value, checks);\n }\n\n if (isIntersection(z)(value)) {\n return this.defaultZodIntersectionHandler(value);\n }\n\n return this.defaultUnsupportedZodTypeHandler(value as ZodObjectV4<any> | ZodObjectV3<any>, [\n 'ZodNever',\n 'ZodUndefined',\n 'ZodTuple',\n ]);\n }\n\n /**\n * Override to apply the same JSON Schema fixes (additionalProperties, required fields)\n * that processToJSONSchema applies. The base implementation skips JSON Schema traversal,\n * which causes OpenAI strict mode to reject tool schemas missing additionalProperties: false.\n */\n processToAISDKSchema(zodSchema: ZodTypeV3 | ZodTypeV4): Schema {\n const compat = this.processToCompatSchema(zodSchema);\n\n // Apply the same JSON Schema fixes as processToJSONSchema\n const transformedJsonSchema = standardSchemaToJSONSchema(compat);\n\n // Post-process the raw LLM value: strip falsy optional fields and convert\n // date strings back to Date objects, then validate against the original Zod schema.\n return jsonSchema(transformedJsonSchema, {\n validate: (value: unknown) => {\n const transformed = this.#traverse(value, transformedJsonSchema as Record<string, unknown>);\n const result = zodSchema.safeParse(transformed);\n return result.success ? { success: true, value: result.data } : { success: false, error: result.error };\n },\n });\n }\n\n public processToCompatSchema<T>(schema: PublicSchema<T>): StandardSchemaWithJSON<T> {\n const originalStandardSchema = toStandardSchema(schema);\n\n return {\n '~standard': {\n version: 1,\n vendor: 'mastra',\n validate: (value: unknown) => {\n const transformedJsonSchema = this.processToJSONSchema(schema, 'input') as Record<string, unknown>;\n // Apply OpenAI-specific transforms: null→undefined for optional fields, date string→Date\n const transformed = this.#traverse(value, transformedJsonSchema as Record<string, unknown>);\n\n // Then validate against the original schema\n return originalStandardSchema['~standard'].validate(transformed);\n },\n jsonSchema: {\n input: () => {\n return this.processToJSONSchema(schema, 'input') as Record<string, unknown>;\n },\n output: () => {\n return this.processToJSONSchema(schema, 'output') as Record<string, unknown>;\n },\n },\n },\n };\n }\n\n preProcessJSONNode(schema: JSONSchema7, _parentSchema?: JSONSchema7): void {\n if (isAllOfSchema(schema)) {\n this.defaultAllOfHandler(schema);\n }\n\n if (isObjectSchema(schema)) {\n this.defaultObjectHandler(schema);\n } else if (isArraySchema(schema)) {\n this.defaultArrayHandler(schema);\n } else if (isNumberSchema(schema)) {\n this.defaultNumberHandler(schema);\n } else if (isStringSchema(schema)) {\n if (schema.format) {\n if (!(allowedStringFormats as readonly string[]).includes(schema.format as string)) {\n delete schema.format;\n delete schema.pattern;\n }\n }\n\n this.defaultStringHandler(schema);\n }\n }\n\n postProcessJSONNode(schema: JSONSchema7): void {\n // Handle union schemas in post-processing (after children are processed)\n if (isUnionSchema(schema)) {\n this.defaultUnionHandler(schema);\n }\n\n if (schema.type === undefined && !schema.anyOf) {\n let subSchema: typeof schema = {};\n for (const key of Object.keys(schema)) {\n // @ts-expect-error - key is a valid property for JSON Schema\n subSchema[key] = schema[key];\n // @ts-expect-error - key is a valid property for JSON Schema\n delete schema[key];\n }\n\n schema.anyOf = [\n subSchema,\n {\n type: 'null',\n },\n ];\n }\n\n // Ensure bare {\"type\":\"object\"} nodes (e.g., inside anyOf) have additionalProperties: false.\n // OpenAI strict mode requires this on every object-type node, even without properties.\n if (isObjectSchema(schema)) {\n schema.additionalProperties = false;\n\n if (schema.properties) {\n for (const key of Object.keys(schema.properties)) {\n const prop = schema.properties[key] as JSONSchema7;\n\n if (!schema.required) {\n schema.required = [];\n }\n\n if (!schema.required?.includes(key)) {\n // @ts-expect-error - x-optional is a custom property\n schema['x-optional'] = [...(schema['x-optional'] || []), key];\n schema.required?.push(key);\n if (prop.type) {\n if (Array.isArray(prop.type)) {\n const types = [...prop.type];\n if (!types.includes('null')) {\n types.push('null');\n }\n\n const propSchema = { ...prop } as JSONSchema7;\n delete propSchema.anyOf;\n delete propSchema.type;\n delete prop.type;\n\n prop.anyOf = types.map(type =>\n type === 'null'\n ? { type: 'null' }\n : {\n ...propSchema,\n type,\n },\n );\n } else if (prop.type !== 'null') {\n const originalType = prop.type;\n const propSchema = { ...prop } as JSONSchema7;\n delete propSchema.anyOf;\n delete propSchema.type;\n delete prop.type;\n prop.anyOf = [\n {\n ...propSchema,\n type: originalType,\n },\n { type: 'null' },\n ];\n }\n }\n }\n }\n }\n }\n }\n\n #traverse(value: unknown, schema: Record<string, unknown>): unknown {\n // If schema uses anyOf, find the non-null variant for traversal\n const resolved = this.#resolveAnyOf(schema);\n\n if ((isDateFormat(resolved) || resolved['x-date'] === true) && typeof value === 'string') {\n return new Date(value);\n }\n\n const isArrayType =\n resolved.type === 'array' || (Array.isArray(resolved.type) && (resolved.type as string[]).includes('array'));\n if (isArrayType) {\n if (!Array.isArray(value)) {\n return value;\n }\n return value.map(item => this.#traverse(item, resolved.items as Record<string, unknown>));\n }\n\n const isObjectType =\n resolved.type === 'object' || (Array.isArray(resolved.type) && (resolved.type as string[]).includes('object'));\n if (!isObjectType) {\n return value;\n }\n\n const properties = resolved.properties as Record<string, Record<string, unknown>> | undefined;\n if (!properties || !value) {\n return value;\n }\n\n const obj = value as Record<string, unknown>;\n const optionalProperties = (resolved['x-optional'] ?? []) as string[];\n for (const key in obj) {\n if (optionalProperties.includes(key) && obj[key] === null) {\n obj[key] = undefined;\n } else if (properties[key]) {\n obj[key] = this.#traverse(obj[key], properties[key]);\n }\n }\n\n return obj;\n }\n\n /**\n * If schema has anyOf, return the first non-null variant for traversal.\n * Otherwise return the schema itself.\n */\n #resolveAnyOf(schema: Record<string, unknown>): Record<string, unknown> {\n if (Array.isArray(schema.anyOf)) {\n const nonNull = (schema.anyOf as Record<string, unknown>[]).find(s => s.type !== 'null');\n if (nonNull) {\n return nonNull;\n }\n }\n\n return schema;\n }\n}\n\nfunction isDateFormat(schema: Record<string, unknown>): boolean {\n return schema.format === 'date-time' || schema.format === 'date';\n}\n","import { z } from 'zod';\nimport type { ZodType as ZodTypeV3, ZodObject as ZodObjectV3 } from 'zod/v3';\nimport type { ZodType as ZodTypeV4, ZodObject as ZodObjectV4 } from 'zod/v4';\nimport type { Targets } from 'zod-to-json-schema';\nimport type { ZodType } from '../schema.types';\nimport {\n isOptional,\n isObj,\n isArr,\n isUnion,\n isDefault,\n isNumber,\n isString,\n isDate,\n isNullable,\n isNull,\n isIntersection,\n} from '../zodTypes';\nimport { OpenAISchemaCompatLayer } from './openai';\n\nexport class OpenAIReasoningSchemaCompatLayer extends OpenAISchemaCompatLayer {\n getSchemaTarget(): Targets | undefined {\n return `openApi3`;\n }\n\n isReasoningModel(): boolean {\n // there isn't a good way to automatically detect reasoning models besides doing this.\n // in the future when o5 is released this compat wont apply and we'll want to come back and update this class + our tests\n const modelId = this.getModel().modelId;\n if (!modelId) return false;\n return modelId.includes(`o3`) || modelId.includes(`o4`) || modelId.includes(`o1`);\n }\n\n shouldApply(): boolean {\n const model = this.getModel();\n if (this.isReasoningModel() && (model.provider.includes(`openai`) || model.modelId?.includes(`openai`))) {\n return true;\n }\n\n return false;\n }\n\n processZodType(value: ZodType): ZodType {\n if (isOptional(z)(value)) {\n // For OpenAI reasoning models strict mode, convert .optional() to .nullable() with transform\n // The transform converts null -> undefined to match original .optional() semantics\n const innerType = '_def' in value ? value._def.innerType : (value as any)._zod?.def?.innerType;\n\n if (innerType) {\n // If inner is nullable, just process and return it with transform (strips the optional wrapper)\n if (isNullable(z)(innerType)) {\n const processed = this.processZodType(innerType);\n return processed.transform((val: any) => (val === null ? undefined : val));\n }\n\n // Otherwise, process inner, make it nullable, and add transform\n const processedInner = this.processZodType(innerType);\n return processedInner.nullable().transform((val: any) => (val === null ? undefined : val));\n }\n\n return value;\n } else if (isNullable(z)(value)) {\n // Handle nullable: if inner is optional, strip it and add transform\n // This converts .optional().nullable() -> .nullable() with transform\n const innerType = '_def' in value ? value._def.innerType : (value as any)._zod?.def?.innerType;\n if (innerType && isOptional(z)(innerType)) {\n const innerInnerType = '_def' in innerType ? innerType._def.innerType : (innerType as any)._zod?.def?.innerType;\n if (innerInnerType) {\n const processedInnerInner = this.processZodType(innerInnerType);\n return processedInnerInner.nullable().transform((val: any) => (val === null ? undefined : val));\n }\n }\n // Otherwise process inner and re-wrap with nullable (no transform - intentionally nullable)\n if (innerType) {\n const processedInner = this.processZodType(innerType);\n return processedInner.nullable();\n }\n return value;\n } else if (isObj(z)(value)) {\n return this.defaultZodObjectHandler(value, { passthrough: false });\n } else if (isArr(z)(value)) {\n return this.defaultZodArrayHandler(value);\n } else if (isUnion(z)(value)) {\n return this.defaultZodUnionHandler(value);\n } else if (isDefault(z)(value)) {\n const defaultDef = value._def;\n const innerType = defaultDef.innerType;\n // Handle both Zod v3 (function) and v4 (direct value)\n const defaultValue =\n typeof defaultDef.defaultValue === 'function' ? defaultDef.defaultValue() : defaultDef.defaultValue;\n const constraints: string[] = [];\n if (defaultValue !== undefined) {\n constraints.push(`the default value is ${defaultValue}`);\n }\n\n const description = this.mergeParameterDescription(value.description, constraints);\n let result = this.processZodType(innerType as ZodTypeV3 | ZodTypeV4);\n if (description) {\n result = result.describe(description);\n }\n return result;\n } else if (isNumber(z)(value)) {\n return this.defaultZodNumberHandler(value);\n } else if (isString(z)(value)) {\n return this.defaultZodStringHandler(value);\n } else if (isDate(z)(value)) {\n return this.defaultZodDateHandler(value);\n } else if (isNull(z)(value)) {\n return z\n .any()\n .refine(v => v === null, { message: 'must be null' })\n .describe(value.description || 'must be null');\n } else if (value.constructor.name === 'ZodAny') {\n // It's bad practice in the tool to use any, it's not reasonable for models that don't support that OOTB, to cast every single possible type\n // in the schema. Usually when it's \"any\" it could be a json object or a union of specific types.\n return z\n .string()\n .describe(\n (value.description ?? '') +\n `\\nArgument was an \"any\" type, but you (the LLM) do not support \"any\", so it was cast to a \"string\" type`,\n );\n }\n\n if (isIntersection(z)(value)) {\n return this.defaultZodIntersectionHandler(value);\n }\n\n return this.defaultUnsupportedZodTypeHandler(value as ZodObjectV4<any> | ZodObjectV3<any>);\n }\n}\n","/**\n * Standard Schema compatibility utilities\n *\n * This module provides utilities to apply provider-specific schema transformations\n * to StandardSchemaWithJSON types, particularly for OpenAI compatibility.\n */\n\nimport { OpenAISchemaCompatLayer } from './provider-compats/openai';\nimport { OpenAIReasoningSchemaCompatLayer } from './provider-compats/openai-reasoning';\nimport { toStandardSchema } from './standard-schema/standard-schema';\nimport type { StandardSchemaWithJSON } from './standard-schema/standard-schema.types';\nimport type { ModelInformation } from './types';\nimport { isZodType } from './utils';\n\n/**\n * Extracts the underlying Zod schema from a schema value.\n *\n * Handles both:\n * - Raw Zod schemas (z.object(...))\n * - StandardSchemaWithJSON wrappers that preserve Zod methods via prototype\n *\n * @param schema - The schema to extract from\n * @returns The underlying Zod schema, or null if not a Zod schema\n */\nexport function extractZodSchema(schema: unknown): unknown {\n if (!isZodType(schema)) {\n return null;\n }\n\n // Both raw Zod schemas and StandardSchemaWithJSON wrappers pass isZodType\n // check due to prototype chain preservation. We can treat them the same.\n return schema;\n}\n\n/**\n * Applies OpenAI schema compatibility transforms to a schema.\n *\n * For OpenAI models, converts `.optional()` fields to `.nullable().transform()`\n * to work around OpenAI's limitation with optional fields in structured outputs.\n *\n * @param schema - The schema to process (raw Zod or StandardSchemaWithJSON)\n * @param modelInfo - Information about the target model\n * @returns The processed schema as StandardSchemaWithJSON, or original if not applicable\n *\n * @example\n * ```typescript\n * const schema = z.object({\n * name: z.string(),\n * age: z.number().optional(), // Will be converted to .nullable().transform()\n * });\n *\n * const processed = applyOpenAICompatTransforms(schema, {\n * provider: 'openai',\n * modelId: 'gpt-4',\n * supportsStructuredOutputs: false,\n * });\n * ```\n */\nexport function applyOpenAICompatTransforms<T>(schema: T, modelInfo: ModelInformation): T | StandardSchemaWithJSON {\n // Only apply to OpenAI models\n const isOpenAI = modelInfo.provider?.includes('openai') || modelInfo.modelId?.includes('openai');\n\n if (!isOpenAI) {\n return schema;\n }\n\n // Extract underlying Zod schema (works with both raw Zod and StandardSchemaWithJSON)\n const zodSchema = extractZodSchema(schema);\n if (!zodSchema) {\n // Not a Zod schema, return unchanged\n return schema;\n }\n\n // Create appropriate compat layer based on model type\n const isReasoningModel = /^o[1-5]/.test(modelInfo.modelId);\n const compatLayer = isReasoningModel\n ? new OpenAIReasoningSchemaCompatLayer(modelInfo)\n : new OpenAISchemaCompatLayer(modelInfo);\n\n if (!compatLayer.shouldApply()) {\n // Compat layer determined it's not needed\n return schema;\n }\n\n // Process the Zod schema with OpenAI-specific transforms\n // processZodType expects and returns a Zod schema\n const processedZodSchema = compatLayer.processZodType(zodSchema as any);\n\n // Re-wrap as StandardSchemaWithJSON and return\n // Type assertion is safe because we're returning StandardSchemaWithJSON\n return toStandardSchema(processedZodSchema) as any;\n}\n\n/**\n * Applies OpenAI compat transforms to all tools in a toolset.\n *\n * Processes each tool's inputSchema (if present) with OpenAI compatibility transforms.\n *\n * @param tools - The toolset to process\n * @param modelInfo - Information about the target model\n * @returns The processed toolset with transformed schemas\n *\n * @example\n * ```typescript\n * const tools = {\n * getTodo: {\n * inputSchema: z.object({\n * id: z.string(),\n * includeCompleted: z.boolean().optional(), // Will be transformed\n * }),\n * execute: async (input) => { ... },\n * },\n * };\n *\n * const processed = applyOpenAICompatToTools(tools, {\n * provider: 'openai',\n * modelId: 'gpt-4',\n * supportsStructuredOutputs: false,\n * });\n * ```\n */\nexport function applyOpenAICompatToTools<T extends Record<string, any>>(\n tools: T | undefined,\n modelInfo: ModelInformation,\n): T | undefined {\n if (!tools) {\n return tools;\n }\n\n const transformedTools: Record<string, any> = {};\n\n for (const [name, tool] of Object.entries(tools)) {\n if (tool.inputSchema) {\n // Apply transforms to the tool's input schema\n const processedSchema = applyOpenAICompatTransforms(tool.inputSchema, modelInfo);\n\n transformedTools[name] = {\n ...tool,\n inputSchema: processedSchema,\n };\n } else {\n // No schema, pass through unchanged\n transformedTools[name] = tool;\n }\n }\n\n return transformedTools as T;\n}\n","import type { JSONSchema7 } from 'json-schema';\nimport { z } from 'zod';\nimport type { ZodType as ZodTypeV3 } from 'zod/v3';\nimport type { ZodType as ZodTypeV4 } from 'zod/v4';\nimport type { Targets } from 'zod-to-json-schema';\n\nimport { jsonSchema } from '../json-schema';\nimport {\n isAllOfSchema,\n isArraySchema,\n isObjectSchema,\n isNumberSchema,\n isStringSchema,\n isUnionSchema,\n} from '../json-schema/utils';\nimport { SchemaCompatLayer } from '../schema-compatibility';\nimport type { PublicSchema, ZodType } from '../schema.types';\nimport { standardSchemaToJSONSchema, toStandardSchema } from '../standard-schema/standard-schema';\nimport type { StandardSchemaWithJSON } from '../standard-schema/standard-schema.types';\nimport type { ModelInformation } from '../types';\nimport { isIntersection, isNull } from '../zodTypes';\n\nexport class AnthropicSchemaCompatLayer extends SchemaCompatLayer {\n constructor(model: ModelInformation) {\n super(model);\n }\n\n getSchemaTarget(): Targets | undefined {\n return 'jsonSchema7';\n }\n\n shouldApply(): boolean {\n return this.getModel().modelId.includes('claude');\n }\n\n processZodType(value: ZodType): ZodType {\n if (this.isOptional(value)) {\n const handleTypes: string[] = ['ZodObject', 'ZodArray', 'ZodUnion', 'ZodNever', 'ZodUndefined', 'ZodTuple'];\n if (this.getModel().modelId.includes('claude-3.5-haiku')) handleTypes.push('ZodString');\n return this.defaultZodOptionalHandler(value, handleTypes);\n } else if (this.isObj(value)) {\n return this.defaultZodObjectHandler(value);\n } else if (this.isArr(value)) {\n return this.defaultZodArrayHandler(value, []);\n } else if (this.isUnion(value)) {\n return this.defaultZodUnionHandler(value);\n } else if (this.isString(value)) {\n // the claude-3.5-haiku model support these properties but the model doesn't respect them, but it respects them when they're\n // added to the tool description\n\n if (this.getModel().modelId.includes('claude-3.5-haiku')) {\n return this.defaultZodStringHandler(value, ['max', 'min']);\n } else {\n return value;\n }\n } else if (isNull(z)(value)) {\n return z\n .any()\n .refine(v => v === null, { message: 'must be null' })\n .describe(value.description || 'must be null');\n } else if (isIntersection(z)(value)) {\n return this.defaultZodIntersectionHandler(value);\n }\n\n return this.defaultUnsupportedZodTypeHandler(value);\n }\n\n processToAISDKSchema(zodSchema: ZodTypeV3 | ZodTypeV4) {\n const compat = this.processToCompatSchema(zodSchema);\n const transformedJsonSchema = standardSchemaToJSONSchema(compat);\n\n return jsonSchema(transformedJsonSchema, {\n validate: (value: unknown) => {\n const transformed = this.#traverse(value, transformedJsonSchema as Record<string, unknown>);\n const result = zodSchema.safeParse(transformed);\n return result.success ? { success: true, value: result.data } : { success: false, error: result.error };\n },\n });\n }\n\n public processToCompatSchema<T>(schema: PublicSchema<T>): StandardSchemaWithJSON<T> {\n const originalStandardSchema = toStandardSchema(schema);\n\n return {\n '~standard': {\n version: 1,\n vendor: 'mastra',\n validate: (value: unknown) => {\n const transformedJsonSchema = this.processToJSONSchema(schema, 'input') as Record<string, unknown>;\n const transformed = this.#traverse(value, transformedJsonSchema);\n return originalStandardSchema['~standard'].validate(transformed);\n },\n jsonSchema: {\n input: () => {\n return this.processToJSONSchema(schema, 'input') as Record<string, unknown>;\n },\n output: () => {\n return this.processToJSONSchema(schema, 'output') as Record<string, unknown>;\n },\n },\n },\n };\n }\n\n preProcessJSONNode(schema: JSONSchema7): void {\n if (isAllOfSchema(schema)) {\n this.defaultAllOfHandler(schema);\n }\n\n if (isObjectSchema(schema)) {\n this.defaultObjectHandler(schema);\n } else if (isArraySchema(schema)) {\n this.defaultArrayHandler(schema);\n } else if (isNumberSchema(schema)) {\n this.defaultNumberHandler(schema);\n } else if (isStringSchema(schema)) {\n this.defaultStringHandler(schema);\n }\n }\n\n postProcessJSONNode(schema: JSONSchema7): void {\n // Handle union schemas in post-processing (after children are processed)\n if (isUnionSchema(schema)) {\n this.defaultUnionHandler(schema);\n }\n }\n\n #traverse(value: unknown, schema: Record<string, unknown>): unknown {\n const resolved = this.#resolveSchemaForValue(schema, value);\n\n if (resolved['x-date'] === true && typeof value === 'string') {\n return new Date(value);\n }\n\n const isArrayType =\n resolved.type === 'array' || (Array.isArray(resolved.type) && (resolved.type as string[]).includes('array'));\n if (isArrayType) {\n if (!Array.isArray(value)) {\n return value;\n }\n return value.map(item => this.#traverse(item, resolved.items as Record<string, unknown>));\n }\n\n const isObjectType =\n resolved.type === 'object' || (Array.isArray(resolved.type) && (resolved.type as string[]).includes('object'));\n if (!isObjectType) {\n return value;\n }\n\n const properties = resolved.properties as Record<string, Record<string, unknown>> | undefined;\n if (!properties || !value) {\n return value;\n }\n\n const obj = value as Record<string, unknown>;\n for (const key in obj) {\n if (properties[key]) {\n obj[key] = this.#traverse(obj[key], properties[key]);\n }\n }\n\n return obj;\n }\n\n // #resolveAnyOf(schema: Record<string, unknown>): Record<string, unknown> {\n // if (Array.isArray(schema.anyOf)) {\n // const nonNull = (schema.anyOf as Record<string, unknown>[]).find(s => s.type !== 'null');\n // if (nonNull) {\n // return nonNull;\n // }\n // }\n\n // return schema;\n // }\n\n #resolveSchemaForValue(schema: Record<string, unknown>, value: unknown): Record<string, unknown> {\n if (!Array.isArray(schema.anyOf)) {\n return schema;\n }\n\n const variants = schema.anyOf as Record<string, unknown>[];\n const nonNullVariants = variants.filter(variant => variant.type !== 'null');\n // fast-path only for nullable wrappers\n if (variants.length === 2 && nonNullVariants.length === 1) {\n return nonNullVariants[0]!;\n }\n // otherwise choose a branch from the runtime value, or recurse each branch\n const keys = value && typeof value === 'object' ? Object.keys(value as Record<string, unknown>) : [];\n return (\n nonNullVariants.find(variant => {\n const properties = variant.properties as Record<string, unknown> | undefined;\n return !!properties && keys.some(key => key in properties);\n }) ?? schema\n );\n }\n}\n","import type { JSONSchema7 } from 'json-schema';\nimport { z } from 'zod';\nimport type { ZodType as ZodTypeV3 } from 'zod/v3';\nimport type { ZodType as ZodTypeV4 } from 'zod/v4';\nimport type { Targets } from 'zod-to-json-schema';\nimport { jsonSchema } from '../json-schema';\nimport {\n isAllOfSchema,\n isArraySchema,\n isNumberSchema,\n isObjectSchema,\n isStringSchema,\n isUnionSchema,\n} from '../json-schema/utils';\nimport { SchemaCompatLayer } from '../schema-compatibility';\nimport type { PublicSchema } from '../schema.types';\nimport { standardSchemaToJSONSchema, toStandardSchema } from '../standard-schema/standard-schema';\nimport type { StandardSchemaWithJSON } from '../standard-schema/standard-schema.types';\nimport type { ModelInformation } from '../types';\nimport { isOptional, isObj, isArr, isUnion, isString, isIntersection } from '../zodTypes';\n\nexport class DeepSeekSchemaCompatLayer extends SchemaCompatLayer {\n constructor(model: ModelInformation) {\n super(model);\n }\n\n getSchemaTarget(): Targets | undefined {\n return 'jsonSchema7';\n }\n\n shouldApply(): boolean {\n // Deepseek R1 performs perfectly without this compat layer\n return this.getModel().modelId.includes('deepseek') && !this.getModel().modelId.includes('r1');\n }\n\n processZodType(value: ZodTypeV3): ZodTypeV3;\n processZodType(value: ZodTypeV4): ZodTypeV4;\n processZodType(value: ZodTypeV3 | ZodTypeV4): ZodTypeV3 | ZodTypeV4 {\n if (isOptional(z)(value)) {\n return this.defaultZodOptionalHandler(value, ['ZodObject', 'ZodArray', 'ZodUnion', 'ZodString', 'ZodNumber']);\n } else if (isObj(z)(value)) {\n return this.defaultZodObjectHandler(value);\n } else if (isArr(z)(value)) {\n return this.defaultZodArrayHandler(value, ['min', 'max']);\n } else if (isUnion(z)(value)) {\n return this.defaultZodUnionHandler(value);\n } else if (isString(z)(value)) {\n return this.defaultZodStringHandler(value);\n } else if (isIntersection(z)(value)) {\n return this.defaultZodIntersectionHandler(value);\n }\n\n return value;\n }\n\n processToAISDKSchema(zodSchema: ZodTypeV3 | ZodTypeV4) {\n const compat = this.processToCompatSchema(zodSchema);\n const transformedJsonSchema = standardSchemaToJSONSchema(compat);\n\n return jsonSchema(transformedJsonSchema, {\n validate: (value: unknown) => {\n const transformed = this.#traverse(value, transformedJsonSchema as Record<string, unknown>);\n const result = zodSchema.safeParse(transformed);\n return result.success ? { success: true, value: result.data } : { success: false, error: result.error };\n },\n });\n }\n\n public processToCompatSchema<T>(schema: PublicSchema<T>): StandardSchemaWithJSON<T> {\n const originalStandardSchema = toStandardSchema(schema);\n\n return {\n '~standard': {\n version: 1,\n vendor: 'mastra',\n validate: (value: unknown) => {\n const transformedJsonSchema = this.processToJSONSchema(schema, 'input') as Record<string, unknown>;\n const transformed = this.#traverse(value, transformedJsonSchema);\n return originalStandardSchema['~standard'].validate(transformed);\n },\n jsonSchema: {\n input: () => {\n return this.processToJSONSchema(schema, 'input') as Record<string, unknown>;\n },\n output: () => {\n return this.processToJSONSchema(schema, 'output') as Record<string, unknown>;\n },\n },\n },\n };\n }\n\n preProcessJSONNode(schema: JSONSchema7): void {\n if (isAllOfSchema(schema)) {\n this.defaultAllOfHandler(schema);\n }\n\n if (isObjectSchema(schema)) {\n this.defaultObjectHandler(schema);\n } else if (isArraySchema(schema)) {\n this.defaultArrayHandler(schema);\n } else if (isNumberSchema(schema)) {\n this.defaultNumberHandler(schema);\n } else if (isStringSchema(schema)) {\n this.defaultStringHandler(schema);\n }\n }\n\n postProcessJSONNode(schema: JSONSchema7): void {\n // Handle union schemas in post-processing (after children are processed)\n if (isUnionSchema(schema)) {\n this.defaultUnionHandler(schema);\n }\n }\n\n #traverse(value: unknown, schema: Record<string, unknown>): unknown {\n const resolved = this.#resolveAnyOf(schema);\n\n if (resolved['x-date'] === true && typeof value === 'string') {\n return new Date(value);\n }\n\n const isArrayType =\n resolved.type === 'array' || (Array.isArray(resolved.type) && (resolved.type as string[]).includes('array'));\n if (isArrayType) {\n if (!Array.isArray(value)) {\n return value;\n }\n return value.map(item => this.#traverse(item, resolved.items as Record<string, unknown>));\n }\n\n const isObjectType =\n resolved.type === 'object' || (Array.isArray(resolved.type) && (resolved.type as string[]).includes('object'));\n if (!isObjectType) {\n return value;\n }\n\n const properties = resolved.properties as Record<string, Record<string, unknown>> | undefined;\n if (!properties || !value) {\n return value;\n }\n\n const obj = value as Record<string, unknown>;\n for (const key in obj) {\n if (properties[key]) {\n obj[key] = this.#traverse(obj[key], properties[key]);\n }\n }\n\n return obj;\n }\n\n #resolveAnyOf(schema: Record<string, unknown>): Record<string, unknown> {\n if (Array.isArray(schema.anyOf)) {\n const nonNull = (schema.anyOf as Record<string, unknown>[]).find(s => s.type !== 'null');\n if (nonNull) {\n return nonNull;\n }\n }\n\n return schema;\n }\n}\n","import type { JSONSchema7 } from 'json-schema';\nimport { z } from 'zod';\nimport type { ZodType as ZodTypeV3, ZodObject as ZodObjectV3 } from 'zod/v3';\nimport type { ZodType as ZodTypeV4, ZodObject as ZodObjectV4 } from 'zod/v4';\nimport type { Targets } from 'zod-to-json-schema';\nimport type { Schema } from '../json-schema';\nimport { jsonSchema } from '../json-schema';\nimport {\n isAllOfSchema,\n isArraySchema,\n isNumberSchema,\n isObjectSchema,\n isStringSchema,\n isUnionSchema,\n} from '../json-schema/utils';\nimport { SchemaCompatLayer } from '../schema-compatibility';\nimport type { PublicSchema } from '../schema.types';\nimport { standardSchemaToJSONSchema, toStandardSchema } from '../standard-schema/standard-schema';\nimport type { StandardSchemaWithJSON } from '../standard-schema/standard-schema.types';\nimport type { ModelInformation } from '../types';\nimport { isOptional, isNullable, isNull, isObj, isArr, isUnion, isString, isNumber, isIntersection } from '../zodTypes';\n\nfunction fixAISDKNullableUnionTypes(schema: Record<string, any>): Record<string, any> {\n if (typeof schema !== 'object' || schema === null) {\n return schema;\n }\n\n const result = { ...schema };\n\n if (Array.isArray(result.type)) {\n const nonNullTypes = result.type.filter((t: string) => t !== 'null');\n if (nonNullTypes.length === 1) {\n result.type = nonNullTypes[0];\n result.nullable = true;\n } else {\n delete result.type;\n delete result.nullable;\n }\n }\n\n if (Array.isArray(result.enum) && result.enum.some((value: unknown) => typeof value !== 'string')) {\n delete result.enum;\n }\n\n if ('const' in result && typeof result.const !== 'string') {\n delete result.const;\n }\n\n if (result.anyOf && Array.isArray(result.anyOf)) {\n const nullSchema = result.anyOf.find((s: any) => typeof s === 'object' && s !== null && s.type === 'null');\n const nonNullSchemas = result.anyOf.filter((s: any) => !(typeof s === 'object' && s !== null && s.type === 'null'));\n\n if (nullSchema) {\n const { anyOf: _, ...rest } = result;\n if (nonNullSchemas.length === 1 && typeof nonNullSchemas[0] === 'object' && nonNullSchemas[0] !== null) {\n const fixedOther = fixAISDKNullableUnionTypes(nonNullSchemas[0]);\n return fixedOther.type ? { ...rest, ...fixedOther, nullable: true } : { ...rest, ...fixedOther };\n }\n return rest;\n }\n }\n\n if (result.properties && typeof result.properties === 'object') {\n result.properties = Object.fromEntries(\n Object.entries(result.properties).map(([key, value]) => [key, fixAISDKNullableUnionTypes(value as any)]),\n );\n }\n\n if (result.items) {\n if (Array.isArray(result.items)) {\n result.items = result.items.map((item: any) => fixAISDKNullableUnionTypes(item));\n } else {\n result.items = fixAISDKNullableUnionTypes(result.items);\n }\n }\n\n if (result.additionalProperties && typeof result.additionalProperties === 'object') {\n result.additionalProperties = fixAISDKNullableUnionTypes(result.additionalProperties);\n }\n\n if (result.anyOf && Array.isArray(result.anyOf)) {\n result.anyOf = result.anyOf.map((s: any) => fixAISDKNullableUnionTypes(s));\n }\n if (result.oneOf && Array.isArray(result.oneOf)) {\n result.oneOf = result.oneOf.map((s: any) => fixAISDKNullableUnionTypes(s));\n }\n if (result.allOf && Array.isArray(result.allOf)) {\n result.allOf = result.allOf.map((s: any) => fixAISDKNullableUnionTypes(s));\n }\n\n if (result.anyOf && Array.isArray(result.anyOf)) {\n if (result.description) {\n for (const item of result.anyOf) {\n if (typeof item === 'object' && item !== null && !item.description) {\n item.description = result.description;\n }\n }\n }\n return { anyOf: result.anyOf };\n }\n\n return result;\n}\n\n/**\n * Inline `$ref` pointers one level and drop `definitions`/`$defs`.\n * Gemini can't follow JSON Schema `$ref`s — they cause silent mis-fills.\n * Self-references (recursive schemas) are collapsed to `{ type: 'object' }`\n * to avoid infinite expansion.\n */\nfunction inlineRefsAndDropDefinitions(schema: Record<string, unknown>): void {\n // Check for any $ref in the schema tree (may be nested, e.g. { properties: { x: { $ref: \"#\" } } })\n const json = JSON.stringify(schema);\n if (!json.includes('\"$ref\"')) return;\n\n const defs =\n (schema['definitions'] as Record<string, Record<string, unknown>> | undefined) ??\n (schema['$defs'] as Record<string, Record<string, unknown>> | undefined);\n\n // Snapshot the original schema before any mutations so $ref: \"#\" resolves correctly\n const snapshot = JSON.parse(json) as Record<string, unknown>;\n const snapshotDefs =\n (snapshot['definitions'] as Record<string, Record<string, unknown>> | undefined) ??\n (snapshot['$defs'] as Record<string, Record<string, unknown>> | undefined);\n resolveRefs(schema, snapshot, snapshotDefs ?? defs ?? {}, new Set());\n\n delete schema['definitions'];\n delete schema['$defs'];\n}\n\nfunction resolveRefs(\n node: Record<string, unknown>,\n rootSnapshot: Record<string, unknown>,\n defs: Record<string, Record<string, unknown>>,\n visiting: Set<string>,\n): void {\n if (typeof node !== 'object' || node === null) return;\n\n for (const [key, value] of Object.entries(node)) {\n if (key === '$ref' && typeof value === 'string') {\n const resolved = resolveRef(value, rootSnapshot, defs);\n if (!resolved || visiting.has(value)) {\n // Self-reference or unresolvable — collapse to plain object\n delete node['$ref'];\n node['type'] = 'object';\n } else {\n delete node['$ref'];\n visiting.add(value);\n // Deep-clone from the immutable snapshot, resolve nested refs, then merge\n const clone = JSON.parse(JSON.stringify(resolved)) as Record<string, unknown>;\n resolveRefs(clone, rootSnapshot, defs, visiting);\n visiting.delete(value);\n Object.assign(node, clone);\n }\n } else if (Array.isArray(value)) {\n for (const item of value) {\n if (typeof item === 'object' && item !== null) {\n resolveRefs(item as Record<string, unknown>, rootSnapshot, defs, visiting);\n }\n }\n } else if (typeof value === 'object' && value !== null) {\n resolveRefs(value as Record<string, unknown>, rootSnapshot, defs, visiting);\n }\n }\n}\n\nfunction resolveRef(\n ref: string,\n rootSnapshot: Record<string, unknown>,\n defs: Record<string, Record<string, unknown>>,\n): Record<string, unknown> | undefined {\n if (ref === '#') return rootSnapshot;\n\n // Handle #/definitions/Foo or #/$defs/Foo\n const match = ref.match(/^#\\/(?:definitions|\\$defs)\\/(.+)$/);\n if (match) {\n return defs[match[1]!];\n }\n\n return undefined;\n}\n\nexport class GoogleSchemaCompatLayer extends SchemaCompatLayer {\n constructor(model: ModelInformation) {\n super(model);\n }\n\n getSchemaTarget(): Targets | undefined {\n return 'jsonSchema7';\n }\n\n shouldApply(): boolean {\n return (\n this.getModel().provider.includes('google') ||\n this.getModel().modelId.includes('gemini-') ||\n this.getModel().modelId.includes('google')\n );\n }\n processZodType(value: ZodTypeV3): ZodTypeV3;\n processZodType(value: ZodTypeV4): ZodTypeV4;\n processZodType(value: ZodTypeV3 | ZodTypeV4): ZodTypeV3 | ZodTypeV4 {\n if (isOptional(z)(value)) {\n return this.defaultZodOptionalHandler(value, [\n 'ZodObject',\n 'ZodArray',\n 'ZodUnion',\n 'ZodString',\n 'ZodNumber',\n 'ZodNullable',\n ]);\n } else if (isNullable(z)(value)) {\n return this.defaultZodNullableHandler(value);\n } else if (isNull(z)(value)) {\n // Google models don't support null, so we need to convert it to any and then refine it to null\n return z\n .any()\n .refine(v => v === null, { message: 'must be null' })\n .describe(value.description || 'must be null');\n } else if (isObj(z)(value)) {\n return this.defaultZodObjectHandler(value);\n } else if (isArr(z)(value)) {\n return this.defaultZodArrayHandler(value, []);\n } else if (isUnion(z)(value)) {\n return this.defaultZodUnionHandler(value);\n } else if (isString(z)(value)) {\n // Google models support these properties but the model doesn't respect them, but it respects them when they're\n // added to the tool description\n return this.defaultZodStringHandler(value);\n } else if (isNumber(z)(value)) {\n // Google models support these properties but the model doesn't respect them, but it respects them when they're\n // added to the tool description\n return this.defaultZodNumberHandler(value);\n } else if (isIntersection(z)(value)) {\n return this.defaultZodIntersectionHandler(value);\n }\n return this.defaultUnsupportedZodTypeHandler(value as ZodObjectV4<any> | ZodObjectV3<any>);\n }\n\n public processToJSONSchema(schema: PublicSchema<any>, io?: 'input' | 'output'): JSONSchema7 {\n const result = super.processToJSONSchema(schema, io);\n inlineRefsAndDropDefinitions(result as Record<string, unknown>);\n return result;\n }\n\n processToAISDKSchema(zodSchema: ZodTypeV3 | ZodTypeV4): Schema {\n const compat = this.processToCompatSchema(zodSchema);\n const transformedJsonSchema = standardSchemaToJSONSchema(compat);\n const fixedJsonSchema = fixAISDKNullableUnionTypes(transformedJsonSchema as Record<string, any>) as JSONSchema7;\n\n return jsonSchema(fixedJsonSchema, {\n validate: (value: unknown) => {\n const transformed = this.#traverse(value, fixedJsonSchema as Record<string, unknown>);\n const result = zodSchema.safeParse(transformed);\n return result.success ? { success: true, value: result.data } : { success: false, error: result.error };\n },\n });\n }\n\n public processToCompatSchema<T>(schema: PublicSchema<T>): StandardSchemaWithJSON<T> {\n const originalStandardSchema = toStandardSchema(schema);\n\n return {\n '~standard': {\n version: 1,\n vendor: 'mastra',\n validate: (value: unknown) => {\n const transformedJsonSchema = this.processToJSONSchema(schema, 'input') as Record<string, unknown>;\n const transformed = this.#traverse(value, transformedJsonSchema);\n return originalStandardSchema['~standard'].validate(transformed);\n },\n jsonSchema: {\n input: () => {\n return this.processToJSONSchema(schema, 'input') as Record<string, unknown>;\n },\n output: () => {\n return this.processToJSONSchema(schema, 'output') as Record<string, unknown>;\n },\n },\n },\n };\n }\n\n preProcessJSONNode(schema: JSONSchema7): void {\n if (isAllOfSchema(schema)) {\n this.defaultAllOfHandler(schema);\n }\n\n if (isObjectSchema(schema)) {\n this.defaultObjectHandler(schema);\n } else if (isNumberSchema(schema)) {\n this.defaultNumberHandler(schema);\n } else if (isArraySchema(schema)) {\n this.defaultArrayHandler(schema);\n } else if (isStringSchema(schema)) {\n this.defaultStringHandler(schema);\n }\n }\n\n postProcessJSONNode(schema: JSONSchema7): void {\n // Handle union schemas in post-processing (after children are processed)\n if (isUnionSchema(schema)) {\n this.defaultUnionHandler(schema);\n }\n\n const s = schema as Record<string, unknown>;\n\n // Strip keywords Gemini rejects (OpenAPI 3.0 Schema Object subset)\n delete s['$schema'];\n delete s['additionalProperties'];\n delete s['propertyNames'];\n\n // Rewrite type arrays: `type: ['string', 'null']` → `type: 'string', nullable: true`\n if (Array.isArray(s['type'])) {\n const types = s['type'] as string[];\n const nonNull = types.filter(t => t !== 'null');\n const hasNull = types.includes('null');\n if (nonNull.length === 1) {\n s['type'] = nonNull[0];\n if (hasNull) s['nullable'] = true;\n } else if (nonNull.length === 0 && hasNull) {\n s['type'] = 'object';\n s['nullable'] = true;\n } else {\n // Multiple non-null types — can't represent as single OpenAPI 3.0 type.\n // Drop `type` entirely; don't emit a bare `nullable` (it's meaningless\n // without an accompanying type and Gemini may reject it).\n delete s['type'];\n delete s['nullable'];\n }\n }\n\n // Rewrite `oneOf` → `anyOf` (Gemini accepts anyOf but rejects oneOf)\n if (Array.isArray(s['oneOf'])) {\n s['anyOf'] = s['oneOf'];\n delete s['oneOf'];\n }\n\n // Rewrite `const: value` → `enum: [value]`\n if ('const' in s) {\n s['enum'] = [s['const']];\n delete s['const'];\n }\n\n // Fix tuple items: `items: [schema, ...]` (array form) → `items: { anyOf: [...] }` (single-schema)\n if (Array.isArray(s['items'])) {\n s['items'] = { anyOf: s['items'] };\n // Drop tuple-specific keywords that aren't in OpenAPI 3.0\n delete s['minItems'];\n delete s['maxItems'];\n }\n\n // Collapse nullable anyOf: `{ anyOf: [{ type: T }, { type: 'null' }] }` → `{ type: T, nullable: true }`\n if (Array.isArray(s['anyOf'])) {\n const variants = s['anyOf'] as Record<string, unknown>[];\n const nonNull = variants.filter(v => v && typeof v === 'object' && v['type'] !== 'null');\n const hasNull = variants.some(v => v && typeof v === 'object' && v['type'] === 'null');\n\n if (hasNull && nonNull.length === 1) {\n const base = nonNull[0]!;\n delete s['anyOf'];\n Object.assign(s, base);\n s['nullable'] = true;\n } else if (hasNull && nonNull.length > 1) {\n s['anyOf'] = nonNull;\n s['nullable'] = true;\n }\n }\n }\n\n #traverse(value: unknown, schema: Record<string, unknown>): unknown {\n const resolved = this.#resolveAnyOf(schema);\n\n if (resolved['x-date'] === true && typeof value === 'string') {\n return new Date(value);\n }\n\n const isArrayType =\n resolved.type === 'array' || (Array.isArray(resolved.type) && (resolved.type as string[]).includes('array'));\n if (isArrayType) {\n if (!Array.isArray(value)) {\n return value;\n }\n return value.map(item => this.#traverse(item, resolved.items as Record<string, unknown>));\n }\n\n const isObjectType =\n resolved.type === 'object' || (Array.isArray(resolved.type) && (resolved.type as string[]).includes('object'));\n if (!isObjectType) {\n return value;\n }\n\n const properties = resolved.properties as Record<string, Record<string, unknown>> | undefined;\n if (!properties || !value) {\n return value;\n }\n\n const obj = value as Record<string, unknown>;\n for (const key in obj) {\n if (properties[key]) {\n obj[key] = this.#traverse(obj[key], properties[key]);\n }\n }\n\n return obj;\n }\n\n #resolveAnyOf(schema: Record<string, unknown>): Record<string, unknown> {\n if (Array.isArray(schema.anyOf)) {\n const nonNull = (schema.anyOf as Record<string, unknown>[]).find(s => s.type !== 'null');\n if (nonNull) {\n return nonNull;\n }\n }\n\n return schema;\n }\n}\n","import type { JSONSchema7 } from 'json-schema';\nimport { z } from 'zod';\nimport type { ZodType as ZodTypeV3 } from 'zod/v3';\nimport type { ZodType as ZodTypeV4 } from 'zod/v4';\nimport type { Targets } from 'zod-to-json-schema';\nimport { jsonSchema } from '../json-schema';\nimport {\n isAllOfSchema,\n isArraySchema,\n isNumberSchema,\n isObjectSchema,\n isStringSchema,\n isUnionSchema,\n} from '../json-schema/utils';\nimport { SchemaCompatLayer } from '../schema-compatibility';\nimport type { PublicSchema } from '../schema.types';\nimport { standardSchemaToJSONSchema, toStandardSchema } from '../standard-schema/standard-schema';\nimport type { StandardSchemaWithJSON } from '../standard-schema/standard-schema.types';\nimport type { ModelInformation } from '../types';\nimport { isOptional, isObj, isArr, isUnion, isNumber, isString, isIntersection } from '../zodTypes';\n\nexport class MetaSchemaCompatLayer extends SchemaCompatLayer {\n constructor(model: ModelInformation) {\n super(model);\n }\n\n getSchemaTarget(): Targets | undefined {\n return 'jsonSchema7';\n }\n\n shouldApply(): boolean {\n return this.getModel().modelId.includes('meta');\n }\n\n processZodType(value: ZodTypeV3): ZodTypeV3;\n processZodType(value: ZodTypeV4): ZodTypeV4;\n processZodType(value: ZodTypeV3 | ZodTypeV4): ZodTypeV3 | ZodTypeV4 {\n if (isOptional(z)(value)) {\n return this.defaultZodOptionalHandler(value, ['ZodObject', 'ZodArray', 'ZodUnion', 'ZodString', 'ZodNumber']);\n } else if (isObj(z)(value)) {\n return this.defaultZodObjectHandler(value);\n } else if (isArr(z)(value)) {\n return this.defaultZodArrayHandler(value, ['min', 'max']);\n } else if (isUnion(z)(value)) {\n return this.defaultZodUnionHandler(value);\n } else if (isNumber(z)(value)) {\n return this.defaultZodNumberHandler(value);\n } else if (isString(z)(value)) {\n return this.defaultZodStringHandler(value);\n } else if (isIntersection(z)(value)) {\n return this.defaultZodIntersectionHandler(value);\n }\n\n return value;\n }\n\n processToAISDKSchema(zodSchema: ZodTypeV3 | ZodTypeV4) {\n const compat = this.processToCompatSchema(zodSchema);\n const transformedJsonSchema = standardSchemaToJSONSchema(compat);\n\n return jsonSchema(transformedJsonSchema, {\n validate: (value: unknown) => {\n const transformed = this.#traverse(value, transformedJsonSchema as Record<string, unknown>);\n const result = zodSchema.safeParse(transformed);\n return result.success ? { success: true, value: result.data } : { success: false, error: result.error };\n },\n });\n }\n\n public processToCompatSchema<T>(schema: PublicSchema<T>): StandardSchemaWithJSON<T> {\n const originalStandardSchema = toStandardSchema(schema);\n\n return {\n '~standard': {\n version: 1,\n vendor: 'mastra',\n validate: (value: unknown) => {\n const transformedJsonSchema = this.processToJSONSchema(schema, 'input') as Record<string, unknown>;\n const transformed = this.#traverse(value, transformedJsonSchema);\n return originalStandardSchema['~standard'].validate(transformed);\n },\n jsonSchema: {\n input: () => {\n return this.processToJSONSchema(schema, 'input') as Record<string, unknown>;\n },\n output: () => {\n return this.processToJSONSchema(schema, 'output') as Record<string, unknown>;\n },\n },\n },\n };\n }\n\n preProcessJSONNode(schema: JSONSchema7): void {\n if (isAllOfSchema(schema)) {\n this.defaultAllOfHandler(schema);\n }\n\n if (isObjectSchema(schema)) {\n this.defaultObjectHandler(schema);\n } else if (isArraySchema(schema)) {\n this.defaultArrayHandler(schema);\n } else if (isNumberSchema(schema)) {\n this.defaultNumberHandler(schema);\n } else if (isStringSchema(schema)) {\n this.defaultStringHandler(schema);\n }\n }\n\n postProcessJSONNode(schema: JSONSchema7): void {\n // Handle union schemas in post-processing (after children are processed)\n if (isUnionSchema(schema)) {\n this.defaultUnionHandler(schema);\n }\n }\n\n #traverse(value: unknown, schema: Record<string, unknown>): unknown {\n const resolved = this.#resolveAnyOf(schema);\n\n if (resolved['x-date'] === true && typeof value === 'string') {\n return new Date(value);\n }\n\n const isArrayType =\n resolved.type === 'array' || (Array.isArray(resolved.type) && (resolved.type as string[]).includes('array'));\n if (isArrayType) {\n if (!Array.isArray(value)) {\n return value;\n }\n return value.map(item => this.#traverse(item, resolved.items as Record<string, unknown>));\n }\n\n const isObjectType =\n resolved.type === 'object' || (Array.isArray(resolved.type) && (resolved.type as string[]).includes('object'));\n if (!isObjectType) {\n return value;\n }\n\n const properties = resolved.properties as Record<string, Record<string, unknown>> | undefined;\n if (!properties || !value) {\n return value;\n }\n\n const obj = value as Record<string, unknown>;\n for (const key in obj) {\n if (properties[key]) {\n obj[key] = this.#traverse(obj[key], properties[key]);\n }\n }\n\n return obj;\n }\n\n #resolveAnyOf(schema: Record<string, unknown>): Record<string, unknown> {\n if (Array.isArray(schema.anyOf)) {\n const nonNull = (schema.anyOf as Record<string, unknown>[]).find(s => s.type !== 'null');\n if (nonNull) {\n return nonNull;\n }\n }\n\n return schema;\n }\n}\n"]}
1
+ {"version":3,"file":"index.cjs","names":["marker","symbol","_a","name","marker2","symbol2","_a2","name2","marker3","symbol3","_a3","name3","marker4","symbol4","_a4","name4","marker5","symbol5","_a5","name5","marker6","symbol6","_a6","name6","marker7","symbol7","_a7","name7","marker8","symbol8","_a8","name9","marker10","symbol10","_a10","name10","marker11","symbol11","_a11","name12","marker13","symbol13","_a13","name13","marker14","symbol14","_a14","__defProp","ZodFirstPartyTypeKind","z","zodToJsonSchema","z","toStandardSchema","standardSchemaToJSONSchema","isStandardSchemaWithJSON","ZodOptional","ZodObject","ZodArray","ZodUnion","ZodString","ZodNumber","SchemaCompatLayer","ZodNull","ZodNullable","ZodDate","ZodDefault","ZodIntersection","z","ALL_STRING_CHECKS","ALL_NUMBER_CHECKS","ALL_ARRAY_CHECKS","UNSUPPORTED_ZOD_TYPES","SUPPORTED_ZOD_TYPES","ALL_ZOD_TYPES","SchemaCompatLayer","ZodOptional","ZodObject","ZodNull","ZodNullable","ZodArray","ZodUnion","ZodString","ZodNumber","ZodDate","ZodDefault","ZodIntersection","z","SchemaCompatLayerV3","SchemaCompatLayerV4","v4.UNSUPPORTED_ZOD_TYPES","v3.UNSUPPORTED_ZOD_TYPES","v3.ALL_ARRAY_CHECKS","v3.ALL_STRING_CHECKS","v3.ALL_NUMBER_CHECKS","v4.SUPPORTED_ZOD_TYPES","v3.SUPPORTED_ZOD_TYPES","standardSchemaToJSONSchema","toStandardSchema","jsonSchemaUtils.isObjectSchema","jsonSchemaUtils.isArraySchema","jsonSchemaUtils.isStringSchema","jsonSchemaUtils.isNumberSchema","jsonSchemaUtils.isUnionSchema","jsonSchemaUtils.isAllOfSchema","jsonSchemaUtils.isOptionalSchema","UNSUPPORTED_ZOD_TYPES","SUPPORTED_ZOD_TYPES","ALL_ZOD_TYPES","isOptional","isObj","isArr","isUnion","isString","isNumber","isOptional","z","isObj","isUnion","isArr","isString","standardSchemaToJSONSchema","#traverse","toStandardSchema","#resolveAnyOf","isOptional","z","isObj","isArr","isUnion","isNumber","isString","toStandardSchema","z","standardSchemaToJSONSchema","#traverse","toStandardSchema","#resolveSchemaForValue","isOptional","z","isObj","isArr","isUnion","isString","standardSchemaToJSONSchema","#traverse","toStandardSchema","#resolveAnyOf","isOptional","z","isObj","isArr","isUnion","isString","isNumber","standardSchemaToJSONSchema","#traverse","toStandardSchema","#resolveAnyOf","isOptional","z","isObj","isArr","isUnion","isNumber","isString","standardSchemaToJSONSchema","#traverse","toStandardSchema","#resolveAnyOf"],"sources":["../../_vendored/ai_v4/dist/dist-Cm5DZgxA.js","../../_vendored/ai_v4/dist/dist-e6zV1w-k.js","../../_vendored/ai_v4/dist/index.js","../src/utils.ts","../src/schema-compatibility-v3.ts","../src/schema-compatibility-v4.ts","../src/json-schema/utils.ts","../src/schema-compatibility.ts","../src/null-to-undefined.ts","../src/zodTypes.ts","../src/provider-compats/openai.ts","../src/provider-compats/openai-reasoning.ts","../src/standard-schema-compat.ts","../src/provider-compats/anthropic.ts","../src/provider-compats/deepseek.ts","../src/provider-compats/google.ts","../src/provider-compats/meta.ts"],"sourcesContent":["//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/provider/1.1.3/7d8eaddb7973e5820d04ac18a887c85cc63f173732e3c66432ceefbff819b4ac/node_modules/@ai-sdk/provider/dist/index.mjs\nvar marker = \"vercel.ai.error\";\nvar symbol = Symbol.for(marker);\nvar _a;\nvar _AISDKError = class _AISDKError extends Error {\n\t/**\n\t* Creates an AI SDK Error.\n\t*\n\t* @param {Object} params - The parameters for creating the error.\n\t* @param {string} params.name - The name of the error.\n\t* @param {string} params.message - The error message.\n\t* @param {unknown} [params.cause] - The underlying cause of the error.\n\t*/\n\tconstructor({ name: name14, message, cause }) {\n\t\tsuper(message);\n\t\tthis[_a] = true;\n\t\tthis.name = name14;\n\t\tthis.cause = cause;\n\t}\n\t/**\n\t* Checks if the given error is an AI SDK Error.\n\t* @param {unknown} error - The error to check.\n\t* @returns {boolean} True if the error is an AI SDK Error, false otherwise.\n\t*/\n\tstatic isInstance(error) {\n\t\treturn _AISDKError.hasMarker(error, marker);\n\t}\n\tstatic hasMarker(error, marker15) {\n\t\tconst markerSymbol = Symbol.for(marker15);\n\t\treturn error != null && typeof error === \"object\" && markerSymbol in error && typeof error[markerSymbol] === \"boolean\" && error[markerSymbol] === true;\n\t}\n};\n_a = symbol;\nvar AISDKError = _AISDKError;\nvar name = \"AI_APICallError\";\nvar marker2 = `vercel.ai.error.${name}`;\nvar symbol2 = Symbol.for(marker2);\nvar _a2;\nvar APICallError = class extends AISDKError {\n\tconstructor({ message, url, requestBodyValues, statusCode, responseHeaders, responseBody, cause, isRetryable = statusCode != null && (statusCode === 408 || statusCode === 409 || statusCode === 429 || statusCode >= 500), data }) {\n\t\tsuper({\n\t\t\tname,\n\t\t\tmessage,\n\t\t\tcause\n\t\t});\n\t\tthis[_a2] = true;\n\t\tthis.url = url;\n\t\tthis.requestBodyValues = requestBodyValues;\n\t\tthis.statusCode = statusCode;\n\t\tthis.responseHeaders = responseHeaders;\n\t\tthis.responseBody = responseBody;\n\t\tthis.isRetryable = isRetryable;\n\t\tthis.data = data;\n\t}\n\tstatic isInstance(error) {\n\t\treturn AISDKError.hasMarker(error, marker2);\n\t}\n};\n_a2 = symbol2;\nvar name2 = \"AI_EmptyResponseBodyError\";\nvar marker3 = `vercel.ai.error.${name2}`;\nvar symbol3 = Symbol.for(marker3);\nvar _a3;\nvar EmptyResponseBodyError = class extends AISDKError {\n\tconstructor({ message = \"Empty response body\" } = {}) {\n\t\tsuper({\n\t\t\tname: name2,\n\t\t\tmessage\n\t\t});\n\t\tthis[_a3] = true;\n\t}\n\tstatic isInstance(error) {\n\t\treturn AISDKError.hasMarker(error, marker3);\n\t}\n};\n_a3 = symbol3;\nfunction getErrorMessage(error) {\n\tif (error == null) return \"unknown error\";\n\tif (typeof error === \"string\") return error;\n\tif (error instanceof Error) return error.message;\n\treturn JSON.stringify(error);\n}\nvar name3 = \"AI_InvalidArgumentError\";\nvar marker4 = `vercel.ai.error.${name3}`;\nvar symbol4 = Symbol.for(marker4);\nvar _a4;\nvar InvalidArgumentError = class extends AISDKError {\n\tconstructor({ message, cause, argument }) {\n\t\tsuper({\n\t\t\tname: name3,\n\t\t\tmessage,\n\t\t\tcause\n\t\t});\n\t\tthis[_a4] = true;\n\t\tthis.argument = argument;\n\t}\n\tstatic isInstance(error) {\n\t\treturn AISDKError.hasMarker(error, marker4);\n\t}\n};\n_a4 = symbol4;\nvar name4 = \"AI_InvalidPromptError\";\nvar marker5 = `vercel.ai.error.${name4}`;\nvar symbol5 = Symbol.for(marker5);\nvar _a5;\nvar InvalidPromptError = class extends AISDKError {\n\tconstructor({ prompt, message, cause }) {\n\t\tsuper({\n\t\t\tname: name4,\n\t\t\tmessage: `Invalid prompt: ${message}`,\n\t\t\tcause\n\t\t});\n\t\tthis[_a5] = true;\n\t\tthis.prompt = prompt;\n\t}\n\tstatic isInstance(error) {\n\t\treturn AISDKError.hasMarker(error, marker5);\n\t}\n};\n_a5 = symbol5;\nvar name5 = \"AI_InvalidResponseDataError\";\nvar marker6 = `vercel.ai.error.${name5}`;\nvar symbol6 = Symbol.for(marker6);\nvar _a6;\nvar InvalidResponseDataError = class extends AISDKError {\n\tconstructor({ data, message = `Invalid response data: ${JSON.stringify(data)}.` }) {\n\t\tsuper({\n\t\t\tname: name5,\n\t\t\tmessage\n\t\t});\n\t\tthis[_a6] = true;\n\t\tthis.data = data;\n\t}\n\tstatic isInstance(error) {\n\t\treturn AISDKError.hasMarker(error, marker6);\n\t}\n};\n_a6 = symbol6;\nvar name6 = \"AI_JSONParseError\";\nvar marker7 = `vercel.ai.error.${name6}`;\nvar symbol7 = Symbol.for(marker7);\nvar _a7;\nvar JSONParseError = class extends AISDKError {\n\tconstructor({ text, cause }) {\n\t\tsuper({\n\t\t\tname: name6,\n\t\t\tmessage: `JSON parsing failed: Text: ${text}.\nError message: ${getErrorMessage(cause)}`,\n\t\t\tcause\n\t\t});\n\t\tthis[_a7] = true;\n\t\tthis.text = text;\n\t}\n\tstatic isInstance(error) {\n\t\treturn AISDKError.hasMarker(error, marker7);\n\t}\n};\n_a7 = symbol7;\nvar name7 = \"AI_LoadAPIKeyError\";\nvar marker8 = `vercel.ai.error.${name7}`;\nvar symbol8 = Symbol.for(marker8);\nvar _a8;\nvar LoadAPIKeyError = class extends AISDKError {\n\tconstructor({ message }) {\n\t\tsuper({\n\t\t\tname: name7,\n\t\t\tmessage\n\t\t});\n\t\tthis[_a8] = true;\n\t}\n\tstatic isInstance(error) {\n\t\treturn AISDKError.hasMarker(error, marker8);\n\t}\n};\n_a8 = symbol8;\nvar name9 = \"AI_NoContentGeneratedError\";\nvar marker10 = `vercel.ai.error.${name9}`;\nvar symbol10 = Symbol.for(marker10);\nvar _a10;\nvar NoContentGeneratedError = class extends AISDKError {\n\tconstructor({ message = \"No content generated.\" } = {}) {\n\t\tsuper({\n\t\t\tname: name9,\n\t\t\tmessage\n\t\t});\n\t\tthis[_a10] = true;\n\t}\n\tstatic isInstance(error) {\n\t\treturn AISDKError.hasMarker(error, marker10);\n\t}\n};\n_a10 = symbol10;\nvar name10 = \"AI_NoSuchModelError\";\nvar marker11 = `vercel.ai.error.${name10}`;\nvar symbol11 = Symbol.for(marker11);\nvar _a11;\nvar NoSuchModelError = class extends AISDKError {\n\tconstructor({ errorName = name10, modelId, modelType, message = `No such ${modelType}: ${modelId}` }) {\n\t\tsuper({\n\t\t\tname: errorName,\n\t\t\tmessage\n\t\t});\n\t\tthis[_a11] = true;\n\t\tthis.modelId = modelId;\n\t\tthis.modelType = modelType;\n\t}\n\tstatic isInstance(error) {\n\t\treturn AISDKError.hasMarker(error, marker11);\n\t}\n};\n_a11 = symbol11;\nvar name12 = \"AI_TypeValidationError\";\nvar marker13 = `vercel.ai.error.${name12}`;\nvar symbol13 = Symbol.for(marker13);\nvar _a13;\nvar _TypeValidationError = class _TypeValidationError extends AISDKError {\n\tconstructor({ value, cause }) {\n\t\tsuper({\n\t\t\tname: name12,\n\t\t\tmessage: `Type validation failed: Value: ${JSON.stringify(value)}.\nError message: ${getErrorMessage(cause)}`,\n\t\t\tcause\n\t\t});\n\t\tthis[_a13] = true;\n\t\tthis.value = value;\n\t}\n\tstatic isInstance(error) {\n\t\treturn AISDKError.hasMarker(error, marker13);\n\t}\n\t/**\n\t* Wraps an error into a TypeValidationError.\n\t* If the cause is already a TypeValidationError with the same value, it returns the cause.\n\t* Otherwise, it creates a new TypeValidationError.\n\t*\n\t* @param {Object} params - The parameters for wrapping the error.\n\t* @param {unknown} params.value - The value that failed validation.\n\t* @param {unknown} params.cause - The original error or cause of the validation failure.\n\t* @returns {TypeValidationError} A TypeValidationError instance.\n\t*/\n\tstatic wrap({ value, cause }) {\n\t\treturn _TypeValidationError.isInstance(cause) && cause.value === value ? cause : new _TypeValidationError({\n\t\t\tvalue,\n\t\t\tcause\n\t\t});\n\t}\n};\n_a13 = symbol13;\nvar TypeValidationError = _TypeValidationError;\nvar name13 = \"AI_UnsupportedFunctionalityError\";\nvar marker14 = `vercel.ai.error.${name13}`;\nvar symbol14 = Symbol.for(marker14);\nvar _a14;\nvar UnsupportedFunctionalityError = class extends AISDKError {\n\tconstructor({ functionality, message = `'${functionality}' functionality not supported.` }) {\n\t\tsuper({\n\t\t\tname: name13,\n\t\t\tmessage\n\t\t});\n\t\tthis[_a14] = true;\n\t\tthis.functionality = functionality;\n\t}\n\tstatic isInstance(error) {\n\t\treturn AISDKError.hasMarker(error, marker14);\n\t}\n};\n_a14 = symbol14;\nfunction isJSONValue(value) {\n\tif (value === null || typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") return true;\n\tif (Array.isArray(value)) return value.every(isJSONValue);\n\tif (typeof value === \"object\") return Object.entries(value).every(([key, val]) => typeof key === \"string\" && isJSONValue(val));\n\treturn false;\n}\nfunction isJSONArray(value) {\n\treturn Array.isArray(value) && value.every(isJSONValue);\n}\nfunction isJSONObject(value) {\n\treturn value != null && typeof value === \"object\" && Object.entries(value).every(([key, val]) => typeof key === \"string\" && isJSONValue(val));\n}\n//#endregion\nexport { InvalidPromptError as a, LoadAPIKeyError as c, TypeValidationError as d, UnsupportedFunctionalityError as f, isJSONObject as h, InvalidArgumentError as i, NoContentGeneratedError as l, isJSONArray as m, APICallError as n, InvalidResponseDataError as o, getErrorMessage as p, EmptyResponseBodyError as r, JSONParseError as s, AISDKError as t, NoSuchModelError as u };\n\n//# sourceMappingURL=dist-Cm5DZgxA.js.map","import { d as TypeValidationError, i as InvalidArgumentError, s as JSONParseError } from \"./dist-Cm5DZgxA.js\";\nimport { createRequire } from \"module\";\n//#region \\0rolldown/runtime.js\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 __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);\nvar __copyProps = (to, from, except, desc) => {\n\tif (from && typeof from === \"object\" || typeof from === \"function\") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {\n\t\tkey = keys[i];\n\t\tif (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {\n\t\t\tget: ((k) => from[k]).bind(null, key),\n\t\t\tenumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n\t\t});\n\t}\n\treturn to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", {\n\tvalue: mod,\n\tenumerable: true\n}) : target, mod));\nvar __require = /* #__PURE__ */ (() => createRequire(import.meta.url))();\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/nanoid/3.3.15/5e099aa6978e3ffbe3dd66fca0d9bb438c516b386f73a4afd1cdcabb14c04122/node_modules/nanoid/non-secure/index.js\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n\treturn (size = defaultSize) => {\n\t\tlet id = \"\";\n\t\tlet i = size | 0;\n\t\twhile (i--) id += alphabet[Math.random() * alphabet.length | 0];\n\t\treturn id;\n\t};\n};\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/provider-utils/2.2.8/6da045ee83ccbe317fdded79ff264ecaf67e8e3e16cdb635bc678c2a97ba55d7/node_modules/@ai-sdk/provider-utils/dist/index.mjs\nvar import_secure_json_parse = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst hasBuffer = typeof Buffer !== \"undefined\";\n\tconst suspectProtoRx = /\"(?:_|\\\\u005[Ff])(?:_|\\\\u005[Ff])(?:p|\\\\u0070)(?:r|\\\\u0072)(?:o|\\\\u006[Ff])(?:t|\\\\u0074)(?:o|\\\\u006[Ff])(?:_|\\\\u005[Ff])(?:_|\\\\u005[Ff])\"\\s*:/;\n\tconst 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*:/;\n\tfunction _parse(text, reviver, options) {\n\t\tif (options == null) {\n\t\t\tif (reviver !== null && typeof reviver === \"object\") {\n\t\t\t\toptions = reviver;\n\t\t\t\treviver = void 0;\n\t\t\t}\n\t\t}\n\t\tif (hasBuffer && Buffer.isBuffer(text)) text = text.toString();\n\t\tif (text && text.charCodeAt(0) === 65279) text = text.slice(1);\n\t\tconst obj = JSON.parse(text, reviver);\n\t\tif (obj === null || typeof obj !== \"object\") return obj;\n\t\tconst protoAction = options && options.protoAction || \"error\";\n\t\tconst constructorAction = options && options.constructorAction || \"error\";\n\t\tif (protoAction === \"ignore\" && constructorAction === \"ignore\") return obj;\n\t\tif (protoAction !== \"ignore\" && constructorAction !== \"ignore\") {\n\t\t\tif (suspectProtoRx.test(text) === false && suspectConstructorRx.test(text) === false) return obj;\n\t\t} else if (protoAction !== \"ignore\" && constructorAction === \"ignore\") {\n\t\t\tif (suspectProtoRx.test(text) === false) return obj;\n\t\t} else if (suspectConstructorRx.test(text) === false) return obj;\n\t\treturn filter(obj, {\n\t\t\tprotoAction,\n\t\t\tconstructorAction,\n\t\t\tsafe: options && options.safe\n\t\t});\n\t}\n\tfunction filter(obj, { protoAction = \"error\", constructorAction = \"error\", safe } = {}) {\n\t\tlet next = [obj];\n\t\twhile (next.length) {\n\t\t\tconst nodes = next;\n\t\t\tnext = [];\n\t\t\tfor (const node of nodes) {\n\t\t\t\tif (protoAction !== \"ignore\" && Object.prototype.hasOwnProperty.call(node, \"__proto__\")) {\n\t\t\t\t\tif (safe === true) return null;\n\t\t\t\t\telse if (protoAction === \"error\") throw new SyntaxError(\"Object contains forbidden prototype property\");\n\t\t\t\t\tdelete node.__proto__;\n\t\t\t\t}\n\t\t\t\tif (constructorAction !== \"ignore\" && Object.prototype.hasOwnProperty.call(node, \"constructor\") && Object.prototype.hasOwnProperty.call(node.constructor, \"prototype\")) {\n\t\t\t\t\tif (safe === true) return null;\n\t\t\t\t\telse if (constructorAction === \"error\") throw new SyntaxError(\"Object contains forbidden prototype property\");\n\t\t\t\t\tdelete node.constructor;\n\t\t\t\t}\n\t\t\t\tfor (const key in node) {\n\t\t\t\t\tconst value = node[key];\n\t\t\t\t\tif (value && typeof value === \"object\") next.push(value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn obj;\n\t}\n\tfunction parse(text, reviver, options) {\n\t\tconst stackTraceLimit = Error.stackTraceLimit;\n\t\tError.stackTraceLimit = 0;\n\t\ttry {\n\t\t\treturn _parse(text, reviver, options);\n\t\t} finally {\n\t\t\tError.stackTraceLimit = stackTraceLimit;\n\t\t}\n\t}\n\tfunction safeParse(text, reviver) {\n\t\tconst stackTraceLimit = Error.stackTraceLimit;\n\t\tError.stackTraceLimit = 0;\n\t\ttry {\n\t\t\treturn _parse(text, reviver, { safe: true });\n\t\t} catch (_e) {\n\t\t\treturn null;\n\t\t} finally {\n\t\t\tError.stackTraceLimit = stackTraceLimit;\n\t\t}\n\t}\n\tmodule.exports = parse;\n\tmodule.exports.default = parse;\n\tmodule.exports.parse = parse;\n\tmodule.exports.safeParse = safeParse;\n\tmodule.exports.scan = filter;\n})))(), 1);\nfunction convertAsyncIteratorToReadableStream(iterator) {\n\treturn new ReadableStream({\n\t\t/**\n\t\t* Called when the consumer wants to pull more data from the stream.\n\t\t*\n\t\t* @param {ReadableStreamDefaultController<T>} controller - The controller to enqueue data into the stream.\n\t\t* @returns {Promise<void>}\n\t\t*/\n\t\tasync pull(controller) {\n\t\t\ttry {\n\t\t\t\tconst { value, done } = await iterator.next();\n\t\t\t\tif (done) controller.close();\n\t\t\t\telse controller.enqueue(value);\n\t\t\t} catch (error) {\n\t\t\t\tcontroller.error(error);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t* Called when the consumer cancels the stream.\n\t\t*/\n\t\tcancel() {}\n\t});\n}\nasync function delay(delayInMs) {\n\treturn delayInMs == null ? Promise.resolve() : new Promise((resolve2) => setTimeout(resolve2, delayInMs));\n}\nfunction createEventSourceParserStream() {\n\tlet buffer = \"\";\n\tlet event = void 0;\n\tlet data = [];\n\tlet lastEventId = void 0;\n\tlet retry = void 0;\n\tfunction parseLine(line, controller) {\n\t\tif (line === \"\") {\n\t\t\tdispatchEvent(controller);\n\t\t\treturn;\n\t\t}\n\t\tif (line.startsWith(\":\")) return;\n\t\tconst colonIndex = line.indexOf(\":\");\n\t\tif (colonIndex === -1) {\n\t\t\thandleField(line, \"\");\n\t\t\treturn;\n\t\t}\n\t\tconst field = line.slice(0, colonIndex);\n\t\tconst valueStart = colonIndex + 1;\n\t\thandleField(field, valueStart < line.length && line[valueStart] === \" \" ? line.slice(valueStart + 1) : line.slice(valueStart));\n\t}\n\tfunction dispatchEvent(controller) {\n\t\tif (data.length > 0) {\n\t\t\tcontroller.enqueue({\n\t\t\t\tevent,\n\t\t\t\tdata: data.join(\"\\n\"),\n\t\t\t\tid: lastEventId,\n\t\t\t\tretry\n\t\t\t});\n\t\t\tdata = [];\n\t\t\tevent = void 0;\n\t\t\tretry = void 0;\n\t\t}\n\t}\n\tfunction handleField(field, value) {\n\t\tswitch (field) {\n\t\t\tcase \"event\":\n\t\t\t\tevent = value;\n\t\t\t\tbreak;\n\t\t\tcase \"data\":\n\t\t\t\tdata.push(value);\n\t\t\t\tbreak;\n\t\t\tcase \"id\":\n\t\t\t\tlastEventId = value;\n\t\t\t\tbreak;\n\t\t\tcase \"retry\":\n\t\t\t\tconst parsedRetry = parseInt(value, 10);\n\t\t\t\tif (!isNaN(parsedRetry)) retry = parsedRetry;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\treturn new TransformStream({\n\t\ttransform(chunk, controller) {\n\t\t\tconst { lines, incompleteLine } = splitLines(buffer, chunk);\n\t\t\tbuffer = incompleteLine;\n\t\t\tfor (let i = 0; i < lines.length; i++) parseLine(lines[i], controller);\n\t\t},\n\t\tflush(controller) {\n\t\t\tparseLine(buffer, controller);\n\t\t\tdispatchEvent(controller);\n\t\t}\n\t});\n}\nfunction splitLines(buffer, chunk) {\n\tconst lines = [];\n\tlet currentLine = buffer;\n\tfor (let i = 0; i < chunk.length;) {\n\t\tconst char = chunk[i++];\n\t\tif (char === \"\\n\") {\n\t\t\tlines.push(currentLine);\n\t\t\tcurrentLine = \"\";\n\t\t} else if (char === \"\\r\") {\n\t\t\tlines.push(currentLine);\n\t\t\tcurrentLine = \"\";\n\t\t\tif (chunk[i] === \"\\n\") i++;\n\t\t} else currentLine += char;\n\t}\n\treturn {\n\t\tlines,\n\t\tincompleteLine: currentLine\n\t};\n}\nvar createIdGenerator = ({ prefix, size: defaultSize = 16, alphabet = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\", separator = \"-\" } = {}) => {\n\tconst generator = customAlphabet(alphabet, defaultSize);\n\tif (prefix == null) return generator;\n\tif (alphabet.includes(separator)) throw new InvalidArgumentError({\n\t\targument: \"separator\",\n\t\tmessage: `The separator \"${separator}\" must not be part of the alphabet \"${alphabet}\".`\n\t});\n\treturn (size) => `${prefix}${separator}${generator(size)}`;\n};\nvar generateId = createIdGenerator();\nfunction getErrorMessage(error) {\n\tif (error == null) return \"unknown error\";\n\tif (typeof error === \"string\") return error;\n\tif (error instanceof Error) return error.message;\n\treturn JSON.stringify(error);\n}\nfunction isAbortError(error) {\n\treturn error instanceof Error && (error.name === \"AbortError\" || error.name === \"TimeoutError\");\n}\nvar validatorSymbol = Symbol.for(\"vercel.ai.validator\");\nfunction validator(validate) {\n\treturn {\n\t\t[validatorSymbol]: true,\n\t\tvalidate\n\t};\n}\nfunction isValidator(value) {\n\treturn typeof value === \"object\" && value !== null && validatorSymbol in value && value[validatorSymbol] === true && \"validate\" in value;\n}\nfunction asValidator(value) {\n\treturn isValidator(value) ? value : zodValidator(value);\n}\nfunction zodValidator(zodSchema) {\n\treturn validator((value) => {\n\t\tconst result = zodSchema.safeParse(value);\n\t\treturn result.success ? {\n\t\t\tsuccess: true,\n\t\t\tvalue: result.data\n\t\t} : {\n\t\t\tsuccess: false,\n\t\t\terror: result.error\n\t\t};\n\t});\n}\nfunction safeValidateTypes({ value, schema }) {\n\tconst validator2 = asValidator(schema);\n\ttry {\n\t\tif (validator2.validate == null) return {\n\t\t\tsuccess: true,\n\t\t\tvalue\n\t\t};\n\t\tconst result = validator2.validate(value);\n\t\tif (result.success) return result;\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: TypeValidationError.wrap({\n\t\t\t\tvalue,\n\t\t\t\tcause: result.error\n\t\t\t})\n\t\t};\n\t} catch (error) {\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: TypeValidationError.wrap({\n\t\t\t\tvalue,\n\t\t\t\tcause: error\n\t\t\t})\n\t\t};\n\t}\n}\nfunction safeParseJSON({ text, schema }) {\n\ttry {\n\t\tconst value = import_secure_json_parse.default.parse(text);\n\t\tif (schema == null) return {\n\t\t\tsuccess: true,\n\t\t\tvalue,\n\t\t\trawValue: value\n\t\t};\n\t\tconst validationResult = safeValidateTypes({\n\t\t\tvalue,\n\t\t\tschema\n\t\t});\n\t\treturn validationResult.success ? {\n\t\t\t...validationResult,\n\t\t\trawValue: value\n\t\t} : validationResult;\n\t} catch (error) {\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: JSONParseError.isInstance(error) ? error : new JSONParseError({\n\t\t\t\ttext,\n\t\t\t\tcause: error\n\t\t\t})\n\t\t};\n\t}\n}\nvar { btoa, atob } = globalThis;\nfunction convertBase64ToUint8Array(base64String) {\n\tconst latin1string = atob(base64String.replace(/-/g, \"+\").replace(/_/g, \"/\"));\n\treturn Uint8Array.from(latin1string, (byte) => byte.codePointAt(0));\n}\nfunction convertUint8ArrayToBase64(array) {\n\tlet latin1string = \"\";\n\tfor (let i = 0; i < array.length; i++) latin1string += String.fromCodePoint(array[i]);\n\treturn btoa(latin1string);\n}\n//#endregion\nexport { createIdGenerator as a, getErrorMessage as c, safeValidateTypes as d, validatorSymbol as f, createEventSourceParserStream as i, isAbortError as l, convertBase64ToUint8Array as n, delay as o, __require as p, convertUint8ArrayToBase64 as r, generateId as s, convertAsyncIteratorToReadableStream as t, safeParseJSON as u };\n\n//# sourceMappingURL=dist-e6zV1w-k.js.map","import { a as createIdGenerator, c as getErrorMessage, d as safeValidateTypes, f as validatorSymbol, i as createEventSourceParserStream, l as isAbortError, n as convertBase64ToUint8Array, o as delay, r as convertUint8ArrayToBase64, s as generateId, t as convertAsyncIteratorToReadableStream, u as safeParseJSON } from \"./dist-e6zV1w-k.js\";\nimport { a as InvalidPromptError, c as LoadAPIKeyError, d as TypeValidationError, f as UnsupportedFunctionalityError, h as isJSONObject, i as InvalidArgumentError$1, l as NoContentGeneratedError, m as isJSONArray, n as APICallError, o as InvalidResponseDataError, p as getErrorMessage$1, r as EmptyResponseBodyError, s as JSONParseError, t as AISDKError, u as NoSuchModelError } from \"./dist-Cm5DZgxA.js\";\nimport { ZodFirstPartyTypeKind } from \"zod/v3\";\nimport { z } from \"zod\";\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/Options.js\nconst ignoreOverride = Symbol(\"Let zodToJsonSchema decide on which parser to use\");\nconst defaultOptions = {\n\tname: void 0,\n\t$refStrategy: \"root\",\n\tbasePath: [\"#\"],\n\teffectStrategy: \"input\",\n\tpipeStrategy: \"all\",\n\tdateStrategy: \"format:date-time\",\n\tmapStrategy: \"entries\",\n\tremoveAdditionalStrategy: \"passthrough\",\n\tallowedAdditionalProperties: true,\n\trejectedAdditionalProperties: false,\n\tdefinitionPath: \"definitions\",\n\ttarget: \"jsonSchema7\",\n\tstrictUnions: false,\n\tdefinitions: {},\n\terrorMessages: false,\n\tmarkdownDescription: false,\n\tpatternStrategy: \"escape\",\n\tapplyRegexFlags: false,\n\temailStrategy: \"format:email\",\n\tbase64Strategy: \"contentEncoding:base64\",\n\tnameStrategy: \"ref\",\n\topenAiAnyTypeName: \"OpenAiAnyType\"\n};\nconst getDefaultOptions = (options) => typeof options === \"string\" ? {\n\t...defaultOptions,\n\tname: options\n} : {\n\t...defaultOptions,\n\t...options\n};\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/Refs.js\nconst getRefs = (options) => {\n\tconst _options = getDefaultOptions(options);\n\tconst currentPath = _options.name !== void 0 ? [\n\t\t..._options.basePath,\n\t\t_options.definitionPath,\n\t\t_options.name\n\t] : _options.basePath;\n\treturn {\n\t\t..._options,\n\t\tflags: { hasReferencedOpenAiAnyType: false },\n\t\tcurrentPath,\n\t\tpropertyPath: void 0,\n\t\tseen: new Map(Object.entries(_options.definitions).map(([name, def]) => [def._def, {\n\t\t\tdef: def._def,\n\t\t\tpath: [\n\t\t\t\t..._options.basePath,\n\t\t\t\t_options.definitionPath,\n\t\t\t\tname\n\t\t\t],\n\t\t\tjsonSchema: void 0\n\t\t}]))\n\t};\n};\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/errorMessages.js\nfunction addErrorMessage(res, key, errorMessage, refs) {\n\tif (!refs?.errorMessages) return;\n\tif (errorMessage) res.errorMessage = {\n\t\t...res.errorMessage,\n\t\t[key]: errorMessage\n\t};\n}\nfunction setResponseValueAndErrors(res, key, value, errorMessage, refs) {\n\tres[key] = value;\n\taddErrorMessage(res, key, errorMessage, refs);\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js\nconst getRelativePath = (pathA, pathB) => {\n\tlet i = 0;\n\tfor (; i < pathA.length && i < pathB.length; i++) if (pathA[i] !== pathB[i]) break;\n\treturn [(pathA.length - i).toString(), ...pathB.slice(i)].join(\"/\");\n};\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/any.js\nfunction parseAnyDef(refs) {\n\tif (refs.target !== \"openAi\") return {};\n\tconst anyDefinitionPath = [\n\t\t...refs.basePath,\n\t\trefs.definitionPath,\n\t\trefs.openAiAnyTypeName\n\t];\n\trefs.flags.hasReferencedOpenAiAnyType = true;\n\treturn { $ref: refs.$refStrategy === \"relative\" ? getRelativePath(anyDefinitionPath, refs.currentPath) : anyDefinitionPath.join(\"/\") };\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/array.js\nfunction parseArrayDef(def, refs) {\n\tconst res = { type: \"array\" };\n\tif (def.type?._def && def.type?._def?.typeName !== ZodFirstPartyTypeKind.ZodAny) res.items = parseDef(def.type._def, {\n\t\t...refs,\n\t\tcurrentPath: [...refs.currentPath, \"items\"]\n\t});\n\tif (def.minLength) setResponseValueAndErrors(res, \"minItems\", def.minLength.value, def.minLength.message, refs);\n\tif (def.maxLength) setResponseValueAndErrors(res, \"maxItems\", def.maxLength.value, def.maxLength.message, refs);\n\tif (def.exactLength) {\n\t\tsetResponseValueAndErrors(res, \"minItems\", def.exactLength.value, def.exactLength.message, refs);\n\t\tsetResponseValueAndErrors(res, \"maxItems\", def.exactLength.value, def.exactLength.message, refs);\n\t}\n\treturn res;\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js\nfunction parseBigintDef(def, refs) {\n\tconst res = {\n\t\ttype: \"integer\",\n\t\tformat: \"int64\"\n\t};\n\tif (!def.checks) return res;\n\tfor (const check of def.checks) switch (check.kind) {\n\t\tcase \"min\":\n\t\t\tif (refs.target === \"jsonSchema7\") if (check.inclusive) setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n\t\t\telse setResponseValueAndErrors(res, \"exclusiveMinimum\", check.value, check.message, refs);\n\t\t\telse {\n\t\t\t\tif (!check.inclusive) res.exclusiveMinimum = true;\n\t\t\t\tsetResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"max\":\n\t\t\tif (refs.target === \"jsonSchema7\") if (check.inclusive) setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n\t\t\telse setResponseValueAndErrors(res, \"exclusiveMaximum\", check.value, check.message, refs);\n\t\t\telse {\n\t\t\t\tif (!check.inclusive) res.exclusiveMaximum = true;\n\t\t\t\tsetResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"multipleOf\":\n\t\t\tsetResponseValueAndErrors(res, \"multipleOf\", check.value, check.message, refs);\n\t\t\tbreak;\n\t}\n\treturn res;\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js\nfunction parseBooleanDef() {\n\treturn { type: \"boolean\" };\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js\nfunction parseBrandedDef(_def, refs) {\n\treturn parseDef(_def.type._def, refs);\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js\nconst parseCatchDef = (def, refs) => {\n\treturn parseDef(def.innerType._def, refs);\n};\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/date.js\nfunction parseDateDef(def, refs, overrideDateStrategy) {\n\tconst strategy = overrideDateStrategy ?? refs.dateStrategy;\n\tif (Array.isArray(strategy)) return { anyOf: strategy.map((item, i) => parseDateDef(def, refs, item)) };\n\tswitch (strategy) {\n\t\tcase \"string\":\n\t\tcase \"format:date-time\": return {\n\t\t\ttype: \"string\",\n\t\t\tformat: \"date-time\"\n\t\t};\n\t\tcase \"format:date\": return {\n\t\t\ttype: \"string\",\n\t\t\tformat: \"date\"\n\t\t};\n\t\tcase \"integer\": return integerDateParser(def, refs);\n\t}\n}\nconst integerDateParser = (def, refs) => {\n\tconst res = {\n\t\ttype: \"integer\",\n\t\tformat: \"unix-time\"\n\t};\n\tif (refs.target === \"openApi3\") return res;\n\tfor (const check of def.checks) switch (check.kind) {\n\t\tcase \"min\":\n\t\t\tsetResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n\t\t\tbreak;\n\t\tcase \"max\":\n\t\t\tsetResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n\t\t\tbreak;\n\t}\n\treturn res;\n};\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/default.js\nfunction parseDefaultDef(_def, refs) {\n\treturn {\n\t\t...parseDef(_def.innerType._def, refs),\n\t\tdefault: _def.defaultValue()\n\t};\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js\nfunction parseEffectsDef(_def, refs) {\n\treturn refs.effectStrategy === \"input\" ? parseDef(_def.schema._def, refs) : parseAnyDef(refs);\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js\nfunction parseEnumDef(def) {\n\treturn {\n\t\ttype: \"string\",\n\t\tenum: Array.from(def.values)\n\t};\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js\nconst isJsonSchema7AllOfType = (type) => {\n\tif (\"type\" in type && type.type === \"string\") return false;\n\treturn \"allOf\" in type;\n};\nfunction parseIntersectionDef(def, refs) {\n\tconst allOf = [parseDef(def.left._def, {\n\t\t...refs,\n\t\tcurrentPath: [\n\t\t\t...refs.currentPath,\n\t\t\t\"allOf\",\n\t\t\t\"0\"\n\t\t]\n\t}), parseDef(def.right._def, {\n\t\t...refs,\n\t\tcurrentPath: [\n\t\t\t...refs.currentPath,\n\t\t\t\"allOf\",\n\t\t\t\"1\"\n\t\t]\n\t})].filter((x) => !!x);\n\tlet unevaluatedProperties = refs.target === \"jsonSchema2019-09\" ? { unevaluatedProperties: false } : void 0;\n\tconst mergedAllOf = [];\n\tallOf.forEach((schema) => {\n\t\tif (isJsonSchema7AllOfType(schema)) {\n\t\t\tmergedAllOf.push(...schema.allOf);\n\t\t\tif (schema.unevaluatedProperties === void 0) unevaluatedProperties = void 0;\n\t\t} else {\n\t\t\tlet nestedSchema = schema;\n\t\t\tif (\"additionalProperties\" in schema && schema.additionalProperties === false) {\n\t\t\t\tconst { additionalProperties, ...rest } = schema;\n\t\t\t\tnestedSchema = rest;\n\t\t\t} else unevaluatedProperties = void 0;\n\t\t\tmergedAllOf.push(nestedSchema);\n\t\t}\n\t});\n\treturn mergedAllOf.length ? {\n\t\tallOf: mergedAllOf,\n\t\t...unevaluatedProperties\n\t} : void 0;\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js\nfunction parseLiteralDef(def, refs) {\n\tconst parsedType = typeof def.value;\n\tif (parsedType !== \"bigint\" && parsedType !== \"number\" && parsedType !== \"boolean\" && parsedType !== \"string\") return { type: Array.isArray(def.value) ? \"array\" : \"object\" };\n\tif (refs.target === \"openApi3\") return {\n\t\ttype: parsedType === \"bigint\" ? \"integer\" : parsedType,\n\t\tenum: [def.value]\n\t};\n\treturn {\n\t\ttype: parsedType === \"bigint\" ? \"integer\" : parsedType,\n\t\tconst: def.value\n\t};\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/string.js\nlet emojiRegex = void 0;\n/**\n* Generated from the regular expressions found here as of 2024-05-22:\n* https://github.com/colinhacks/zod/blob/master/src/types.ts.\n*\n* Expressions with /i flag have been changed accordingly.\n*/\nconst zodPatterns = {\n\t/**\n\t* `c` was changed to `[cC]` to replicate /i flag\n\t*/\n\tcuid: /^[cC][^\\s-]{8,}$/,\n\tcuid2: /^[0-9a-z]+$/,\n\tulid: /^[0-9A-HJKMNP-TV-Z]{26}$/,\n\t/**\n\t* `a-z` was added to replicate /i flag\n\t*/\n\temail: /^(?!\\.)(?!.*\\.\\.)([a-zA-Z0-9_'+\\-\\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+[a-zA-Z]{2,}$/,\n\t/**\n\t* Constructed a valid Unicode RegExp\n\t*\n\t* Lazily instantiate since this type of regex isn't supported\n\t* in all envs (e.g. React Native).\n\t*\n\t* See:\n\t* https://github.com/colinhacks/zod/issues/2433\n\t* Fix in Zod:\n\t* https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b\n\t*/\n\temoji: () => {\n\t\tif (emojiRegex === void 0) emojiRegex = RegExp(\"^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$\", \"u\");\n\t\treturn emojiRegex;\n\t},\n\t/**\n\t* Unused\n\t*/\n\tuuid: /^[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\t/**\n\t* Unused\n\t*/\n\tipv4: /^(?:(?: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\tipv4Cidr: /^(?:(?: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\t/**\n\t* Unused\n\t*/\n\tipv6: /^(([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\tipv6Cidr: /^(([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\tbase64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,\n\tbase64url: /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,\n\tnanoid: /^[a-zA-Z0-9_-]{21}$/,\n\tjwt: /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/\n};\nfunction parseStringDef(def, refs) {\n\tconst res = { type: \"string\" };\n\tif (def.checks) for (const check of def.checks) switch (check.kind) {\n\t\tcase \"min\":\n\t\t\tsetResponseValueAndErrors(res, \"minLength\", typeof res.minLength === \"number\" ? Math.max(res.minLength, check.value) : check.value, check.message, refs);\n\t\t\tbreak;\n\t\tcase \"max\":\n\t\t\tsetResponseValueAndErrors(res, \"maxLength\", typeof res.maxLength === \"number\" ? Math.min(res.maxLength, check.value) : check.value, check.message, refs);\n\t\t\tbreak;\n\t\tcase \"email\":\n\t\t\tswitch (refs.emailStrategy) {\n\t\t\t\tcase \"format:email\":\n\t\t\t\t\taddFormat(res, \"email\", check.message, refs);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"format:idn-email\":\n\t\t\t\t\taddFormat(res, \"idn-email\", check.message, refs);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"pattern:zod\":\n\t\t\t\t\taddPattern(res, zodPatterns.email, check.message, refs);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"url\":\n\t\t\taddFormat(res, \"uri\", check.message, refs);\n\t\t\tbreak;\n\t\tcase \"uuid\":\n\t\t\taddFormat(res, \"uuid\", check.message, refs);\n\t\t\tbreak;\n\t\tcase \"regex\":\n\t\t\taddPattern(res, check.regex, check.message, refs);\n\t\t\tbreak;\n\t\tcase \"cuid\":\n\t\t\taddPattern(res, zodPatterns.cuid, check.message, refs);\n\t\t\tbreak;\n\t\tcase \"cuid2\":\n\t\t\taddPattern(res, zodPatterns.cuid2, check.message, refs);\n\t\t\tbreak;\n\t\tcase \"startsWith\":\n\t\t\taddPattern(res, RegExp(`^${escapeLiteralCheckValue(check.value, refs)}`), check.message, refs);\n\t\t\tbreak;\n\t\tcase \"endsWith\":\n\t\t\taddPattern(res, RegExp(`${escapeLiteralCheckValue(check.value, refs)}$`), check.message, refs);\n\t\t\tbreak;\n\t\tcase \"datetime\":\n\t\t\taddFormat(res, \"date-time\", check.message, refs);\n\t\t\tbreak;\n\t\tcase \"date\":\n\t\t\taddFormat(res, \"date\", check.message, refs);\n\t\t\tbreak;\n\t\tcase \"time\":\n\t\t\taddFormat(res, \"time\", check.message, refs);\n\t\t\tbreak;\n\t\tcase \"duration\":\n\t\t\taddFormat(res, \"duration\", check.message, refs);\n\t\t\tbreak;\n\t\tcase \"length\":\n\t\t\tsetResponseValueAndErrors(res, \"minLength\", typeof res.minLength === \"number\" ? Math.max(res.minLength, check.value) : check.value, check.message, refs);\n\t\t\tsetResponseValueAndErrors(res, \"maxLength\", typeof res.maxLength === \"number\" ? Math.min(res.maxLength, check.value) : check.value, check.message, refs);\n\t\t\tbreak;\n\t\tcase \"includes\":\n\t\t\taddPattern(res, RegExp(escapeLiteralCheckValue(check.value, refs)), check.message, refs);\n\t\t\tbreak;\n\t\tcase \"ip\":\n\t\t\tif (check.version !== \"v6\") addFormat(res, \"ipv4\", check.message, refs);\n\t\t\tif (check.version !== \"v4\") addFormat(res, \"ipv6\", check.message, refs);\n\t\t\tbreak;\n\t\tcase \"base64url\":\n\t\t\taddPattern(res, zodPatterns.base64url, check.message, refs);\n\t\t\tbreak;\n\t\tcase \"jwt\":\n\t\t\taddPattern(res, zodPatterns.jwt, check.message, refs);\n\t\t\tbreak;\n\t\tcase \"cidr\":\n\t\t\tif (check.version !== \"v6\") addPattern(res, zodPatterns.ipv4Cidr, check.message, refs);\n\t\t\tif (check.version !== \"v4\") addPattern(res, zodPatterns.ipv6Cidr, check.message, refs);\n\t\t\tbreak;\n\t\tcase \"emoji\":\n\t\t\taddPattern(res, zodPatterns.emoji(), check.message, refs);\n\t\t\tbreak;\n\t\tcase \"ulid\":\n\t\t\taddPattern(res, zodPatterns.ulid, check.message, refs);\n\t\t\tbreak;\n\t\tcase \"base64\":\n\t\t\tswitch (refs.base64Strategy) {\n\t\t\t\tcase \"format:binary\":\n\t\t\t\t\taddFormat(res, \"binary\", check.message, refs);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"contentEncoding:base64\":\n\t\t\t\t\tsetResponseValueAndErrors(res, \"contentEncoding\", \"base64\", check.message, refs);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"pattern:zod\":\n\t\t\t\t\taddPattern(res, zodPatterns.base64, check.message, refs);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"nanoid\": addPattern(res, zodPatterns.nanoid, check.message, refs);\n\t\tcase \"toLowerCase\":\n\t\tcase \"toUpperCase\":\n\t\tcase \"trim\": break;\n\t\tdefault:\n\t}\n\treturn res;\n}\nfunction escapeLiteralCheckValue(literal, refs) {\n\treturn refs.patternStrategy === \"escape\" ? escapeNonAlphaNumeric(literal) : literal;\n}\nconst ALPHA_NUMERIC = /* @__PURE__ */ new Set(\"ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789\");\nfunction escapeNonAlphaNumeric(source) {\n\tlet result = \"\";\n\tfor (let i = 0; i < source.length; i++) {\n\t\tif (!ALPHA_NUMERIC.has(source[i])) result += \"\\\\\";\n\t\tresult += source[i];\n\t}\n\treturn result;\n}\nfunction addFormat(schema, value, message, refs) {\n\tif (schema.format || schema.anyOf?.some((x) => x.format)) {\n\t\tif (!schema.anyOf) schema.anyOf = [];\n\t\tif (schema.format) {\n\t\t\tschema.anyOf.push({\n\t\t\t\tformat: schema.format,\n\t\t\t\t...schema.errorMessage && refs.errorMessages && { errorMessage: { format: schema.errorMessage.format } }\n\t\t\t});\n\t\t\tdelete schema.format;\n\t\t\tif (schema.errorMessage) {\n\t\t\t\tdelete schema.errorMessage.format;\n\t\t\t\tif (Object.keys(schema.errorMessage).length === 0) delete schema.errorMessage;\n\t\t\t}\n\t\t}\n\t\tschema.anyOf.push({\n\t\t\tformat: value,\n\t\t\t...message && refs.errorMessages && { errorMessage: { format: message } }\n\t\t});\n\t} else setResponseValueAndErrors(schema, \"format\", value, message, refs);\n}\nfunction addPattern(schema, regex, message, refs) {\n\tif (schema.pattern || schema.allOf?.some((x) => x.pattern)) {\n\t\tif (!schema.allOf) schema.allOf = [];\n\t\tif (schema.pattern) {\n\t\t\tschema.allOf.push({\n\t\t\t\tpattern: schema.pattern,\n\t\t\t\t...schema.errorMessage && refs.errorMessages && { errorMessage: { pattern: schema.errorMessage.pattern } }\n\t\t\t});\n\t\t\tdelete schema.pattern;\n\t\t\tif (schema.errorMessage) {\n\t\t\t\tdelete schema.errorMessage.pattern;\n\t\t\t\tif (Object.keys(schema.errorMessage).length === 0) delete schema.errorMessage;\n\t\t\t}\n\t\t}\n\t\tschema.allOf.push({\n\t\t\tpattern: stringifyRegExpWithFlags(regex, refs),\n\t\t\t...message && refs.errorMessages && { errorMessage: { pattern: message } }\n\t\t});\n\t} else setResponseValueAndErrors(schema, \"pattern\", stringifyRegExpWithFlags(regex, refs), message, refs);\n}\nfunction stringifyRegExpWithFlags(regex, refs) {\n\tif (!refs.applyRegexFlags || !regex.flags) return regex.source;\n\tconst flags = {\n\t\ti: regex.flags.includes(\"i\"),\n\t\tm: regex.flags.includes(\"m\"),\n\t\ts: regex.flags.includes(\"s\")\n\t};\n\tconst source = flags.i ? regex.source.toLowerCase() : regex.source;\n\tlet pattern = \"\";\n\tlet isEscaped = false;\n\tlet inCharGroup = false;\n\tlet inCharRange = false;\n\tfor (let i = 0; i < source.length; i++) {\n\t\tif (isEscaped) {\n\t\t\tpattern += source[i];\n\t\t\tisEscaped = false;\n\t\t\tcontinue;\n\t\t}\n\t\tif (flags.i) {\n\t\t\tif (inCharGroup) {\n\t\t\t\tif (source[i].match(/[a-z]/)) {\n\t\t\t\t\tif (inCharRange) {\n\t\t\t\t\t\tpattern += source[i];\n\t\t\t\t\t\tpattern += `${source[i - 2]}-${source[i]}`.toUpperCase();\n\t\t\t\t\t\tinCharRange = false;\n\t\t\t\t\t} else if (source[i + 1] === \"-\" && source[i + 2]?.match(/[a-z]/)) {\n\t\t\t\t\t\tpattern += source[i];\n\t\t\t\t\t\tinCharRange = true;\n\t\t\t\t\t} else pattern += `${source[i]}${source[i].toUpperCase()}`;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t} else if (source[i].match(/[a-z]/)) {\n\t\t\t\tpattern += `[${source[i]}${source[i].toUpperCase()}]`;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\tif (flags.m) {\n\t\t\tif (source[i] === \"^\") {\n\t\t\t\tpattern += `(^|(?<=[\\r\\n]))`;\n\t\t\t\tcontinue;\n\t\t\t} else if (source[i] === \"$\") {\n\t\t\t\tpattern += `($|(?=[\\r\\n]))`;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\tif (flags.s && source[i] === \".\") {\n\t\t\tpattern += inCharGroup ? `${source[i]}\\r\\n` : `[${source[i]}\\r\\n]`;\n\t\t\tcontinue;\n\t\t}\n\t\tpattern += source[i];\n\t\tif (source[i] === \"\\\\\") isEscaped = true;\n\t\telse if (inCharGroup && source[i] === \"]\") inCharGroup = false;\n\t\telse if (!inCharGroup && source[i] === \"[\") inCharGroup = true;\n\t}\n\ttry {\n\t\tnew RegExp(pattern);\n\t} catch {\n\t\tconsole.warn(`Could not convert regex pattern at ${refs.currentPath.join(\"/\")} to a flag-independent form! Falling back to the flag-ignorant source`);\n\t\treturn regex.source;\n\t}\n\treturn pattern;\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/record.js\nfunction parseRecordDef(def, refs) {\n\tif (refs.target === \"openAi\") console.warn(\"Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead.\");\n\tif (refs.target === \"openApi3\" && def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) return {\n\t\ttype: \"object\",\n\t\trequired: def.keyType._def.values,\n\t\tproperties: def.keyType._def.values.reduce((acc, key) => ({\n\t\t\t...acc,\n\t\t\t[key]: parseDef(def.valueType._def, {\n\t\t\t\t...refs,\n\t\t\t\tcurrentPath: [\n\t\t\t\t\t...refs.currentPath,\n\t\t\t\t\t\"properties\",\n\t\t\t\t\tkey\n\t\t\t\t]\n\t\t\t}) ?? parseAnyDef(refs)\n\t\t}), {}),\n\t\tadditionalProperties: refs.rejectedAdditionalProperties\n\t};\n\tconst schema = {\n\t\ttype: \"object\",\n\t\tadditionalProperties: parseDef(def.valueType._def, {\n\t\t\t...refs,\n\t\t\tcurrentPath: [...refs.currentPath, \"additionalProperties\"]\n\t\t}) ?? refs.allowedAdditionalProperties\n\t};\n\tif (refs.target === \"openApi3\") return schema;\n\tif (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodString && def.keyType._def.checks?.length) {\n\t\tconst { type, ...keyType } = parseStringDef(def.keyType._def, refs);\n\t\treturn {\n\t\t\t...schema,\n\t\t\tpropertyNames: keyType\n\t\t};\n\t} else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) return {\n\t\t...schema,\n\t\tpropertyNames: { enum: def.keyType._def.values }\n\t};\n\telse if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodBranded && def.keyType._def.type._def.typeName === ZodFirstPartyTypeKind.ZodString && def.keyType._def.type._def.checks?.length) {\n\t\tconst { type, ...keyType } = parseBrandedDef(def.keyType._def, refs);\n\t\treturn {\n\t\t\t...schema,\n\t\t\tpropertyNames: keyType\n\t\t};\n\t}\n\treturn schema;\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/map.js\nfunction parseMapDef(def, refs) {\n\tif (refs.mapStrategy === \"record\") return parseRecordDef(def, refs);\n\treturn {\n\t\ttype: \"array\",\n\t\tmaxItems: 125,\n\t\titems: {\n\t\t\ttype: \"array\",\n\t\t\titems: [parseDef(def.keyType._def, {\n\t\t\t\t...refs,\n\t\t\t\tcurrentPath: [\n\t\t\t\t\t...refs.currentPath,\n\t\t\t\t\t\"items\",\n\t\t\t\t\t\"items\",\n\t\t\t\t\t\"0\"\n\t\t\t\t]\n\t\t\t}) || parseAnyDef(refs), parseDef(def.valueType._def, {\n\t\t\t\t...refs,\n\t\t\t\tcurrentPath: [\n\t\t\t\t\t...refs.currentPath,\n\t\t\t\t\t\"items\",\n\t\t\t\t\t\"items\",\n\t\t\t\t\t\"1\"\n\t\t\t\t]\n\t\t\t}) || parseAnyDef(refs)],\n\t\t\tminItems: 2,\n\t\t\tmaxItems: 2\n\t\t}\n\t};\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js\nfunction parseNativeEnumDef(def) {\n\tconst object = def.values;\n\tconst actualValues = Object.keys(def.values).filter((key) => {\n\t\treturn typeof object[object[key]] !== \"number\";\n\t}).map((key) => object[key]);\n\tconst parsedTypes = Array.from(new Set(actualValues.map((values) => typeof values)));\n\treturn {\n\t\ttype: parsedTypes.length === 1 ? parsedTypes[0] === \"string\" ? \"string\" : \"number\" : [\"string\", \"number\"],\n\t\tenum: actualValues\n\t};\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/never.js\nfunction parseNeverDef(refs) {\n\treturn refs.target === \"openAi\" ? void 0 : { not: parseAnyDef({\n\t\t...refs,\n\t\tcurrentPath: [...refs.currentPath, \"not\"]\n\t}) };\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/null.js\nfunction parseNullDef(refs) {\n\treturn refs.target === \"openApi3\" ? {\n\t\tenum: [\"null\"],\n\t\tnullable: true\n\t} : { type: \"null\" };\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/union.js\nconst primitiveMappings = {\n\tZodString: \"string\",\n\tZodNumber: \"number\",\n\tZodBigInt: \"integer\",\n\tZodBoolean: \"boolean\",\n\tZodNull: \"null\"\n};\nfunction parseUnionDef(def, refs) {\n\tif (refs.target === \"openApi3\") return asAnyOf(def, refs);\n\tconst options = def.options instanceof Map ? Array.from(def.options.values()) : def.options;\n\tif (options.every((x) => x._def.typeName in primitiveMappings && (!x._def.checks || !x._def.checks.length))) {\n\t\tconst types = options.reduce((types, x) => {\n\t\t\tconst type = primitiveMappings[x._def.typeName];\n\t\t\treturn type && !types.includes(type) ? [...types, type] : types;\n\t\t}, []);\n\t\treturn { type: types.length > 1 ? types : types[0] };\n\t} else if (options.every((x) => x._def.typeName === \"ZodLiteral\" && !x.description)) {\n\t\tconst types = options.reduce((acc, x) => {\n\t\t\tconst type = typeof x._def.value;\n\t\t\tswitch (type) {\n\t\t\t\tcase \"string\":\n\t\t\t\tcase \"number\":\n\t\t\t\tcase \"boolean\": return [...acc, type];\n\t\t\t\tcase \"bigint\": return [...acc, \"integer\"];\n\t\t\t\tcase \"object\": if (x._def.value === null) return [...acc, \"null\"];\n\t\t\t\tdefault: return acc;\n\t\t\t}\n\t\t}, []);\n\t\tif (types.length === options.length) {\n\t\t\tconst uniqueTypes = types.filter((x, i, a) => a.indexOf(x) === i);\n\t\t\treturn {\n\t\t\t\ttype: uniqueTypes.length > 1 ? uniqueTypes : uniqueTypes[0],\n\t\t\t\tenum: options.reduce((acc, x) => {\n\t\t\t\t\treturn acc.includes(x._def.value) ? acc : [...acc, x._def.value];\n\t\t\t\t}, [])\n\t\t\t};\n\t\t}\n\t} else if (options.every((x) => x._def.typeName === \"ZodEnum\")) return {\n\t\ttype: \"string\",\n\t\tenum: options.reduce((acc, x) => [...acc, ...x._def.values.filter((x) => !acc.includes(x))], [])\n\t};\n\treturn asAnyOf(def, refs);\n}\nconst asAnyOf = (def, refs) => {\n\tconst anyOf = (def.options instanceof Map ? Array.from(def.options.values()) : def.options).map((x, i) => parseDef(x._def, {\n\t\t...refs,\n\t\tcurrentPath: [\n\t\t\t...refs.currentPath,\n\t\t\t\"anyOf\",\n\t\t\t`${i}`\n\t\t]\n\t})).filter((x) => !!x && (!refs.strictUnions || typeof x === \"object\" && Object.keys(x).length > 0));\n\treturn anyOf.length ? { anyOf } : void 0;\n};\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js\nfunction parseNullableDef(def, refs) {\n\tif ([\n\t\t\"ZodString\",\n\t\t\"ZodNumber\",\n\t\t\"ZodBigInt\",\n\t\t\"ZodBoolean\",\n\t\t\"ZodNull\"\n\t].includes(def.innerType._def.typeName) && (!def.innerType._def.checks || !def.innerType._def.checks.length)) {\n\t\tif (refs.target === \"openApi3\") return {\n\t\t\ttype: primitiveMappings[def.innerType._def.typeName],\n\t\t\tnullable: true\n\t\t};\n\t\treturn { type: [primitiveMappings[def.innerType._def.typeName], \"null\"] };\n\t}\n\tif (refs.target === \"openApi3\") {\n\t\tconst base = parseDef(def.innerType._def, {\n\t\t\t...refs,\n\t\t\tcurrentPath: [...refs.currentPath]\n\t\t});\n\t\tif (base && \"$ref\" in base) return {\n\t\t\tallOf: [base],\n\t\t\tnullable: true\n\t\t};\n\t\treturn base && {\n\t\t\t...base,\n\t\t\tnullable: true\n\t\t};\n\t}\n\tconst base = parseDef(def.innerType._def, {\n\t\t...refs,\n\t\tcurrentPath: [\n\t\t\t...refs.currentPath,\n\t\t\t\"anyOf\",\n\t\t\t\"0\"\n\t\t]\n\t});\n\treturn base && { anyOf: [base, { type: \"null\" }] };\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/number.js\nfunction parseNumberDef(def, refs) {\n\tconst res = { type: \"number\" };\n\tif (!def.checks) return res;\n\tfor (const check of def.checks) switch (check.kind) {\n\t\tcase \"int\":\n\t\t\tres.type = \"integer\";\n\t\t\taddErrorMessage(res, \"type\", check.message, refs);\n\t\t\tbreak;\n\t\tcase \"min\":\n\t\t\tif (refs.target === \"jsonSchema7\") if (check.inclusive) setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n\t\t\telse setResponseValueAndErrors(res, \"exclusiveMinimum\", check.value, check.message, refs);\n\t\t\telse {\n\t\t\t\tif (!check.inclusive) res.exclusiveMinimum = true;\n\t\t\t\tsetResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"max\":\n\t\t\tif (refs.target === \"jsonSchema7\") if (check.inclusive) setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n\t\t\telse setResponseValueAndErrors(res, \"exclusiveMaximum\", check.value, check.message, refs);\n\t\t\telse {\n\t\t\t\tif (!check.inclusive) res.exclusiveMaximum = true;\n\t\t\t\tsetResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"multipleOf\":\n\t\t\tsetResponseValueAndErrors(res, \"multipleOf\", check.value, check.message, refs);\n\t\t\tbreak;\n\t}\n\treturn res;\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/object.js\nfunction parseObjectDef(def, refs) {\n\tconst forceOptionalIntoNullable = refs.target === \"openAi\";\n\tconst result = {\n\t\ttype: \"object\",\n\t\tproperties: {}\n\t};\n\tconst required = [];\n\tconst shape = def.shape();\n\tfor (const propName in shape) {\n\t\tlet propDef = shape[propName];\n\t\tif (propDef === void 0 || propDef._def === void 0) continue;\n\t\tlet propOptional = safeIsOptional(propDef);\n\t\tif (propOptional && forceOptionalIntoNullable) {\n\t\t\tif (propDef._def.typeName === \"ZodOptional\") propDef = propDef._def.innerType;\n\t\t\tif (!propDef.isNullable()) propDef = propDef.nullable();\n\t\t\tpropOptional = false;\n\t\t}\n\t\tconst parsedDef = parseDef(propDef._def, {\n\t\t\t...refs,\n\t\t\tcurrentPath: [\n\t\t\t\t...refs.currentPath,\n\t\t\t\t\"properties\",\n\t\t\t\tpropName\n\t\t\t],\n\t\t\tpropertyPath: [\n\t\t\t\t...refs.currentPath,\n\t\t\t\t\"properties\",\n\t\t\t\tpropName\n\t\t\t]\n\t\t});\n\t\tif (parsedDef === void 0) continue;\n\t\tresult.properties[propName] = parsedDef;\n\t\tif (!propOptional) required.push(propName);\n\t}\n\tif (required.length) result.required = required;\n\tconst additionalProperties = decideAdditionalProperties(def, refs);\n\tif (additionalProperties !== void 0) result.additionalProperties = additionalProperties;\n\treturn result;\n}\nfunction decideAdditionalProperties(def, refs) {\n\tif (def.catchall._def.typeName !== \"ZodNever\") return parseDef(def.catchall._def, {\n\t\t...refs,\n\t\tcurrentPath: [...refs.currentPath, \"additionalProperties\"]\n\t});\n\tswitch (def.unknownKeys) {\n\t\tcase \"passthrough\": return refs.allowedAdditionalProperties;\n\t\tcase \"strict\": return refs.rejectedAdditionalProperties;\n\t\tcase \"strip\": return refs.removeAdditionalStrategy === \"strict\" ? refs.allowedAdditionalProperties : refs.rejectedAdditionalProperties;\n\t}\n}\nfunction safeIsOptional(schema) {\n\ttry {\n\t\treturn schema.isOptional();\n\t} catch {\n\t\treturn true;\n\t}\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js\nconst parseOptionalDef = (def, refs) => {\n\tif (refs.currentPath.toString() === refs.propertyPath?.toString()) return parseDef(def.innerType._def, refs);\n\tconst innerSchema = parseDef(def.innerType._def, {\n\t\t...refs,\n\t\tcurrentPath: [\n\t\t\t...refs.currentPath,\n\t\t\t\"anyOf\",\n\t\t\t\"1\"\n\t\t]\n\t});\n\treturn innerSchema ? { anyOf: [{ not: parseAnyDef(refs) }, innerSchema] } : parseAnyDef(refs);\n};\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js\nconst parsePipelineDef = (def, refs) => {\n\tif (refs.pipeStrategy === \"input\") return parseDef(def.in._def, refs);\n\telse if (refs.pipeStrategy === \"output\") return parseDef(def.out._def, refs);\n\tconst a = parseDef(def.in._def, {\n\t\t...refs,\n\t\tcurrentPath: [\n\t\t\t...refs.currentPath,\n\t\t\t\"allOf\",\n\t\t\t\"0\"\n\t\t]\n\t});\n\treturn { allOf: [a, parseDef(def.out._def, {\n\t\t...refs,\n\t\tcurrentPath: [\n\t\t\t...refs.currentPath,\n\t\t\t\"allOf\",\n\t\t\ta ? \"1\" : \"0\"\n\t\t]\n\t})].filter((x) => x !== void 0) };\n};\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js\nfunction parsePromiseDef(def, refs) {\n\treturn parseDef(def.type._def, refs);\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/set.js\nfunction parseSetDef(def, refs) {\n\tconst schema = {\n\t\ttype: \"array\",\n\t\tuniqueItems: true,\n\t\titems: parseDef(def.valueType._def, {\n\t\t\t...refs,\n\t\t\tcurrentPath: [...refs.currentPath, \"items\"]\n\t\t})\n\t};\n\tif (def.minSize) setResponseValueAndErrors(schema, \"minItems\", def.minSize.value, def.minSize.message, refs);\n\tif (def.maxSize) setResponseValueAndErrors(schema, \"maxItems\", def.maxSize.value, def.maxSize.message, refs);\n\treturn schema;\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js\nfunction parseTupleDef(def, refs) {\n\tif (def.rest) return {\n\t\ttype: \"array\",\n\t\tminItems: def.items.length,\n\t\titems: def.items.map((x, i) => parseDef(x._def, {\n\t\t\t...refs,\n\t\t\tcurrentPath: [\n\t\t\t\t...refs.currentPath,\n\t\t\t\t\"items\",\n\t\t\t\t`${i}`\n\t\t\t]\n\t\t})).reduce((acc, x) => x === void 0 ? acc : [...acc, x], []),\n\t\tadditionalItems: parseDef(def.rest._def, {\n\t\t\t...refs,\n\t\t\tcurrentPath: [...refs.currentPath, \"additionalItems\"]\n\t\t})\n\t};\n\telse return {\n\t\ttype: \"array\",\n\t\tminItems: def.items.length,\n\t\tmaxItems: def.items.length,\n\t\titems: def.items.map((x, i) => parseDef(x._def, {\n\t\t\t...refs,\n\t\t\tcurrentPath: [\n\t\t\t\t...refs.currentPath,\n\t\t\t\t\"items\",\n\t\t\t\t`${i}`\n\t\t\t]\n\t\t})).reduce((acc, x) => x === void 0 ? acc : [...acc, x], [])\n\t};\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js\nfunction parseUndefinedDef(refs) {\n\treturn { not: parseAnyDef(refs) };\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js\nfunction parseUnknownDef(refs) {\n\treturn parseAnyDef(refs);\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js\nconst parseReadonlyDef = (def, refs) => {\n\treturn parseDef(def.innerType._def, refs);\n};\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/selectParser.js\nconst selectParser = (def, typeName, refs) => {\n\tswitch (typeName) {\n\t\tcase ZodFirstPartyTypeKind.ZodString: return parseStringDef(def, refs);\n\t\tcase ZodFirstPartyTypeKind.ZodNumber: return parseNumberDef(def, refs);\n\t\tcase ZodFirstPartyTypeKind.ZodObject: return parseObjectDef(def, refs);\n\t\tcase ZodFirstPartyTypeKind.ZodBigInt: return parseBigintDef(def, refs);\n\t\tcase ZodFirstPartyTypeKind.ZodBoolean: return parseBooleanDef();\n\t\tcase ZodFirstPartyTypeKind.ZodDate: return parseDateDef(def, refs);\n\t\tcase ZodFirstPartyTypeKind.ZodUndefined: return parseUndefinedDef(refs);\n\t\tcase ZodFirstPartyTypeKind.ZodNull: return parseNullDef(refs);\n\t\tcase ZodFirstPartyTypeKind.ZodArray: return parseArrayDef(def, refs);\n\t\tcase ZodFirstPartyTypeKind.ZodUnion:\n\t\tcase ZodFirstPartyTypeKind.ZodDiscriminatedUnion: return parseUnionDef(def, refs);\n\t\tcase ZodFirstPartyTypeKind.ZodIntersection: return parseIntersectionDef(def, refs);\n\t\tcase ZodFirstPartyTypeKind.ZodTuple: return parseTupleDef(def, refs);\n\t\tcase ZodFirstPartyTypeKind.ZodRecord: return parseRecordDef(def, refs);\n\t\tcase ZodFirstPartyTypeKind.ZodLiteral: return parseLiteralDef(def, refs);\n\t\tcase ZodFirstPartyTypeKind.ZodEnum: return parseEnumDef(def);\n\t\tcase ZodFirstPartyTypeKind.ZodNativeEnum: return parseNativeEnumDef(def);\n\t\tcase ZodFirstPartyTypeKind.ZodNullable: return parseNullableDef(def, refs);\n\t\tcase ZodFirstPartyTypeKind.ZodOptional: return parseOptionalDef(def, refs);\n\t\tcase ZodFirstPartyTypeKind.ZodMap: return parseMapDef(def, refs);\n\t\tcase ZodFirstPartyTypeKind.ZodSet: return parseSetDef(def, refs);\n\t\tcase ZodFirstPartyTypeKind.ZodLazy: return () => def.getter()._def;\n\t\tcase ZodFirstPartyTypeKind.ZodPromise: return parsePromiseDef(def, refs);\n\t\tcase ZodFirstPartyTypeKind.ZodNaN:\n\t\tcase ZodFirstPartyTypeKind.ZodNever: return parseNeverDef(refs);\n\t\tcase ZodFirstPartyTypeKind.ZodEffects: return parseEffectsDef(def, refs);\n\t\tcase ZodFirstPartyTypeKind.ZodAny: return parseAnyDef(refs);\n\t\tcase ZodFirstPartyTypeKind.ZodUnknown: return parseUnknownDef(refs);\n\t\tcase ZodFirstPartyTypeKind.ZodDefault: return parseDefaultDef(def, refs);\n\t\tcase ZodFirstPartyTypeKind.ZodBranded: return parseBrandedDef(def, refs);\n\t\tcase ZodFirstPartyTypeKind.ZodReadonly: return parseReadonlyDef(def, refs);\n\t\tcase ZodFirstPartyTypeKind.ZodCatch: return parseCatchDef(def, refs);\n\t\tcase ZodFirstPartyTypeKind.ZodPipeline: return parsePipelineDef(def, refs);\n\t\tcase ZodFirstPartyTypeKind.ZodFunction:\n\t\tcase ZodFirstPartyTypeKind.ZodVoid:\n\t\tcase ZodFirstPartyTypeKind.ZodSymbol: return;\n\t\tdefault: return ((_) => void 0)(typeName);\n\t}\n};\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/parseDef.js\nfunction parseDef(def, refs, forceResolution = false) {\n\tconst seenItem = refs.seen.get(def);\n\tif (refs.override) {\n\t\tconst overrideResult = refs.override?.(def, refs, seenItem, forceResolution);\n\t\tif (overrideResult !== ignoreOverride) return overrideResult;\n\t}\n\tif (seenItem && !forceResolution) {\n\t\tconst seenSchema = get$ref(seenItem, refs);\n\t\tif (seenSchema !== void 0) return seenSchema;\n\t}\n\tconst newItem = {\n\t\tdef,\n\t\tpath: refs.currentPath,\n\t\tjsonSchema: void 0\n\t};\n\trefs.seen.set(def, newItem);\n\tconst jsonSchemaOrGetter = selectParser(def, def.typeName, refs);\n\tconst jsonSchema = typeof jsonSchemaOrGetter === \"function\" ? parseDef(jsonSchemaOrGetter(), refs) : jsonSchemaOrGetter;\n\tif (jsonSchema) addMeta(def, refs, jsonSchema);\n\tif (refs.postProcess) {\n\t\tconst postProcessResult = refs.postProcess(jsonSchema, def, refs);\n\t\tnewItem.jsonSchema = jsonSchema;\n\t\treturn postProcessResult;\n\t}\n\tnewItem.jsonSchema = jsonSchema;\n\treturn jsonSchema;\n}\nconst get$ref = (item, refs) => {\n\tswitch (refs.$refStrategy) {\n\t\tcase \"root\": return { $ref: item.path.join(\"/\") };\n\t\tcase \"relative\": return { $ref: getRelativePath(refs.currentPath, item.path) };\n\t\tcase \"none\":\n\t\tcase \"seen\":\n\t\t\tif (item.path.length < refs.currentPath.length && item.path.every((value, index) => refs.currentPath[index] === value)) {\n\t\t\t\tconsole.warn(`Recursive reference detected at ${refs.currentPath.join(\"/\")}! Defaulting to any`);\n\t\t\t\treturn parseAnyDef(refs);\n\t\t\t}\n\t\t\treturn refs.$refStrategy === \"seen\" ? parseAnyDef(refs) : void 0;\n\t}\n};\nconst addMeta = (def, refs, jsonSchema) => {\n\tif (def.description) {\n\t\tjsonSchema.description = def.description;\n\t\tif (refs.markdownDescription) jsonSchema.markdownDescription = def.description;\n\t}\n\treturn jsonSchema;\n};\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js\nconst zodToJsonSchema = (schema, options) => {\n\tconst refs = getRefs(options);\n\tlet definitions = typeof options === \"object\" && options.definitions ? Object.entries(options.definitions).reduce((acc, [name, schema]) => ({\n\t\t...acc,\n\t\t[name]: parseDef(schema._def, {\n\t\t\t...refs,\n\t\t\tcurrentPath: [\n\t\t\t\t...refs.basePath,\n\t\t\t\trefs.definitionPath,\n\t\t\t\tname\n\t\t\t]\n\t\t}, true) ?? parseAnyDef(refs)\n\t}), {}) : void 0;\n\tconst name = typeof options === \"string\" ? options : options?.nameStrategy === \"title\" ? void 0 : options?.name;\n\tconst main = parseDef(schema._def, name === void 0 ? refs : {\n\t\t...refs,\n\t\tcurrentPath: [\n\t\t\t...refs.basePath,\n\t\t\trefs.definitionPath,\n\t\t\tname\n\t\t]\n\t}, false) ?? parseAnyDef(refs);\n\tconst title = typeof options === \"object\" && options.name !== void 0 && options.nameStrategy === \"title\" ? options.name : void 0;\n\tif (title !== void 0) main.title = title;\n\tif (refs.flags.hasReferencedOpenAiAnyType) {\n\t\tif (!definitions) definitions = {};\n\t\tif (!definitions[refs.openAiAnyTypeName]) definitions[refs.openAiAnyTypeName] = {\n\t\t\ttype: [\n\t\t\t\t\"string\",\n\t\t\t\t\"number\",\n\t\t\t\t\"integer\",\n\t\t\t\t\"boolean\",\n\t\t\t\t\"array\",\n\t\t\t\t\"null\"\n\t\t\t],\n\t\t\titems: { $ref: refs.$refStrategy === \"relative\" ? \"1\" : [\n\t\t\t\t...refs.basePath,\n\t\t\t\trefs.definitionPath,\n\t\t\t\trefs.openAiAnyTypeName\n\t\t\t].join(\"/\") }\n\t\t};\n\t}\n\tconst combined = name === void 0 ? definitions ? {\n\t\t...main,\n\t\t[refs.definitionPath]: definitions\n\t} : main : {\n\t\t$ref: [\n\t\t\t...refs.$refStrategy === \"relative\" ? [] : refs.basePath,\n\t\t\trefs.definitionPath,\n\t\t\tname\n\t\t].join(\"/\"),\n\t\t[refs.definitionPath]: {\n\t\t\t...definitions,\n\t\t\t[name]: main\n\t\t}\n\t};\n\tif (refs.target === \"jsonSchema7\") combined.$schema = \"http://json-schema.org/draft-07/schema#\";\n\telse if (refs.target === \"jsonSchema2019-09\" || refs.target === \"openAi\") combined.$schema = \"https://json-schema.org/draft/2019-09/schema#\";\n\tif (refs.target === \"openAi\" && (\"anyOf\" in combined || \"oneOf\" in combined || \"allOf\" in combined || \"type\" in combined && Array.isArray(combined.type))) console.warn(\"Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property.\");\n\treturn combined;\n};\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/zod-to-json-schema/3.25.2/1f623ee5daeed4b1f3e75ddb0bbc89ee1976f8936a99c037b3950b9acc62d8f5/node_modules/zod-to-json-schema/dist/esm/index.js\nvar esm_default = zodToJsonSchema;\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/ui-utils/1.2.11/c53aade7f536681f6809a3c327689b67a0cdbe3ae3e841caeb6d27da49c63b14/node_modules/@ai-sdk/ui-utils/dist/index.mjs\nvar textStreamPart = {\n\tcode: \"0\",\n\tname: \"text\",\n\tparse: (value) => {\n\t\tif (typeof value !== \"string\") throw new Error(\"\\\"text\\\" parts expect a string value.\");\n\t\treturn {\n\t\t\ttype: \"text\",\n\t\t\tvalue\n\t\t};\n\t}\n};\nvar errorStreamPart = {\n\tcode: \"3\",\n\tname: \"error\",\n\tparse: (value) => {\n\t\tif (typeof value !== \"string\") throw new Error(\"\\\"error\\\" parts expect a string value.\");\n\t\treturn {\n\t\t\ttype: \"error\",\n\t\t\tvalue\n\t\t};\n\t}\n};\nvar assistantMessageStreamPart = {\n\tcode: \"4\",\n\tname: \"assistant_message\",\n\tparse: (value) => {\n\t\tif (value == null || typeof value !== \"object\" || !(\"id\" in value) || !(\"role\" in value) || !(\"content\" in value) || typeof value.id !== \"string\" || typeof value.role !== \"string\" || value.role !== \"assistant\" || !Array.isArray(value.content) || !value.content.every((item) => item != null && typeof item === \"object\" && \"type\" in item && item.type === \"text\" && \"text\" in item && item.text != null && typeof item.text === \"object\" && \"value\" in item.text && typeof item.text.value === \"string\")) throw new Error(\"\\\"assistant_message\\\" parts expect an object with an \\\"id\\\", \\\"role\\\", and \\\"content\\\" property.\");\n\t\treturn {\n\t\t\ttype: \"assistant_message\",\n\t\t\tvalue\n\t\t};\n\t}\n};\nvar assistantControlDataStreamPart = {\n\tcode: \"5\",\n\tname: \"assistant_control_data\",\n\tparse: (value) => {\n\t\tif (value == null || typeof value !== \"object\" || !(\"threadId\" in value) || !(\"messageId\" in value) || typeof value.threadId !== \"string\" || typeof value.messageId !== \"string\") throw new Error(\"\\\"assistant_control_data\\\" parts expect an object with a \\\"threadId\\\" and \\\"messageId\\\" property.\");\n\t\treturn {\n\t\t\ttype: \"assistant_control_data\",\n\t\t\tvalue: {\n\t\t\t\tthreadId: value.threadId,\n\t\t\t\tmessageId: value.messageId\n\t\t\t}\n\t\t};\n\t}\n};\nvar dataMessageStreamPart = {\n\tcode: \"6\",\n\tname: \"data_message\",\n\tparse: (value) => {\n\t\tif (value == null || typeof value !== \"object\" || !(\"role\" in value) || !(\"data\" in value) || typeof value.role !== \"string\" || value.role !== \"data\") throw new Error(\"\\\"data_message\\\" parts expect an object with a \\\"role\\\" and \\\"data\\\" property.\");\n\t\treturn {\n\t\t\ttype: \"data_message\",\n\t\t\tvalue\n\t\t};\n\t}\n};\nvar assistantStreamParts = [\n\ttextStreamPart,\n\terrorStreamPart,\n\tassistantMessageStreamPart,\n\tassistantControlDataStreamPart,\n\tdataMessageStreamPart\n];\nvar assistantStreamPartsByCode = {\n\t[textStreamPart.code]: textStreamPart,\n\t[errorStreamPart.code]: errorStreamPart,\n\t[assistantMessageStreamPart.code]: assistantMessageStreamPart,\n\t[assistantControlDataStreamPart.code]: assistantControlDataStreamPart,\n\t[dataMessageStreamPart.code]: dataMessageStreamPart\n};\ntextStreamPart.name, textStreamPart.code, errorStreamPart.name, errorStreamPart.code, assistantMessageStreamPart.name, assistantMessageStreamPart.code, assistantControlDataStreamPart.name, assistantControlDataStreamPart.code, dataMessageStreamPart.name, dataMessageStreamPart.code;\nvar validCodes = assistantStreamParts.map((part) => part.code);\nvar parseAssistantStreamPart = (line) => {\n\tconst firstSeparatorIndex = line.indexOf(\":\");\n\tif (firstSeparatorIndex === -1) throw new Error(\"Failed to parse stream string. No separator found.\");\n\tconst prefix = line.slice(0, firstSeparatorIndex);\n\tif (!validCodes.includes(prefix)) throw new Error(`Failed to parse stream string. Invalid code ${prefix}.`);\n\tconst code = prefix;\n\tconst textValue = line.slice(firstSeparatorIndex + 1);\n\tconst jsonValue = JSON.parse(textValue);\n\treturn assistantStreamPartsByCode[code].parse(jsonValue);\n};\nfunction formatAssistantStreamPart(type, value) {\n\tconst streamPart = assistantStreamParts.find((part) => part.name === type);\n\tif (!streamPart) throw new Error(`Invalid stream part type: ${type}`);\n\treturn `${streamPart.code}:${JSON.stringify(value)}\n`;\n}\nfunction fixJson(input) {\n\tconst stack = [\"ROOT\"];\n\tlet lastValidIndex = -1;\n\tlet literalStart = null;\n\tfunction processValueStart(char, i, swapState) {\n\t\tswitch (char) {\n\t\t\tcase \"\\\"\":\n\t\t\t\tlastValidIndex = i;\n\t\t\t\tstack.pop();\n\t\t\t\tstack.push(swapState);\n\t\t\t\tstack.push(\"INSIDE_STRING\");\n\t\t\t\tbreak;\n\t\t\tcase \"f\":\n\t\t\tcase \"t\":\n\t\t\tcase \"n\":\n\t\t\t\tlastValidIndex = i;\n\t\t\t\tliteralStart = i;\n\t\t\t\tstack.pop();\n\t\t\t\tstack.push(swapState);\n\t\t\t\tstack.push(\"INSIDE_LITERAL\");\n\t\t\t\tbreak;\n\t\t\tcase \"-\":\n\t\t\t\tstack.pop();\n\t\t\t\tstack.push(swapState);\n\t\t\t\tstack.push(\"INSIDE_NUMBER\");\n\t\t\t\tbreak;\n\t\t\tcase \"0\":\n\t\t\tcase \"1\":\n\t\t\tcase \"2\":\n\t\t\tcase \"3\":\n\t\t\tcase \"4\":\n\t\t\tcase \"5\":\n\t\t\tcase \"6\":\n\t\t\tcase \"7\":\n\t\t\tcase \"8\":\n\t\t\tcase \"9\":\n\t\t\t\tlastValidIndex = i;\n\t\t\t\tstack.pop();\n\t\t\t\tstack.push(swapState);\n\t\t\t\tstack.push(\"INSIDE_NUMBER\");\n\t\t\t\tbreak;\n\t\t\tcase \"{\":\n\t\t\t\tlastValidIndex = i;\n\t\t\t\tstack.pop();\n\t\t\t\tstack.push(swapState);\n\t\t\t\tstack.push(\"INSIDE_OBJECT_START\");\n\t\t\t\tbreak;\n\t\t\tcase \"[\":\n\t\t\t\tlastValidIndex = i;\n\t\t\t\tstack.pop();\n\t\t\t\tstack.push(swapState);\n\t\t\t\tstack.push(\"INSIDE_ARRAY_START\");\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tfunction processAfterObjectValue(char, i) {\n\t\tswitch (char) {\n\t\t\tcase \",\":\n\t\t\t\tstack.pop();\n\t\t\t\tstack.push(\"INSIDE_OBJECT_AFTER_COMMA\");\n\t\t\t\tbreak;\n\t\t\tcase \"}\":\n\t\t\t\tlastValidIndex = i;\n\t\t\t\tstack.pop();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tfunction processAfterArrayValue(char, i) {\n\t\tswitch (char) {\n\t\t\tcase \",\":\n\t\t\t\tstack.pop();\n\t\t\t\tstack.push(\"INSIDE_ARRAY_AFTER_COMMA\");\n\t\t\t\tbreak;\n\t\t\tcase \"]\":\n\t\t\t\tlastValidIndex = i;\n\t\t\t\tstack.pop();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tfor (let i = 0; i < input.length; i++) {\n\t\tconst char = input[i];\n\t\tswitch (stack[stack.length - 1]) {\n\t\t\tcase \"ROOT\":\n\t\t\t\tprocessValueStart(char, i, \"FINISH\");\n\t\t\t\tbreak;\n\t\t\tcase \"INSIDE_OBJECT_START\":\n\t\t\t\tswitch (char) {\n\t\t\t\t\tcase \"\\\"\":\n\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t\tstack.push(\"INSIDE_OBJECT_KEY\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"}\":\n\t\t\t\t\t\tlastValidIndex = i;\n\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"INSIDE_OBJECT_AFTER_COMMA\":\n\t\t\t\tswitch (char) {\n\t\t\t\t\tcase \"\\\"\":\n\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t\tstack.push(\"INSIDE_OBJECT_KEY\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"INSIDE_OBJECT_KEY\":\n\t\t\t\tswitch (char) {\n\t\t\t\t\tcase \"\\\"\":\n\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t\tstack.push(\"INSIDE_OBJECT_AFTER_KEY\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"INSIDE_OBJECT_AFTER_KEY\":\n\t\t\t\tswitch (char) {\n\t\t\t\t\tcase \":\":\n\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t\tstack.push(\"INSIDE_OBJECT_BEFORE_VALUE\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"INSIDE_OBJECT_BEFORE_VALUE\":\n\t\t\t\tprocessValueStart(char, i, \"INSIDE_OBJECT_AFTER_VALUE\");\n\t\t\t\tbreak;\n\t\t\tcase \"INSIDE_OBJECT_AFTER_VALUE\":\n\t\t\t\tprocessAfterObjectValue(char, i);\n\t\t\t\tbreak;\n\t\t\tcase \"INSIDE_STRING\":\n\t\t\t\tswitch (char) {\n\t\t\t\t\tcase \"\\\"\":\n\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t\tlastValidIndex = i;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"\\\\\":\n\t\t\t\t\t\tstack.push(\"INSIDE_STRING_ESCAPE\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault: lastValidIndex = i;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"INSIDE_ARRAY_START\":\n\t\t\t\tswitch (char) {\n\t\t\t\t\tcase \"]\":\n\t\t\t\t\t\tlastValidIndex = i;\n\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tlastValidIndex = i;\n\t\t\t\t\t\tprocessValueStart(char, i, \"INSIDE_ARRAY_AFTER_VALUE\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"INSIDE_ARRAY_AFTER_VALUE\":\n\t\t\t\tswitch (char) {\n\t\t\t\t\tcase \",\":\n\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t\tstack.push(\"INSIDE_ARRAY_AFTER_COMMA\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"]\":\n\t\t\t\t\t\tlastValidIndex = i;\n\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tlastValidIndex = i;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"INSIDE_ARRAY_AFTER_COMMA\":\n\t\t\t\tprocessValueStart(char, i, \"INSIDE_ARRAY_AFTER_VALUE\");\n\t\t\t\tbreak;\n\t\t\tcase \"INSIDE_STRING_ESCAPE\":\n\t\t\t\tstack.pop();\n\t\t\t\tlastValidIndex = i;\n\t\t\t\tbreak;\n\t\t\tcase \"INSIDE_NUMBER\":\n\t\t\t\tswitch (char) {\n\t\t\t\t\tcase \"0\":\n\t\t\t\t\tcase \"1\":\n\t\t\t\t\tcase \"2\":\n\t\t\t\t\tcase \"3\":\n\t\t\t\t\tcase \"4\":\n\t\t\t\t\tcase \"5\":\n\t\t\t\t\tcase \"6\":\n\t\t\t\t\tcase \"7\":\n\t\t\t\t\tcase \"8\":\n\t\t\t\t\tcase \"9\":\n\t\t\t\t\t\tlastValidIndex = i;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"e\":\n\t\t\t\t\tcase \"E\":\n\t\t\t\t\tcase \"-\":\n\t\t\t\t\tcase \".\": break;\n\t\t\t\t\tcase \",\":\n\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t\tif (stack[stack.length - 1] === \"INSIDE_ARRAY_AFTER_VALUE\") processAfterArrayValue(char, i);\n\t\t\t\t\t\tif (stack[stack.length - 1] === \"INSIDE_OBJECT_AFTER_VALUE\") processAfterObjectValue(char, i);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"}\":\n\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t\tif (stack[stack.length - 1] === \"INSIDE_OBJECT_AFTER_VALUE\") processAfterObjectValue(char, i);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"]\":\n\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t\tif (stack[stack.length - 1] === \"INSIDE_ARRAY_AFTER_VALUE\") processAfterArrayValue(char, i);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"INSIDE_LITERAL\": {\n\t\t\t\tconst partialLiteral = input.substring(literalStart, i + 1);\n\t\t\t\tif (!\"false\".startsWith(partialLiteral) && !\"true\".startsWith(partialLiteral) && !\"null\".startsWith(partialLiteral)) {\n\t\t\t\t\tstack.pop();\n\t\t\t\t\tif (stack[stack.length - 1] === \"INSIDE_OBJECT_AFTER_VALUE\") processAfterObjectValue(char, i);\n\t\t\t\t\telse if (stack[stack.length - 1] === \"INSIDE_ARRAY_AFTER_VALUE\") processAfterArrayValue(char, i);\n\t\t\t\t} else lastValidIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tlet result = input.slice(0, lastValidIndex + 1);\n\tfor (let i = stack.length - 1; i >= 0; i--) switch (stack[i]) {\n\t\tcase \"INSIDE_STRING\":\n\t\t\tresult += \"\\\"\";\n\t\t\tbreak;\n\t\tcase \"INSIDE_OBJECT_KEY\":\n\t\tcase \"INSIDE_OBJECT_AFTER_KEY\":\n\t\tcase \"INSIDE_OBJECT_AFTER_COMMA\":\n\t\tcase \"INSIDE_OBJECT_START\":\n\t\tcase \"INSIDE_OBJECT_BEFORE_VALUE\":\n\t\tcase \"INSIDE_OBJECT_AFTER_VALUE\":\n\t\t\tresult += \"}\";\n\t\t\tbreak;\n\t\tcase \"INSIDE_ARRAY_START\":\n\t\tcase \"INSIDE_ARRAY_AFTER_COMMA\":\n\t\tcase \"INSIDE_ARRAY_AFTER_VALUE\":\n\t\t\tresult += \"]\";\n\t\t\tbreak;\n\t\tcase \"INSIDE_LITERAL\": {\n\t\t\tconst partialLiteral = input.substring(literalStart, input.length);\n\t\t\tif (\"true\".startsWith(partialLiteral)) result += \"true\".slice(partialLiteral.length);\n\t\t\telse if (\"false\".startsWith(partialLiteral)) result += \"false\".slice(partialLiteral.length);\n\t\t\telse if (\"null\".startsWith(partialLiteral)) result += \"null\".slice(partialLiteral.length);\n\t\t}\n\t}\n\treturn result;\n}\nfunction parsePartialJson(jsonText) {\n\tif (jsonText === void 0) return {\n\t\tvalue: void 0,\n\t\tstate: \"undefined-input\"\n\t};\n\tlet result = safeParseJSON({ text: jsonText });\n\tif (result.success) return {\n\t\tvalue: result.value,\n\t\tstate: \"successful-parse\"\n\t};\n\tresult = safeParseJSON({ text: fixJson(jsonText) });\n\tif (result.success) return {\n\t\tvalue: result.value,\n\t\tstate: \"repaired-parse\"\n\t};\n\treturn {\n\t\tvalue: void 0,\n\t\tstate: \"failed-parse\"\n\t};\n}\nvar dataStreamParts = [\n\t{\n\t\tcode: \"0\",\n\t\tname: \"text\",\n\t\tparse: (value) => {\n\t\t\tif (typeof value !== \"string\") throw new Error(\"\\\"text\\\" parts expect a string value.\");\n\t\t\treturn {\n\t\t\t\ttype: \"text\",\n\t\t\t\tvalue\n\t\t\t};\n\t\t}\n\t},\n\t{\n\t\tcode: \"2\",\n\t\tname: \"data\",\n\t\tparse: (value) => {\n\t\t\tif (!Array.isArray(value)) throw new Error(\"\\\"data\\\" parts expect an array value.\");\n\t\t\treturn {\n\t\t\t\ttype: \"data\",\n\t\t\t\tvalue\n\t\t\t};\n\t\t}\n\t},\n\t{\n\t\tcode: \"3\",\n\t\tname: \"error\",\n\t\tparse: (value) => {\n\t\t\tif (typeof value !== \"string\") throw new Error(\"\\\"error\\\" parts expect a string value.\");\n\t\t\treturn {\n\t\t\t\ttype: \"error\",\n\t\t\t\tvalue\n\t\t\t};\n\t\t}\n\t},\n\t{\n\t\tcode: \"8\",\n\t\tname: \"message_annotations\",\n\t\tparse: (value) => {\n\t\t\tif (!Array.isArray(value)) throw new Error(\"\\\"message_annotations\\\" parts expect an array value.\");\n\t\t\treturn {\n\t\t\t\ttype: \"message_annotations\",\n\t\t\t\tvalue\n\t\t\t};\n\t\t}\n\t},\n\t{\n\t\tcode: \"9\",\n\t\tname: \"tool_call\",\n\t\tparse: (value) => {\n\t\t\tif (value == null || typeof value !== \"object\" || !(\"toolCallId\" in value) || typeof value.toolCallId !== \"string\" || !(\"toolName\" in value) || typeof value.toolName !== \"string\" || !(\"args\" in value) || typeof value.args !== \"object\") throw new Error(\"\\\"tool_call\\\" parts expect an object with a \\\"toolCallId\\\", \\\"toolName\\\", and \\\"args\\\" property.\");\n\t\t\treturn {\n\t\t\t\ttype: \"tool_call\",\n\t\t\t\tvalue\n\t\t\t};\n\t\t}\n\t},\n\t{\n\t\tcode: \"a\",\n\t\tname: \"tool_result\",\n\t\tparse: (value) => {\n\t\t\tif (value == null || typeof value !== \"object\" || !(\"toolCallId\" in value) || typeof value.toolCallId !== \"string\" || !(\"result\" in value)) throw new Error(\"\\\"tool_result\\\" parts expect an object with a \\\"toolCallId\\\" and a \\\"result\\\" property.\");\n\t\t\treturn {\n\t\t\t\ttype: \"tool_result\",\n\t\t\t\tvalue\n\t\t\t};\n\t\t}\n\t},\n\t{\n\t\tcode: \"b\",\n\t\tname: \"tool_call_streaming_start\",\n\t\tparse: (value) => {\n\t\t\tif (value == null || typeof value !== \"object\" || !(\"toolCallId\" in value) || typeof value.toolCallId !== \"string\" || !(\"toolName\" in value) || typeof value.toolName !== \"string\") throw new Error(\"\\\"tool_call_streaming_start\\\" parts expect an object with a \\\"toolCallId\\\" and \\\"toolName\\\" property.\");\n\t\t\treturn {\n\t\t\t\ttype: \"tool_call_streaming_start\",\n\t\t\t\tvalue\n\t\t\t};\n\t\t}\n\t},\n\t{\n\t\tcode: \"c\",\n\t\tname: \"tool_call_delta\",\n\t\tparse: (value) => {\n\t\t\tif (value == null || typeof value !== \"object\" || !(\"toolCallId\" in value) || typeof value.toolCallId !== \"string\" || !(\"argsTextDelta\" in value) || typeof value.argsTextDelta !== \"string\") throw new Error(\"\\\"tool_call_delta\\\" parts expect an object with a \\\"toolCallId\\\" and \\\"argsTextDelta\\\" property.\");\n\t\t\treturn {\n\t\t\t\ttype: \"tool_call_delta\",\n\t\t\t\tvalue\n\t\t\t};\n\t\t}\n\t},\n\t{\n\t\tcode: \"d\",\n\t\tname: \"finish_message\",\n\t\tparse: (value) => {\n\t\t\tif (value == null || typeof value !== \"object\" || !(\"finishReason\" in value) || typeof value.finishReason !== \"string\") throw new Error(\"\\\"finish_message\\\" parts expect an object with a \\\"finishReason\\\" property.\");\n\t\t\tconst result = { finishReason: value.finishReason };\n\t\t\tif (\"usage\" in value && value.usage != null && typeof value.usage === \"object\" && \"promptTokens\" in value.usage && \"completionTokens\" in value.usage) result.usage = {\n\t\t\t\tpromptTokens: typeof value.usage.promptTokens === \"number\" ? value.usage.promptTokens : NaN,\n\t\t\t\tcompletionTokens: typeof value.usage.completionTokens === \"number\" ? value.usage.completionTokens : NaN\n\t\t\t};\n\t\t\treturn {\n\t\t\t\ttype: \"finish_message\",\n\t\t\t\tvalue: result\n\t\t\t};\n\t\t}\n\t},\n\t{\n\t\tcode: \"e\",\n\t\tname: \"finish_step\",\n\t\tparse: (value) => {\n\t\t\tif (value == null || typeof value !== \"object\" || !(\"finishReason\" in value) || typeof value.finishReason !== \"string\") throw new Error(\"\\\"finish_step\\\" parts expect an object with a \\\"finishReason\\\" property.\");\n\t\t\tconst result = {\n\t\t\t\tfinishReason: value.finishReason,\n\t\t\t\tisContinued: false\n\t\t\t};\n\t\t\tif (\"usage\" in value && value.usage != null && typeof value.usage === \"object\" && \"promptTokens\" in value.usage && \"completionTokens\" in value.usage) result.usage = {\n\t\t\t\tpromptTokens: typeof value.usage.promptTokens === \"number\" ? value.usage.promptTokens : NaN,\n\t\t\t\tcompletionTokens: typeof value.usage.completionTokens === \"number\" ? value.usage.completionTokens : NaN\n\t\t\t};\n\t\t\tif (\"isContinued\" in value && typeof value.isContinued === \"boolean\") result.isContinued = value.isContinued;\n\t\t\treturn {\n\t\t\t\ttype: \"finish_step\",\n\t\t\t\tvalue: result\n\t\t\t};\n\t\t}\n\t},\n\t{\n\t\tcode: \"f\",\n\t\tname: \"start_step\",\n\t\tparse: (value) => {\n\t\t\tif (value == null || typeof value !== \"object\" || !(\"messageId\" in value) || typeof value.messageId !== \"string\") throw new Error(\"\\\"start_step\\\" parts expect an object with an \\\"id\\\" property.\");\n\t\t\treturn {\n\t\t\t\ttype: \"start_step\",\n\t\t\t\tvalue: { messageId: value.messageId }\n\t\t\t};\n\t\t}\n\t},\n\t{\n\t\tcode: \"g\",\n\t\tname: \"reasoning\",\n\t\tparse: (value) => {\n\t\t\tif (typeof value !== \"string\") throw new Error(\"\\\"reasoning\\\" parts expect a string value.\");\n\t\t\treturn {\n\t\t\t\ttype: \"reasoning\",\n\t\t\t\tvalue\n\t\t\t};\n\t\t}\n\t},\n\t{\n\t\tcode: \"h\",\n\t\tname: \"source\",\n\t\tparse: (value) => {\n\t\t\tif (value == null || typeof value !== \"object\") throw new Error(\"\\\"source\\\" parts expect a Source object.\");\n\t\t\treturn {\n\t\t\t\ttype: \"source\",\n\t\t\t\tvalue\n\t\t\t};\n\t\t}\n\t},\n\t{\n\t\tcode: \"i\",\n\t\tname: \"redacted_reasoning\",\n\t\tparse: (value) => {\n\t\t\tif (value == null || typeof value !== \"object\" || !(\"data\" in value) || typeof value.data !== \"string\") throw new Error(\"\\\"redacted_reasoning\\\" parts expect an object with a \\\"data\\\" property.\");\n\t\t\treturn {\n\t\t\t\ttype: \"redacted_reasoning\",\n\t\t\t\tvalue: { data: value.data }\n\t\t\t};\n\t\t}\n\t},\n\t{\n\t\tcode: \"j\",\n\t\tname: \"reasoning_signature\",\n\t\tparse: (value) => {\n\t\t\tif (value == null || typeof value !== \"object\" || !(\"signature\" in value) || typeof value.signature !== \"string\") throw new Error(\"\\\"reasoning_signature\\\" parts expect an object with a \\\"signature\\\" property.\");\n\t\t\treturn {\n\t\t\t\ttype: \"reasoning_signature\",\n\t\t\t\tvalue: { signature: value.signature }\n\t\t\t};\n\t\t}\n\t},\n\t{\n\t\tcode: \"k\",\n\t\tname: \"file\",\n\t\tparse: (value) => {\n\t\t\tif (value == null || typeof value !== \"object\" || !(\"data\" in value) || typeof value.data !== \"string\" || !(\"mimeType\" in value) || typeof value.mimeType !== \"string\") throw new Error(\"\\\"file\\\" parts expect an object with a \\\"data\\\" and \\\"mimeType\\\" property.\");\n\t\t\treturn {\n\t\t\t\ttype: \"file\",\n\t\t\t\tvalue\n\t\t\t};\n\t\t}\n\t}\n];\nvar dataStreamPartsByCode = Object.fromEntries(dataStreamParts.map((part) => [part.code, part]));\nObject.fromEntries(dataStreamParts.map((part) => [part.name, part.code]));\nvar validCodes2 = dataStreamParts.map((part) => part.code);\nvar parseDataStreamPart = (line) => {\n\tconst firstSeparatorIndex = line.indexOf(\":\");\n\tif (firstSeparatorIndex === -1) throw new Error(\"Failed to parse stream string. No separator found.\");\n\tconst prefix = line.slice(0, firstSeparatorIndex);\n\tif (!validCodes2.includes(prefix)) throw new Error(`Failed to parse stream string. Invalid code ${prefix}.`);\n\tconst code = prefix;\n\tconst textValue = line.slice(firstSeparatorIndex + 1);\n\tconst jsonValue = JSON.parse(textValue);\n\treturn dataStreamPartsByCode[code].parse(jsonValue);\n};\nfunction formatDataStreamPart(type, value) {\n\tconst streamPart = dataStreamParts.find((part) => part.name === type);\n\tif (!streamPart) throw new Error(`Invalid stream part type: ${type}`);\n\treturn `${streamPart.code}:${JSON.stringify(value)}\n`;\n}\nvar NEWLINE = \"\\n\".charCodeAt(0);\nfunction concatChunks(chunks, totalLength) {\n\tconst concatenatedChunks = new Uint8Array(totalLength);\n\tlet offset = 0;\n\tfor (const chunk of chunks) {\n\t\tconcatenatedChunks.set(chunk, offset);\n\t\toffset += chunk.length;\n\t}\n\tchunks.length = 0;\n\treturn concatenatedChunks;\n}\nasync function processDataStream({ stream, onTextPart, onReasoningPart, onReasoningSignaturePart, onRedactedReasoningPart, onSourcePart, onFilePart, onDataPart, onErrorPart, onToolCallStreamingStartPart, onToolCallDeltaPart, onToolCallPart, onToolResultPart, onMessageAnnotationsPart, onFinishMessagePart, onFinishStepPart, onStartStepPart }) {\n\tconst reader = stream.getReader();\n\tconst decoder = new TextDecoder();\n\tconst chunks = [];\n\tlet totalLength = 0;\n\twhile (true) {\n\t\tconst { value } = await reader.read();\n\t\tif (value) {\n\t\t\tchunks.push(value);\n\t\t\ttotalLength += value.length;\n\t\t\tif (value[value.length - 1] !== NEWLINE) continue;\n\t\t}\n\t\tif (chunks.length === 0) break;\n\t\tconst concatenatedChunks = concatChunks(chunks, totalLength);\n\t\ttotalLength = 0;\n\t\tconst streamParts = decoder.decode(concatenatedChunks, { stream: true }).split(\"\\n\").filter((line) => line !== \"\").map(parseDataStreamPart);\n\t\tfor (const { type, value: value2 } of streamParts) switch (type) {\n\t\t\tcase \"text\":\n\t\t\t\tawait (onTextPart == null ? void 0 : onTextPart(value2));\n\t\t\t\tbreak;\n\t\t\tcase \"reasoning\":\n\t\t\t\tawait (onReasoningPart == null ? void 0 : onReasoningPart(value2));\n\t\t\t\tbreak;\n\t\t\tcase \"reasoning_signature\":\n\t\t\t\tawait (onReasoningSignaturePart == null ? void 0 : onReasoningSignaturePart(value2));\n\t\t\t\tbreak;\n\t\t\tcase \"redacted_reasoning\":\n\t\t\t\tawait (onRedactedReasoningPart == null ? void 0 : onRedactedReasoningPart(value2));\n\t\t\t\tbreak;\n\t\t\tcase \"file\":\n\t\t\t\tawait (onFilePart == null ? void 0 : onFilePart(value2));\n\t\t\t\tbreak;\n\t\t\tcase \"source\":\n\t\t\t\tawait (onSourcePart == null ? void 0 : onSourcePart(value2));\n\t\t\t\tbreak;\n\t\t\tcase \"data\":\n\t\t\t\tawait (onDataPart == null ? void 0 : onDataPart(value2));\n\t\t\t\tbreak;\n\t\t\tcase \"error\":\n\t\t\t\tawait (onErrorPart == null ? void 0 : onErrorPart(value2));\n\t\t\t\tbreak;\n\t\t\tcase \"message_annotations\":\n\t\t\t\tawait (onMessageAnnotationsPart == null ? void 0 : onMessageAnnotationsPart(value2));\n\t\t\t\tbreak;\n\t\t\tcase \"tool_call_streaming_start\":\n\t\t\t\tawait (onToolCallStreamingStartPart == null ? void 0 : onToolCallStreamingStartPart(value2));\n\t\t\t\tbreak;\n\t\t\tcase \"tool_call_delta\":\n\t\t\t\tawait (onToolCallDeltaPart == null ? void 0 : onToolCallDeltaPart(value2));\n\t\t\t\tbreak;\n\t\t\tcase \"tool_call\":\n\t\t\t\tawait (onToolCallPart == null ? void 0 : onToolCallPart(value2));\n\t\t\t\tbreak;\n\t\t\tcase \"tool_result\":\n\t\t\t\tawait (onToolResultPart == null ? void 0 : onToolResultPart(value2));\n\t\t\t\tbreak;\n\t\t\tcase \"finish_message\":\n\t\t\t\tawait (onFinishMessagePart == null ? void 0 : onFinishMessagePart(value2));\n\t\t\t\tbreak;\n\t\t\tcase \"finish_step\":\n\t\t\t\tawait (onFinishStepPart == null ? void 0 : onFinishStepPart(value2));\n\t\t\t\tbreak;\n\t\t\tcase \"start_step\":\n\t\t\t\tawait (onStartStepPart == null ? void 0 : onStartStepPart(value2));\n\t\t\t\tbreak;\n\t\t\tdefault: throw new Error(`Unknown stream part type: ${type}`);\n\t\t}\n\t}\n}\nasync function processTextStream({ stream, onTextPart }) {\n\tconst reader = stream.pipeThrough(new TextDecoderStream()).getReader();\n\twhile (true) {\n\t\tconst { done, value } = await reader.read();\n\t\tif (done) break;\n\t\tawait onTextPart(value);\n\t}\n}\nfunction extractMaxToolInvocationStep(toolInvocations) {\n\treturn toolInvocations == null ? void 0 : toolInvocations.reduce((max, toolInvocation) => {\n\t\tvar _a;\n\t\treturn Math.max(max, (_a = toolInvocation.step) != null ? _a : 0);\n\t}, 0);\n}\nfunction isDeepEqualData(obj1, obj2) {\n\tif (obj1 === obj2) return true;\n\tif (obj1 == null || obj2 == null) return false;\n\tif (typeof obj1 !== \"object\" && typeof obj2 !== \"object\") return obj1 === obj2;\n\tif (obj1.constructor !== obj2.constructor) return false;\n\tif (obj1 instanceof Date && obj2 instanceof Date) return obj1.getTime() === obj2.getTime();\n\tif (Array.isArray(obj1)) {\n\t\tif (obj1.length !== obj2.length) return false;\n\t\tfor (let i = 0; i < obj1.length; i++) if (!isDeepEqualData(obj1[i], obj2[i])) return false;\n\t\treturn true;\n\t}\n\tconst keys1 = Object.keys(obj1);\n\tconst keys2 = Object.keys(obj2);\n\tif (keys1.length !== keys2.length) return false;\n\tfor (const key of keys1) {\n\t\tif (!keys2.includes(key)) return false;\n\t\tif (!isDeepEqualData(obj1[key], obj2[key])) return false;\n\t}\n\treturn true;\n}\n\"\\n\".charCodeAt(0);\nfunction zodSchema(zodSchema2, options) {\n\tvar _a;\n\treturn jsonSchema(esm_default(zodSchema2, {\n\t\t$refStrategy: ((_a = options == null ? void 0 : options.useReferences) != null ? _a : false) ? \"root\" : \"none\",\n\t\ttarget: \"jsonSchema7\"\n\t}), { validate: (value) => {\n\t\tconst result = zodSchema2.safeParse(value);\n\t\treturn result.success ? {\n\t\t\tsuccess: true,\n\t\t\tvalue: result.data\n\t\t} : {\n\t\t\tsuccess: false,\n\t\t\terror: result.error\n\t\t};\n\t} });\n}\nvar schemaSymbol = Symbol.for(\"vercel.ai.schema\");\nfunction jsonSchema(jsonSchema2, { validate } = {}) {\n\treturn {\n\t\t[schemaSymbol]: true,\n\t\t_type: void 0,\n\t\t[validatorSymbol]: true,\n\t\tjsonSchema: jsonSchema2,\n\t\tvalidate\n\t};\n}\nfunction isSchema(value) {\n\treturn typeof value === \"object\" && value !== null && schemaSymbol in value && value[schemaSymbol] === true && \"jsonSchema\" in value && \"validate\" in value;\n}\nfunction asSchema(schema) {\n\treturn isSchema(schema) ? schema : zodSchema(schema);\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/build/esm/platform/node/globalThis.js\n/** only globals that common to node and browsers are allowed */\nvar _globalThis = typeof globalThis === \"object\" ? globalThis : global;\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/build/esm/version.js\nvar VERSION = \"1.9.0\";\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/build/esm/internal/semver.js\nvar re = /^(\\d+)\\.(\\d+)\\.(\\d+)(-(.+))?$/;\n/**\n* Create a function to test an API version to see if it is compatible with the provided ownVersion.\n*\n* The returned function has the following semantics:\n* - Exact match is always compatible\n* - Major versions must match exactly\n* - 1.x package cannot use global 2.x package\n* - 2.x package cannot use global 1.x package\n* - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n* - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n* - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n* - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n* - Patch and build tag differences are not considered at this time\n*\n* @param ownVersion version which should be checked against\n*/\nfunction _makeCompatibilityCheck(ownVersion) {\n\tvar acceptedVersions = /* @__PURE__ */ new Set([ownVersion]);\n\tvar rejectedVersions = /* @__PURE__ */ new Set();\n\tvar myVersionMatch = ownVersion.match(re);\n\tif (!myVersionMatch) return function() {\n\t\treturn false;\n\t};\n\tvar ownVersionParsed = {\n\t\tmajor: +myVersionMatch[1],\n\t\tminor: +myVersionMatch[2],\n\t\tpatch: +myVersionMatch[3],\n\t\tprerelease: myVersionMatch[4]\n\t};\n\tif (ownVersionParsed.prerelease != null) return function isExactmatch(globalVersion) {\n\t\treturn globalVersion === ownVersion;\n\t};\n\tfunction _reject(v) {\n\t\trejectedVersions.add(v);\n\t\treturn false;\n\t}\n\tfunction _accept(v) {\n\t\tacceptedVersions.add(v);\n\t\treturn true;\n\t}\n\treturn function isCompatible(globalVersion) {\n\t\tif (acceptedVersions.has(globalVersion)) return true;\n\t\tif (rejectedVersions.has(globalVersion)) return false;\n\t\tvar globalVersionMatch = globalVersion.match(re);\n\t\tif (!globalVersionMatch) return _reject(globalVersion);\n\t\tvar globalVersionParsed = {\n\t\t\tmajor: +globalVersionMatch[1],\n\t\t\tminor: +globalVersionMatch[2],\n\t\t\tpatch: +globalVersionMatch[3],\n\t\t\tprerelease: globalVersionMatch[4]\n\t\t};\n\t\tif (globalVersionParsed.prerelease != null) return _reject(globalVersion);\n\t\tif (ownVersionParsed.major !== globalVersionParsed.major) return _reject(globalVersion);\n\t\tif (ownVersionParsed.major === 0) {\n\t\t\tif (ownVersionParsed.minor === globalVersionParsed.minor && ownVersionParsed.patch <= globalVersionParsed.patch) return _accept(globalVersion);\n\t\t\treturn _reject(globalVersion);\n\t\t}\n\t\tif (ownVersionParsed.minor <= globalVersionParsed.minor) return _accept(globalVersion);\n\t\treturn _reject(globalVersion);\n\t};\n}\n/**\n* Test an API version to see if it is compatible with this API.\n*\n* - Exact match is always compatible\n* - Major versions must match exactly\n* - 1.x package cannot use global 2.x package\n* - 2.x package cannot use global 1.x package\n* - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n* - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n* - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n* - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n* - Patch and build tag differences are not considered at this time\n*\n* @param version version of the API requesting an instance of the global API\n*/\nvar isCompatible = _makeCompatibilityCheck(VERSION);\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/build/esm/internal/global-utils.js\nvar major = VERSION.split(\".\")[0];\nvar GLOBAL_OPENTELEMETRY_API_KEY = Symbol.for(\"opentelemetry.js.api.\" + major);\nvar _global = _globalThis;\nfunction registerGlobal(type, instance, diag, allowOverride) {\n\tvar _a;\n\tif (allowOverride === void 0) allowOverride = false;\n\tvar api = _global[GLOBAL_OPENTELEMETRY_API_KEY] = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) !== null && _a !== void 0 ? _a : { version: VERSION };\n\tif (!allowOverride && api[type]) {\n\t\tvar err = /* @__PURE__ */ new Error(\"@opentelemetry/api: Attempted duplicate registration of API: \" + type);\n\t\tdiag.error(err.stack || err.message);\n\t\treturn false;\n\t}\n\tif (api.version !== \"1.9.0\") {\n\t\tvar err = /* @__PURE__ */ new Error(\"@opentelemetry/api: Registration of version v\" + api.version + \" for \" + type + \" does not match previously registered API v\" + VERSION);\n\t\tdiag.error(err.stack || err.message);\n\t\treturn false;\n\t}\n\tapi[type] = instance;\n\tdiag.debug(\"@opentelemetry/api: Registered a global for \" + type + \" v\" + VERSION + \".\");\n\treturn true;\n}\nfunction getGlobal(type) {\n\tvar _a, _b;\n\tvar globalVersion = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _a === void 0 ? void 0 : _a.version;\n\tif (!globalVersion || !isCompatible(globalVersion)) return;\n\treturn (_b = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _b === void 0 ? void 0 : _b[type];\n}\nfunction unregisterGlobal(type, diag) {\n\tdiag.debug(\"@opentelemetry/api: Unregistering a global for \" + type + \" v\" + VERSION + \".\");\n\tvar api = _global[GLOBAL_OPENTELEMETRY_API_KEY];\n\tif (api) delete api[type];\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/build/esm/diag/ComponentLogger.js\nvar __read$3 = function(o, n) {\n\tvar m = typeof Symbol === \"function\" && o[Symbol.iterator];\n\tif (!m) return o;\n\tvar i = m.call(o), r, ar = [], e;\n\ttry {\n\t\twhile ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n\t} catch (error) {\n\t\te = { error };\n\t} finally {\n\t\ttry {\n\t\t\tif (r && !r.done && (m = i[\"return\"])) m.call(i);\n\t\t} finally {\n\t\t\tif (e) throw e.error;\n\t\t}\n\t}\n\treturn ar;\n};\nvar __spreadArray$3 = function(to, from, pack) {\n\tif (pack || arguments.length === 2) {\n\t\tfor (var i = 0, l = from.length, ar; i < l; i++) if (ar || !(i in from)) {\n\t\t\tif (!ar) ar = Array.prototype.slice.call(from, 0, i);\n\t\t\tar[i] = from[i];\n\t\t}\n\t}\n\treturn to.concat(ar || Array.prototype.slice.call(from));\n};\n/**\n* Component Logger which is meant to be used as part of any component which\n* will add automatically additional namespace in front of the log message.\n* It will then forward all message to global diag logger\n* @example\n* const cLogger = diag.createComponentLogger({ namespace: '@opentelemetry/instrumentation-http' });\n* cLogger.debug('test');\n* // @opentelemetry/instrumentation-http test\n*/\nvar DiagComponentLogger = function() {\n\tfunction DiagComponentLogger(props) {\n\t\tthis._namespace = props.namespace || \"DiagComponentLogger\";\n\t}\n\tDiagComponentLogger.prototype.debug = function() {\n\t\tvar args = [];\n\t\tfor (var _i = 0; _i < arguments.length; _i++) args[_i] = arguments[_i];\n\t\treturn logProxy(\"debug\", this._namespace, args);\n\t};\n\tDiagComponentLogger.prototype.error = function() {\n\t\tvar args = [];\n\t\tfor (var _i = 0; _i < arguments.length; _i++) args[_i] = arguments[_i];\n\t\treturn logProxy(\"error\", this._namespace, args);\n\t};\n\tDiagComponentLogger.prototype.info = function() {\n\t\tvar args = [];\n\t\tfor (var _i = 0; _i < arguments.length; _i++) args[_i] = arguments[_i];\n\t\treturn logProxy(\"info\", this._namespace, args);\n\t};\n\tDiagComponentLogger.prototype.warn = function() {\n\t\tvar args = [];\n\t\tfor (var _i = 0; _i < arguments.length; _i++) args[_i] = arguments[_i];\n\t\treturn logProxy(\"warn\", this._namespace, args);\n\t};\n\tDiagComponentLogger.prototype.verbose = function() {\n\t\tvar args = [];\n\t\tfor (var _i = 0; _i < arguments.length; _i++) args[_i] = arguments[_i];\n\t\treturn logProxy(\"verbose\", this._namespace, args);\n\t};\n\treturn DiagComponentLogger;\n}();\nfunction logProxy(funcName, namespace, args) {\n\tvar logger = getGlobal(\"diag\");\n\tif (!logger) return;\n\targs.unshift(namespace);\n\treturn logger[funcName].apply(logger, __spreadArray$3([], __read$3(args), false));\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/build/esm/diag/types.js\n/**\n* Defines the available internal logging levels for the diagnostic logger, the numeric values\n* of the levels are defined to match the original values from the initial LogLevel to avoid\n* compatibility/migration issues for any implementation that assume the numeric ordering.\n*/\nvar DiagLogLevel;\n(function(DiagLogLevel) {\n\t/** Diagnostic Logging level setting to disable all logging (except and forced logs) */\n\tDiagLogLevel[DiagLogLevel[\"NONE\"] = 0] = \"NONE\";\n\t/** Identifies an error scenario */\n\tDiagLogLevel[DiagLogLevel[\"ERROR\"] = 30] = \"ERROR\";\n\t/** Identifies a warning scenario */\n\tDiagLogLevel[DiagLogLevel[\"WARN\"] = 50] = \"WARN\";\n\t/** General informational log message */\n\tDiagLogLevel[DiagLogLevel[\"INFO\"] = 60] = \"INFO\";\n\t/** General debug log message */\n\tDiagLogLevel[DiagLogLevel[\"DEBUG\"] = 70] = \"DEBUG\";\n\t/**\n\t* Detailed trace level logging should only be used for development, should only be set\n\t* in a development environment.\n\t*/\n\tDiagLogLevel[DiagLogLevel[\"VERBOSE\"] = 80] = \"VERBOSE\";\n\t/** Used to set the logging level to include all logging */\n\tDiagLogLevel[DiagLogLevel[\"ALL\"] = 9999] = \"ALL\";\n})(DiagLogLevel || (DiagLogLevel = {}));\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/build/esm/diag/internal/logLevelLogger.js\nfunction createLogLevelDiagLogger(maxLevel, logger) {\n\tif (maxLevel < DiagLogLevel.NONE) maxLevel = DiagLogLevel.NONE;\n\telse if (maxLevel > DiagLogLevel.ALL) maxLevel = DiagLogLevel.ALL;\n\tlogger = logger || {};\n\tfunction _filterFunc(funcName, theLevel) {\n\t\tvar theFunc = logger[funcName];\n\t\tif (typeof theFunc === \"function\" && maxLevel >= theLevel) return theFunc.bind(logger);\n\t\treturn function() {};\n\t}\n\treturn {\n\t\terror: _filterFunc(\"error\", DiagLogLevel.ERROR),\n\t\twarn: _filterFunc(\"warn\", DiagLogLevel.WARN),\n\t\tinfo: _filterFunc(\"info\", DiagLogLevel.INFO),\n\t\tdebug: _filterFunc(\"debug\", DiagLogLevel.DEBUG),\n\t\tverbose: _filterFunc(\"verbose\", DiagLogLevel.VERBOSE)\n\t};\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/build/esm/api/diag.js\nvar __read$2 = function(o, n) {\n\tvar m = typeof Symbol === \"function\" && o[Symbol.iterator];\n\tif (!m) return o;\n\tvar i = m.call(o), r, ar = [], e;\n\ttry {\n\t\twhile ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n\t} catch (error) {\n\t\te = { error };\n\t} finally {\n\t\ttry {\n\t\t\tif (r && !r.done && (m = i[\"return\"])) m.call(i);\n\t\t} finally {\n\t\t\tif (e) throw e.error;\n\t\t}\n\t}\n\treturn ar;\n};\nvar __spreadArray$2 = function(to, from, pack) {\n\tif (pack || arguments.length === 2) {\n\t\tfor (var i = 0, l = from.length, ar; i < l; i++) if (ar || !(i in from)) {\n\t\t\tif (!ar) ar = Array.prototype.slice.call(from, 0, i);\n\t\t\tar[i] = from[i];\n\t\t}\n\t}\n\treturn to.concat(ar || Array.prototype.slice.call(from));\n};\nvar API_NAME$2 = \"diag\";\n/**\n* Singleton object which represents the entry point to the OpenTelemetry internal\n* diagnostic API\n*/\nvar DiagAPI = function() {\n\t/**\n\t* Private internal constructor\n\t* @private\n\t*/\n\tfunction DiagAPI() {\n\t\tfunction _logProxy(funcName) {\n\t\t\treturn function() {\n\t\t\t\tvar args = [];\n\t\t\t\tfor (var _i = 0; _i < arguments.length; _i++) args[_i] = arguments[_i];\n\t\t\t\tvar logger = getGlobal(\"diag\");\n\t\t\t\tif (!logger) return;\n\t\t\t\treturn logger[funcName].apply(logger, __spreadArray$2([], __read$2(args), false));\n\t\t\t};\n\t\t}\n\t\tvar self = this;\n\t\tvar setLogger = function(logger, optionsOrLogLevel) {\n\t\t\tvar _a, _b, _c;\n\t\t\tif (optionsOrLogLevel === void 0) optionsOrLogLevel = { logLevel: DiagLogLevel.INFO };\n\t\t\tif (logger === self) {\n\t\t\t\tvar err = /* @__PURE__ */ new Error(\"Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation\");\n\t\t\t\tself.error((_a = err.stack) !== null && _a !== void 0 ? _a : err.message);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (typeof optionsOrLogLevel === \"number\") optionsOrLogLevel = { logLevel: optionsOrLogLevel };\n\t\t\tvar oldLogger = getGlobal(\"diag\");\n\t\t\tvar newLogger = createLogLevelDiagLogger((_b = optionsOrLogLevel.logLevel) !== null && _b !== void 0 ? _b : DiagLogLevel.INFO, logger);\n\t\t\tif (oldLogger && !optionsOrLogLevel.suppressOverrideMessage) {\n\t\t\t\tvar stack = (_c = (/* @__PURE__ */ new Error()).stack) !== null && _c !== void 0 ? _c : \"<failed to generate stacktrace>\";\n\t\t\t\toldLogger.warn(\"Current logger will be overwritten from \" + stack);\n\t\t\t\tnewLogger.warn(\"Current logger will overwrite one already registered from \" + stack);\n\t\t\t}\n\t\t\treturn registerGlobal(\"diag\", newLogger, self, true);\n\t\t};\n\t\tself.setLogger = setLogger;\n\t\tself.disable = function() {\n\t\t\tunregisterGlobal(API_NAME$2, self);\n\t\t};\n\t\tself.createComponentLogger = function(options) {\n\t\t\treturn new DiagComponentLogger(options);\n\t\t};\n\t\tself.verbose = _logProxy(\"verbose\");\n\t\tself.debug = _logProxy(\"debug\");\n\t\tself.info = _logProxy(\"info\");\n\t\tself.warn = _logProxy(\"warn\");\n\t\tself.error = _logProxy(\"error\");\n\t}\n\t/** Get the singleton instance of the DiagAPI API */\n\tDiagAPI.instance = function() {\n\t\tif (!this._instance) this._instance = new DiagAPI();\n\t\treturn this._instance;\n\t};\n\treturn DiagAPI;\n}();\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/build/esm/context/context.js\n/** Get a key to uniquely identify a context value */\nfunction createContextKey(description) {\n\treturn Symbol.for(description);\n}\n/** The root context is used as the default parent context when there is no active context */\nvar ROOT_CONTEXT = new (function() {\n\t/**\n\t* Construct a new context which inherits values from an optional parent context.\n\t*\n\t* @param parentContext a context from which to inherit values\n\t*/\n\tfunction BaseContext(parentContext) {\n\t\tvar self = this;\n\t\tself._currentContext = parentContext ? new Map(parentContext) : /* @__PURE__ */ new Map();\n\t\tself.getValue = function(key) {\n\t\t\treturn self._currentContext.get(key);\n\t\t};\n\t\tself.setValue = function(key, value) {\n\t\t\tvar context = new BaseContext(self._currentContext);\n\t\t\tcontext._currentContext.set(key, value);\n\t\t\treturn context;\n\t\t};\n\t\tself.deleteValue = function(key) {\n\t\t\tvar context = new BaseContext(self._currentContext);\n\t\t\tcontext._currentContext.delete(key);\n\t\t\treturn context;\n\t\t};\n\t}\n\treturn BaseContext;\n}())();\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/build/esm/context/NoopContextManager.js\nvar __read$1 = function(o, n) {\n\tvar m = typeof Symbol === \"function\" && o[Symbol.iterator];\n\tif (!m) return o;\n\tvar i = m.call(o), r, ar = [], e;\n\ttry {\n\t\twhile ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n\t} catch (error) {\n\t\te = { error };\n\t} finally {\n\t\ttry {\n\t\t\tif (r && !r.done && (m = i[\"return\"])) m.call(i);\n\t\t} finally {\n\t\t\tif (e) throw e.error;\n\t\t}\n\t}\n\treturn ar;\n};\nvar __spreadArray$1 = function(to, from, pack) {\n\tif (pack || arguments.length === 2) {\n\t\tfor (var i = 0, l = from.length, ar; i < l; i++) if (ar || !(i in from)) {\n\t\t\tif (!ar) ar = Array.prototype.slice.call(from, 0, i);\n\t\t\tar[i] = from[i];\n\t\t}\n\t}\n\treturn to.concat(ar || Array.prototype.slice.call(from));\n};\nvar NoopContextManager = function() {\n\tfunction NoopContextManager() {}\n\tNoopContextManager.prototype.active = function() {\n\t\treturn ROOT_CONTEXT;\n\t};\n\tNoopContextManager.prototype.with = function(_context, fn, thisArg) {\n\t\tvar args = [];\n\t\tfor (var _i = 3; _i < arguments.length; _i++) args[_i - 3] = arguments[_i];\n\t\treturn fn.call.apply(fn, __spreadArray$1([thisArg], __read$1(args), false));\n\t};\n\tNoopContextManager.prototype.bind = function(_context, target) {\n\t\treturn target;\n\t};\n\tNoopContextManager.prototype.enable = function() {\n\t\treturn this;\n\t};\n\tNoopContextManager.prototype.disable = function() {\n\t\treturn this;\n\t};\n\treturn NoopContextManager;\n}();\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/build/esm/api/context.js\nvar __read = function(o, n) {\n\tvar m = typeof Symbol === \"function\" && o[Symbol.iterator];\n\tif (!m) return o;\n\tvar i = m.call(o), r, ar = [], e;\n\ttry {\n\t\twhile ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n\t} catch (error) {\n\t\te = { error };\n\t} finally {\n\t\ttry {\n\t\t\tif (r && !r.done && (m = i[\"return\"])) m.call(i);\n\t\t} finally {\n\t\t\tif (e) throw e.error;\n\t\t}\n\t}\n\treturn ar;\n};\nvar __spreadArray = function(to, from, pack) {\n\tif (pack || arguments.length === 2) {\n\t\tfor (var i = 0, l = from.length, ar; i < l; i++) if (ar || !(i in from)) {\n\t\t\tif (!ar) ar = Array.prototype.slice.call(from, 0, i);\n\t\t\tar[i] = from[i];\n\t\t}\n\t}\n\treturn to.concat(ar || Array.prototype.slice.call(from));\n};\nvar API_NAME$1 = \"context\";\nvar NOOP_CONTEXT_MANAGER = new NoopContextManager();\n/**\n* Singleton object which represents the entry point to the OpenTelemetry Context API\n*/\nvar ContextAPI = function() {\n\t/** Empty private constructor prevents end users from constructing a new instance of the API */\n\tfunction ContextAPI() {}\n\t/** Get the singleton instance of the Context API */\n\tContextAPI.getInstance = function() {\n\t\tif (!this._instance) this._instance = new ContextAPI();\n\t\treturn this._instance;\n\t};\n\t/**\n\t* Set the current context manager.\n\t*\n\t* @returns true if the context manager was successfully registered, else false\n\t*/\n\tContextAPI.prototype.setGlobalContextManager = function(contextManager) {\n\t\treturn registerGlobal(API_NAME$1, contextManager, DiagAPI.instance());\n\t};\n\t/**\n\t* Get the currently active context\n\t*/\n\tContextAPI.prototype.active = function() {\n\t\treturn this._getContextManager().active();\n\t};\n\t/**\n\t* Execute a function with an active context\n\t*\n\t* @param context context to be active during function execution\n\t* @param fn function to execute in a context\n\t* @param thisArg optional receiver to be used for calling fn\n\t* @param args optional arguments forwarded to fn\n\t*/\n\tContextAPI.prototype.with = function(context, fn, thisArg) {\n\t\tvar _a;\n\t\tvar args = [];\n\t\tfor (var _i = 3; _i < arguments.length; _i++) args[_i - 3] = arguments[_i];\n\t\treturn (_a = this._getContextManager()).with.apply(_a, __spreadArray([\n\t\t\tcontext,\n\t\t\tfn,\n\t\t\tthisArg\n\t\t], __read(args), false));\n\t};\n\t/**\n\t* Bind a context to a target function or event emitter\n\t*\n\t* @param context context to bind to the event emitter or function. Defaults to the currently active context\n\t* @param target function or event emitter to bind\n\t*/\n\tContextAPI.prototype.bind = function(context, target) {\n\t\treturn this._getContextManager().bind(context, target);\n\t};\n\tContextAPI.prototype._getContextManager = function() {\n\t\treturn getGlobal(API_NAME$1) || NOOP_CONTEXT_MANAGER;\n\t};\n\t/** Disable and remove the global context manager */\n\tContextAPI.prototype.disable = function() {\n\t\tthis._getContextManager().disable();\n\t\tunregisterGlobal(API_NAME$1, DiagAPI.instance());\n\t};\n\treturn ContextAPI;\n}();\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/build/esm/trace/trace_flags.js\nvar TraceFlags;\n(function(TraceFlags) {\n\t/** Represents no flag set. */\n\tTraceFlags[TraceFlags[\"NONE\"] = 0] = \"NONE\";\n\t/** Bit to represent whether trace is sampled in trace flags. */\n\tTraceFlags[TraceFlags[\"SAMPLED\"] = 1] = \"SAMPLED\";\n})(TraceFlags || (TraceFlags = {}));\nvar INVALID_SPAN_CONTEXT = {\n\ttraceId: \"00000000000000000000000000000000\",\n\tspanId: \"0000000000000000\",\n\ttraceFlags: TraceFlags.NONE\n};\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/build/esm/trace/NonRecordingSpan.js\n/**\n* The NonRecordingSpan is the default {@link Span} that is used when no Span\n* implementation is available. All operations are no-op including context\n* propagation.\n*/\nvar NonRecordingSpan = function() {\n\tfunction NonRecordingSpan(_spanContext) {\n\t\tif (_spanContext === void 0) _spanContext = INVALID_SPAN_CONTEXT;\n\t\tthis._spanContext = _spanContext;\n\t}\n\tNonRecordingSpan.prototype.spanContext = function() {\n\t\treturn this._spanContext;\n\t};\n\tNonRecordingSpan.prototype.setAttribute = function(_key, _value) {\n\t\treturn this;\n\t};\n\tNonRecordingSpan.prototype.setAttributes = function(_attributes) {\n\t\treturn this;\n\t};\n\tNonRecordingSpan.prototype.addEvent = function(_name, _attributes) {\n\t\treturn this;\n\t};\n\tNonRecordingSpan.prototype.addLink = function(_link) {\n\t\treturn this;\n\t};\n\tNonRecordingSpan.prototype.addLinks = function(_links) {\n\t\treturn this;\n\t};\n\tNonRecordingSpan.prototype.setStatus = function(_status) {\n\t\treturn this;\n\t};\n\tNonRecordingSpan.prototype.updateName = function(_name) {\n\t\treturn this;\n\t};\n\tNonRecordingSpan.prototype.end = function(_endTime) {};\n\tNonRecordingSpan.prototype.isRecording = function() {\n\t\treturn false;\n\t};\n\tNonRecordingSpan.prototype.recordException = function(_exception, _time) {};\n\treturn NonRecordingSpan;\n}();\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/build/esm/trace/context-utils.js\n/**\n* span key\n*/\nvar SPAN_KEY = createContextKey(\"OpenTelemetry Context Key SPAN\");\n/**\n* Return the span if one exists\n*\n* @param context context to get span from\n*/\nfunction getSpan(context) {\n\treturn context.getValue(SPAN_KEY) || void 0;\n}\n/**\n* Gets the span from the current context, if one exists.\n*/\nfunction getActiveSpan() {\n\treturn getSpan(ContextAPI.getInstance().active());\n}\n/**\n* Set the span on a context\n*\n* @param context context to use as parent\n* @param span span to set active\n*/\nfunction setSpan(context, span) {\n\treturn context.setValue(SPAN_KEY, span);\n}\n/**\n* Remove current span stored in the context\n*\n* @param context context to delete span from\n*/\nfunction deleteSpan(context) {\n\treturn context.deleteValue(SPAN_KEY);\n}\n/**\n* Wrap span context in a NoopSpan and set as span in a new\n* context\n*\n* @param context context to set active span on\n* @param spanContext span context to be wrapped\n*/\nfunction setSpanContext(context, spanContext) {\n\treturn setSpan(context, new NonRecordingSpan(spanContext));\n}\n/**\n* Get the span context of the span if it exists.\n*\n* @param context context to get values from\n*/\nfunction getSpanContext(context) {\n\tvar _a;\n\treturn (_a = getSpan(context)) === null || _a === void 0 ? void 0 : _a.spanContext();\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/build/esm/trace/spancontext-utils.js\nvar VALID_TRACEID_REGEX = /^([0-9a-f]{32})$/i;\nvar VALID_SPANID_REGEX = /^[0-9a-f]{16}$/i;\nfunction isValidTraceId(traceId) {\n\treturn VALID_TRACEID_REGEX.test(traceId) && traceId !== \"00000000000000000000000000000000\";\n}\nfunction isValidSpanId(spanId) {\n\treturn VALID_SPANID_REGEX.test(spanId) && spanId !== \"0000000000000000\";\n}\n/**\n* Returns true if this {@link SpanContext} is valid.\n* @return true if this {@link SpanContext} is valid.\n*/\nfunction isSpanContextValid(spanContext) {\n\treturn isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId);\n}\n/**\n* Wrap the given {@link SpanContext} in a new non-recording {@link Span}\n*\n* @param spanContext span context to be wrapped\n* @returns a new non-recording {@link Span} with the provided context\n*/\nfunction wrapSpanContext(spanContext) {\n\treturn new NonRecordingSpan(spanContext);\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/build/esm/trace/NoopTracer.js\nvar contextApi = ContextAPI.getInstance();\n/**\n* No-op implementations of {@link Tracer}.\n*/\nvar NoopTracer = function() {\n\tfunction NoopTracer() {}\n\tNoopTracer.prototype.startSpan = function(name, options, context) {\n\t\tif (context === void 0) context = contextApi.active();\n\t\tif (Boolean(options === null || options === void 0 ? void 0 : options.root)) return new NonRecordingSpan();\n\t\tvar parentFromContext = context && getSpanContext(context);\n\t\tif (isSpanContext(parentFromContext) && isSpanContextValid(parentFromContext)) return new NonRecordingSpan(parentFromContext);\n\t\telse return new NonRecordingSpan();\n\t};\n\tNoopTracer.prototype.startActiveSpan = function(name, arg2, arg3, arg4) {\n\t\tvar opts;\n\t\tvar ctx;\n\t\tvar fn;\n\t\tif (arguments.length < 2) return;\n\t\telse if (arguments.length === 2) fn = arg2;\n\t\telse if (arguments.length === 3) {\n\t\t\topts = arg2;\n\t\t\tfn = arg3;\n\t\t} else {\n\t\t\topts = arg2;\n\t\t\tctx = arg3;\n\t\t\tfn = arg4;\n\t\t}\n\t\tvar parentContext = ctx !== null && ctx !== void 0 ? ctx : contextApi.active();\n\t\tvar span = this.startSpan(name, opts, parentContext);\n\t\tvar contextWithSpanSet = setSpan(parentContext, span);\n\t\treturn contextApi.with(contextWithSpanSet, fn, void 0, span);\n\t};\n\treturn NoopTracer;\n}();\nfunction isSpanContext(spanContext) {\n\treturn typeof spanContext === \"object\" && typeof spanContext[\"spanId\"] === \"string\" && typeof spanContext[\"traceId\"] === \"string\" && typeof spanContext[\"traceFlags\"] === \"number\";\n}\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracer.js\nvar NOOP_TRACER = new NoopTracer();\n/**\n* Proxy tracer provided by the proxy tracer provider\n*/\nvar ProxyTracer = function() {\n\tfunction ProxyTracer(_provider, name, version, options) {\n\t\tthis._provider = _provider;\n\t\tthis.name = name;\n\t\tthis.version = version;\n\t\tthis.options = options;\n\t}\n\tProxyTracer.prototype.startSpan = function(name, options, context) {\n\t\treturn this._getTracer().startSpan(name, options, context);\n\t};\n\tProxyTracer.prototype.startActiveSpan = function(_name, _options, _context, _fn) {\n\t\tvar tracer = this._getTracer();\n\t\treturn Reflect.apply(tracer.startActiveSpan, tracer, arguments);\n\t};\n\t/**\n\t* Try to get a tracer from the proxy tracer provider.\n\t* If the proxy tracer provider has no delegate, return a noop tracer.\n\t*/\n\tProxyTracer.prototype._getTracer = function() {\n\t\tif (this._delegate) return this._delegate;\n\t\tvar tracer = this._provider.getDelegateTracer(this.name, this.version, this.options);\n\t\tif (!tracer) return NOOP_TRACER;\n\t\tthis._delegate = tracer;\n\t\treturn this._delegate;\n\t};\n\treturn ProxyTracer;\n}();\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracerProvider.js\nvar NOOP_TRACER_PROVIDER = new (function() {\n\tfunction NoopTracerProvider() {}\n\tNoopTracerProvider.prototype.getTracer = function(_name, _version, _options) {\n\t\treturn new NoopTracer();\n\t};\n\treturn NoopTracerProvider;\n}())();\n/**\n* Tracer provider which provides {@link ProxyTracer}s.\n*\n* Before a delegate is set, tracers provided are NoOp.\n* When a delegate is set, traces are provided from the delegate.\n* When a delegate is set after tracers have already been provided,\n* all tracers already provided will use the provided delegate implementation.\n*/\nvar ProxyTracerProvider = function() {\n\tfunction ProxyTracerProvider() {}\n\t/**\n\t* Get a {@link ProxyTracer}\n\t*/\n\tProxyTracerProvider.prototype.getTracer = function(name, version, options) {\n\t\tvar _a;\n\t\treturn (_a = this.getDelegateTracer(name, version, options)) !== null && _a !== void 0 ? _a : new ProxyTracer(this, name, version, options);\n\t};\n\tProxyTracerProvider.prototype.getDelegate = function() {\n\t\tvar _a;\n\t\treturn (_a = this._delegate) !== null && _a !== void 0 ? _a : NOOP_TRACER_PROVIDER;\n\t};\n\t/**\n\t* Set the delegate tracer provider\n\t*/\n\tProxyTracerProvider.prototype.setDelegate = function(delegate) {\n\t\tthis._delegate = delegate;\n\t};\n\tProxyTracerProvider.prototype.getDelegateTracer = function(name, version, options) {\n\t\tvar _a;\n\t\treturn (_a = this._delegate) === null || _a === void 0 ? void 0 : _a.getTracer(name, version, options);\n\t};\n\treturn ProxyTracerProvider;\n}();\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/build/esm/trace/status.js\n/**\n* An enumeration of status codes.\n*/\nvar SpanStatusCode;\n(function(SpanStatusCode) {\n\t/**\n\t* The default status.\n\t*/\n\tSpanStatusCode[SpanStatusCode[\"UNSET\"] = 0] = \"UNSET\";\n\t/**\n\t* The operation has been validated by an Application developer or\n\t* Operator to have completed successfully.\n\t*/\n\tSpanStatusCode[SpanStatusCode[\"OK\"] = 1] = \"OK\";\n\t/**\n\t* The operation contains an error.\n\t*/\n\tSpanStatusCode[SpanStatusCode[\"ERROR\"] = 2] = \"ERROR\";\n})(SpanStatusCode || (SpanStatusCode = {}));\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/build/esm/api/trace.js\nvar API_NAME = \"trace\";\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@opentelemetry/api/1.9.0/ee469078ed078052a7533b2805abc7686d72155c80f67e8929d9d1ae6c630f05/node_modules/@opentelemetry/api/build/esm/trace-api.js\n/** Entrypoint for trace API */\nvar trace = function() {\n\t/** Empty private constructor prevents end users from constructing a new instance of the API */\n\tfunction TraceAPI() {\n\t\tthis._proxyTracerProvider = new ProxyTracerProvider();\n\t\tthis.wrapSpanContext = wrapSpanContext;\n\t\tthis.isSpanContextValid = isSpanContextValid;\n\t\tthis.deleteSpan = deleteSpan;\n\t\tthis.getSpan = getSpan;\n\t\tthis.getActiveSpan = getActiveSpan;\n\t\tthis.getSpanContext = getSpanContext;\n\t\tthis.setSpan = setSpan;\n\t\tthis.setSpanContext = setSpanContext;\n\t}\n\t/** Get the singleton instance of the Trace API */\n\tTraceAPI.getInstance = function() {\n\t\tif (!this._instance) this._instance = new TraceAPI();\n\t\treturn this._instance;\n\t};\n\t/**\n\t* Set the current global tracer.\n\t*\n\t* @returns true if the tracer provider was successfully registered, else false\n\t*/\n\tTraceAPI.prototype.setGlobalTracerProvider = function(provider) {\n\t\tvar success = registerGlobal(API_NAME, this._proxyTracerProvider, DiagAPI.instance());\n\t\tif (success) this._proxyTracerProvider.setDelegate(provider);\n\t\treturn success;\n\t};\n\t/**\n\t* Returns the global tracer provider.\n\t*/\n\tTraceAPI.prototype.getTracerProvider = function() {\n\t\treturn getGlobal(API_NAME) || this._proxyTracerProvider;\n\t};\n\t/**\n\t* Returns a tracer from the global tracer provider.\n\t*/\n\tTraceAPI.prototype.getTracer = function(name, version) {\n\t\treturn this.getTracerProvider().getTracer(name, version);\n\t};\n\t/** Remove the global tracer provider */\n\tTraceAPI.prototype.disable = function() {\n\t\tunregisterGlobal(API_NAME, DiagAPI.instance());\n\t\tthis._proxyTracerProvider = new ProxyTracerProvider();\n\t};\n\treturn TraceAPI;\n}().getInstance();\n//#endregion\n//#region ../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/ai/4.3.19/25573f8c23f9af614acea37c286c856ce3902467b7cf443a0a6e39c9d659b038/node_modules/ai/dist/index.mjs\nvar __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n\tfor (var name17 in all) __defProp(target, name17, {\n\t\tget: all[name17],\n\t\tenumerable: true\n\t});\n};\nfunction createDataStream({ execute, onError = () => \"An error occurred.\" }) {\n\tlet controller;\n\tconst ongoingStreamPromises = [];\n\tconst stream = new ReadableStream({ start(controllerArg) {\n\t\tcontroller = controllerArg;\n\t} });\n\tfunction safeEnqueue(data) {\n\t\ttry {\n\t\t\tcontroller.enqueue(data);\n\t\t} catch (error) {}\n\t}\n\ttry {\n\t\tconst result = execute({\n\t\t\twrite(data) {\n\t\t\t\tsafeEnqueue(data);\n\t\t\t},\n\t\t\twriteData(data) {\n\t\t\t\tsafeEnqueue(formatDataStreamPart(\"data\", [data]));\n\t\t\t},\n\t\t\twriteMessageAnnotation(annotation) {\n\t\t\t\tsafeEnqueue(formatDataStreamPart(\"message_annotations\", [annotation]));\n\t\t\t},\n\t\t\twriteSource(source) {\n\t\t\t\tsafeEnqueue(formatDataStreamPart(\"source\", source));\n\t\t\t},\n\t\t\tmerge(streamArg) {\n\t\t\t\tongoingStreamPromises.push((async () => {\n\t\t\t\t\tconst reader = streamArg.getReader();\n\t\t\t\t\twhile (true) {\n\t\t\t\t\t\tconst { done, value } = await reader.read();\n\t\t\t\t\t\tif (done) break;\n\t\t\t\t\t\tsafeEnqueue(value);\n\t\t\t\t\t}\n\t\t\t\t})().catch((error) => {\n\t\t\t\t\tsafeEnqueue(formatDataStreamPart(\"error\", onError(error)));\n\t\t\t\t}));\n\t\t\t},\n\t\t\tonError\n\t\t});\n\t\tif (result) ongoingStreamPromises.push(result.catch((error) => {\n\t\t\tsafeEnqueue(formatDataStreamPart(\"error\", onError(error)));\n\t\t}));\n\t} catch (error) {\n\t\tsafeEnqueue(formatDataStreamPart(\"error\", onError(error)));\n\t}\n\tnew Promise(async (resolve) => {\n\t\twhile (ongoingStreamPromises.length > 0) await ongoingStreamPromises.shift();\n\t\tresolve();\n\t}).finally(() => {\n\t\ttry {\n\t\t\tcontroller.close();\n\t\t} catch (error) {}\n\t});\n\treturn stream;\n}\nfunction prepareResponseHeaders(headers, { contentType, dataStreamVersion }) {\n\tconst responseHeaders = new Headers(headers != null ? headers : {});\n\tif (!responseHeaders.has(\"Content-Type\")) responseHeaders.set(\"Content-Type\", contentType);\n\tif (dataStreamVersion !== void 0) responseHeaders.set(\"X-Vercel-AI-Data-Stream\", dataStreamVersion);\n\treturn responseHeaders;\n}\nfunction createDataStreamResponse({ status, statusText, headers, execute, onError }) {\n\treturn new Response(createDataStream({\n\t\texecute,\n\t\tonError\n\t}).pipeThrough(new TextEncoderStream()), {\n\t\tstatus,\n\t\tstatusText,\n\t\theaders: prepareResponseHeaders(headers, {\n\t\t\tcontentType: \"text/plain; charset=utf-8\",\n\t\t\tdataStreamVersion: \"v1\"\n\t\t})\n\t});\n}\nfunction prepareOutgoingHttpHeaders(headers, { contentType, dataStreamVersion }) {\n\tconst outgoingHeaders = {};\n\tif (headers != null) for (const [key, value] of Object.entries(headers)) outgoingHeaders[key] = value;\n\tif (outgoingHeaders[\"Content-Type\"] == null) outgoingHeaders[\"Content-Type\"] = contentType;\n\tif (dataStreamVersion !== void 0) outgoingHeaders[\"X-Vercel-AI-Data-Stream\"] = dataStreamVersion;\n\treturn outgoingHeaders;\n}\nfunction writeToServerResponse({ response, status, statusText, headers, stream }) {\n\tresponse.writeHead(status != null ? status : 200, statusText, headers);\n\tconst reader = stream.getReader();\n\tconst read = async () => {\n\t\ttry {\n\t\t\twhile (true) {\n\t\t\t\tconst { done, value } = await reader.read();\n\t\t\t\tif (done) break;\n\t\t\t\tresponse.write(value);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tresponse.end();\n\t\t}\n\t};\n\tread();\n}\nfunction pipeDataStreamToResponse(response, { status, statusText, headers, execute, onError }) {\n\twriteToServerResponse({\n\t\tresponse,\n\t\tstatus,\n\t\tstatusText,\n\t\theaders: prepareOutgoingHttpHeaders(headers, {\n\t\t\tcontentType: \"text/plain; charset=utf-8\",\n\t\t\tdataStreamVersion: \"v1\"\n\t\t}),\n\t\tstream: createDataStream({\n\t\t\texecute,\n\t\t\tonError\n\t\t}).pipeThrough(new TextEncoderStream())\n\t});\n}\nvar UnsupportedModelVersionError = class extends AISDKError {\n\tconstructor() {\n\t\tsuper({\n\t\t\tname: \"AI_UnsupportedModelVersionError\",\n\t\t\tmessage: `Unsupported model version. AI SDK 4 only supports models that implement specification version \"v1\". Please upgrade to AI SDK 5 to use this model.`\n\t\t});\n\t}\n};\nvar name = \"AI_InvalidArgumentError\";\nvar marker = `vercel.ai.error.${name}`;\nvar symbol = Symbol.for(marker);\nvar _a;\nvar InvalidArgumentError = class extends AISDKError {\n\tconstructor({ parameter, value, message }) {\n\t\tsuper({\n\t\t\tname,\n\t\t\tmessage: `Invalid argument for parameter ${parameter}: ${message}`\n\t\t});\n\t\tthis[_a] = true;\n\t\tthis.parameter = parameter;\n\t\tthis.value = value;\n\t}\n\tstatic isInstance(error) {\n\t\treturn AISDKError.hasMarker(error, marker);\n\t}\n};\n_a = symbol;\nvar name2 = \"AI_RetryError\";\nvar marker2 = `vercel.ai.error.${name2}`;\nvar symbol2 = Symbol.for(marker2);\nvar _a2;\nvar RetryError = class extends AISDKError {\n\tconstructor({ message, reason, errors }) {\n\t\tsuper({\n\t\t\tname: name2,\n\t\t\tmessage\n\t\t});\n\t\tthis[_a2] = true;\n\t\tthis.reason = reason;\n\t\tthis.errors = errors;\n\t\tthis.lastError = errors[errors.length - 1];\n\t}\n\tstatic isInstance(error) {\n\t\treturn AISDKError.hasMarker(error, marker2);\n\t}\n};\n_a2 = symbol2;\nvar retryWithExponentialBackoff = ({ maxRetries = 2, initialDelayInMs = 2e3, backoffFactor = 2 } = {}) => async (f) => _retryWithExponentialBackoff(f, {\n\tmaxRetries,\n\tdelayInMs: initialDelayInMs,\n\tbackoffFactor\n});\nasync function _retryWithExponentialBackoff(f, { maxRetries, delayInMs, backoffFactor }, errors = []) {\n\ttry {\n\t\treturn await f();\n\t} catch (error) {\n\t\tif (isAbortError(error)) throw error;\n\t\tif (maxRetries === 0) throw error;\n\t\tconst errorMessage = getErrorMessage(error);\n\t\tconst newErrors = [...errors, error];\n\t\tconst tryNumber = newErrors.length;\n\t\tif (tryNumber > maxRetries) throw new RetryError({\n\t\t\tmessage: `Failed after ${tryNumber} attempts. Last error: ${errorMessage}`,\n\t\t\treason: \"maxRetriesExceeded\",\n\t\t\terrors: newErrors\n\t\t});\n\t\tif (error instanceof Error && APICallError.isInstance(error) && error.isRetryable === true && tryNumber <= maxRetries) {\n\t\t\tawait delay(delayInMs);\n\t\t\treturn _retryWithExponentialBackoff(f, {\n\t\t\t\tmaxRetries,\n\t\t\t\tdelayInMs: backoffFactor * delayInMs,\n\t\t\t\tbackoffFactor\n\t\t\t}, newErrors);\n\t\t}\n\t\tif (tryNumber === 1) throw error;\n\t\tthrow new RetryError({\n\t\t\tmessage: `Failed after ${tryNumber} attempts with non-retryable error: '${errorMessage}'`,\n\t\t\treason: \"errorNotRetryable\",\n\t\t\terrors: newErrors\n\t\t});\n\t}\n}\nfunction prepareRetries({ maxRetries }) {\n\tif (maxRetries != null) {\n\t\tif (!Number.isInteger(maxRetries)) throw new InvalidArgumentError({\n\t\t\tparameter: \"maxRetries\",\n\t\t\tvalue: maxRetries,\n\t\t\tmessage: \"maxRetries must be an integer\"\n\t\t});\n\t\tif (maxRetries < 0) throw new InvalidArgumentError({\n\t\t\tparameter: \"maxRetries\",\n\t\t\tvalue: maxRetries,\n\t\t\tmessage: \"maxRetries must be >= 0\"\n\t\t});\n\t}\n\tconst maxRetriesResult = maxRetries != null ? maxRetries : 2;\n\treturn {\n\t\tmaxRetries: maxRetriesResult,\n\t\tretry: retryWithExponentialBackoff({ maxRetries: maxRetriesResult })\n\t};\n}\nfunction assembleOperationName({ operationId, telemetry }) {\n\treturn {\n\t\t\"operation.name\": `${operationId}${(telemetry == null ? void 0 : telemetry.functionId) != null ? ` ${telemetry.functionId}` : \"\"}`,\n\t\t\"resource.name\": telemetry == null ? void 0 : telemetry.functionId,\n\t\t\"ai.operationId\": operationId,\n\t\t\"ai.telemetry.functionId\": telemetry == null ? void 0 : telemetry.functionId\n\t};\n}\nfunction getBaseTelemetryAttributes({ model, settings, telemetry, headers }) {\n\tvar _a17;\n\treturn {\n\t\t\"ai.model.provider\": model.provider,\n\t\t\"ai.model.id\": model.modelId,\n\t\t...Object.entries(settings).reduce((attributes, [key, value]) => {\n\t\t\tattributes[`ai.settings.${key}`] = value;\n\t\t\treturn attributes;\n\t\t}, {}),\n\t\t...Object.entries((_a17 = telemetry == null ? void 0 : telemetry.metadata) != null ? _a17 : {}).reduce((attributes, [key, value]) => {\n\t\t\tattributes[`ai.telemetry.metadata.${key}`] = value;\n\t\t\treturn attributes;\n\t\t}, {}),\n\t\t...Object.entries(headers != null ? headers : {}).reduce((attributes, [key, value]) => {\n\t\t\tif (value !== void 0) attributes[`ai.request.headers.${key}`] = value;\n\t\t\treturn attributes;\n\t\t}, {})\n\t};\n}\nvar noopTracer = {\n\tstartSpan() {\n\t\treturn noopSpan;\n\t},\n\tstartActiveSpan(name17, arg1, arg2, arg3) {\n\t\tif (typeof arg1 === \"function\") return arg1(noopSpan);\n\t\tif (typeof arg2 === \"function\") return arg2(noopSpan);\n\t\tif (typeof arg3 === \"function\") return arg3(noopSpan);\n\t}\n};\nvar noopSpan = {\n\tspanContext() {\n\t\treturn noopSpanContext;\n\t},\n\tsetAttribute() {\n\t\treturn this;\n\t},\n\tsetAttributes() {\n\t\treturn this;\n\t},\n\taddEvent() {\n\t\treturn this;\n\t},\n\taddLink() {\n\t\treturn this;\n\t},\n\taddLinks() {\n\t\treturn this;\n\t},\n\tsetStatus() {\n\t\treturn this;\n\t},\n\tupdateName() {\n\t\treturn this;\n\t},\n\tend() {\n\t\treturn this;\n\t},\n\tisRecording() {\n\t\treturn false;\n\t},\n\trecordException() {\n\t\treturn this;\n\t}\n};\nvar noopSpanContext = {\n\ttraceId: \"\",\n\tspanId: \"\",\n\ttraceFlags: 0\n};\nfunction getTracer({ isEnabled = false, tracer } = {}) {\n\tif (!isEnabled) return noopTracer;\n\tif (tracer) return tracer;\n\treturn trace.getTracer(\"ai\");\n}\nfunction recordSpan({ name: name17, tracer, attributes, fn, endWhenDone = true }) {\n\treturn tracer.startActiveSpan(name17, { attributes }, async (span) => {\n\t\ttry {\n\t\t\tconst result = await fn(span);\n\t\t\tif (endWhenDone) span.end();\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\ttry {\n\t\t\t\trecordErrorOnSpan(span, error);\n\t\t\t} finally {\n\t\t\t\tspan.end();\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t});\n}\nfunction recordErrorOnSpan(span, error) {\n\tif (error instanceof Error) {\n\t\tspan.recordException({\n\t\t\tname: error.name,\n\t\t\tmessage: error.message,\n\t\t\tstack: error.stack\n\t\t});\n\t\tspan.setStatus({\n\t\t\tcode: SpanStatusCode.ERROR,\n\t\t\tmessage: error.message\n\t\t});\n\t} else span.setStatus({ code: SpanStatusCode.ERROR });\n}\nfunction selectTelemetryAttributes({ telemetry, attributes }) {\n\tif ((telemetry == null ? void 0 : telemetry.isEnabled) !== true) return {};\n\treturn Object.entries(attributes).reduce((attributes2, [key, value]) => {\n\t\tif (value === void 0) return attributes2;\n\t\tif (typeof value === \"object\" && \"input\" in value && typeof value.input === \"function\") {\n\t\t\tif ((telemetry == null ? void 0 : telemetry.recordInputs) === false) return attributes2;\n\t\t\tconst result = value.input();\n\t\t\treturn result === void 0 ? attributes2 : {\n\t\t\t\t...attributes2,\n\t\t\t\t[key]: result\n\t\t\t};\n\t\t}\n\t\tif (typeof value === \"object\" && \"output\" in value && typeof value.output === \"function\") {\n\t\t\tif ((telemetry == null ? void 0 : telemetry.recordOutputs) === false) return attributes2;\n\t\t\tconst result = value.output();\n\t\t\treturn result === void 0 ? attributes2 : {\n\t\t\t\t...attributes2,\n\t\t\t\t[key]: result\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t...attributes2,\n\t\t\t[key]: value\n\t\t};\n\t}, {});\n}\nasync function embed({ model, value, maxRetries: maxRetriesArg, abortSignal, headers, experimental_telemetry: telemetry }) {\n\tif (typeof model === \"string\" || model.specificationVersion !== \"v1\") throw new UnsupportedModelVersionError();\n\tconst { maxRetries, retry } = prepareRetries({ maxRetries: maxRetriesArg });\n\tconst baseTelemetryAttributes = getBaseTelemetryAttributes({\n\t\tmodel,\n\t\ttelemetry,\n\t\theaders,\n\t\tsettings: { maxRetries }\n\t});\n\tconst tracer = getTracer(telemetry);\n\treturn recordSpan({\n\t\tname: \"ai.embed\",\n\t\tattributes: selectTelemetryAttributes({\n\t\t\ttelemetry,\n\t\t\tattributes: {\n\t\t\t\t...assembleOperationName({\n\t\t\t\t\toperationId: \"ai.embed\",\n\t\t\t\t\ttelemetry\n\t\t\t\t}),\n\t\t\t\t...baseTelemetryAttributes,\n\t\t\t\t\"ai.value\": { input: () => JSON.stringify(value) }\n\t\t\t}\n\t\t}),\n\t\ttracer,\n\t\tfn: async (span) => {\n\t\t\tconst { embedding, usage, rawResponse } = await retry(() => recordSpan({\n\t\t\t\tname: \"ai.embed.doEmbed\",\n\t\t\t\tattributes: selectTelemetryAttributes({\n\t\t\t\t\ttelemetry,\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\t...assembleOperationName({\n\t\t\t\t\t\t\toperationId: \"ai.embed.doEmbed\",\n\t\t\t\t\t\t\ttelemetry\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t...baseTelemetryAttributes,\n\t\t\t\t\t\t\"ai.values\": { input: () => [JSON.stringify(value)] }\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttracer,\n\t\t\t\tfn: async (doEmbedSpan) => {\n\t\t\t\t\tvar _a17;\n\t\t\t\t\tconst modelResponse = await model.doEmbed({\n\t\t\t\t\t\tvalues: [value],\n\t\t\t\t\t\tabortSignal,\n\t\t\t\t\t\theaders\n\t\t\t\t\t});\n\t\t\t\t\tconst embedding2 = modelResponse.embeddings[0];\n\t\t\t\t\tconst usage2 = (_a17 = modelResponse.usage) != null ? _a17 : { tokens: NaN };\n\t\t\t\t\tdoEmbedSpan.setAttributes(selectTelemetryAttributes({\n\t\t\t\t\t\ttelemetry,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\"ai.embeddings\": { output: () => modelResponse.embeddings.map((embedding3) => JSON.stringify(embedding3)) },\n\t\t\t\t\t\t\t\"ai.usage.tokens\": usage2.tokens\n\t\t\t\t\t\t}\n\t\t\t\t\t}));\n\t\t\t\t\treturn {\n\t\t\t\t\t\tembedding: embedding2,\n\t\t\t\t\t\tusage: usage2,\n\t\t\t\t\t\trawResponse: modelResponse.rawResponse\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}));\n\t\t\tspan.setAttributes(selectTelemetryAttributes({\n\t\t\t\ttelemetry,\n\t\t\t\tattributes: {\n\t\t\t\t\t\"ai.embedding\": { output: () => JSON.stringify(embedding) },\n\t\t\t\t\t\"ai.usage.tokens\": usage.tokens\n\t\t\t\t}\n\t\t\t}));\n\t\t\treturn new DefaultEmbedResult({\n\t\t\t\tvalue,\n\t\t\t\tembedding,\n\t\t\t\tusage,\n\t\t\t\trawResponse\n\t\t\t});\n\t\t}\n\t});\n}\nvar DefaultEmbedResult = class {\n\tconstructor(options) {\n\t\tthis.value = options.value;\n\t\tthis.embedding = options.embedding;\n\t\tthis.usage = options.usage;\n\t\tthis.rawResponse = options.rawResponse;\n\t}\n};\nfunction splitArray(array, chunkSize) {\n\tif (chunkSize <= 0) throw new Error(\"chunkSize must be greater than 0\");\n\tconst result = [];\n\tfor (let i = 0; i < array.length; i += chunkSize) result.push(array.slice(i, i + chunkSize));\n\treturn result;\n}\nasync function embedMany({ model, values, maxRetries: maxRetriesArg, abortSignal, headers, experimental_telemetry: telemetry }) {\n\tif (typeof model === \"string\" || model.specificationVersion !== \"v1\") throw new UnsupportedModelVersionError();\n\tconst { maxRetries, retry } = prepareRetries({ maxRetries: maxRetriesArg });\n\tconst baseTelemetryAttributes = getBaseTelemetryAttributes({\n\t\tmodel,\n\t\ttelemetry,\n\t\theaders,\n\t\tsettings: { maxRetries }\n\t});\n\tconst tracer = getTracer(telemetry);\n\treturn recordSpan({\n\t\tname: \"ai.embedMany\",\n\t\tattributes: selectTelemetryAttributes({\n\t\t\ttelemetry,\n\t\t\tattributes: {\n\t\t\t\t...assembleOperationName({\n\t\t\t\t\toperationId: \"ai.embedMany\",\n\t\t\t\t\ttelemetry\n\t\t\t\t}),\n\t\t\t\t...baseTelemetryAttributes,\n\t\t\t\t\"ai.values\": { input: () => values.map((value) => JSON.stringify(value)) }\n\t\t\t}\n\t\t}),\n\t\ttracer,\n\t\tfn: async (span) => {\n\t\t\tconst maxEmbeddingsPerCall = model.maxEmbeddingsPerCall;\n\t\t\tif (maxEmbeddingsPerCall == null) {\n\t\t\t\tconst { embeddings: embeddings2, usage } = await retry(() => {\n\t\t\t\t\treturn recordSpan({\n\t\t\t\t\t\tname: \"ai.embedMany.doEmbed\",\n\t\t\t\t\t\tattributes: selectTelemetryAttributes({\n\t\t\t\t\t\t\ttelemetry,\n\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t...assembleOperationName({\n\t\t\t\t\t\t\t\t\toperationId: \"ai.embedMany.doEmbed\",\n\t\t\t\t\t\t\t\t\ttelemetry\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t...baseTelemetryAttributes,\n\t\t\t\t\t\t\t\t\"ai.values\": { input: () => values.map((value) => JSON.stringify(value)) }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}),\n\t\t\t\t\t\ttracer,\n\t\t\t\t\t\tfn: async (doEmbedSpan) => {\n\t\t\t\t\t\t\tvar _a17;\n\t\t\t\t\t\t\tconst modelResponse = await model.doEmbed({\n\t\t\t\t\t\t\t\tvalues,\n\t\t\t\t\t\t\t\tabortSignal,\n\t\t\t\t\t\t\t\theaders\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tconst embeddings3 = modelResponse.embeddings;\n\t\t\t\t\t\t\tconst usage2 = (_a17 = modelResponse.usage) != null ? _a17 : { tokens: NaN };\n\t\t\t\t\t\t\tdoEmbedSpan.setAttributes(selectTelemetryAttributes({\n\t\t\t\t\t\t\t\ttelemetry,\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t\"ai.embeddings\": { output: () => embeddings3.map((embedding) => JSON.stringify(embedding)) },\n\t\t\t\t\t\t\t\t\t\"ai.usage.tokens\": usage2.tokens\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tembeddings: embeddings3,\n\t\t\t\t\t\t\t\tusage: usage2\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tspan.setAttributes(selectTelemetryAttributes({\n\t\t\t\t\ttelemetry,\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\"ai.embeddings\": { output: () => embeddings2.map((embedding) => JSON.stringify(embedding)) },\n\t\t\t\t\t\t\"ai.usage.tokens\": usage.tokens\n\t\t\t\t\t}\n\t\t\t\t}));\n\t\t\t\treturn new DefaultEmbedManyResult({\n\t\t\t\t\tvalues,\n\t\t\t\t\tembeddings: embeddings2,\n\t\t\t\t\tusage\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst valueChunks = splitArray(values, maxEmbeddingsPerCall);\n\t\t\tconst embeddings = [];\n\t\t\tlet tokens = 0;\n\t\t\tfor (const chunk of valueChunks) {\n\t\t\t\tconst { embeddings: responseEmbeddings, usage } = await retry(() => {\n\t\t\t\t\treturn recordSpan({\n\t\t\t\t\t\tname: \"ai.embedMany.doEmbed\",\n\t\t\t\t\t\tattributes: selectTelemetryAttributes({\n\t\t\t\t\t\t\ttelemetry,\n\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t...assembleOperationName({\n\t\t\t\t\t\t\t\t\toperationId: \"ai.embedMany.doEmbed\",\n\t\t\t\t\t\t\t\t\ttelemetry\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t...baseTelemetryAttributes,\n\t\t\t\t\t\t\t\t\"ai.values\": { input: () => chunk.map((value) => JSON.stringify(value)) }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}),\n\t\t\t\t\t\ttracer,\n\t\t\t\t\t\tfn: async (doEmbedSpan) => {\n\t\t\t\t\t\t\tvar _a17;\n\t\t\t\t\t\t\tconst modelResponse = await model.doEmbed({\n\t\t\t\t\t\t\t\tvalues: chunk,\n\t\t\t\t\t\t\t\tabortSignal,\n\t\t\t\t\t\t\t\theaders\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tconst embeddings2 = modelResponse.embeddings;\n\t\t\t\t\t\t\tconst usage2 = (_a17 = modelResponse.usage) != null ? _a17 : { tokens: NaN };\n\t\t\t\t\t\t\tdoEmbedSpan.setAttributes(selectTelemetryAttributes({\n\t\t\t\t\t\t\t\ttelemetry,\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t\"ai.embeddings\": { output: () => embeddings2.map((embedding) => JSON.stringify(embedding)) },\n\t\t\t\t\t\t\t\t\t\"ai.usage.tokens\": usage2.tokens\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tembeddings: embeddings2,\n\t\t\t\t\t\t\t\tusage: usage2\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tembeddings.push(...responseEmbeddings);\n\t\t\t\ttokens += usage.tokens;\n\t\t\t}\n\t\t\tspan.setAttributes(selectTelemetryAttributes({\n\t\t\t\ttelemetry,\n\t\t\t\tattributes: {\n\t\t\t\t\t\"ai.embeddings\": { output: () => embeddings.map((embedding) => JSON.stringify(embedding)) },\n\t\t\t\t\t\"ai.usage.tokens\": tokens\n\t\t\t\t}\n\t\t\t}));\n\t\t\treturn new DefaultEmbedManyResult({\n\t\t\t\tvalues,\n\t\t\t\tembeddings,\n\t\t\t\tusage: { tokens }\n\t\t\t});\n\t\t}\n\t});\n}\nvar DefaultEmbedManyResult = class {\n\tconstructor(options) {\n\t\tthis.values = options.values;\n\t\tthis.embeddings = options.embeddings;\n\t\tthis.usage = options.usage;\n\t}\n};\nvar name3 = \"AI_NoImageGeneratedError\";\nvar marker3 = `vercel.ai.error.${name3}`;\nvar symbol3 = Symbol.for(marker3);\nvar _a3;\nvar NoImageGeneratedError = class extends AISDKError {\n\tconstructor({ message = \"No image generated.\", cause, responses }) {\n\t\tsuper({\n\t\t\tname: name3,\n\t\t\tmessage,\n\t\t\tcause\n\t\t});\n\t\tthis[_a3] = true;\n\t\tthis.responses = responses;\n\t}\n\tstatic isInstance(error) {\n\t\treturn AISDKError.hasMarker(error, marker3);\n\t}\n};\n_a3 = symbol3;\nvar DefaultGeneratedFile = class {\n\tconstructor({ data, mimeType }) {\n\t\tconst isUint8Array = data instanceof Uint8Array;\n\t\tthis.base64Data = isUint8Array ? void 0 : data;\n\t\tthis.uint8ArrayData = isUint8Array ? data : void 0;\n\t\tthis.mimeType = mimeType;\n\t}\n\tget base64() {\n\t\tif (this.base64Data == null) this.base64Data = convertUint8ArrayToBase64(this.uint8ArrayData);\n\t\treturn this.base64Data;\n\t}\n\tget uint8Array() {\n\t\tif (this.uint8ArrayData == null) this.uint8ArrayData = convertBase64ToUint8Array(this.base64Data);\n\t\treturn this.uint8ArrayData;\n\t}\n};\nvar DefaultGeneratedFileWithType = class extends DefaultGeneratedFile {\n\tconstructor(options) {\n\t\tsuper(options);\n\t\tthis.type = \"file\";\n\t}\n};\nvar imageMimeTypeSignatures = [\n\t{\n\t\tmimeType: \"image/gif\",\n\t\tbytesPrefix: [\n\t\t\t71,\n\t\t\t73,\n\t\t\t70\n\t\t],\n\t\tbase64Prefix: \"R0lG\"\n\t},\n\t{\n\t\tmimeType: \"image/png\",\n\t\tbytesPrefix: [\n\t\t\t137,\n\t\t\t80,\n\t\t\t78,\n\t\t\t71\n\t\t],\n\t\tbase64Prefix: \"iVBORw\"\n\t},\n\t{\n\t\tmimeType: \"image/jpeg\",\n\t\tbytesPrefix: [255, 216],\n\t\tbase64Prefix: \"/9j/\"\n\t},\n\t{\n\t\tmimeType: \"image/webp\",\n\t\tbytesPrefix: [\n\t\t\t82,\n\t\t\t73,\n\t\t\t70,\n\t\t\t70\n\t\t],\n\t\tbase64Prefix: \"UklGRg\"\n\t},\n\t{\n\t\tmimeType: \"image/bmp\",\n\t\tbytesPrefix: [66, 77],\n\t\tbase64Prefix: \"Qk\"\n\t},\n\t{\n\t\tmimeType: \"image/tiff\",\n\t\tbytesPrefix: [\n\t\t\t73,\n\t\t\t73,\n\t\t\t42,\n\t\t\t0\n\t\t],\n\t\tbase64Prefix: \"SUkqAA\"\n\t},\n\t{\n\t\tmimeType: \"image/tiff\",\n\t\tbytesPrefix: [\n\t\t\t77,\n\t\t\t77,\n\t\t\t0,\n\t\t\t42\n\t\t],\n\t\tbase64Prefix: \"TU0AKg\"\n\t},\n\t{\n\t\tmimeType: \"image/avif\",\n\t\tbytesPrefix: [\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t32,\n\t\t\t102,\n\t\t\t116,\n\t\t\t121,\n\t\t\t112,\n\t\t\t97,\n\t\t\t118,\n\t\t\t105,\n\t\t\t102\n\t\t],\n\t\tbase64Prefix: \"AAAAIGZ0eXBhdmlm\"\n\t},\n\t{\n\t\tmimeType: \"image/heic\",\n\t\tbytesPrefix: [\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t32,\n\t\t\t102,\n\t\t\t116,\n\t\t\t121,\n\t\t\t112,\n\t\t\t104,\n\t\t\t101,\n\t\t\t105,\n\t\t\t99\n\t\t],\n\t\tbase64Prefix: \"AAAAIGZ0eXBoZWlj\"\n\t}\n];\nvar audioMimeTypeSignatures = [\n\t{\n\t\tmimeType: \"audio/mpeg\",\n\t\tbytesPrefix: [255, 251],\n\t\tbase64Prefix: \"//s=\"\n\t},\n\t{\n\t\tmimeType: \"audio/wav\",\n\t\tbytesPrefix: [\n\t\t\t82,\n\t\t\t73,\n\t\t\t70,\n\t\t\t70\n\t\t],\n\t\tbase64Prefix: \"UklGR\"\n\t},\n\t{\n\t\tmimeType: \"audio/ogg\",\n\t\tbytesPrefix: [\n\t\t\t79,\n\t\t\t103,\n\t\t\t103,\n\t\t\t83\n\t\t],\n\t\tbase64Prefix: \"T2dnUw\"\n\t},\n\t{\n\t\tmimeType: \"audio/flac\",\n\t\tbytesPrefix: [\n\t\t\t102,\n\t\t\t76,\n\t\t\t97,\n\t\t\t67\n\t\t],\n\t\tbase64Prefix: \"ZkxhQw\"\n\t},\n\t{\n\t\tmimeType: \"audio/aac\",\n\t\tbytesPrefix: [\n\t\t\t64,\n\t\t\t21,\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\tbase64Prefix: \"QBUA\"\n\t},\n\t{\n\t\tmimeType: \"audio/mp4\",\n\t\tbytesPrefix: [\n\t\t\t102,\n\t\t\t116,\n\t\t\t121,\n\t\t\t112\n\t\t],\n\t\tbase64Prefix: \"ZnR5cA\"\n\t}\n];\nvar stripID3 = (data) => {\n\tconst bytes = typeof data === \"string\" ? convertBase64ToUint8Array(data) : data;\n\tconst id3Size = (bytes[6] & 127) << 21 | (bytes[7] & 127) << 14 | (bytes[8] & 127) << 7 | bytes[9] & 127;\n\treturn bytes.slice(id3Size + 10);\n};\nfunction stripID3TagsIfPresent(data) {\n\treturn typeof data === \"string\" && data.startsWith(\"SUQz\") || typeof data !== \"string\" && data.length > 10 && data[0] === 73 && data[1] === 68 && data[2] === 51 ? stripID3(data) : data;\n}\nfunction detectMimeType({ data, signatures }) {\n\tconst processedData = stripID3TagsIfPresent(data);\n\tfor (const signature of signatures) if (typeof processedData === \"string\" ? processedData.startsWith(signature.base64Prefix) : processedData.length >= signature.bytesPrefix.length && signature.bytesPrefix.every((byte, index) => processedData[index] === byte)) return signature.mimeType;\n}\nasync function generateImage({ model, prompt, n = 1, size, aspectRatio, seed, providerOptions, maxRetries: maxRetriesArg, abortSignal, headers }) {\n\tvar _a17;\n\tif (typeof model === \"string\" || model.specificationVersion !== \"v1\") throw new UnsupportedModelVersionError();\n\tconst { retry } = prepareRetries({ maxRetries: maxRetriesArg });\n\tconst maxImagesPerCall = (_a17 = model.maxImagesPerCall) != null ? _a17 : 1;\n\tconst callCount = Math.ceil(n / maxImagesPerCall);\n\tconst callImageCounts = Array.from({ length: callCount }, (_, i) => {\n\t\tif (i < callCount - 1) return maxImagesPerCall;\n\t\tconst remainder = n % maxImagesPerCall;\n\t\treturn remainder === 0 ? maxImagesPerCall : remainder;\n\t});\n\tconst results = await Promise.all(callImageCounts.map(async (callImageCount) => retry(() => model.doGenerate({\n\t\tprompt,\n\t\tn: callImageCount,\n\t\tabortSignal,\n\t\theaders,\n\t\tsize,\n\t\taspectRatio,\n\t\tseed,\n\t\tproviderOptions: providerOptions != null ? providerOptions : {}\n\t}))));\n\tconst images = [];\n\tconst warnings = [];\n\tconst responses = [];\n\tfor (const result of results) {\n\t\timages.push(...result.images.map((image) => {\n\t\t\tvar _a18;\n\t\t\treturn new DefaultGeneratedFile({\n\t\t\t\tdata: image,\n\t\t\t\tmimeType: (_a18 = detectMimeType({\n\t\t\t\t\tdata: image,\n\t\t\t\t\tsignatures: imageMimeTypeSignatures\n\t\t\t\t})) != null ? _a18 : \"image/png\"\n\t\t\t});\n\t\t}));\n\t\twarnings.push(...result.warnings);\n\t\tresponses.push(result.response);\n\t}\n\tif (!images.length) throw new NoImageGeneratedError({ responses });\n\treturn new DefaultGenerateImageResult({\n\t\timages,\n\t\twarnings,\n\t\tresponses\n\t});\n}\nvar DefaultGenerateImageResult = class {\n\tconstructor(options) {\n\t\tthis.images = options.images;\n\t\tthis.warnings = options.warnings;\n\t\tthis.responses = options.responses;\n\t}\n\tget image() {\n\t\treturn this.images[0];\n\t}\n};\nvar name4 = \"AI_NoObjectGeneratedError\";\nvar marker4 = `vercel.ai.error.${name4}`;\nvar symbol4 = Symbol.for(marker4);\nvar _a4;\nvar NoObjectGeneratedError = class extends AISDKError {\n\tconstructor({ message = \"No object generated.\", cause, text: text2, response, usage, finishReason }) {\n\t\tsuper({\n\t\t\tname: name4,\n\t\t\tmessage,\n\t\t\tcause\n\t\t});\n\t\tthis[_a4] = true;\n\t\tthis.text = text2;\n\t\tthis.response = response;\n\t\tthis.usage = usage;\n\t\tthis.finishReason = finishReason;\n\t}\n\tstatic isInstance(error) {\n\t\treturn AISDKError.hasMarker(error, marker4);\n\t}\n};\n_a4 = symbol4;\nvar name5 = \"AI_DownloadError\";\nvar marker5 = `vercel.ai.error.${name5}`;\nvar symbol5 = Symbol.for(marker5);\nvar _a5;\nvar DownloadError = class extends AISDKError {\n\tconstructor({ url, statusCode, statusText, cause, message = cause == null ? `Failed to download ${url}: ${statusCode} ${statusText}` : `Failed to download ${url}: ${cause}` }) {\n\t\tsuper({\n\t\t\tname: name5,\n\t\t\tmessage,\n\t\t\tcause\n\t\t});\n\t\tthis[_a5] = true;\n\t\tthis.url = url;\n\t\tthis.statusCode = statusCode;\n\t\tthis.statusText = statusText;\n\t}\n\tstatic isInstance(error) {\n\t\treturn AISDKError.hasMarker(error, marker5);\n\t}\n};\n_a5 = symbol5;\nasync function download({ url }) {\n\tvar _a17;\n\tconst urlText = url.toString();\n\ttry {\n\t\tconst response = await fetch(urlText);\n\t\tif (!response.ok) throw new DownloadError({\n\t\t\turl: urlText,\n\t\t\tstatusCode: response.status,\n\t\t\tstatusText: response.statusText\n\t\t});\n\t\treturn {\n\t\t\tdata: new Uint8Array(await response.arrayBuffer()),\n\t\t\tmimeType: (_a17 = response.headers.get(\"content-type\")) != null ? _a17 : void 0\n\t\t};\n\t} catch (error) {\n\t\tif (DownloadError.isInstance(error)) throw error;\n\t\tthrow new DownloadError({\n\t\t\turl: urlText,\n\t\t\tcause: error\n\t\t});\n\t}\n}\nvar name6 = \"AI_InvalidDataContentError\";\nvar marker6 = `vercel.ai.error.${name6}`;\nvar symbol6 = Symbol.for(marker6);\nvar _a6;\nvar InvalidDataContentError = class extends AISDKError {\n\tconstructor({ content, cause, message = `Invalid data content. Expected a base64 string, Uint8Array, ArrayBuffer, or Buffer, but got ${typeof content}.` }) {\n\t\tsuper({\n\t\t\tname: name6,\n\t\t\tmessage,\n\t\t\tcause\n\t\t});\n\t\tthis[_a6] = true;\n\t\tthis.content = content;\n\t}\n\tstatic isInstance(error) {\n\t\treturn AISDKError.hasMarker(error, marker6);\n\t}\n};\n_a6 = symbol6;\nvar dataContentSchema = z.union([\n\tz.string(),\n\tz.instanceof(Uint8Array),\n\tz.instanceof(ArrayBuffer),\n\tz.custom((value) => {\n\t\tvar _a17, _b;\n\t\treturn (_b = (_a17 = globalThis.Buffer) == null ? void 0 : _a17.isBuffer(value)) != null ? _b : false;\n\t}, { message: \"Must be a Buffer\" })\n]);\nfunction convertDataContentToBase64String(content) {\n\tif (typeof content === \"string\") return content;\n\tif (content instanceof ArrayBuffer) return convertUint8ArrayToBase64(new Uint8Array(content));\n\treturn convertUint8ArrayToBase64(content);\n}\nfunction convertDataContentToUint8Array(content) {\n\tif (content instanceof Uint8Array) return content;\n\tif (typeof content === \"string\") try {\n\t\treturn convertBase64ToUint8Array(content);\n\t} catch (error) {\n\t\tthrow new InvalidDataContentError({\n\t\t\tmessage: \"Invalid data content. Content string is not a base64-encoded media.\",\n\t\t\tcontent,\n\t\t\tcause: error\n\t\t});\n\t}\n\tif (content instanceof ArrayBuffer) return new Uint8Array(content);\n\tthrow new InvalidDataContentError({ content });\n}\nfunction convertUint8ArrayToText(uint8Array) {\n\ttry {\n\t\treturn new TextDecoder().decode(uint8Array);\n\t} catch (error) {\n\t\tthrow new Error(\"Error decoding Uint8Array to text\");\n\t}\n}\nvar name7 = \"AI_InvalidMessageRoleError\";\nvar marker7 = `vercel.ai.error.${name7}`;\nvar symbol7 = Symbol.for(marker7);\nvar _a7;\nvar InvalidMessageRoleError = class extends AISDKError {\n\tconstructor({ role, message = `Invalid message role: '${role}'. Must be one of: \"system\", \"user\", \"assistant\", \"tool\".` }) {\n\t\tsuper({\n\t\t\tname: name7,\n\t\t\tmessage\n\t\t});\n\t\tthis[_a7] = true;\n\t\tthis.role = role;\n\t}\n\tstatic isInstance(error) {\n\t\treturn AISDKError.hasMarker(error, marker7);\n\t}\n};\n_a7 = symbol7;\nfunction splitDataUrl(dataUrl) {\n\ttry {\n\t\tconst [header, base64Content] = dataUrl.split(\",\");\n\t\treturn {\n\t\t\tmimeType: header.split(\";\")[0].split(\":\")[1],\n\t\t\tbase64Content\n\t\t};\n\t} catch (error) {\n\t\treturn {\n\t\t\tmimeType: void 0,\n\t\t\tbase64Content: void 0\n\t\t};\n\t}\n}\nasync function convertToLanguageModelPrompt({ prompt, modelSupportsImageUrls = true, modelSupportsUrl = () => false, downloadImplementation = download }) {\n\tconst downloadedAssets = await downloadAssets(prompt.messages, downloadImplementation, modelSupportsImageUrls, modelSupportsUrl);\n\treturn [...prompt.system != null ? [{\n\t\trole: \"system\",\n\t\tcontent: prompt.system\n\t}] : [], ...prompt.messages.map((message) => convertToLanguageModelMessage(message, downloadedAssets))];\n}\nfunction convertToLanguageModelMessage(message, downloadedAssets) {\n\tvar _a17, _b, _c, _d, _e, _f;\n\tconst role = message.role;\n\tswitch (role) {\n\t\tcase \"system\": return {\n\t\t\trole: \"system\",\n\t\t\tcontent: message.content,\n\t\t\tproviderMetadata: (_a17 = message.providerOptions) != null ? _a17 : message.experimental_providerMetadata\n\t\t};\n\t\tcase \"user\":\n\t\t\tif (typeof message.content === \"string\") return {\n\t\t\t\trole: \"user\",\n\t\t\t\tcontent: [{\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\ttext: message.content\n\t\t\t\t}],\n\t\t\t\tproviderMetadata: (_b = message.providerOptions) != null ? _b : message.experimental_providerMetadata\n\t\t\t};\n\t\t\treturn {\n\t\t\t\trole: \"user\",\n\t\t\t\tcontent: message.content.map((part) => convertPartToLanguageModelPart(part, downloadedAssets)).filter((part) => part.type !== \"text\" || part.text !== \"\"),\n\t\t\t\tproviderMetadata: (_c = message.providerOptions) != null ? _c : message.experimental_providerMetadata\n\t\t\t};\n\t\tcase \"assistant\":\n\t\t\tif (typeof message.content === \"string\") return {\n\t\t\t\trole: \"assistant\",\n\t\t\t\tcontent: [{\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\ttext: message.content\n\t\t\t\t}],\n\t\t\t\tproviderMetadata: (_d = message.providerOptions) != null ? _d : message.experimental_providerMetadata\n\t\t\t};\n\t\t\treturn {\n\t\t\t\trole: \"assistant\",\n\t\t\t\tcontent: message.content.filter((part) => part.type !== \"text\" || part.text !== \"\").map((part) => {\n\t\t\t\t\tvar _a18;\n\t\t\t\t\tconst providerOptions = (_a18 = part.providerOptions) != null ? _a18 : part.experimental_providerMetadata;\n\t\t\t\t\tswitch (part.type) {\n\t\t\t\t\t\tcase \"file\": return {\n\t\t\t\t\t\t\ttype: \"file\",\n\t\t\t\t\t\t\tdata: part.data instanceof URL ? part.data : convertDataContentToBase64String(part.data),\n\t\t\t\t\t\t\tfilename: part.filename,\n\t\t\t\t\t\t\tmimeType: part.mimeType,\n\t\t\t\t\t\t\tproviderMetadata: providerOptions\n\t\t\t\t\t\t};\n\t\t\t\t\t\tcase \"reasoning\": return {\n\t\t\t\t\t\t\ttype: \"reasoning\",\n\t\t\t\t\t\t\ttext: part.text,\n\t\t\t\t\t\t\tsignature: part.signature,\n\t\t\t\t\t\t\tproviderMetadata: providerOptions\n\t\t\t\t\t\t};\n\t\t\t\t\t\tcase \"redacted-reasoning\": return {\n\t\t\t\t\t\t\ttype: \"redacted-reasoning\",\n\t\t\t\t\t\t\tdata: part.data,\n\t\t\t\t\t\t\tproviderMetadata: providerOptions\n\t\t\t\t\t\t};\n\t\t\t\t\t\tcase \"text\": return {\n\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\ttext: part.text,\n\t\t\t\t\t\t\tproviderMetadata: providerOptions\n\t\t\t\t\t\t};\n\t\t\t\t\t\tcase \"tool-call\": return {\n\t\t\t\t\t\t\ttype: \"tool-call\",\n\t\t\t\t\t\t\ttoolCallId: part.toolCallId,\n\t\t\t\t\t\t\ttoolName: part.toolName,\n\t\t\t\t\t\t\targs: part.args,\n\t\t\t\t\t\t\tproviderMetadata: providerOptions\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tproviderMetadata: (_e = message.providerOptions) != null ? _e : message.experimental_providerMetadata\n\t\t\t};\n\t\tcase \"tool\": return {\n\t\t\trole: \"tool\",\n\t\t\tcontent: message.content.map((part) => {\n\t\t\t\tvar _a18;\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"tool-result\",\n\t\t\t\t\ttoolCallId: part.toolCallId,\n\t\t\t\t\ttoolName: part.toolName,\n\t\t\t\t\tresult: part.result,\n\t\t\t\t\tcontent: part.experimental_content,\n\t\t\t\t\tisError: part.isError,\n\t\t\t\t\tproviderMetadata: (_a18 = part.providerOptions) != null ? _a18 : part.experimental_providerMetadata\n\t\t\t\t};\n\t\t\t}),\n\t\t\tproviderMetadata: (_f = message.providerOptions) != null ? _f : message.experimental_providerMetadata\n\t\t};\n\t\tdefault: throw new InvalidMessageRoleError({ role });\n\t}\n}\nasync function downloadAssets(messages, downloadImplementation, modelSupportsImageUrls, modelSupportsUrl) {\n\tconst urls = messages.filter((message) => message.role === \"user\").map((message) => message.content).filter((content) => Array.isArray(content)).flat().filter((part) => part.type === \"image\" || part.type === \"file\").filter((part) => !(part.type === \"image\" && modelSupportsImageUrls === true)).map((part) => part.type === \"image\" ? part.image : part.data).map((part) => typeof part === \"string\" && (part.startsWith(\"http:\") || part.startsWith(\"https:\")) ? new URL(part) : part).filter((image) => image instanceof URL).filter((url) => !modelSupportsUrl(url));\n\tconst downloadedImages = await Promise.all(urls.map(async (url) => ({\n\t\turl,\n\t\tdata: await downloadImplementation({ url })\n\t})));\n\treturn Object.fromEntries(downloadedImages.map(({ url, data }) => [url.toString(), data]));\n}\nfunction convertPartToLanguageModelPart(part, downloadedAssets) {\n\tvar _a17, _b, _c, _d;\n\tif (part.type === \"text\") return {\n\t\ttype: \"text\",\n\t\ttext: part.text,\n\t\tproviderMetadata: (_a17 = part.providerOptions) != null ? _a17 : part.experimental_providerMetadata\n\t};\n\tlet mimeType = part.mimeType;\n\tlet data;\n\tlet content;\n\tlet normalizedData;\n\tconst type = part.type;\n\tswitch (type) {\n\t\tcase \"image\":\n\t\t\tdata = part.image;\n\t\t\tbreak;\n\t\tcase \"file\":\n\t\t\tdata = part.data;\n\t\t\tbreak;\n\t\tdefault: throw new Error(`Unsupported part type: ${type}`);\n\t}\n\ttry {\n\t\tcontent = typeof data === \"string\" ? new URL(data) : data;\n\t} catch (error) {\n\t\tcontent = data;\n\t}\n\tif (content instanceof URL) if (content.protocol === \"data:\") {\n\t\tconst { mimeType: dataUrlMimeType, base64Content } = splitDataUrl(content.toString());\n\t\tif (dataUrlMimeType == null || base64Content == null) throw new Error(`Invalid data URL format in part ${type}`);\n\t\tmimeType = dataUrlMimeType;\n\t\tnormalizedData = convertDataContentToUint8Array(base64Content);\n\t} else {\n\t\tconst downloadedFile = downloadedAssets[content.toString()];\n\t\tif (downloadedFile) {\n\t\t\tnormalizedData = downloadedFile.data;\n\t\t\tmimeType ??= downloadedFile.mimeType;\n\t\t} else normalizedData = content;\n\t}\n\telse normalizedData = convertDataContentToUint8Array(content);\n\tswitch (type) {\n\t\tcase \"image\":\n\t\t\tif (normalizedData instanceof Uint8Array) mimeType = (_b = detectMimeType({\n\t\t\t\tdata: normalizedData,\n\t\t\t\tsignatures: imageMimeTypeSignatures\n\t\t\t})) != null ? _b : mimeType;\n\t\t\treturn {\n\t\t\t\ttype: \"image\",\n\t\t\t\timage: normalizedData,\n\t\t\t\tmimeType,\n\t\t\t\tproviderMetadata: (_c = part.providerOptions) != null ? _c : part.experimental_providerMetadata\n\t\t\t};\n\t\tcase \"file\":\n\t\t\tif (mimeType == null) throw new Error(`Mime type is missing for file part`);\n\t\t\treturn {\n\t\t\t\ttype: \"file\",\n\t\t\t\tdata: normalizedData instanceof Uint8Array ? convertDataContentToBase64String(normalizedData) : normalizedData,\n\t\t\t\tfilename: part.filename,\n\t\t\t\tmimeType,\n\t\t\t\tproviderMetadata: (_d = part.providerOptions) != null ? _d : part.experimental_providerMetadata\n\t\t\t};\n\t}\n}\nfunction prepareCallSettings({ maxTokens, temperature, topP, topK, presencePenalty, frequencyPenalty, stopSequences, seed }) {\n\tif (maxTokens != null) {\n\t\tif (!Number.isInteger(maxTokens)) throw new InvalidArgumentError({\n\t\t\tparameter: \"maxTokens\",\n\t\t\tvalue: maxTokens,\n\t\t\tmessage: \"maxTokens must be an integer\"\n\t\t});\n\t\tif (maxTokens < 1) throw new InvalidArgumentError({\n\t\t\tparameter: \"maxTokens\",\n\t\t\tvalue: maxTokens,\n\t\t\tmessage: \"maxTokens must be >= 1\"\n\t\t});\n\t}\n\tif (temperature != null) {\n\t\tif (typeof temperature !== \"number\") throw new InvalidArgumentError({\n\t\t\tparameter: \"temperature\",\n\t\t\tvalue: temperature,\n\t\t\tmessage: \"temperature must be a number\"\n\t\t});\n\t}\n\tif (topP != null) {\n\t\tif (typeof topP !== \"number\") throw new InvalidArgumentError({\n\t\t\tparameter: \"topP\",\n\t\t\tvalue: topP,\n\t\t\tmessage: \"topP must be a number\"\n\t\t});\n\t}\n\tif (topK != null) {\n\t\tif (typeof topK !== \"number\") throw new InvalidArgumentError({\n\t\t\tparameter: \"topK\",\n\t\t\tvalue: topK,\n\t\t\tmessage: \"topK must be a number\"\n\t\t});\n\t}\n\tif (presencePenalty != null) {\n\t\tif (typeof presencePenalty !== \"number\") throw new InvalidArgumentError({\n\t\t\tparameter: \"presencePenalty\",\n\t\t\tvalue: presencePenalty,\n\t\t\tmessage: \"presencePenalty must be a number\"\n\t\t});\n\t}\n\tif (frequencyPenalty != null) {\n\t\tif (typeof frequencyPenalty !== \"number\") throw new InvalidArgumentError({\n\t\t\tparameter: \"frequencyPenalty\",\n\t\t\tvalue: frequencyPenalty,\n\t\t\tmessage: \"frequencyPenalty must be a number\"\n\t\t});\n\t}\n\tif (seed != null) {\n\t\tif (!Number.isInteger(seed)) throw new InvalidArgumentError({\n\t\t\tparameter: \"seed\",\n\t\t\tvalue: seed,\n\t\t\tmessage: \"seed must be an integer\"\n\t\t});\n\t}\n\treturn {\n\t\tmaxTokens,\n\t\ttemperature: temperature != null ? temperature : 0,\n\t\ttopP,\n\t\ttopK,\n\t\tpresencePenalty,\n\t\tfrequencyPenalty,\n\t\tstopSequences: stopSequences != null && stopSequences.length > 0 ? stopSequences : void 0,\n\t\tseed\n\t};\n}\nfunction attachmentsToParts(attachments) {\n\tvar _a17, _b, _c;\n\tconst parts = [];\n\tfor (const attachment of attachments) {\n\t\tlet url;\n\t\ttry {\n\t\t\turl = new URL(attachment.url);\n\t\t} catch (error) {\n\t\t\tthrow new Error(`Invalid URL: ${attachment.url}`);\n\t\t}\n\t\tswitch (url.protocol) {\n\t\t\tcase \"http:\":\n\t\t\tcase \"https:\":\n\t\t\t\tif ((_a17 = attachment.contentType) == null ? void 0 : _a17.startsWith(\"image/\")) parts.push({\n\t\t\t\t\ttype: \"image\",\n\t\t\t\t\timage: url\n\t\t\t\t});\n\t\t\t\telse {\n\t\t\t\t\tif (!attachment.contentType) throw new Error(\"If the attachment is not an image, it must specify a content type\");\n\t\t\t\t\tparts.push({\n\t\t\t\t\t\ttype: \"file\",\n\t\t\t\t\t\tdata: url,\n\t\t\t\t\t\tmimeType: attachment.contentType\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"data:\": {\n\t\t\t\tlet header;\n\t\t\t\tlet base64Content;\n\t\t\t\tlet mimeType;\n\t\t\t\ttry {\n\t\t\t\t\t[header, base64Content] = attachment.url.split(\",\");\n\t\t\t\t\tmimeType = header.split(\";\")[0].split(\":\")[1];\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthrow new Error(`Error processing data URL: ${attachment.url}`);\n\t\t\t\t}\n\t\t\t\tif (mimeType == null || base64Content == null) throw new Error(`Invalid data URL format: ${attachment.url}`);\n\t\t\t\tif ((_b = attachment.contentType) == null ? void 0 : _b.startsWith(\"image/\")) parts.push({\n\t\t\t\t\ttype: \"image\",\n\t\t\t\t\timage: convertDataContentToUint8Array(base64Content)\n\t\t\t\t});\n\t\t\t\telse if ((_c = attachment.contentType) == null ? void 0 : _c.startsWith(\"text/\")) parts.push({\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\ttext: convertUint8ArrayToText(convertDataContentToUint8Array(base64Content))\n\t\t\t\t});\n\t\t\t\telse {\n\t\t\t\t\tif (!attachment.contentType) throw new Error(\"If the attachment is not an image or text, it must specify a content type\");\n\t\t\t\t\tparts.push({\n\t\t\t\t\t\ttype: \"file\",\n\t\t\t\t\t\tdata: base64Content,\n\t\t\t\t\t\tmimeType: attachment.contentType\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault: throw new Error(`Unsupported URL protocol: ${url.protocol}`);\n\t\t}\n\t}\n\treturn parts;\n}\nvar name8 = \"AI_MessageConversionError\";\nvar marker8 = `vercel.ai.error.${name8}`;\nvar symbol8 = Symbol.for(marker8);\nvar _a8;\nvar MessageConversionError = class extends AISDKError {\n\tconstructor({ originalMessage, message }) {\n\t\tsuper({\n\t\t\tname: name8,\n\t\t\tmessage\n\t\t});\n\t\tthis[_a8] = true;\n\t\tthis.originalMessage = originalMessage;\n\t}\n\tstatic isInstance(error) {\n\t\treturn AISDKError.hasMarker(error, marker8);\n\t}\n};\n_a8 = symbol8;\nfunction convertToCoreMessages(messages, options) {\n\tvar _a17, _b;\n\tconst tools = (_a17 = options == null ? void 0 : options.tools) != null ? _a17 : {};\n\tconst coreMessages = [];\n\tfor (let i = 0; i < messages.length; i++) {\n\t\tconst message = messages[i];\n\t\tconst isLastMessage = i === messages.length - 1;\n\t\tconst { role, content, experimental_attachments } = message;\n\t\tswitch (role) {\n\t\t\tcase \"system\":\n\t\t\t\tcoreMessages.push({\n\t\t\t\t\trole: \"system\",\n\t\t\t\t\tcontent\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"user\":\n\t\t\t\tif (message.parts == null) coreMessages.push({\n\t\t\t\t\trole: \"user\",\n\t\t\t\t\tcontent: experimental_attachments ? [{\n\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\ttext: content\n\t\t\t\t\t}, ...attachmentsToParts(experimental_attachments)] : content\n\t\t\t\t});\n\t\t\t\telse {\n\t\t\t\t\tconst textParts = message.parts.filter((part) => part.type === \"text\").map((part) => ({\n\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\ttext: part.text\n\t\t\t\t\t}));\n\t\t\t\t\tcoreMessages.push({\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: experimental_attachments ? [...textParts, ...attachmentsToParts(experimental_attachments)] : textParts\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"assistant\": {\n\t\t\t\tif (message.parts != null) {\n\t\t\t\t\tlet processBlock2 = function() {\n\t\t\t\t\t\tconst content2 = [];\n\t\t\t\t\t\tfor (const part of block) switch (part.type) {\n\t\t\t\t\t\t\tcase \"file\":\n\t\t\t\t\t\t\tcase \"text\":\n\t\t\t\t\t\t\t\tcontent2.push(part);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase \"reasoning\":\n\t\t\t\t\t\t\t\tfor (const detail of part.details) switch (detail.type) {\n\t\t\t\t\t\t\t\t\tcase \"text\":\n\t\t\t\t\t\t\t\t\t\tcontent2.push({\n\t\t\t\t\t\t\t\t\t\t\ttype: \"reasoning\",\n\t\t\t\t\t\t\t\t\t\t\ttext: detail.text,\n\t\t\t\t\t\t\t\t\t\t\tsignature: detail.signature\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase \"redacted\":\n\t\t\t\t\t\t\t\t\t\tcontent2.push({\n\t\t\t\t\t\t\t\t\t\t\ttype: \"redacted-reasoning\",\n\t\t\t\t\t\t\t\t\t\t\tdata: detail.data\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase \"tool-invocation\":\n\t\t\t\t\t\t\t\tcontent2.push({\n\t\t\t\t\t\t\t\t\ttype: \"tool-call\",\n\t\t\t\t\t\t\t\t\ttoolCallId: part.toolInvocation.toolCallId,\n\t\t\t\t\t\t\t\t\ttoolName: part.toolInvocation.toolName,\n\t\t\t\t\t\t\t\t\targs: part.toolInvocation.args\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault: throw new Error(`Unsupported part: ${part}`);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcoreMessages.push({\n\t\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\t\tcontent: content2\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst stepInvocations = block.filter((part) => part.type === \"tool-invocation\").map((part) => part.toolInvocation);\n\t\t\t\t\t\tif (stepInvocations.length > 0) coreMessages.push({\n\t\t\t\t\t\t\trole: \"tool\",\n\t\t\t\t\t\t\tcontent: stepInvocations.map((toolInvocation) => {\n\t\t\t\t\t\t\t\tif (!(\"result\" in toolInvocation)) throw new MessageConversionError({\n\t\t\t\t\t\t\t\t\toriginalMessage: message,\n\t\t\t\t\t\t\t\t\tmessage: \"ToolInvocation must have a result: \" + JSON.stringify(toolInvocation)\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tconst { toolCallId, toolName, result } = toolInvocation;\n\t\t\t\t\t\t\t\tconst tool2 = tools[toolName];\n\t\t\t\t\t\t\t\treturn (tool2 == null ? void 0 : tool2.experimental_toToolResultContent) != null ? {\n\t\t\t\t\t\t\t\t\ttype: \"tool-result\",\n\t\t\t\t\t\t\t\t\ttoolCallId,\n\t\t\t\t\t\t\t\t\ttoolName,\n\t\t\t\t\t\t\t\t\tresult: tool2.experimental_toToolResultContent(result),\n\t\t\t\t\t\t\t\t\texperimental_content: tool2.experimental_toToolResultContent(result)\n\t\t\t\t\t\t\t\t} : {\n\t\t\t\t\t\t\t\t\ttype: \"tool-result\",\n\t\t\t\t\t\t\t\t\ttoolCallId,\n\t\t\t\t\t\t\t\t\ttoolName,\n\t\t\t\t\t\t\t\t\tresult\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t});\n\t\t\t\t\t\tblock = [];\n\t\t\t\t\t\tblockHasToolInvocations = false;\n\t\t\t\t\t\tcurrentStep++;\n\t\t\t\t\t};\n\t\t\t\t\tlet currentStep = 0;\n\t\t\t\t\tlet blockHasToolInvocations = false;\n\t\t\t\t\tlet block = [];\n\t\t\t\t\tfor (const part of message.parts) switch (part.type) {\n\t\t\t\t\t\tcase \"text\":\n\t\t\t\t\t\t\tif (blockHasToolInvocations) processBlock2();\n\t\t\t\t\t\t\tblock.push(part);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"file\":\n\t\t\t\t\t\tcase \"reasoning\":\n\t\t\t\t\t\t\tblock.push(part);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"tool-invocation\":\n\t\t\t\t\t\t\tif (((_b = part.toolInvocation.step) != null ? _b : 0) !== currentStep) processBlock2();\n\t\t\t\t\t\t\tblock.push(part);\n\t\t\t\t\t\t\tblockHasToolInvocations = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tprocessBlock2();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tconst toolInvocations = message.toolInvocations;\n\t\t\t\tif (toolInvocations == null || toolInvocations.length === 0) {\n\t\t\t\t\tcoreMessages.push({\n\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\tcontent\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tconst maxStep = toolInvocations.reduce((max, toolInvocation) => {\n\t\t\t\t\tvar _a18;\n\t\t\t\t\treturn Math.max(max, (_a18 = toolInvocation.step) != null ? _a18 : 0);\n\t\t\t\t}, 0);\n\t\t\t\tfor (let i2 = 0; i2 <= maxStep; i2++) {\n\t\t\t\t\tconst stepInvocations = toolInvocations.filter((toolInvocation) => {\n\t\t\t\t\t\tvar _a18;\n\t\t\t\t\t\treturn ((_a18 = toolInvocation.step) != null ? _a18 : 0) === i2;\n\t\t\t\t\t});\n\t\t\t\t\tif (stepInvocations.length === 0) continue;\n\t\t\t\t\tcoreMessages.push({\n\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\tcontent: [...isLastMessage && content && i2 === 0 ? [{\n\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\ttext: content\n\t\t\t\t\t\t}] : [], ...stepInvocations.map(({ toolCallId, toolName, args }) => ({\n\t\t\t\t\t\t\ttype: \"tool-call\",\n\t\t\t\t\t\t\ttoolCallId,\n\t\t\t\t\t\t\ttoolName,\n\t\t\t\t\t\t\targs\n\t\t\t\t\t\t}))]\n\t\t\t\t\t});\n\t\t\t\t\tcoreMessages.push({\n\t\t\t\t\t\trole: \"tool\",\n\t\t\t\t\t\tcontent: stepInvocations.map((toolInvocation) => {\n\t\t\t\t\t\t\tif (!(\"result\" in toolInvocation)) throw new MessageConversionError({\n\t\t\t\t\t\t\t\toriginalMessage: message,\n\t\t\t\t\t\t\t\tmessage: \"ToolInvocation must have a result: \" + JSON.stringify(toolInvocation)\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tconst { toolCallId, toolName, result } = toolInvocation;\n\t\t\t\t\t\t\tconst tool2 = tools[toolName];\n\t\t\t\t\t\t\treturn (tool2 == null ? void 0 : tool2.experimental_toToolResultContent) != null ? {\n\t\t\t\t\t\t\t\ttype: \"tool-result\",\n\t\t\t\t\t\t\t\ttoolCallId,\n\t\t\t\t\t\t\t\ttoolName,\n\t\t\t\t\t\t\t\tresult: tool2.experimental_toToolResultContent(result),\n\t\t\t\t\t\t\t\texperimental_content: tool2.experimental_toToolResultContent(result)\n\t\t\t\t\t\t\t} : {\n\t\t\t\t\t\t\t\ttype: \"tool-result\",\n\t\t\t\t\t\t\t\ttoolCallId,\n\t\t\t\t\t\t\t\ttoolName,\n\t\t\t\t\t\t\t\tresult\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t})\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (content && !isLastMessage) coreMessages.push({\n\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\tcontent\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"data\": break;\n\t\t\tdefault: throw new MessageConversionError({\n\t\t\t\toriginalMessage: message,\n\t\t\t\tmessage: `Unsupported role: ${role}`\n\t\t\t});\n\t\t}\n\t}\n\treturn coreMessages;\n}\nvar jsonValueSchema = z.lazy(() => z.union([\n\tz.null(),\n\tz.string(),\n\tz.number(),\n\tz.boolean(),\n\tz.record(z.string(), jsonValueSchema),\n\tz.array(jsonValueSchema)\n]));\nvar providerMetadataSchema = z.record(z.string(), z.record(z.string(), jsonValueSchema));\nvar toolResultContentSchema = z.array(z.union([z.object({\n\ttype: z.literal(\"text\"),\n\ttext: z.string()\n}), z.object({\n\ttype: z.literal(\"image\"),\n\tdata: z.string(),\n\tmimeType: z.string().optional()\n})]));\nvar textPartSchema = z.object({\n\ttype: z.literal(\"text\"),\n\ttext: z.string(),\n\tproviderOptions: providerMetadataSchema.optional(),\n\texperimental_providerMetadata: providerMetadataSchema.optional()\n});\nvar imagePartSchema = z.object({\n\ttype: z.literal(\"image\"),\n\timage: z.union([dataContentSchema, z.instanceof(URL)]),\n\tmimeType: z.string().optional(),\n\tproviderOptions: providerMetadataSchema.optional(),\n\texperimental_providerMetadata: providerMetadataSchema.optional()\n});\nvar filePartSchema = z.object({\n\ttype: z.literal(\"file\"),\n\tdata: z.union([dataContentSchema, z.instanceof(URL)]),\n\tfilename: z.string().optional(),\n\tmimeType: z.string(),\n\tproviderOptions: providerMetadataSchema.optional(),\n\texperimental_providerMetadata: providerMetadataSchema.optional()\n});\nvar reasoningPartSchema = z.object({\n\ttype: z.literal(\"reasoning\"),\n\ttext: z.string(),\n\tproviderOptions: providerMetadataSchema.optional(),\n\texperimental_providerMetadata: providerMetadataSchema.optional()\n});\nvar redactedReasoningPartSchema = z.object({\n\ttype: z.literal(\"redacted-reasoning\"),\n\tdata: z.string(),\n\tproviderOptions: providerMetadataSchema.optional(),\n\texperimental_providerMetadata: providerMetadataSchema.optional()\n});\nvar toolCallPartSchema = z.object({\n\ttype: z.literal(\"tool-call\"),\n\ttoolCallId: z.string(),\n\ttoolName: z.string(),\n\targs: z.unknown(),\n\tproviderOptions: providerMetadataSchema.optional(),\n\texperimental_providerMetadata: providerMetadataSchema.optional()\n});\nvar toolResultPartSchema = z.object({\n\ttype: z.literal(\"tool-result\"),\n\ttoolCallId: z.string(),\n\ttoolName: z.string(),\n\tresult: z.unknown(),\n\tcontent: toolResultContentSchema.optional(),\n\tisError: z.boolean().optional(),\n\tproviderOptions: providerMetadataSchema.optional(),\n\texperimental_providerMetadata: providerMetadataSchema.optional()\n});\nvar coreSystemMessageSchema = z.object({\n\trole: z.literal(\"system\"),\n\tcontent: z.string(),\n\tproviderOptions: providerMetadataSchema.optional(),\n\texperimental_providerMetadata: providerMetadataSchema.optional()\n});\nvar coreUserMessageSchema = z.object({\n\trole: z.literal(\"user\"),\n\tcontent: z.union([z.string(), z.array(z.union([\n\t\ttextPartSchema,\n\t\timagePartSchema,\n\t\tfilePartSchema\n\t]))]),\n\tproviderOptions: providerMetadataSchema.optional(),\n\texperimental_providerMetadata: providerMetadataSchema.optional()\n});\nvar coreAssistantMessageSchema = z.object({\n\trole: z.literal(\"assistant\"),\n\tcontent: z.union([z.string(), z.array(z.union([\n\t\ttextPartSchema,\n\t\tfilePartSchema,\n\t\treasoningPartSchema,\n\t\tredactedReasoningPartSchema,\n\t\ttoolCallPartSchema\n\t]))]),\n\tproviderOptions: providerMetadataSchema.optional(),\n\texperimental_providerMetadata: providerMetadataSchema.optional()\n});\nvar coreToolMessageSchema = z.object({\n\trole: z.literal(\"tool\"),\n\tcontent: z.array(toolResultPartSchema),\n\tproviderOptions: providerMetadataSchema.optional(),\n\texperimental_providerMetadata: providerMetadataSchema.optional()\n});\nvar coreMessageSchema = z.union([\n\tcoreSystemMessageSchema,\n\tcoreUserMessageSchema,\n\tcoreAssistantMessageSchema,\n\tcoreToolMessageSchema\n]);\nfunction standardizePrompt({ prompt, tools }) {\n\tif (prompt.prompt == null && prompt.messages == null) throw new InvalidPromptError({\n\t\tprompt,\n\t\tmessage: \"prompt or messages must be defined\"\n\t});\n\tif (prompt.prompt != null && prompt.messages != null) throw new InvalidPromptError({\n\t\tprompt,\n\t\tmessage: \"prompt and messages cannot be defined at the same time\"\n\t});\n\tif (prompt.system != null && typeof prompt.system !== \"string\") throw new InvalidPromptError({\n\t\tprompt,\n\t\tmessage: \"system must be a string\"\n\t});\n\tif (prompt.prompt != null) {\n\t\tif (typeof prompt.prompt !== \"string\") throw new InvalidPromptError({\n\t\t\tprompt,\n\t\t\tmessage: \"prompt must be a string\"\n\t\t});\n\t\treturn {\n\t\t\ttype: \"prompt\",\n\t\t\tsystem: prompt.system,\n\t\t\tmessages: [{\n\t\t\t\trole: \"user\",\n\t\t\t\tcontent: prompt.prompt\n\t\t\t}]\n\t\t};\n\t}\n\tif (prompt.messages != null) {\n\t\tconst messages = detectPromptType(prompt.messages) === \"ui-messages\" ? convertToCoreMessages(prompt.messages, { tools }) : prompt.messages;\n\t\tif (messages.length === 0) throw new InvalidPromptError({\n\t\t\tprompt,\n\t\t\tmessage: \"messages must not be empty\"\n\t\t});\n\t\tconst validationResult = safeValidateTypes({\n\t\t\tvalue: messages,\n\t\t\tschema: z.array(coreMessageSchema)\n\t\t});\n\t\tif (!validationResult.success) throw new InvalidPromptError({\n\t\t\tprompt,\n\t\t\tmessage: [\"message must be a CoreMessage or a UI message\", `Validation error: ${validationResult.error.message}`].join(\"\\n\"),\n\t\t\tcause: validationResult.error\n\t\t});\n\t\treturn {\n\t\t\ttype: \"messages\",\n\t\t\tmessages,\n\t\t\tsystem: prompt.system\n\t\t};\n\t}\n\tthrow new Error(\"unreachable\");\n}\nfunction detectPromptType(prompt) {\n\tif (!Array.isArray(prompt)) throw new InvalidPromptError({\n\t\tprompt,\n\t\tmessage: [\"messages must be an array of CoreMessage or UIMessage\", `Received non-array value: ${JSON.stringify(prompt)}`].join(\"\\n\"),\n\t\tcause: prompt\n\t});\n\tif (prompt.length === 0) return \"messages\";\n\tconst characteristics = prompt.map(detectSingleMessageCharacteristics);\n\tif (characteristics.some((c) => c === \"has-ui-specific-parts\")) return \"ui-messages\";\n\tconst nonMessageIndex = characteristics.findIndex((c) => c !== \"has-core-specific-parts\" && c !== \"message\");\n\tif (nonMessageIndex === -1) return \"messages\";\n\tthrow new InvalidPromptError({\n\t\tprompt,\n\t\tmessage: [\n\t\t\t\"messages must be an array of CoreMessage or UIMessage\",\n\t\t\t`Received message of type: \"${characteristics[nonMessageIndex]}\" at index ${nonMessageIndex}`,\n\t\t\t`messages[${nonMessageIndex}]: ${JSON.stringify(prompt[nonMessageIndex])}`\n\t\t].join(\"\\n\"),\n\t\tcause: prompt\n\t});\n}\nfunction detectSingleMessageCharacteristics(message) {\n\tif (typeof message === \"object\" && message !== null && (message.role === \"function\" || message.role === \"data\" || \"toolInvocations\" in message || \"parts\" in message || \"experimental_attachments\" in message)) return \"has-ui-specific-parts\";\n\telse if (typeof message === \"object\" && message !== null && \"content\" in message && (Array.isArray(message.content) || \"experimental_providerMetadata\" in message || \"providerOptions\" in message)) return \"has-core-specific-parts\";\n\telse if (typeof message === \"object\" && message !== null && \"role\" in message && \"content\" in message && typeof message.content === \"string\" && [\n\t\t\"system\",\n\t\t\"user\",\n\t\t\"assistant\",\n\t\t\"tool\"\n\t].includes(message.role)) return \"message\";\n\telse return \"other\";\n}\nfunction calculateLanguageModelUsage({ promptTokens, completionTokens }) {\n\treturn {\n\t\tpromptTokens,\n\t\tcompletionTokens,\n\t\ttotalTokens: promptTokens + completionTokens\n\t};\n}\nfunction addLanguageModelUsage(usage1, usage2) {\n\treturn {\n\t\tpromptTokens: usage1.promptTokens + usage2.promptTokens,\n\t\tcompletionTokens: usage1.completionTokens + usage2.completionTokens,\n\t\ttotalTokens: usage1.totalTokens + usage2.totalTokens\n\t};\n}\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({ prompt, schema, schemaPrefix = schema != null ? DEFAULT_SCHEMA_PREFIX : void 0, schemaSuffix = schema != null ? DEFAULT_SCHEMA_SUFFIX : DEFAULT_GENERIC_SUFFIX }) {\n\treturn [\n\t\tprompt != null && prompt.length > 0 ? prompt : void 0,\n\t\tprompt != null && prompt.length > 0 ? \"\" : void 0,\n\t\tschemaPrefix,\n\t\tschema != null ? JSON.stringify(schema) : void 0,\n\t\tschemaSuffix\n\t].filter((line) => line != null).join(\"\\n\");\n}\nfunction createAsyncIterableStream(source) {\n\tconst stream = source.pipeThrough(new TransformStream());\n\tstream[Symbol.asyncIterator] = () => {\n\t\tconst reader = stream.getReader();\n\t\treturn { async next() {\n\t\t\tconst { done, value } = await reader.read();\n\t\t\treturn done ? {\n\t\t\t\tdone: true,\n\t\t\t\tvalue: void 0\n\t\t\t} : {\n\t\t\t\tdone: false,\n\t\t\t\tvalue\n\t\t\t};\n\t\t} };\n\t};\n\treturn stream;\n}\nvar noSchemaOutputStrategy = {\n\ttype: \"no-schema\",\n\tjsonSchema: void 0,\n\tvalidatePartialResult({ value, textDelta }) {\n\t\treturn {\n\t\t\tsuccess: true,\n\t\t\tvalue: {\n\t\t\t\tpartial: value,\n\t\t\t\ttextDelta\n\t\t\t}\n\t\t};\n\t},\n\tvalidateFinalResult(value, context) {\n\t\treturn value === void 0 ? {\n\t\t\tsuccess: false,\n\t\t\terror: new NoObjectGeneratedError({\n\t\t\t\tmessage: \"No object generated: response did not match schema.\",\n\t\t\t\ttext: context.text,\n\t\t\t\tresponse: context.response,\n\t\t\t\tusage: context.usage,\n\t\t\t\tfinishReason: context.finishReason\n\t\t\t})\n\t\t} : {\n\t\t\tsuccess: true,\n\t\t\tvalue\n\t\t};\n\t},\n\tcreateElementStream() {\n\t\tthrow new UnsupportedFunctionalityError({ functionality: \"element streams in no-schema mode\" });\n\t}\n};\nvar objectOutputStrategy = (schema) => ({\n\ttype: \"object\",\n\tjsonSchema: schema.jsonSchema,\n\tvalidatePartialResult({ value, textDelta }) {\n\t\treturn {\n\t\t\tsuccess: true,\n\t\t\tvalue: {\n\t\t\t\tpartial: value,\n\t\t\t\ttextDelta\n\t\t\t}\n\t\t};\n\t},\n\tvalidateFinalResult(value) {\n\t\treturn safeValidateTypes({\n\t\t\tvalue,\n\t\t\tschema\n\t\t});\n\t},\n\tcreateElementStream() {\n\t\tthrow new UnsupportedFunctionalityError({ functionality: \"element streams in object mode\" });\n\t}\n});\nvar arrayOutputStrategy = (schema) => {\n\tconst { $schema, ...itemSchema } = schema.jsonSchema;\n\treturn {\n\t\ttype: \"enum\",\n\t\tjsonSchema: {\n\t\t\t$schema: \"http://json-schema.org/draft-07/schema#\",\n\t\t\ttype: \"object\",\n\t\t\tproperties: { elements: {\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: itemSchema\n\t\t\t} },\n\t\t\trequired: [\"elements\"],\n\t\t\tadditionalProperties: false\n\t\t},\n\t\tvalidatePartialResult({ value, latestObject, isFirstDelta, isFinalDelta }) {\n\t\t\tvar _a17;\n\t\t\tif (!isJSONObject(value) || !isJSONArray(value.elements)) return {\n\t\t\t\tsuccess: false,\n\t\t\t\terror: new TypeValidationError({\n\t\t\t\t\tvalue,\n\t\t\t\t\tcause: \"value must be an object that contains an array of elements\"\n\t\t\t\t})\n\t\t\t};\n\t\t\tconst inputArray = value.elements;\n\t\t\tconst resultArray = [];\n\t\t\tfor (let i = 0; i < inputArray.length; i++) {\n\t\t\t\tconst element = inputArray[i];\n\t\t\t\tconst result = safeValidateTypes({\n\t\t\t\t\tvalue: element,\n\t\t\t\t\tschema\n\t\t\t\t});\n\t\t\t\tif (i === inputArray.length - 1 && !isFinalDelta) continue;\n\t\t\t\tif (!result.success) return result;\n\t\t\t\tresultArray.push(result.value);\n\t\t\t}\n\t\t\tconst publishedElementCount = (_a17 = latestObject == null ? void 0 : latestObject.length) != null ? _a17 : 0;\n\t\t\tlet textDelta = \"\";\n\t\t\tif (isFirstDelta) textDelta += \"[\";\n\t\t\tif (publishedElementCount > 0) textDelta += \",\";\n\t\t\ttextDelta += resultArray.slice(publishedElementCount).map((element) => JSON.stringify(element)).join(\",\");\n\t\t\tif (isFinalDelta) textDelta += \"]\";\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\tvalue: {\n\t\t\t\t\tpartial: resultArray,\n\t\t\t\t\ttextDelta\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t\tvalidateFinalResult(value) {\n\t\t\tif (!isJSONObject(value) || !isJSONArray(value.elements)) return {\n\t\t\t\tsuccess: false,\n\t\t\t\terror: new TypeValidationError({\n\t\t\t\t\tvalue,\n\t\t\t\t\tcause: \"value must be an object that contains an array of elements\"\n\t\t\t\t})\n\t\t\t};\n\t\t\tconst inputArray = value.elements;\n\t\t\tfor (const element of inputArray) {\n\t\t\t\tconst result = safeValidateTypes({\n\t\t\t\t\tvalue: element,\n\t\t\t\t\tschema\n\t\t\t\t});\n\t\t\t\tif (!result.success) return result;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\tvalue: inputArray\n\t\t\t};\n\t\t},\n\t\tcreateElementStream(originalStream) {\n\t\t\tlet publishedElements = 0;\n\t\t\treturn createAsyncIterableStream(originalStream.pipeThrough(new TransformStream({ transform(chunk, controller) {\n\t\t\t\tswitch (chunk.type) {\n\t\t\t\t\tcase \"object\": {\n\t\t\t\t\t\tconst array = chunk.object;\n\t\t\t\t\t\tfor (; publishedElements < array.length; publishedElements++) controller.enqueue(array[publishedElements]);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase \"text-delta\":\n\t\t\t\t\tcase \"finish\":\n\t\t\t\t\tcase \"error\": break;\n\t\t\t\t\tdefault: throw new Error(`Unsupported chunk type: ${chunk}`);\n\t\t\t\t}\n\t\t\t} })));\n\t\t}\n\t};\n};\nvar enumOutputStrategy = (enumValues) => {\n\treturn {\n\t\ttype: \"enum\",\n\t\tjsonSchema: {\n\t\t\t$schema: \"http://json-schema.org/draft-07/schema#\",\n\t\t\ttype: \"object\",\n\t\t\tproperties: { result: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tenum: enumValues\n\t\t\t} },\n\t\t\trequired: [\"result\"],\n\t\t\tadditionalProperties: false\n\t\t},\n\t\tvalidateFinalResult(value) {\n\t\t\tif (!isJSONObject(value) || typeof value.result !== \"string\") return {\n\t\t\t\tsuccess: false,\n\t\t\t\terror: new TypeValidationError({\n\t\t\t\t\tvalue,\n\t\t\t\t\tcause: \"value must be an object that contains a string in the \\\"result\\\" property.\"\n\t\t\t\t})\n\t\t\t};\n\t\t\tconst result = value.result;\n\t\t\treturn enumValues.includes(result) ? {\n\t\t\t\tsuccess: true,\n\t\t\t\tvalue: result\n\t\t\t} : {\n\t\t\t\tsuccess: false,\n\t\t\t\terror: new TypeValidationError({\n\t\t\t\t\tvalue,\n\t\t\t\t\tcause: \"value must be a string in the enum\"\n\t\t\t\t})\n\t\t\t};\n\t\t},\n\t\tvalidatePartialResult() {\n\t\t\tthrow new UnsupportedFunctionalityError({ functionality: \"partial results in enum mode\" });\n\t\t},\n\t\tcreateElementStream() {\n\t\t\tthrow new UnsupportedFunctionalityError({ functionality: \"element streams in enum mode\" });\n\t\t}\n\t};\n};\nfunction getOutputStrategy({ output, schema, enumValues }) {\n\tswitch (output) {\n\t\tcase \"object\": return objectOutputStrategy(asSchema(schema));\n\t\tcase \"array\": return arrayOutputStrategy(asSchema(schema));\n\t\tcase \"enum\": return enumOutputStrategy(enumValues);\n\t\tcase \"no-schema\": return noSchemaOutputStrategy;\n\t\tdefault: throw new Error(`Unsupported output: ${output}`);\n\t}\n}\nfunction validateObjectGenerationInput({ output, mode, schema, schemaName, schemaDescription, enumValues }) {\n\tif (output != null && output !== \"object\" && output !== \"array\" && output !== \"enum\" && output !== \"no-schema\") throw new InvalidArgumentError({\n\t\tparameter: \"output\",\n\t\tvalue: output,\n\t\tmessage: \"Invalid output type.\"\n\t});\n\tif (output === \"no-schema\") {\n\t\tif (mode === \"auto\" || mode === \"tool\") throw new InvalidArgumentError({\n\t\t\tparameter: \"mode\",\n\t\t\tvalue: mode,\n\t\t\tmessage: \"Mode must be \\\"json\\\" for no-schema output.\"\n\t\t});\n\t\tif (schema != null) throw new InvalidArgumentError({\n\t\t\tparameter: \"schema\",\n\t\t\tvalue: schema,\n\t\t\tmessage: \"Schema is not supported for no-schema output.\"\n\t\t});\n\t\tif (schemaDescription != null) throw new InvalidArgumentError({\n\t\t\tparameter: \"schemaDescription\",\n\t\t\tvalue: schemaDescription,\n\t\t\tmessage: \"Schema description is not supported for no-schema output.\"\n\t\t});\n\t\tif (schemaName != null) throw new InvalidArgumentError({\n\t\t\tparameter: \"schemaName\",\n\t\t\tvalue: schemaName,\n\t\t\tmessage: \"Schema name is not supported for no-schema output.\"\n\t\t});\n\t\tif (enumValues != null) throw new InvalidArgumentError({\n\t\t\tparameter: \"enumValues\",\n\t\t\tvalue: enumValues,\n\t\t\tmessage: \"Enum values are not supported for no-schema output.\"\n\t\t});\n\t}\n\tif (output === \"object\") {\n\t\tif (schema == null) throw new InvalidArgumentError({\n\t\t\tparameter: \"schema\",\n\t\t\tvalue: schema,\n\t\t\tmessage: \"Schema is required for object output.\"\n\t\t});\n\t\tif (enumValues != null) throw new InvalidArgumentError({\n\t\t\tparameter: \"enumValues\",\n\t\t\tvalue: enumValues,\n\t\t\tmessage: \"Enum values are not supported for object output.\"\n\t\t});\n\t}\n\tif (output === \"array\") {\n\t\tif (schema == null) throw new InvalidArgumentError({\n\t\t\tparameter: \"schema\",\n\t\t\tvalue: schema,\n\t\t\tmessage: \"Element schema is required for array output.\"\n\t\t});\n\t\tif (enumValues != null) throw new InvalidArgumentError({\n\t\t\tparameter: \"enumValues\",\n\t\t\tvalue: enumValues,\n\t\t\tmessage: \"Enum values are not supported for array output.\"\n\t\t});\n\t}\n\tif (output === \"enum\") {\n\t\tif (schema != null) throw new InvalidArgumentError({\n\t\t\tparameter: \"schema\",\n\t\t\tvalue: schema,\n\t\t\tmessage: \"Schema is not supported for enum output.\"\n\t\t});\n\t\tif (schemaDescription != null) throw new InvalidArgumentError({\n\t\t\tparameter: \"schemaDescription\",\n\t\t\tvalue: schemaDescription,\n\t\t\tmessage: \"Schema description is not supported for enum output.\"\n\t\t});\n\t\tif (schemaName != null) throw new InvalidArgumentError({\n\t\t\tparameter: \"schemaName\",\n\t\t\tvalue: schemaName,\n\t\t\tmessage: \"Schema name is not supported for enum output.\"\n\t\t});\n\t\tif (enumValues == null) throw new InvalidArgumentError({\n\t\t\tparameter: \"enumValues\",\n\t\t\tvalue: enumValues,\n\t\t\tmessage: \"Enum values are required for enum output.\"\n\t\t});\n\t\tfor (const value of enumValues) if (typeof value !== \"string\") throw new InvalidArgumentError({\n\t\t\tparameter: \"enumValues\",\n\t\t\tvalue,\n\t\t\tmessage: \"Enum values must be strings.\"\n\t\t});\n\t}\n}\nfunction stringifyForTelemetry(prompt) {\n\tconst processedPrompt = prompt.map((message) => {\n\t\treturn {\n\t\t\t...message,\n\t\t\tcontent: typeof message.content === \"string\" ? message.content : message.content.map(processPart)\n\t\t};\n\t});\n\treturn JSON.stringify(processedPrompt);\n}\nfunction processPart(part) {\n\tif (part.type === \"image\") return {\n\t\t...part,\n\t\timage: part.image instanceof Uint8Array ? convertDataContentToBase64String(part.image) : part.image\n\t};\n\treturn part;\n}\nvar originalGenerateId = createIdGenerator({\n\tprefix: \"aiobj\",\n\tsize: 24\n});\nasync function generateObject({ model, enum: enumValues, schema: inputSchema, schemaName, schemaDescription, mode, output = \"object\", system, prompt, messages, maxRetries: maxRetriesArg, abortSignal, headers, experimental_repairText: repairText, experimental_telemetry: telemetry, experimental_providerMetadata, providerOptions = experimental_providerMetadata, _internal: { generateId: generateId3 = originalGenerateId, currentDate = () => /* @__PURE__ */ new Date() } = {}, ...settings }) {\n\tif (typeof model === \"string\" || model.specificationVersion !== \"v1\") throw new UnsupportedModelVersionError();\n\tvalidateObjectGenerationInput({\n\t\toutput,\n\t\tmode,\n\t\tschema: inputSchema,\n\t\tschemaName,\n\t\tschemaDescription,\n\t\tenumValues\n\t});\n\tconst { maxRetries, retry } = prepareRetries({ maxRetries: maxRetriesArg });\n\tconst outputStrategy = getOutputStrategy({\n\t\toutput,\n\t\tschema: inputSchema,\n\t\tenumValues\n\t});\n\tif (outputStrategy.type === \"no-schema\" && mode === void 0) mode = \"json\";\n\tconst baseTelemetryAttributes = getBaseTelemetryAttributes({\n\t\tmodel,\n\t\ttelemetry,\n\t\theaders,\n\t\tsettings: {\n\t\t\t...settings,\n\t\t\tmaxRetries\n\t\t}\n\t});\n\tconst tracer = getTracer(telemetry);\n\treturn recordSpan({\n\t\tname: \"ai.generateObject\",\n\t\tattributes: selectTelemetryAttributes({\n\t\t\ttelemetry,\n\t\t\tattributes: {\n\t\t\t\t...assembleOperationName({\n\t\t\t\t\toperationId: \"ai.generateObject\",\n\t\t\t\t\ttelemetry\n\t\t\t\t}),\n\t\t\t\t...baseTelemetryAttributes,\n\t\t\t\t\"ai.prompt\": { input: () => JSON.stringify({\n\t\t\t\t\tsystem,\n\t\t\t\t\tprompt,\n\t\t\t\t\tmessages\n\t\t\t\t}) },\n\t\t\t\t\"ai.schema\": outputStrategy.jsonSchema != null ? { input: () => JSON.stringify(outputStrategy.jsonSchema) } : void 0,\n\t\t\t\t\"ai.schema.name\": schemaName,\n\t\t\t\t\"ai.schema.description\": schemaDescription,\n\t\t\t\t\"ai.settings.output\": outputStrategy.type,\n\t\t\t\t\"ai.settings.mode\": mode\n\t\t\t}\n\t\t}),\n\t\ttracer,\n\t\tfn: async (span) => {\n\t\t\tvar _a17, _b, _c, _d;\n\t\t\tif (mode === \"auto\" || mode == null) mode = model.defaultObjectGenerationMode;\n\t\t\tlet result;\n\t\t\tlet finishReason;\n\t\t\tlet usage;\n\t\t\tlet warnings;\n\t\t\tlet rawResponse;\n\t\t\tlet response;\n\t\t\tlet request;\n\t\t\tlet logprobs;\n\t\t\tlet resultProviderMetadata;\n\t\t\tswitch (mode) {\n\t\t\t\tcase \"json\": {\n\t\t\t\t\tconst standardizedPrompt = standardizePrompt({\n\t\t\t\t\t\tprompt: {\n\t\t\t\t\t\t\tsystem: outputStrategy.jsonSchema == null ? injectJsonInstruction({ prompt: system }) : model.supportsStructuredOutputs ? system : injectJsonInstruction({\n\t\t\t\t\t\t\t\tprompt: system,\n\t\t\t\t\t\t\t\tschema: outputStrategy.jsonSchema\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tprompt,\n\t\t\t\t\t\t\tmessages\n\t\t\t\t\t\t},\n\t\t\t\t\t\ttools: void 0\n\t\t\t\t\t});\n\t\t\t\t\tconst promptMessages = await convertToLanguageModelPrompt({\n\t\t\t\t\t\tprompt: standardizedPrompt,\n\t\t\t\t\t\tmodelSupportsImageUrls: model.supportsImageUrls,\n\t\t\t\t\t\tmodelSupportsUrl: (_a17 = model.supportsUrl) == null ? void 0 : _a17.bind(model)\n\t\t\t\t\t});\n\t\t\t\t\tconst generateResult = await retry(() => recordSpan({\n\t\t\t\t\t\tname: \"ai.generateObject.doGenerate\",\n\t\t\t\t\t\tattributes: selectTelemetryAttributes({\n\t\t\t\t\t\t\ttelemetry,\n\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t...assembleOperationName({\n\t\t\t\t\t\t\t\t\toperationId: \"ai.generateObject.doGenerate\",\n\t\t\t\t\t\t\t\t\ttelemetry\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t...baseTelemetryAttributes,\n\t\t\t\t\t\t\t\t\"ai.prompt.format\": { input: () => standardizedPrompt.type },\n\t\t\t\t\t\t\t\t\"ai.prompt.messages\": { input: () => JSON.stringify(promptMessages) },\n\t\t\t\t\t\t\t\t\"ai.settings.mode\": mode,\n\t\t\t\t\t\t\t\t\"gen_ai.system\": model.provider,\n\t\t\t\t\t\t\t\t\"gen_ai.request.model\": model.modelId,\n\t\t\t\t\t\t\t\t\"gen_ai.request.frequency_penalty\": settings.frequencyPenalty,\n\t\t\t\t\t\t\t\t\"gen_ai.request.max_tokens\": settings.maxTokens,\n\t\t\t\t\t\t\t\t\"gen_ai.request.presence_penalty\": settings.presencePenalty,\n\t\t\t\t\t\t\t\t\"gen_ai.request.temperature\": settings.temperature,\n\t\t\t\t\t\t\t\t\"gen_ai.request.top_k\": settings.topK,\n\t\t\t\t\t\t\t\t\"gen_ai.request.top_p\": settings.topP\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}),\n\t\t\t\t\t\ttracer,\n\t\t\t\t\t\tfn: async (span2) => {\n\t\t\t\t\t\t\tvar _a18, _b2, _c2, _d2, _e, _f;\n\t\t\t\t\t\t\tconst result2 = await model.doGenerate({\n\t\t\t\t\t\t\t\tmode: {\n\t\t\t\t\t\t\t\t\ttype: \"object-json\",\n\t\t\t\t\t\t\t\t\tschema: outputStrategy.jsonSchema,\n\t\t\t\t\t\t\t\t\tname: schemaName,\n\t\t\t\t\t\t\t\t\tdescription: schemaDescription\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t...prepareCallSettings(settings),\n\t\t\t\t\t\t\t\tinputFormat: standardizedPrompt.type,\n\t\t\t\t\t\t\t\tprompt: promptMessages,\n\t\t\t\t\t\t\t\tproviderMetadata: providerOptions,\n\t\t\t\t\t\t\t\tabortSignal,\n\t\t\t\t\t\t\t\theaders\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tconst responseData = {\n\t\t\t\t\t\t\t\tid: (_b2 = (_a18 = result2.response) == null ? void 0 : _a18.id) != null ? _b2 : generateId3(),\n\t\t\t\t\t\t\t\ttimestamp: (_d2 = (_c2 = result2.response) == null ? void 0 : _c2.timestamp) != null ? _d2 : currentDate(),\n\t\t\t\t\t\t\t\tmodelId: (_f = (_e = result2.response) == null ? void 0 : _e.modelId) != null ? _f : model.modelId\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tif (result2.text === void 0) throw new NoObjectGeneratedError({\n\t\t\t\t\t\t\t\tmessage: \"No object generated: the model did not return a response.\",\n\t\t\t\t\t\t\t\tresponse: responseData,\n\t\t\t\t\t\t\t\tusage: calculateLanguageModelUsage(result2.usage),\n\t\t\t\t\t\t\t\tfinishReason: result2.finishReason\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tspan2.setAttributes(selectTelemetryAttributes({\n\t\t\t\t\t\t\t\ttelemetry,\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t\"ai.response.finishReason\": result2.finishReason,\n\t\t\t\t\t\t\t\t\t\"ai.response.object\": { output: () => result2.text },\n\t\t\t\t\t\t\t\t\t\"ai.response.id\": responseData.id,\n\t\t\t\t\t\t\t\t\t\"ai.response.model\": responseData.modelId,\n\t\t\t\t\t\t\t\t\t\"ai.response.timestamp\": responseData.timestamp.toISOString(),\n\t\t\t\t\t\t\t\t\t\"ai.response.providerMetadata\": JSON.stringify(result2.providerMetadata),\n\t\t\t\t\t\t\t\t\t\"ai.usage.promptTokens\": result2.usage.promptTokens,\n\t\t\t\t\t\t\t\t\t\"ai.usage.completionTokens\": result2.usage.completionTokens,\n\t\t\t\t\t\t\t\t\t\"gen_ai.response.finish_reasons\": [result2.finishReason],\n\t\t\t\t\t\t\t\t\t\"gen_ai.response.id\": responseData.id,\n\t\t\t\t\t\t\t\t\t\"gen_ai.response.model\": responseData.modelId,\n\t\t\t\t\t\t\t\t\t\"gen_ai.usage.prompt_tokens\": result2.usage.promptTokens,\n\t\t\t\t\t\t\t\t\t\"gen_ai.usage.completion_tokens\": result2.usage.completionTokens\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...result2,\n\t\t\t\t\t\t\t\tobjectText: result2.text,\n\t\t\t\t\t\t\t\tresponseData\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}));\n\t\t\t\t\tresult = generateResult.objectText;\n\t\t\t\t\tfinishReason = generateResult.finishReason;\n\t\t\t\t\tusage = generateResult.usage;\n\t\t\t\t\twarnings = generateResult.warnings;\n\t\t\t\t\trawResponse = generateResult.rawResponse;\n\t\t\t\t\tlogprobs = generateResult.logprobs;\n\t\t\t\t\tresultProviderMetadata = generateResult.providerMetadata;\n\t\t\t\t\trequest = (_b = generateResult.request) != null ? _b : {};\n\t\t\t\t\tresponse = generateResult.responseData;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"tool\": {\n\t\t\t\t\tconst standardizedPrompt = standardizePrompt({\n\t\t\t\t\t\tprompt: {\n\t\t\t\t\t\t\tsystem,\n\t\t\t\t\t\t\tprompt,\n\t\t\t\t\t\t\tmessages\n\t\t\t\t\t\t},\n\t\t\t\t\t\ttools: void 0\n\t\t\t\t\t});\n\t\t\t\t\tconst promptMessages = await convertToLanguageModelPrompt({\n\t\t\t\t\t\tprompt: standardizedPrompt,\n\t\t\t\t\t\tmodelSupportsImageUrls: model.supportsImageUrls,\n\t\t\t\t\t\tmodelSupportsUrl: (_c = model.supportsUrl) == null ? void 0 : _c.bind(model)\n\t\t\t\t\t});\n\t\t\t\t\tconst inputFormat = standardizedPrompt.type;\n\t\t\t\t\tconst generateResult = await retry(() => recordSpan({\n\t\t\t\t\t\tname: \"ai.generateObject.doGenerate\",\n\t\t\t\t\t\tattributes: selectTelemetryAttributes({\n\t\t\t\t\t\t\ttelemetry,\n\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t...assembleOperationName({\n\t\t\t\t\t\t\t\t\toperationId: \"ai.generateObject.doGenerate\",\n\t\t\t\t\t\t\t\t\ttelemetry\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t...baseTelemetryAttributes,\n\t\t\t\t\t\t\t\t\"ai.prompt.format\": { input: () => inputFormat },\n\t\t\t\t\t\t\t\t\"ai.prompt.messages\": { input: () => stringifyForTelemetry(promptMessages) },\n\t\t\t\t\t\t\t\t\"ai.settings.mode\": mode,\n\t\t\t\t\t\t\t\t\"gen_ai.system\": model.provider,\n\t\t\t\t\t\t\t\t\"gen_ai.request.model\": model.modelId,\n\t\t\t\t\t\t\t\t\"gen_ai.request.frequency_penalty\": settings.frequencyPenalty,\n\t\t\t\t\t\t\t\t\"gen_ai.request.max_tokens\": settings.maxTokens,\n\t\t\t\t\t\t\t\t\"gen_ai.request.presence_penalty\": settings.presencePenalty,\n\t\t\t\t\t\t\t\t\"gen_ai.request.temperature\": settings.temperature,\n\t\t\t\t\t\t\t\t\"gen_ai.request.top_k\": settings.topK,\n\t\t\t\t\t\t\t\t\"gen_ai.request.top_p\": settings.topP\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}),\n\t\t\t\t\t\ttracer,\n\t\t\t\t\t\tfn: async (span2) => {\n\t\t\t\t\t\t\tvar _a18, _b2, _c2, _d2, _e, _f, _g, _h;\n\t\t\t\t\t\t\tconst result2 = await model.doGenerate({\n\t\t\t\t\t\t\t\tmode: {\n\t\t\t\t\t\t\t\t\ttype: \"object-tool\",\n\t\t\t\t\t\t\t\t\ttool: {\n\t\t\t\t\t\t\t\t\t\ttype: \"function\",\n\t\t\t\t\t\t\t\t\t\tname: schemaName != null ? schemaName : \"json\",\n\t\t\t\t\t\t\t\t\t\tdescription: schemaDescription != null ? schemaDescription : \"Respond with a JSON object.\",\n\t\t\t\t\t\t\t\t\t\tparameters: outputStrategy.jsonSchema\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t...prepareCallSettings(settings),\n\t\t\t\t\t\t\t\tinputFormat,\n\t\t\t\t\t\t\t\tprompt: promptMessages,\n\t\t\t\t\t\t\t\tproviderMetadata: providerOptions,\n\t\t\t\t\t\t\t\tabortSignal,\n\t\t\t\t\t\t\t\theaders\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tconst objectText = (_b2 = (_a18 = result2.toolCalls) == null ? void 0 : _a18[0]) == null ? void 0 : _b2.args;\n\t\t\t\t\t\t\tconst responseData = {\n\t\t\t\t\t\t\t\tid: (_d2 = (_c2 = result2.response) == null ? void 0 : _c2.id) != null ? _d2 : generateId3(),\n\t\t\t\t\t\t\t\ttimestamp: (_f = (_e = result2.response) == null ? void 0 : _e.timestamp) != null ? _f : currentDate(),\n\t\t\t\t\t\t\t\tmodelId: (_h = (_g = result2.response) == null ? void 0 : _g.modelId) != null ? _h : model.modelId\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tif (objectText === void 0) throw new NoObjectGeneratedError({\n\t\t\t\t\t\t\t\tmessage: \"No object generated: the tool was not called.\",\n\t\t\t\t\t\t\t\tresponse: responseData,\n\t\t\t\t\t\t\t\tusage: calculateLanguageModelUsage(result2.usage),\n\t\t\t\t\t\t\t\tfinishReason: result2.finishReason\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tspan2.setAttributes(selectTelemetryAttributes({\n\t\t\t\t\t\t\t\ttelemetry,\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t\"ai.response.finishReason\": result2.finishReason,\n\t\t\t\t\t\t\t\t\t\"ai.response.object\": { output: () => objectText },\n\t\t\t\t\t\t\t\t\t\"ai.response.id\": responseData.id,\n\t\t\t\t\t\t\t\t\t\"ai.response.model\": responseData.modelId,\n\t\t\t\t\t\t\t\t\t\"ai.response.timestamp\": responseData.timestamp.toISOString(),\n\t\t\t\t\t\t\t\t\t\"ai.response.providerMetadata\": JSON.stringify(result2.providerMetadata),\n\t\t\t\t\t\t\t\t\t\"ai.usage.promptTokens\": result2.usage.promptTokens,\n\t\t\t\t\t\t\t\t\t\"ai.usage.completionTokens\": result2.usage.completionTokens,\n\t\t\t\t\t\t\t\t\t\"gen_ai.response.finish_reasons\": [result2.finishReason],\n\t\t\t\t\t\t\t\t\t\"gen_ai.response.id\": responseData.id,\n\t\t\t\t\t\t\t\t\t\"gen_ai.response.model\": responseData.modelId,\n\t\t\t\t\t\t\t\t\t\"gen_ai.usage.input_tokens\": result2.usage.promptTokens,\n\t\t\t\t\t\t\t\t\t\"gen_ai.usage.output_tokens\": result2.usage.completionTokens\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...result2,\n\t\t\t\t\t\t\t\tobjectText,\n\t\t\t\t\t\t\t\tresponseData\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}));\n\t\t\t\t\tresult = generateResult.objectText;\n\t\t\t\t\tfinishReason = generateResult.finishReason;\n\t\t\t\t\tusage = generateResult.usage;\n\t\t\t\t\twarnings = generateResult.warnings;\n\t\t\t\t\trawResponse = generateResult.rawResponse;\n\t\t\t\t\tlogprobs = generateResult.logprobs;\n\t\t\t\t\tresultProviderMetadata = generateResult.providerMetadata;\n\t\t\t\t\trequest = (_d = generateResult.request) != null ? _d : {};\n\t\t\t\t\tresponse = generateResult.responseData;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase void 0: throw new Error(\"Model does not have a default object generation mode.\");\n\t\t\t\tdefault: throw new Error(`Unsupported mode: ${mode}`);\n\t\t\t}\n\t\t\tfunction processResult(result2) {\n\t\t\t\tconst parseResult = safeParseJSON({ text: result2 });\n\t\t\t\tif (!parseResult.success) throw new NoObjectGeneratedError({\n\t\t\t\t\tmessage: \"No object generated: could not parse the response.\",\n\t\t\t\t\tcause: parseResult.error,\n\t\t\t\t\ttext: result2,\n\t\t\t\t\tresponse,\n\t\t\t\t\tusage: calculateLanguageModelUsage(usage),\n\t\t\t\t\tfinishReason\n\t\t\t\t});\n\t\t\t\tconst validationResult = outputStrategy.validateFinalResult(parseResult.value, {\n\t\t\t\t\ttext: result2,\n\t\t\t\t\tresponse,\n\t\t\t\t\tusage: calculateLanguageModelUsage(usage)\n\t\t\t\t});\n\t\t\t\tif (!validationResult.success) throw new NoObjectGeneratedError({\n\t\t\t\t\tmessage: \"No object generated: response did not match schema.\",\n\t\t\t\t\tcause: validationResult.error,\n\t\t\t\t\ttext: result2,\n\t\t\t\t\tresponse,\n\t\t\t\t\tusage: calculateLanguageModelUsage(usage),\n\t\t\t\t\tfinishReason\n\t\t\t\t});\n\t\t\t\treturn validationResult.value;\n\t\t\t}\n\t\t\tlet object2;\n\t\t\ttry {\n\t\t\t\tobject2 = processResult(result);\n\t\t\t} catch (error) {\n\t\t\t\tif (repairText != null && NoObjectGeneratedError.isInstance(error) && (JSONParseError.isInstance(error.cause) || TypeValidationError.isInstance(error.cause))) {\n\t\t\t\t\tconst repairedText = await repairText({\n\t\t\t\t\t\ttext: result,\n\t\t\t\t\t\terror: error.cause\n\t\t\t\t\t});\n\t\t\t\t\tif (repairedText === null) throw error;\n\t\t\t\t\tobject2 = processResult(repairedText);\n\t\t\t\t} else throw error;\n\t\t\t}\n\t\t\tspan.setAttributes(selectTelemetryAttributes({\n\t\t\t\ttelemetry,\n\t\t\t\tattributes: {\n\t\t\t\t\t\"ai.response.finishReason\": finishReason,\n\t\t\t\t\t\"ai.response.object\": { output: () => JSON.stringify(object2) },\n\t\t\t\t\t\"ai.usage.promptTokens\": usage.promptTokens,\n\t\t\t\t\t\"ai.usage.completionTokens\": usage.completionTokens\n\t\t\t\t}\n\t\t\t}));\n\t\t\treturn new DefaultGenerateObjectResult({\n\t\t\t\tobject: object2,\n\t\t\t\tfinishReason,\n\t\t\t\tusage: calculateLanguageModelUsage(usage),\n\t\t\t\twarnings,\n\t\t\t\trequest,\n\t\t\t\tresponse: {\n\t\t\t\t\t...response,\n\t\t\t\t\theaders: rawResponse == null ? void 0 : rawResponse.headers,\n\t\t\t\t\tbody: rawResponse == null ? void 0 : rawResponse.body\n\t\t\t\t},\n\t\t\t\tlogprobs,\n\t\t\t\tproviderMetadata: resultProviderMetadata\n\t\t\t});\n\t\t}\n\t});\n}\nvar DefaultGenerateObjectResult = class {\n\tconstructor(options) {\n\t\tthis.object = options.object;\n\t\tthis.finishReason = options.finishReason;\n\t\tthis.usage = options.usage;\n\t\tthis.warnings = options.warnings;\n\t\tthis.providerMetadata = options.providerMetadata;\n\t\tthis.experimental_providerMetadata = options.providerMetadata;\n\t\tthis.response = options.response;\n\t\tthis.request = options.request;\n\t\tthis.logprobs = options.logprobs;\n\t}\n\ttoJsonResponse(init) {\n\t\tvar _a17;\n\t\treturn new Response(JSON.stringify(this.object), {\n\t\t\tstatus: (_a17 = init == null ? void 0 : init.status) != null ? _a17 : 200,\n\t\t\theaders: prepareResponseHeaders(init == null ? void 0 : init.headers, { contentType: \"application/json; charset=utf-8\" })\n\t\t});\n\t}\n};\nvar DelayedPromise = class {\n\tconstructor() {\n\t\tthis.status = { type: \"pending\" };\n\t\tthis._resolve = void 0;\n\t\tthis._reject = void 0;\n\t}\n\tget value() {\n\t\tif (this.promise) return this.promise;\n\t\tthis.promise = new Promise((resolve, reject) => {\n\t\t\tif (this.status.type === \"resolved\") resolve(this.status.value);\n\t\t\telse if (this.status.type === \"rejected\") reject(this.status.error);\n\t\t\tthis._resolve = resolve;\n\t\t\tthis._reject = reject;\n\t\t});\n\t\treturn this.promise;\n\t}\n\tresolve(value) {\n\t\tvar _a17;\n\t\tthis.status = {\n\t\t\ttype: \"resolved\",\n\t\t\tvalue\n\t\t};\n\t\tif (this.promise) (_a17 = this._resolve) == null || _a17.call(this, value);\n\t}\n\treject(error) {\n\t\tvar _a17;\n\t\tthis.status = {\n\t\t\ttype: \"rejected\",\n\t\t\terror\n\t\t};\n\t\tif (this.promise) (_a17 = this._reject) == null || _a17.call(this, error);\n\t}\n};\nfunction createResolvablePromise() {\n\tlet resolve;\n\tlet reject;\n\treturn {\n\t\tpromise: new Promise((res, rej) => {\n\t\t\tresolve = res;\n\t\t\treject = rej;\n\t\t}),\n\t\tresolve,\n\t\treject\n\t};\n}\nfunction createStitchableStream() {\n\tlet innerStreamReaders = [];\n\tlet controller = null;\n\tlet isClosed = false;\n\tlet waitForNewStream = createResolvablePromise();\n\tconst processPull = async () => {\n\t\tif (isClosed && innerStreamReaders.length === 0) {\n\t\t\tcontroller?.close();\n\t\t\treturn;\n\t\t}\n\t\tif (innerStreamReaders.length === 0) {\n\t\t\twaitForNewStream = createResolvablePromise();\n\t\t\tawait waitForNewStream.promise;\n\t\t\treturn processPull();\n\t\t}\n\t\ttry {\n\t\t\tconst { value, done } = await innerStreamReaders[0].read();\n\t\t\tif (done) {\n\t\t\t\tinnerStreamReaders.shift();\n\t\t\t\tif (innerStreamReaders.length > 0) await processPull();\n\t\t\t\telse if (isClosed) controller?.close();\n\t\t\t} else controller?.enqueue(value);\n\t\t} catch (error) {\n\t\t\tcontroller?.error(error);\n\t\t\tinnerStreamReaders.shift();\n\t\t\tif (isClosed && innerStreamReaders.length === 0) controller?.close();\n\t\t}\n\t};\n\treturn {\n\t\tstream: new ReadableStream({\n\t\t\tstart(controllerParam) {\n\t\t\t\tcontroller = controllerParam;\n\t\t\t},\n\t\t\tpull: processPull,\n\t\t\tasync cancel() {\n\t\t\t\tfor (const reader of innerStreamReaders) await reader.cancel();\n\t\t\t\tinnerStreamReaders = [];\n\t\t\t\tisClosed = true;\n\t\t\t}\n\t\t}),\n\t\taddStream: (innerStream) => {\n\t\t\tif (isClosed) throw new Error(\"Cannot add inner stream: outer stream is closed\");\n\t\t\tinnerStreamReaders.push(innerStream.getReader());\n\t\t\twaitForNewStream.resolve();\n\t\t},\n\t\t/**\n\t\t* Gracefully close the outer stream. This will let the inner streams\n\t\t* finish processing and then close the outer stream.\n\t\t*/\n\t\tclose: () => {\n\t\t\tisClosed = true;\n\t\t\twaitForNewStream.resolve();\n\t\t\tif (innerStreamReaders.length === 0) controller?.close();\n\t\t},\n\t\t/**\n\t\t* Immediately close the outer stream. This will cancel all inner streams\n\t\t* and close the outer stream.\n\t\t*/\n\t\tterminate: () => {\n\t\t\tisClosed = true;\n\t\t\twaitForNewStream.resolve();\n\t\t\tinnerStreamReaders.forEach((reader) => reader.cancel());\n\t\t\tinnerStreamReaders = [];\n\t\t\tcontroller?.close();\n\t\t}\n\t};\n}\nfunction now() {\n\tvar _a17, _b;\n\treturn (_b = (_a17 = globalThis == null ? void 0 : globalThis.performance) == null ? void 0 : _a17.now()) != null ? _b : Date.now();\n}\nvar originalGenerateId2 = createIdGenerator({\n\tprefix: \"aiobj\",\n\tsize: 24\n});\nfunction streamObject({ model, schema: inputSchema, schemaName, schemaDescription, mode, output = \"object\", system, prompt, messages, maxRetries, abortSignal, headers, experimental_telemetry: telemetry, experimental_providerMetadata, providerOptions = experimental_providerMetadata, onError, onFinish, _internal: { generateId: generateId3 = originalGenerateId2, currentDate = () => /* @__PURE__ */ new Date(), now: now2 = now } = {}, ...settings }) {\n\tif (typeof model === \"string\" || model.specificationVersion !== \"v1\") throw new UnsupportedModelVersionError();\n\tvalidateObjectGenerationInput({\n\t\toutput,\n\t\tmode,\n\t\tschema: inputSchema,\n\t\tschemaName,\n\t\tschemaDescription\n\t});\n\tconst outputStrategy = getOutputStrategy({\n\t\toutput,\n\t\tschema: inputSchema\n\t});\n\tif (outputStrategy.type === \"no-schema\" && mode === void 0) mode = \"json\";\n\treturn new DefaultStreamObjectResult({\n\t\tmodel,\n\t\ttelemetry,\n\t\theaders,\n\t\tsettings,\n\t\tmaxRetries,\n\t\tabortSignal,\n\t\toutputStrategy,\n\t\tsystem,\n\t\tprompt,\n\t\tmessages,\n\t\tschemaName,\n\t\tschemaDescription,\n\t\tproviderOptions,\n\t\tmode,\n\t\tonError,\n\t\tonFinish,\n\t\tgenerateId: generateId3,\n\t\tcurrentDate,\n\t\tnow: now2\n\t});\n}\nvar DefaultStreamObjectResult = class {\n\tconstructor({ model, headers, telemetry, settings, maxRetries: maxRetriesArg, abortSignal, outputStrategy, system, prompt, messages, schemaName, schemaDescription, providerOptions, mode, onError, onFinish, generateId: generateId3, currentDate, now: now2 }) {\n\t\tthis.objectPromise = new DelayedPromise();\n\t\tthis.usagePromise = new DelayedPromise();\n\t\tthis.providerMetadataPromise = new DelayedPromise();\n\t\tthis.warningsPromise = new DelayedPromise();\n\t\tthis.requestPromise = new DelayedPromise();\n\t\tthis.responsePromise = new DelayedPromise();\n\t\tconst { maxRetries, retry } = prepareRetries({ maxRetries: maxRetriesArg });\n\t\tconst baseTelemetryAttributes = getBaseTelemetryAttributes({\n\t\t\tmodel,\n\t\t\ttelemetry,\n\t\t\theaders,\n\t\t\tsettings: {\n\t\t\t\t...settings,\n\t\t\t\tmaxRetries\n\t\t\t}\n\t\t});\n\t\tconst tracer = getTracer(telemetry);\n\t\tconst self = this;\n\t\tconst stitchableStream = createStitchableStream();\n\t\tconst eventProcessor = new TransformStream({ transform(chunk, controller) {\n\t\t\tcontroller.enqueue(chunk);\n\t\t\tif (chunk.type === \"error\") onError?.({ error: chunk.error });\n\t\t} });\n\t\tthis.baseStream = stitchableStream.stream.pipeThrough(eventProcessor);\n\t\trecordSpan({\n\t\t\tname: \"ai.streamObject\",\n\t\t\tattributes: selectTelemetryAttributes({\n\t\t\t\ttelemetry,\n\t\t\t\tattributes: {\n\t\t\t\t\t...assembleOperationName({\n\t\t\t\t\t\toperationId: \"ai.streamObject\",\n\t\t\t\t\t\ttelemetry\n\t\t\t\t\t}),\n\t\t\t\t\t...baseTelemetryAttributes,\n\t\t\t\t\t\"ai.prompt\": { input: () => JSON.stringify({\n\t\t\t\t\t\tsystem,\n\t\t\t\t\t\tprompt,\n\t\t\t\t\t\tmessages\n\t\t\t\t\t}) },\n\t\t\t\t\t\"ai.schema\": outputStrategy.jsonSchema != null ? { input: () => JSON.stringify(outputStrategy.jsonSchema) } : void 0,\n\t\t\t\t\t\"ai.schema.name\": schemaName,\n\t\t\t\t\t\"ai.schema.description\": schemaDescription,\n\t\t\t\t\t\"ai.settings.output\": outputStrategy.type,\n\t\t\t\t\t\"ai.settings.mode\": mode\n\t\t\t\t}\n\t\t\t}),\n\t\t\ttracer,\n\t\t\tendWhenDone: false,\n\t\t\tfn: async (rootSpan) => {\n\t\t\t\tvar _a17, _b;\n\t\t\t\tif (mode === \"auto\" || mode == null) mode = model.defaultObjectGenerationMode;\n\t\t\t\tlet callOptions;\n\t\t\t\tlet transformer;\n\t\t\t\tswitch (mode) {\n\t\t\t\t\tcase \"json\": {\n\t\t\t\t\t\tconst standardizedPrompt = standardizePrompt({\n\t\t\t\t\t\t\tprompt: {\n\t\t\t\t\t\t\t\tsystem: outputStrategy.jsonSchema == null ? injectJsonInstruction({ prompt: system }) : model.supportsStructuredOutputs ? system : injectJsonInstruction({\n\t\t\t\t\t\t\t\t\tprompt: system,\n\t\t\t\t\t\t\t\t\tschema: outputStrategy.jsonSchema\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\tprompt,\n\t\t\t\t\t\t\t\tmessages\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttools: void 0\n\t\t\t\t\t\t});\n\t\t\t\t\t\tcallOptions = {\n\t\t\t\t\t\t\tmode: {\n\t\t\t\t\t\t\t\ttype: \"object-json\",\n\t\t\t\t\t\t\t\tschema: outputStrategy.jsonSchema,\n\t\t\t\t\t\t\t\tname: schemaName,\n\t\t\t\t\t\t\t\tdescription: schemaDescription\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t...prepareCallSettings(settings),\n\t\t\t\t\t\t\tinputFormat: standardizedPrompt.type,\n\t\t\t\t\t\t\tprompt: await convertToLanguageModelPrompt({\n\t\t\t\t\t\t\t\tprompt: standardizedPrompt,\n\t\t\t\t\t\t\t\tmodelSupportsImageUrls: model.supportsImageUrls,\n\t\t\t\t\t\t\t\tmodelSupportsUrl: (_a17 = model.supportsUrl) == null ? void 0 : _a17.bind(model)\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tproviderMetadata: providerOptions,\n\t\t\t\t\t\t\tabortSignal,\n\t\t\t\t\t\t\theaders\n\t\t\t\t\t\t};\n\t\t\t\t\t\ttransformer = { transform: (chunk, controller) => {\n\t\t\t\t\t\t\tswitch (chunk.type) {\n\t\t\t\t\t\t\t\tcase \"text-delta\":\n\t\t\t\t\t\t\t\t\tcontroller.enqueue(chunk.textDelta);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase \"response-metadata\":\n\t\t\t\t\t\t\t\tcase \"finish\":\n\t\t\t\t\t\t\t\tcase \"error\":\n\t\t\t\t\t\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} };\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase \"tool\": {\n\t\t\t\t\t\tconst standardizedPrompt = standardizePrompt({\n\t\t\t\t\t\t\tprompt: {\n\t\t\t\t\t\t\t\tsystem,\n\t\t\t\t\t\t\t\tprompt,\n\t\t\t\t\t\t\t\tmessages\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttools: void 0\n\t\t\t\t\t\t});\n\t\t\t\t\t\tcallOptions = {\n\t\t\t\t\t\t\tmode: {\n\t\t\t\t\t\t\t\ttype: \"object-tool\",\n\t\t\t\t\t\t\t\ttool: {\n\t\t\t\t\t\t\t\t\ttype: \"function\",\n\t\t\t\t\t\t\t\t\tname: schemaName != null ? schemaName : \"json\",\n\t\t\t\t\t\t\t\t\tdescription: schemaDescription != null ? schemaDescription : \"Respond with a JSON object.\",\n\t\t\t\t\t\t\t\t\tparameters: outputStrategy.jsonSchema\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t...prepareCallSettings(settings),\n\t\t\t\t\t\t\tinputFormat: standardizedPrompt.type,\n\t\t\t\t\t\t\tprompt: await convertToLanguageModelPrompt({\n\t\t\t\t\t\t\t\tprompt: standardizedPrompt,\n\t\t\t\t\t\t\t\tmodelSupportsImageUrls: model.supportsImageUrls,\n\t\t\t\t\t\t\t\tmodelSupportsUrl: (_b = model.supportsUrl) == null ? void 0 : _b.bind(model)\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tproviderMetadata: providerOptions,\n\t\t\t\t\t\t\tabortSignal,\n\t\t\t\t\t\t\theaders\n\t\t\t\t\t\t};\n\t\t\t\t\t\ttransformer = { transform(chunk, controller) {\n\t\t\t\t\t\t\tswitch (chunk.type) {\n\t\t\t\t\t\t\t\tcase \"tool-call-delta\":\n\t\t\t\t\t\t\t\t\tcontroller.enqueue(chunk.argsTextDelta);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase \"response-metadata\":\n\t\t\t\t\t\t\t\tcase \"finish\":\n\t\t\t\t\t\t\t\tcase \"error\":\n\t\t\t\t\t\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} };\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase void 0: throw new Error(\"Model does not have a default object generation mode.\");\n\t\t\t\t\tdefault: throw new Error(`Unsupported mode: ${mode}`);\n\t\t\t\t}\n\t\t\t\tconst { result: { stream, warnings, rawResponse, request }, doStreamSpan, startTimestampMs } = await retry(() => recordSpan({\n\t\t\t\t\tname: \"ai.streamObject.doStream\",\n\t\t\t\t\tattributes: selectTelemetryAttributes({\n\t\t\t\t\t\ttelemetry,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t...assembleOperationName({\n\t\t\t\t\t\t\t\toperationId: \"ai.streamObject.doStream\",\n\t\t\t\t\t\t\t\ttelemetry\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t...baseTelemetryAttributes,\n\t\t\t\t\t\t\t\"ai.prompt.format\": { input: () => callOptions.inputFormat },\n\t\t\t\t\t\t\t\"ai.prompt.messages\": { input: () => stringifyForTelemetry(callOptions.prompt) },\n\t\t\t\t\t\t\t\"ai.settings.mode\": mode,\n\t\t\t\t\t\t\t\"gen_ai.system\": model.provider,\n\t\t\t\t\t\t\t\"gen_ai.request.model\": model.modelId,\n\t\t\t\t\t\t\t\"gen_ai.request.frequency_penalty\": settings.frequencyPenalty,\n\t\t\t\t\t\t\t\"gen_ai.request.max_tokens\": settings.maxTokens,\n\t\t\t\t\t\t\t\"gen_ai.request.presence_penalty\": settings.presencePenalty,\n\t\t\t\t\t\t\t\"gen_ai.request.temperature\": settings.temperature,\n\t\t\t\t\t\t\t\"gen_ai.request.top_k\": settings.topK,\n\t\t\t\t\t\t\t\"gen_ai.request.top_p\": settings.topP\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\ttracer,\n\t\t\t\t\tendWhenDone: false,\n\t\t\t\t\tfn: async (doStreamSpan2) => ({\n\t\t\t\t\t\tstartTimestampMs: now2(),\n\t\t\t\t\t\tdoStreamSpan: doStreamSpan2,\n\t\t\t\t\t\tresult: await model.doStream(callOptions)\n\t\t\t\t\t})\n\t\t\t\t}));\n\t\t\t\tself.requestPromise.resolve(request != null ? request : {});\n\t\t\t\tlet usage;\n\t\t\t\tlet finishReason;\n\t\t\t\tlet providerMetadata;\n\t\t\t\tlet object2;\n\t\t\t\tlet error;\n\t\t\t\tlet accumulatedText = \"\";\n\t\t\t\tlet textDelta = \"\";\n\t\t\t\tlet response = {\n\t\t\t\t\tid: generateId3(),\n\t\t\t\t\ttimestamp: currentDate(),\n\t\t\t\t\tmodelId: model.modelId\n\t\t\t\t};\n\t\t\t\tlet latestObjectJson = void 0;\n\t\t\t\tlet latestObject = void 0;\n\t\t\t\tlet isFirstChunk = true;\n\t\t\t\tlet isFirstDelta = true;\n\t\t\t\tconst transformedStream = stream.pipeThrough(new TransformStream(transformer)).pipeThrough(new TransformStream({\n\t\t\t\t\tasync transform(chunk, controller) {\n\t\t\t\t\t\tvar _a18, _b2, _c;\n\t\t\t\t\t\tif (isFirstChunk) {\n\t\t\t\t\t\t\tconst msToFirstChunk = now2() - startTimestampMs;\n\t\t\t\t\t\t\tisFirstChunk = false;\n\t\t\t\t\t\t\tdoStreamSpan.addEvent(\"ai.stream.firstChunk\", { \"ai.stream.msToFirstChunk\": msToFirstChunk });\n\t\t\t\t\t\t\tdoStreamSpan.setAttributes({ \"ai.stream.msToFirstChunk\": msToFirstChunk });\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (typeof chunk === \"string\") {\n\t\t\t\t\t\t\taccumulatedText += chunk;\n\t\t\t\t\t\t\ttextDelta += chunk;\n\t\t\t\t\t\t\tconst { value: currentObjectJson, state: parseState } = parsePartialJson(accumulatedText);\n\t\t\t\t\t\t\tif (currentObjectJson !== void 0 && !isDeepEqualData(latestObjectJson, currentObjectJson)) {\n\t\t\t\t\t\t\t\tconst validationResult = outputStrategy.validatePartialResult({\n\t\t\t\t\t\t\t\t\tvalue: currentObjectJson,\n\t\t\t\t\t\t\t\t\ttextDelta,\n\t\t\t\t\t\t\t\t\tlatestObject,\n\t\t\t\t\t\t\t\t\tisFirstDelta,\n\t\t\t\t\t\t\t\t\tisFinalDelta: parseState === \"successful-parse\"\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tif (validationResult.success && !isDeepEqualData(latestObject, validationResult.value.partial)) {\n\t\t\t\t\t\t\t\t\tlatestObjectJson = currentObjectJson;\n\t\t\t\t\t\t\t\t\tlatestObject = validationResult.value.partial;\n\t\t\t\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\t\t\tobject: latestObject\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\t\t\t\ttype: \"text-delta\",\n\t\t\t\t\t\t\t\t\t\ttextDelta: validationResult.value.textDelta\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\ttextDelta = \"\";\n\t\t\t\t\t\t\t\t\tisFirstDelta = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tswitch (chunk.type) {\n\t\t\t\t\t\t\tcase \"response-metadata\":\n\t\t\t\t\t\t\t\tresponse = {\n\t\t\t\t\t\t\t\t\tid: (_a18 = chunk.id) != null ? _a18 : response.id,\n\t\t\t\t\t\t\t\t\ttimestamp: (_b2 = chunk.timestamp) != null ? _b2 : response.timestamp,\n\t\t\t\t\t\t\t\t\tmodelId: (_c = chunk.modelId) != null ? _c : response.modelId\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase \"finish\": {\n\t\t\t\t\t\t\t\tif (textDelta !== \"\") controller.enqueue({\n\t\t\t\t\t\t\t\t\ttype: \"text-delta\",\n\t\t\t\t\t\t\t\t\ttextDelta\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tfinishReason = chunk.finishReason;\n\t\t\t\t\t\t\t\tusage = calculateLanguageModelUsage(chunk.usage);\n\t\t\t\t\t\t\t\tproviderMetadata = chunk.providerMetadata;\n\t\t\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\t\t\t...chunk,\n\t\t\t\t\t\t\t\t\tusage,\n\t\t\t\t\t\t\t\t\tresponse\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tself.usagePromise.resolve(usage);\n\t\t\t\t\t\t\t\tself.providerMetadataPromise.resolve(providerMetadata);\n\t\t\t\t\t\t\t\tself.responsePromise.resolve({\n\t\t\t\t\t\t\t\t\t...response,\n\t\t\t\t\t\t\t\t\theaders: rawResponse == null ? void 0 : rawResponse.headers\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tconst validationResult = outputStrategy.validateFinalResult(latestObjectJson, {\n\t\t\t\t\t\t\t\t\ttext: accumulatedText,\n\t\t\t\t\t\t\t\t\tresponse,\n\t\t\t\t\t\t\t\t\tusage\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tif (validationResult.success) {\n\t\t\t\t\t\t\t\t\tobject2 = validationResult.value;\n\t\t\t\t\t\t\t\t\tself.objectPromise.resolve(object2);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\terror = new NoObjectGeneratedError({\n\t\t\t\t\t\t\t\t\t\tmessage: \"No object generated: response did not match schema.\",\n\t\t\t\t\t\t\t\t\t\tcause: validationResult.error,\n\t\t\t\t\t\t\t\t\t\ttext: accumulatedText,\n\t\t\t\t\t\t\t\t\t\tresponse,\n\t\t\t\t\t\t\t\t\t\tusage,\n\t\t\t\t\t\t\t\t\t\tfinishReason\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\tself.objectPromise.reject(error);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tasync flush(controller) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst finalUsage = usage != null ? usage : {\n\t\t\t\t\t\t\t\tpromptTokens: NaN,\n\t\t\t\t\t\t\t\tcompletionTokens: NaN,\n\t\t\t\t\t\t\t\ttotalTokens: NaN\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tdoStreamSpan.setAttributes(selectTelemetryAttributes({\n\t\t\t\t\t\t\t\ttelemetry,\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t\"ai.response.finishReason\": finishReason,\n\t\t\t\t\t\t\t\t\t\"ai.response.object\": { output: () => JSON.stringify(object2) },\n\t\t\t\t\t\t\t\t\t\"ai.response.id\": response.id,\n\t\t\t\t\t\t\t\t\t\"ai.response.model\": response.modelId,\n\t\t\t\t\t\t\t\t\t\"ai.response.timestamp\": response.timestamp.toISOString(),\n\t\t\t\t\t\t\t\t\t\"ai.response.providerMetadata\": JSON.stringify(providerMetadata),\n\t\t\t\t\t\t\t\t\t\"ai.usage.promptTokens\": finalUsage.promptTokens,\n\t\t\t\t\t\t\t\t\t\"ai.usage.completionTokens\": finalUsage.completionTokens,\n\t\t\t\t\t\t\t\t\t\"gen_ai.response.finish_reasons\": [finishReason],\n\t\t\t\t\t\t\t\t\t\"gen_ai.response.id\": response.id,\n\t\t\t\t\t\t\t\t\t\"gen_ai.response.model\": response.modelId,\n\t\t\t\t\t\t\t\t\t\"gen_ai.usage.input_tokens\": finalUsage.promptTokens,\n\t\t\t\t\t\t\t\t\t\"gen_ai.usage.output_tokens\": finalUsage.completionTokens\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\tdoStreamSpan.end();\n\t\t\t\t\t\t\trootSpan.setAttributes(selectTelemetryAttributes({\n\t\t\t\t\t\t\t\ttelemetry,\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t\"ai.usage.promptTokens\": finalUsage.promptTokens,\n\t\t\t\t\t\t\t\t\t\"ai.usage.completionTokens\": finalUsage.completionTokens,\n\t\t\t\t\t\t\t\t\t\"ai.response.object\": { output: () => JSON.stringify(object2) },\n\t\t\t\t\t\t\t\t\t\"ai.response.providerMetadata\": JSON.stringify(providerMetadata)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\tawait (onFinish == null ? void 0 : onFinish({\n\t\t\t\t\t\t\t\tusage: finalUsage,\n\t\t\t\t\t\t\t\tobject: object2,\n\t\t\t\t\t\t\t\terror,\n\t\t\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\t\t\t...response,\n\t\t\t\t\t\t\t\t\theaders: rawResponse == null ? void 0 : rawResponse.headers\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\twarnings,\n\t\t\t\t\t\t\t\tproviderMetadata,\n\t\t\t\t\t\t\t\texperimental_providerMetadata: providerMetadata\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t} catch (error2) {\n\t\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\t\ttype: \"error\",\n\t\t\t\t\t\t\t\terror: error2\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\trootSpan.end();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}));\n\t\t\t\tstitchableStream.addStream(transformedStream);\n\t\t\t}\n\t\t}).catch((error) => {\n\t\t\tstitchableStream.addStream(new ReadableStream({ start(controller) {\n\t\t\t\tcontroller.enqueue({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\terror\n\t\t\t\t});\n\t\t\t\tcontroller.close();\n\t\t\t} }));\n\t\t}).finally(() => {\n\t\t\tstitchableStream.close();\n\t\t});\n\t\tthis.outputStrategy = outputStrategy;\n\t}\n\tget object() {\n\t\treturn this.objectPromise.value;\n\t}\n\tget usage() {\n\t\treturn this.usagePromise.value;\n\t}\n\tget experimental_providerMetadata() {\n\t\treturn this.providerMetadataPromise.value;\n\t}\n\tget providerMetadata() {\n\t\treturn this.providerMetadataPromise.value;\n\t}\n\tget warnings() {\n\t\treturn this.warningsPromise.value;\n\t}\n\tget request() {\n\t\treturn this.requestPromise.value;\n\t}\n\tget response() {\n\t\treturn this.responsePromise.value;\n\t}\n\tget partialObjectStream() {\n\t\treturn createAsyncIterableStream(this.baseStream.pipeThrough(new TransformStream({ transform(chunk, controller) {\n\t\t\tswitch (chunk.type) {\n\t\t\t\tcase \"object\":\n\t\t\t\t\tcontroller.enqueue(chunk.object);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"text-delta\":\n\t\t\t\tcase \"finish\":\n\t\t\t\tcase \"error\": break;\n\t\t\t\tdefault: throw new Error(`Unsupported chunk type: ${chunk}`);\n\t\t\t}\n\t\t} })));\n\t}\n\tget elementStream() {\n\t\treturn this.outputStrategy.createElementStream(this.baseStream);\n\t}\n\tget textStream() {\n\t\treturn createAsyncIterableStream(this.baseStream.pipeThrough(new TransformStream({ transform(chunk, controller) {\n\t\t\tswitch (chunk.type) {\n\t\t\t\tcase \"text-delta\":\n\t\t\t\t\tcontroller.enqueue(chunk.textDelta);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"object\":\n\t\t\t\tcase \"finish\":\n\t\t\t\tcase \"error\": break;\n\t\t\t\tdefault: throw new Error(`Unsupported chunk type: ${chunk}`);\n\t\t\t}\n\t\t} })));\n\t}\n\tget fullStream() {\n\t\treturn createAsyncIterableStream(this.baseStream);\n\t}\n\tpipeTextStreamToResponse(response, init) {\n\t\twriteToServerResponse({\n\t\t\tresponse,\n\t\t\tstatus: init == null ? void 0 : init.status,\n\t\t\tstatusText: init == null ? void 0 : init.statusText,\n\t\t\theaders: prepareOutgoingHttpHeaders(init == null ? void 0 : init.headers, { contentType: \"text/plain; charset=utf-8\" }),\n\t\t\tstream: this.textStream.pipeThrough(new TextEncoderStream())\n\t\t});\n\t}\n\ttoTextStreamResponse(init) {\n\t\tvar _a17;\n\t\treturn new Response(this.textStream.pipeThrough(new TextEncoderStream()), {\n\t\t\tstatus: (_a17 = init == null ? void 0 : init.status) != null ? _a17 : 200,\n\t\t\theaders: prepareResponseHeaders(init == null ? void 0 : init.headers, { contentType: \"text/plain; charset=utf-8\" })\n\t\t});\n\t}\n};\nvar name9 = \"AI_NoOutputSpecifiedError\";\nvar marker9 = `vercel.ai.error.${name9}`;\nvar symbol9 = Symbol.for(marker9);\nvar _a9;\nvar NoOutputSpecifiedError = class extends AISDKError {\n\tconstructor({ message = \"No output specified.\" } = {}) {\n\t\tsuper({\n\t\t\tname: name9,\n\t\t\tmessage\n\t\t});\n\t\tthis[_a9] = true;\n\t}\n\tstatic isInstance(error) {\n\t\treturn AISDKError.hasMarker(error, marker9);\n\t}\n};\n_a9 = symbol9;\nvar name10 = \"AI_ToolExecutionError\";\nvar marker10 = `vercel.ai.error.${name10}`;\nvar symbol10 = Symbol.for(marker10);\nvar _a10;\nvar ToolExecutionError = class extends AISDKError {\n\tconstructor({ toolArgs, toolName, toolCallId, cause, message = `Error executing tool ${toolName}: ${getErrorMessage$1(cause)}` }) {\n\t\tsuper({\n\t\t\tname: name10,\n\t\t\tmessage,\n\t\t\tcause\n\t\t});\n\t\tthis[_a10] = true;\n\t\tthis.toolArgs = toolArgs;\n\t\tthis.toolName = toolName;\n\t\tthis.toolCallId = toolCallId;\n\t}\n\tstatic isInstance(error) {\n\t\treturn AISDKError.hasMarker(error, marker10);\n\t}\n};\n_a10 = symbol10;\nfunction isNonEmptyObject(object2) {\n\treturn object2 != null && Object.keys(object2).length > 0;\n}\nfunction prepareToolsAndToolChoice({ tools, toolChoice, activeTools }) {\n\tif (!isNonEmptyObject(tools)) return {\n\t\ttools: void 0,\n\t\ttoolChoice: void 0\n\t};\n\treturn {\n\t\ttools: (activeTools != null ? Object.entries(tools).filter(([name17]) => activeTools.includes(name17)) : Object.entries(tools)).map(([name17, tool2]) => {\n\t\t\tconst toolType = tool2.type;\n\t\t\tswitch (toolType) {\n\t\t\t\tcase void 0:\n\t\t\t\tcase \"function\": return {\n\t\t\t\t\ttype: \"function\",\n\t\t\t\t\tname: name17,\n\t\t\t\t\tdescription: tool2.description,\n\t\t\t\t\tparameters: asSchema(tool2.parameters).jsonSchema\n\t\t\t\t};\n\t\t\t\tcase \"provider-defined\": return {\n\t\t\t\t\ttype: \"provider-defined\",\n\t\t\t\t\tname: name17,\n\t\t\t\t\tid: tool2.id,\n\t\t\t\t\targs: tool2.args\n\t\t\t\t};\n\t\t\t\tdefault: throw new Error(`Unsupported tool type: ${toolType}`);\n\t\t\t}\n\t\t}),\n\t\ttoolChoice: toolChoice == null ? { type: \"auto\" } : typeof toolChoice === \"string\" ? { type: toolChoice } : {\n\t\t\ttype: \"tool\",\n\t\t\ttoolName: toolChoice.toolName\n\t\t}\n\t};\n}\nvar lastWhitespaceRegexp = /^([\\s\\S]*?)(\\s+)(\\S*)$/;\nfunction splitOnLastWhitespace(text2) {\n\tconst match = text2.match(lastWhitespaceRegexp);\n\treturn match ? {\n\t\tprefix: match[1],\n\t\twhitespace: match[2],\n\t\tsuffix: match[3]\n\t} : void 0;\n}\nfunction removeTextAfterLastWhitespace(text2) {\n\tconst match = splitOnLastWhitespace(text2);\n\treturn match ? match.prefix + match.whitespace : text2;\n}\nvar name11 = \"AI_InvalidToolArgumentsError\";\nvar marker11 = `vercel.ai.error.${name11}`;\nvar symbol11 = Symbol.for(marker11);\nvar _a11;\nvar InvalidToolArgumentsError = class extends AISDKError {\n\tconstructor({ toolArgs, toolName, cause, message = `Invalid arguments for tool ${toolName}: ${getErrorMessage$1(cause)}` }) {\n\t\tsuper({\n\t\t\tname: name11,\n\t\t\tmessage,\n\t\t\tcause\n\t\t});\n\t\tthis[_a11] = true;\n\t\tthis.toolArgs = toolArgs;\n\t\tthis.toolName = toolName;\n\t}\n\tstatic isInstance(error) {\n\t\treturn AISDKError.hasMarker(error, marker11);\n\t}\n};\n_a11 = symbol11;\nvar name12 = \"AI_NoSuchToolError\";\nvar marker12 = `vercel.ai.error.${name12}`;\nvar symbol12 = Symbol.for(marker12);\nvar _a12;\nvar NoSuchToolError = class extends AISDKError {\n\tconstructor({ toolName, availableTools = void 0, message = `Model tried to call unavailable tool '${toolName}'. ${availableTools === void 0 ? \"No tools are available.\" : `Available tools: ${availableTools.join(\", \")}.`}` }) {\n\t\tsuper({\n\t\t\tname: name12,\n\t\t\tmessage\n\t\t});\n\t\tthis[_a12] = true;\n\t\tthis.toolName = toolName;\n\t\tthis.availableTools = availableTools;\n\t}\n\tstatic isInstance(error) {\n\t\treturn AISDKError.hasMarker(error, marker12);\n\t}\n};\n_a12 = symbol12;\nvar name13 = \"AI_ToolCallRepairError\";\nvar marker13 = `vercel.ai.error.${name13}`;\nvar symbol13 = Symbol.for(marker13);\nvar _a13;\nvar ToolCallRepairError = class extends AISDKError {\n\tconstructor({ cause, originalError, message = `Error repairing tool call: ${getErrorMessage$1(cause)}` }) {\n\t\tsuper({\n\t\t\tname: name13,\n\t\t\tmessage,\n\t\t\tcause\n\t\t});\n\t\tthis[_a13] = true;\n\t\tthis.originalError = originalError;\n\t}\n\tstatic isInstance(error) {\n\t\treturn AISDKError.hasMarker(error, marker13);\n\t}\n};\n_a13 = symbol13;\nasync function parseToolCall({ toolCall, tools, repairToolCall, system, messages }) {\n\tif (tools == null) throw new NoSuchToolError({ toolName: toolCall.toolName });\n\ttry {\n\t\treturn await doParseToolCall({\n\t\t\ttoolCall,\n\t\t\ttools\n\t\t});\n\t} catch (error) {\n\t\tif (repairToolCall == null || !(NoSuchToolError.isInstance(error) || InvalidToolArgumentsError.isInstance(error))) throw error;\n\t\tlet repairedToolCall = null;\n\t\ttry {\n\t\t\trepairedToolCall = await repairToolCall({\n\t\t\t\ttoolCall,\n\t\t\t\ttools,\n\t\t\t\tparameterSchema: ({ toolName }) => asSchema(tools[toolName].parameters).jsonSchema,\n\t\t\t\tsystem,\n\t\t\t\tmessages,\n\t\t\t\terror\n\t\t\t});\n\t\t} catch (repairError) {\n\t\t\tthrow new ToolCallRepairError({\n\t\t\t\tcause: repairError,\n\t\t\t\toriginalError: error\n\t\t\t});\n\t\t}\n\t\tif (repairedToolCall == null) throw error;\n\t\treturn await doParseToolCall({\n\t\t\ttoolCall: repairedToolCall,\n\t\t\ttools\n\t\t});\n\t}\n}\nasync function doParseToolCall({ toolCall, tools }) {\n\tconst toolName = toolCall.toolName;\n\tconst tool2 = tools[toolName];\n\tif (tool2 == null) throw new NoSuchToolError({\n\t\ttoolName: toolCall.toolName,\n\t\tavailableTools: Object.keys(tools)\n\t});\n\tconst schema = asSchema(tool2.parameters);\n\tconst parseResult = toolCall.args.trim() === \"\" ? safeValidateTypes({\n\t\tvalue: {},\n\t\tschema\n\t}) : safeParseJSON({\n\t\ttext: toolCall.args,\n\t\tschema\n\t});\n\tif (parseResult.success === false) throw new InvalidToolArgumentsError({\n\t\ttoolName,\n\t\ttoolArgs: toolCall.args,\n\t\tcause: parseResult.error\n\t});\n\treturn {\n\t\ttype: \"tool-call\",\n\t\ttoolCallId: toolCall.toolCallId,\n\t\ttoolName,\n\t\targs: parseResult.value\n\t};\n}\nfunction asReasoningText(reasoning) {\n\tconst reasoningText = reasoning.filter((part) => part.type === \"text\").map((part) => part.text).join(\"\");\n\treturn reasoningText.length > 0 ? reasoningText : void 0;\n}\nfunction toResponseMessages({ text: text2 = \"\", files, reasoning, tools, toolCalls, toolResults, messageId, generateMessageId }) {\n\tconst responseMessages = [];\n\tconst content = [];\n\tif (reasoning.length > 0) content.push(...reasoning.map((part) => part.type === \"text\" ? {\n\t\t...part,\n\t\ttype: \"reasoning\"\n\t} : {\n\t\t...part,\n\t\ttype: \"redacted-reasoning\"\n\t}));\n\tif (files.length > 0) content.push(...files.map((file) => ({\n\t\ttype: \"file\",\n\t\tdata: file.base64,\n\t\tmimeType: file.mimeType\n\t})));\n\tif (text2.length > 0) content.push({\n\t\ttype: \"text\",\n\t\ttext: text2\n\t});\n\tif (toolCalls.length > 0) content.push(...toolCalls);\n\tif (content.length > 0) responseMessages.push({\n\t\trole: \"assistant\",\n\t\tcontent,\n\t\tid: messageId\n\t});\n\tif (toolResults.length > 0) responseMessages.push({\n\t\trole: \"tool\",\n\t\tid: generateMessageId(),\n\t\tcontent: toolResults.map((toolResult) => {\n\t\t\tconst tool2 = tools[toolResult.toolName];\n\t\t\treturn (tool2 == null ? void 0 : tool2.experimental_toToolResultContent) != null ? {\n\t\t\t\ttype: \"tool-result\",\n\t\t\t\ttoolCallId: toolResult.toolCallId,\n\t\t\t\ttoolName: toolResult.toolName,\n\t\t\t\tresult: tool2.experimental_toToolResultContent(toolResult.result),\n\t\t\t\texperimental_content: tool2.experimental_toToolResultContent(toolResult.result)\n\t\t\t} : {\n\t\t\t\ttype: \"tool-result\",\n\t\t\t\ttoolCallId: toolResult.toolCallId,\n\t\t\t\ttoolName: toolResult.toolName,\n\t\t\t\tresult: toolResult.result\n\t\t\t};\n\t\t})\n\t});\n\treturn responseMessages;\n}\nvar originalGenerateId3 = createIdGenerator({\n\tprefix: \"aitxt\",\n\tsize: 24\n});\nvar originalGenerateMessageId = createIdGenerator({\n\tprefix: \"msg\",\n\tsize: 24\n});\nasync function generateText({ model, tools, toolChoice, system, prompt, messages, maxRetries: maxRetriesArg, abortSignal, headers, maxSteps = 1, experimental_generateMessageId: generateMessageId = originalGenerateMessageId, experimental_output: output, experimental_continueSteps: continueSteps = false, experimental_telemetry: telemetry, experimental_providerMetadata, providerOptions = experimental_providerMetadata, experimental_activeTools: activeTools, experimental_prepareStep: prepareStep, experimental_repairToolCall: repairToolCall, _internal: { generateId: generateId3 = originalGenerateId3, currentDate = () => /* @__PURE__ */ new Date() } = {}, onStepFinish, ...settings }) {\n\tvar _a17;\n\tif (typeof model === \"string\" || model.specificationVersion !== \"v1\") throw new UnsupportedModelVersionError();\n\tif (maxSteps < 1) throw new InvalidArgumentError({\n\t\tparameter: \"maxSteps\",\n\t\tvalue: maxSteps,\n\t\tmessage: \"maxSteps must be at least 1\"\n\t});\n\tconst { maxRetries, retry } = prepareRetries({ maxRetries: maxRetriesArg });\n\tconst baseTelemetryAttributes = getBaseTelemetryAttributes({\n\t\tmodel,\n\t\ttelemetry,\n\t\theaders,\n\t\tsettings: {\n\t\t\t...settings,\n\t\t\tmaxRetries\n\t\t}\n\t});\n\tconst initialPrompt = standardizePrompt({\n\t\tprompt: {\n\t\t\tsystem: (_a17 = output == null ? void 0 : output.injectIntoSystemPrompt({\n\t\t\t\tsystem,\n\t\t\t\tmodel\n\t\t\t})) != null ? _a17 : system,\n\t\t\tprompt,\n\t\t\tmessages\n\t\t},\n\t\ttools\n\t});\n\tconst tracer = getTracer(telemetry);\n\treturn recordSpan({\n\t\tname: \"ai.generateText\",\n\t\tattributes: selectTelemetryAttributes({\n\t\t\ttelemetry,\n\t\t\tattributes: {\n\t\t\t\t...assembleOperationName({\n\t\t\t\t\toperationId: \"ai.generateText\",\n\t\t\t\t\ttelemetry\n\t\t\t\t}),\n\t\t\t\t...baseTelemetryAttributes,\n\t\t\t\t\"ai.model.provider\": model.provider,\n\t\t\t\t\"ai.model.id\": model.modelId,\n\t\t\t\t\"ai.prompt\": { input: () => JSON.stringify({\n\t\t\t\t\tsystem,\n\t\t\t\t\tprompt,\n\t\t\t\t\tmessages\n\t\t\t\t}) },\n\t\t\t\t\"ai.settings.maxSteps\": maxSteps\n\t\t\t}\n\t\t}),\n\t\ttracer,\n\t\tfn: async (span) => {\n\t\t\tvar _a18, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;\n\t\t\tconst callSettings = prepareCallSettings(settings);\n\t\t\tlet currentModelResponse;\n\t\t\tlet currentToolCalls = [];\n\t\t\tlet currentToolResults = [];\n\t\t\tlet currentReasoningDetails = [];\n\t\t\tlet stepCount = 0;\n\t\t\tconst responseMessages = [];\n\t\t\tlet text2 = \"\";\n\t\t\tconst sources = [];\n\t\t\tconst steps = [];\n\t\t\tlet usage = {\n\t\t\t\tcompletionTokens: 0,\n\t\t\t\tpromptTokens: 0,\n\t\t\t\ttotalTokens: 0\n\t\t\t};\n\t\t\tlet stepType = \"initial\";\n\t\t\tdo {\n\t\t\t\tconst promptFormat = stepCount === 0 ? initialPrompt.type : \"messages\";\n\t\t\t\tconst stepInputMessages = [...initialPrompt.messages, ...responseMessages];\n\t\t\t\tconst prepareStepResult = await (prepareStep == null ? void 0 : prepareStep({\n\t\t\t\t\tmodel,\n\t\t\t\t\tsteps,\n\t\t\t\t\tmaxSteps,\n\t\t\t\t\tstepNumber: stepCount\n\t\t\t\t}));\n\t\t\t\tconst stepToolChoice = (_a18 = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _a18 : toolChoice;\n\t\t\t\tconst stepActiveTools = (_b = prepareStepResult == null ? void 0 : prepareStepResult.experimental_activeTools) != null ? _b : activeTools;\n\t\t\t\tconst stepModel = (_c = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _c : model;\n\t\t\t\tconst promptMessages = await convertToLanguageModelPrompt({\n\t\t\t\t\tprompt: {\n\t\t\t\t\t\ttype: promptFormat,\n\t\t\t\t\t\tsystem: initialPrompt.system,\n\t\t\t\t\t\tmessages: stepInputMessages\n\t\t\t\t\t},\n\t\t\t\t\tmodelSupportsImageUrls: stepModel.supportsImageUrls,\n\t\t\t\t\tmodelSupportsUrl: (_d = stepModel.supportsUrl) == null ? void 0 : _d.bind(stepModel)\n\t\t\t\t});\n\t\t\t\tconst mode = {\n\t\t\t\t\ttype: \"regular\",\n\t\t\t\t\t...prepareToolsAndToolChoice({\n\t\t\t\t\t\ttools,\n\t\t\t\t\t\ttoolChoice: stepToolChoice,\n\t\t\t\t\t\tactiveTools: stepActiveTools\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t\tcurrentModelResponse = await retry(() => recordSpan({\n\t\t\t\t\tname: \"ai.generateText.doGenerate\",\n\t\t\t\t\tattributes: selectTelemetryAttributes({\n\t\t\t\t\t\ttelemetry,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t...assembleOperationName({\n\t\t\t\t\t\t\t\toperationId: \"ai.generateText.doGenerate\",\n\t\t\t\t\t\t\t\ttelemetry\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t...baseTelemetryAttributes,\n\t\t\t\t\t\t\t\"ai.model.provider\": stepModel.provider,\n\t\t\t\t\t\t\t\"ai.model.id\": stepModel.modelId,\n\t\t\t\t\t\t\t\"ai.prompt.format\": { input: () => promptFormat },\n\t\t\t\t\t\t\t\"ai.prompt.messages\": { input: () => stringifyForTelemetry(promptMessages) },\n\t\t\t\t\t\t\t\"ai.prompt.tools\": { input: () => {\n\t\t\t\t\t\t\t\tvar _a19;\n\t\t\t\t\t\t\t\treturn (_a19 = mode.tools) == null ? void 0 : _a19.map((tool2) => JSON.stringify(tool2));\n\t\t\t\t\t\t\t} },\n\t\t\t\t\t\t\t\"ai.prompt.toolChoice\": { input: () => mode.toolChoice != null ? JSON.stringify(mode.toolChoice) : void 0 },\n\t\t\t\t\t\t\t\"gen_ai.system\": stepModel.provider,\n\t\t\t\t\t\t\t\"gen_ai.request.model\": stepModel.modelId,\n\t\t\t\t\t\t\t\"gen_ai.request.frequency_penalty\": settings.frequencyPenalty,\n\t\t\t\t\t\t\t\"gen_ai.request.max_tokens\": settings.maxTokens,\n\t\t\t\t\t\t\t\"gen_ai.request.presence_penalty\": settings.presencePenalty,\n\t\t\t\t\t\t\t\"gen_ai.request.stop_sequences\": settings.stopSequences,\n\t\t\t\t\t\t\t\"gen_ai.request.temperature\": settings.temperature,\n\t\t\t\t\t\t\t\"gen_ai.request.top_k\": settings.topK,\n\t\t\t\t\t\t\t\"gen_ai.request.top_p\": settings.topP\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\ttracer,\n\t\t\t\t\tfn: async (span2) => {\n\t\t\t\t\t\tvar _a19, _b2, _c2, _d2, _e2, _f2;\n\t\t\t\t\t\tconst result = await stepModel.doGenerate({\n\t\t\t\t\t\t\tmode,\n\t\t\t\t\t\t\t...callSettings,\n\t\t\t\t\t\t\tinputFormat: promptFormat,\n\t\t\t\t\t\t\tresponseFormat: output == null ? void 0 : output.responseFormat({ model }),\n\t\t\t\t\t\t\tprompt: promptMessages,\n\t\t\t\t\t\t\tproviderMetadata: providerOptions,\n\t\t\t\t\t\t\tabortSignal,\n\t\t\t\t\t\t\theaders\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst responseData = {\n\t\t\t\t\t\t\tid: (_b2 = (_a19 = result.response) == null ? void 0 : _a19.id) != null ? _b2 : generateId3(),\n\t\t\t\t\t\t\ttimestamp: (_d2 = (_c2 = result.response) == null ? void 0 : _c2.timestamp) != null ? _d2 : currentDate(),\n\t\t\t\t\t\t\tmodelId: (_f2 = (_e2 = result.response) == null ? void 0 : _e2.modelId) != null ? _f2 : stepModel.modelId\n\t\t\t\t\t\t};\n\t\t\t\t\t\tspan2.setAttributes(selectTelemetryAttributes({\n\t\t\t\t\t\t\ttelemetry,\n\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\"ai.response.finishReason\": result.finishReason,\n\t\t\t\t\t\t\t\t\"ai.response.text\": { output: () => result.text },\n\t\t\t\t\t\t\t\t\"ai.response.toolCalls\": { output: () => JSON.stringify(result.toolCalls) },\n\t\t\t\t\t\t\t\t\"ai.response.id\": responseData.id,\n\t\t\t\t\t\t\t\t\"ai.response.model\": responseData.modelId,\n\t\t\t\t\t\t\t\t\"ai.response.timestamp\": responseData.timestamp.toISOString(),\n\t\t\t\t\t\t\t\t\"ai.response.providerMetadata\": JSON.stringify(result.providerMetadata),\n\t\t\t\t\t\t\t\t\"ai.usage.promptTokens\": result.usage.promptTokens,\n\t\t\t\t\t\t\t\t\"ai.usage.completionTokens\": result.usage.completionTokens,\n\t\t\t\t\t\t\t\t\"gen_ai.response.finish_reasons\": [result.finishReason],\n\t\t\t\t\t\t\t\t\"gen_ai.response.id\": responseData.id,\n\t\t\t\t\t\t\t\t\"gen_ai.response.model\": responseData.modelId,\n\t\t\t\t\t\t\t\t\"gen_ai.usage.input_tokens\": result.usage.promptTokens,\n\t\t\t\t\t\t\t\t\"gen_ai.usage.output_tokens\": result.usage.completionTokens\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}));\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...result,\n\t\t\t\t\t\t\tresponse: responseData\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}));\n\t\t\t\tcurrentToolCalls = await Promise.all(((_e = currentModelResponse.toolCalls) != null ? _e : []).map((toolCall) => parseToolCall({\n\t\t\t\t\ttoolCall,\n\t\t\t\t\ttools,\n\t\t\t\t\trepairToolCall,\n\t\t\t\t\tsystem,\n\t\t\t\t\tmessages: stepInputMessages\n\t\t\t\t})));\n\t\t\t\tcurrentToolResults = tools == null ? [] : await executeTools({\n\t\t\t\t\ttoolCalls: currentToolCalls,\n\t\t\t\t\ttools,\n\t\t\t\t\ttracer,\n\t\t\t\t\ttelemetry,\n\t\t\t\t\tmessages: stepInputMessages,\n\t\t\t\t\tabortSignal\n\t\t\t\t});\n\t\t\t\tconst currentUsage = calculateLanguageModelUsage(currentModelResponse.usage);\n\t\t\t\tusage = addLanguageModelUsage(usage, currentUsage);\n\t\t\t\tlet nextStepType = \"done\";\n\t\t\t\tif (++stepCount < maxSteps) {\n\t\t\t\t\tif (continueSteps && currentModelResponse.finishReason === \"length\" && currentToolCalls.length === 0) nextStepType = \"continue\";\n\t\t\t\t\telse if (currentToolCalls.length > 0 && currentToolResults.length === currentToolCalls.length) nextStepType = \"tool-result\";\n\t\t\t\t}\n\t\t\t\tconst originalText = (_f = currentModelResponse.text) != null ? _f : \"\";\n\t\t\t\tconst stepTextLeadingWhitespaceTrimmed = stepType === \"continue\" && text2.trimEnd() !== text2 ? originalText.trimStart() : originalText;\n\t\t\t\tconst stepText = nextStepType === \"continue\" ? removeTextAfterLastWhitespace(stepTextLeadingWhitespaceTrimmed) : stepTextLeadingWhitespaceTrimmed;\n\t\t\t\ttext2 = nextStepType === \"continue\" || stepType === \"continue\" ? text2 + stepText : stepText;\n\t\t\t\tcurrentReasoningDetails = asReasoningDetails(currentModelResponse.reasoning);\n\t\t\t\tsources.push(...(_g = currentModelResponse.sources) != null ? _g : []);\n\t\t\t\tif (stepType === \"continue\") {\n\t\t\t\t\tconst lastMessage = responseMessages[responseMessages.length - 1];\n\t\t\t\t\tif (typeof lastMessage.content === \"string\") lastMessage.content += stepText;\n\t\t\t\t\telse lastMessage.content.push({\n\t\t\t\t\t\ttext: stepText,\n\t\t\t\t\t\ttype: \"text\"\n\t\t\t\t\t});\n\t\t\t\t} else responseMessages.push(...toResponseMessages({\n\t\t\t\t\ttext: text2,\n\t\t\t\t\tfiles: asFiles(currentModelResponse.files),\n\t\t\t\t\treasoning: asReasoningDetails(currentModelResponse.reasoning),\n\t\t\t\t\ttools: tools != null ? tools : {},\n\t\t\t\t\ttoolCalls: currentToolCalls,\n\t\t\t\t\ttoolResults: currentToolResults,\n\t\t\t\t\tmessageId: generateMessageId(),\n\t\t\t\t\tgenerateMessageId\n\t\t\t\t}));\n\t\t\t\tconst currentStepResult = {\n\t\t\t\t\tstepType,\n\t\t\t\t\ttext: stepText,\n\t\t\t\t\treasoning: asReasoningText(currentReasoningDetails),\n\t\t\t\t\treasoningDetails: currentReasoningDetails,\n\t\t\t\t\tfiles: asFiles(currentModelResponse.files),\n\t\t\t\t\tsources: (_h = currentModelResponse.sources) != null ? _h : [],\n\t\t\t\t\ttoolCalls: currentToolCalls,\n\t\t\t\t\ttoolResults: currentToolResults,\n\t\t\t\t\tfinishReason: currentModelResponse.finishReason,\n\t\t\t\t\tusage: currentUsage,\n\t\t\t\t\twarnings: currentModelResponse.warnings,\n\t\t\t\t\tlogprobs: currentModelResponse.logprobs,\n\t\t\t\t\trequest: (_i = currentModelResponse.request) != null ? _i : {},\n\t\t\t\t\tresponse: {\n\t\t\t\t\t\t...currentModelResponse.response,\n\t\t\t\t\t\theaders: (_j = currentModelResponse.rawResponse) == null ? void 0 : _j.headers,\n\t\t\t\t\t\tbody: (_k = currentModelResponse.rawResponse) == null ? void 0 : _k.body,\n\t\t\t\t\t\tmessages: structuredClone(responseMessages)\n\t\t\t\t\t},\n\t\t\t\t\tproviderMetadata: currentModelResponse.providerMetadata,\n\t\t\t\t\texperimental_providerMetadata: currentModelResponse.providerMetadata,\n\t\t\t\t\tisContinued: nextStepType === \"continue\"\n\t\t\t\t};\n\t\t\t\tsteps.push(currentStepResult);\n\t\t\t\tawait (onStepFinish == null ? void 0 : onStepFinish(currentStepResult));\n\t\t\t\tstepType = nextStepType;\n\t\t\t} while (stepType !== \"done\");\n\t\t\tspan.setAttributes(selectTelemetryAttributes({\n\t\t\t\ttelemetry,\n\t\t\t\tattributes: {\n\t\t\t\t\t\"ai.response.finishReason\": currentModelResponse.finishReason,\n\t\t\t\t\t\"ai.response.text\": { output: () => currentModelResponse.text },\n\t\t\t\t\t\"ai.response.toolCalls\": { output: () => JSON.stringify(currentModelResponse.toolCalls) },\n\t\t\t\t\t\"ai.usage.promptTokens\": currentModelResponse.usage.promptTokens,\n\t\t\t\t\t\"ai.usage.completionTokens\": currentModelResponse.usage.completionTokens,\n\t\t\t\t\t\"ai.response.providerMetadata\": JSON.stringify(currentModelResponse.providerMetadata)\n\t\t\t\t}\n\t\t\t}));\n\t\t\treturn new DefaultGenerateTextResult({\n\t\t\t\ttext: text2,\n\t\t\t\tfiles: asFiles(currentModelResponse.files),\n\t\t\t\treasoning: asReasoningText(currentReasoningDetails),\n\t\t\t\treasoningDetails: currentReasoningDetails,\n\t\t\t\tsources,\n\t\t\t\toutputResolver: () => {\n\t\t\t\t\tif (output == null) throw new NoOutputSpecifiedError();\n\t\t\t\t\treturn output.parseOutput({ text: text2 }, {\n\t\t\t\t\t\tresponse: currentModelResponse.response,\n\t\t\t\t\t\tusage,\n\t\t\t\t\t\tfinishReason: currentModelResponse.finishReason\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\ttoolCalls: currentToolCalls,\n\t\t\t\ttoolResults: currentToolResults,\n\t\t\t\tfinishReason: currentModelResponse.finishReason,\n\t\t\t\tusage,\n\t\t\t\twarnings: currentModelResponse.warnings,\n\t\t\t\trequest: (_l = currentModelResponse.request) != null ? _l : {},\n\t\t\t\tresponse: {\n\t\t\t\t\t...currentModelResponse.response,\n\t\t\t\t\theaders: (_m = currentModelResponse.rawResponse) == null ? void 0 : _m.headers,\n\t\t\t\t\tbody: (_n = currentModelResponse.rawResponse) == null ? void 0 : _n.body,\n\t\t\t\t\tmessages: responseMessages\n\t\t\t\t},\n\t\t\t\tlogprobs: currentModelResponse.logprobs,\n\t\t\t\tsteps,\n\t\t\t\tproviderMetadata: currentModelResponse.providerMetadata\n\t\t\t});\n\t\t}\n\t});\n}\nasync function executeTools({ toolCalls, tools, tracer, telemetry, messages, abortSignal }) {\n\treturn (await Promise.all(toolCalls.map(async ({ toolCallId, toolName, args }) => {\n\t\tconst tool2 = tools[toolName];\n\t\tif ((tool2 == null ? void 0 : tool2.execute) == null) return;\n\t\treturn {\n\t\t\ttype: \"tool-result\",\n\t\t\ttoolCallId,\n\t\t\ttoolName,\n\t\t\targs,\n\t\t\tresult: await recordSpan({\n\t\t\t\tname: \"ai.toolCall\",\n\t\t\t\tattributes: selectTelemetryAttributes({\n\t\t\t\t\ttelemetry,\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\t...assembleOperationName({\n\t\t\t\t\t\t\toperationId: \"ai.toolCall\",\n\t\t\t\t\t\t\ttelemetry\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"ai.toolCall.name\": toolName,\n\t\t\t\t\t\t\"ai.toolCall.id\": toolCallId,\n\t\t\t\t\t\t\"ai.toolCall.args\": { output: () => JSON.stringify(args) }\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttracer,\n\t\t\t\tfn: async (span) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst result2 = await tool2.execute(args, {\n\t\t\t\t\t\t\ttoolCallId,\n\t\t\t\t\t\t\tmessages,\n\t\t\t\t\t\t\tabortSignal\n\t\t\t\t\t\t});\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tspan.setAttributes(selectTelemetryAttributes({\n\t\t\t\t\t\t\t\ttelemetry,\n\t\t\t\t\t\t\t\tattributes: { \"ai.toolCall.result\": { output: () => JSON.stringify(result2) } }\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t} catch (ignored) {}\n\t\t\t\t\t\treturn result2;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\trecordErrorOnSpan(span, error);\n\t\t\t\t\t\tthrow new ToolExecutionError({\n\t\t\t\t\t\t\ttoolCallId,\n\t\t\t\t\t\t\ttoolName,\n\t\t\t\t\t\t\ttoolArgs: args,\n\t\t\t\t\t\t\tcause: error\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t};\n\t}))).filter((result) => result != null);\n}\nvar DefaultGenerateTextResult = class {\n\tconstructor(options) {\n\t\tthis.text = options.text;\n\t\tthis.files = options.files;\n\t\tthis.reasoning = options.reasoning;\n\t\tthis.reasoningDetails = options.reasoningDetails;\n\t\tthis.toolCalls = options.toolCalls;\n\t\tthis.toolResults = options.toolResults;\n\t\tthis.finishReason = options.finishReason;\n\t\tthis.usage = options.usage;\n\t\tthis.warnings = options.warnings;\n\t\tthis.request = options.request;\n\t\tthis.response = options.response;\n\t\tthis.steps = options.steps;\n\t\tthis.experimental_providerMetadata = options.providerMetadata;\n\t\tthis.providerMetadata = options.providerMetadata;\n\t\tthis.logprobs = options.logprobs;\n\t\tthis.outputResolver = options.outputResolver;\n\t\tthis.sources = options.sources;\n\t}\n\tget experimental_output() {\n\t\treturn this.outputResolver();\n\t}\n};\nfunction asReasoningDetails(reasoning) {\n\tif (reasoning == null) return [];\n\tif (typeof reasoning === \"string\") return [{\n\t\ttype: \"text\",\n\t\ttext: reasoning\n\t}];\n\treturn reasoning;\n}\nfunction asFiles(files) {\n\tvar _a17;\n\treturn (_a17 = files == null ? void 0 : files.map((file) => new DefaultGeneratedFile(file))) != null ? _a17 : [];\n}\nvar output_exports = {};\n__export(output_exports, {\n\tobject: () => object,\n\ttext: () => text\n});\nvar name14 = \"AI_InvalidStreamPartError\";\nvar marker14 = `vercel.ai.error.${name14}`;\nvar symbol14 = Symbol.for(marker14);\nvar _a14;\nvar InvalidStreamPartError = class extends AISDKError {\n\tconstructor({ chunk, message }) {\n\t\tsuper({\n\t\t\tname: name14,\n\t\t\tmessage\n\t\t});\n\t\tthis[_a14] = true;\n\t\tthis.chunk = chunk;\n\t}\n\tstatic isInstance(error) {\n\t\treturn AISDKError.hasMarker(error, marker14);\n\t}\n};\n_a14 = symbol14;\nvar marker15 = `vercel.ai.error.AI_MCPClientError`;\nvar symbol15 = Symbol.for(marker15);\nvar _a15;\nvar MCPClientError = class extends AISDKError {\n\tconstructor({ name: name17 = \"MCPClientError\", message, cause }) {\n\t\tsuper({\n\t\t\tname: name17,\n\t\t\tmessage,\n\t\t\tcause\n\t\t});\n\t\tthis[_a15] = true;\n\t}\n\tstatic isInstance(error) {\n\t\treturn AISDKError.hasMarker(error, marker15);\n\t}\n};\n_a15 = symbol15;\nvar text = () => ({\n\ttype: \"text\",\n\tresponseFormat: () => ({ type: \"text\" }),\n\tinjectIntoSystemPrompt({ system }) {\n\t\treturn system;\n\t},\n\tparsePartial({ text: text2 }) {\n\t\treturn { partial: text2 };\n\t},\n\tparseOutput({ text: text2 }) {\n\t\treturn text2;\n\t}\n});\nvar object = ({ schema: inputSchema }) => {\n\tconst schema = asSchema(inputSchema);\n\treturn {\n\t\ttype: \"object\",\n\t\tresponseFormat: ({ model }) => ({\n\t\t\ttype: \"json\",\n\t\t\tschema: model.supportsStructuredOutputs ? schema.jsonSchema : void 0\n\t\t}),\n\t\tinjectIntoSystemPrompt({ system, model }) {\n\t\t\treturn model.supportsStructuredOutputs ? system : injectJsonInstruction({\n\t\t\t\tprompt: system,\n\t\t\t\tschema: schema.jsonSchema\n\t\t\t});\n\t\t},\n\t\tparsePartial({ text: text2 }) {\n\t\t\tconst result = parsePartialJson(text2);\n\t\t\tswitch (result.state) {\n\t\t\t\tcase \"failed-parse\":\n\t\t\t\tcase \"undefined-input\": return;\n\t\t\t\tcase \"repaired-parse\":\n\t\t\t\tcase \"successful-parse\": return { partial: result.value };\n\t\t\t\tdefault: {\n\t\t\t\t\tconst _exhaustiveCheck = result.state;\n\t\t\t\t\tthrow new Error(`Unsupported parse state: ${_exhaustiveCheck}`);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tparseOutput({ text: text2 }, context) {\n\t\t\tconst parseResult = safeParseJSON({ text: text2 });\n\t\t\tif (!parseResult.success) throw new NoObjectGeneratedError({\n\t\t\t\tmessage: \"No object generated: could not parse the response.\",\n\t\t\t\tcause: parseResult.error,\n\t\t\t\ttext: text2,\n\t\t\t\tresponse: context.response,\n\t\t\t\tusage: context.usage,\n\t\t\t\tfinishReason: context.finishReason\n\t\t\t});\n\t\t\tconst validationResult = safeValidateTypes({\n\t\t\t\tvalue: parseResult.value,\n\t\t\t\tschema\n\t\t\t});\n\t\t\tif (!validationResult.success) throw new NoObjectGeneratedError({\n\t\t\t\tmessage: \"No object generated: response did not match schema.\",\n\t\t\t\tcause: validationResult.error,\n\t\t\t\ttext: text2,\n\t\t\t\tresponse: context.response,\n\t\t\t\tusage: context.usage,\n\t\t\t\tfinishReason: context.finishReason\n\t\t\t});\n\t\t\treturn validationResult.value;\n\t\t}\n\t};\n};\nvar CHUNKING_REGEXPS = {\n\tword: /\\S+\\s+/m,\n\tline: /\\n+/m\n};\nfunction smoothStream({ delayInMs = 10, chunking = \"word\", _internal: { delay: delay2 = delay } = {} } = {}) {\n\tlet detectChunk;\n\tif (typeof chunking === \"function\") detectChunk = (buffer) => {\n\t\tconst match = chunking(buffer);\n\t\tif (match == null) return null;\n\t\tif (!match.length) throw new Error(`Chunking function must return a non-empty string.`);\n\t\tif (!buffer.startsWith(match)) throw new Error(`Chunking function must return a match that is a prefix of the buffer. Received: \"${match}\" expected to start with \"${buffer}\"`);\n\t\treturn match;\n\t};\n\telse {\n\t\tconst chunkingRegex = typeof chunking === \"string\" ? CHUNKING_REGEXPS[chunking] : chunking;\n\t\tif (chunkingRegex == null) throw new InvalidArgumentError$1({\n\t\t\targument: \"chunking\",\n\t\t\tmessage: `Chunking must be \"word\" or \"line\" or a RegExp. Received: ${chunking}`\n\t\t});\n\t\tdetectChunk = (buffer) => {\n\t\t\tconst match = chunkingRegex.exec(buffer);\n\t\t\tif (!match) return null;\n\t\t\treturn buffer.slice(0, match.index) + (match == null ? void 0 : match[0]);\n\t\t};\n\t}\n\treturn () => {\n\t\tlet buffer = \"\";\n\t\treturn new TransformStream({ async transform(chunk, controller) {\n\t\t\tif (chunk.type !== \"text-delta\") {\n\t\t\t\tif (buffer.length > 0) {\n\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\ttype: \"text-delta\",\n\t\t\t\t\t\ttextDelta: buffer\n\t\t\t\t\t});\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t}\n\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tbuffer += chunk.textDelta;\n\t\t\tlet match;\n\t\t\twhile ((match = detectChunk(buffer)) != null) {\n\t\t\t\tcontroller.enqueue({\n\t\t\t\t\ttype: \"text-delta\",\n\t\t\t\t\ttextDelta: match\n\t\t\t\t});\n\t\t\t\tbuffer = buffer.slice(match.length);\n\t\t\t\tawait delay2(delayInMs);\n\t\t\t}\n\t\t} });\n\t};\n}\nfunction asArray(value) {\n\treturn value === void 0 ? [] : Array.isArray(value) ? value : [value];\n}\nasync function consumeStream({ stream, onError }) {\n\tconst reader = stream.getReader();\n\ttry {\n\t\twhile (true) {\n\t\t\tconst { done } = await reader.read();\n\t\t\tif (done) break;\n\t\t}\n\t} catch (error) {\n\t\tonError?.(error);\n\t} finally {\n\t\treader.releaseLock();\n\t}\n}\nfunction mergeStreams(stream1, stream2) {\n\tconst reader1 = stream1.getReader();\n\tconst reader2 = stream2.getReader();\n\tlet lastRead1 = void 0;\n\tlet lastRead2 = void 0;\n\tlet stream1Done = false;\n\tlet stream2Done = false;\n\tasync function readStream1(controller) {\n\t\ttry {\n\t\t\tif (lastRead1 == null) lastRead1 = reader1.read();\n\t\t\tconst result = await lastRead1;\n\t\t\tlastRead1 = void 0;\n\t\t\tif (!result.done) controller.enqueue(result.value);\n\t\t\telse controller.close();\n\t\t} catch (error) {\n\t\t\tcontroller.error(error);\n\t\t}\n\t}\n\tasync function readStream2(controller) {\n\t\ttry {\n\t\t\tif (lastRead2 == null) lastRead2 = reader2.read();\n\t\t\tconst result = await lastRead2;\n\t\t\tlastRead2 = void 0;\n\t\t\tif (!result.done) controller.enqueue(result.value);\n\t\t\telse controller.close();\n\t\t} catch (error) {\n\t\t\tcontroller.error(error);\n\t\t}\n\t}\n\treturn new ReadableStream({\n\t\tasync pull(controller) {\n\t\t\ttry {\n\t\t\t\tif (stream1Done) {\n\t\t\t\t\tawait readStream2(controller);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (stream2Done) {\n\t\t\t\t\tawait readStream1(controller);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (lastRead1 == null) lastRead1 = reader1.read();\n\t\t\t\tif (lastRead2 == null) lastRead2 = reader2.read();\n\t\t\t\tconst { result, reader } = await Promise.race([lastRead1.then((result2) => ({\n\t\t\t\t\tresult: result2,\n\t\t\t\t\treader: reader1\n\t\t\t\t})), lastRead2.then((result2) => ({\n\t\t\t\t\tresult: result2,\n\t\t\t\t\treader: reader2\n\t\t\t\t}))]);\n\t\t\t\tif (!result.done) controller.enqueue(result.value);\n\t\t\t\tif (reader === reader1) {\n\t\t\t\t\tlastRead1 = void 0;\n\t\t\t\t\tif (result.done) {\n\t\t\t\t\t\tawait readStream2(controller);\n\t\t\t\t\t\tstream1Done = true;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlastRead2 = void 0;\n\t\t\t\t\tif (result.done) {\n\t\t\t\t\t\tstream2Done = true;\n\t\t\t\t\t\tawait readStream1(controller);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tcontroller.error(error);\n\t\t\t}\n\t\t},\n\t\tcancel() {\n\t\t\treader1.cancel();\n\t\t\treader2.cancel();\n\t\t}\n\t});\n}\nfunction runToolsTransformation({ tools, generatorStream, toolCallStreaming, tracer, telemetry, system, messages, abortSignal, repairToolCall }) {\n\tlet toolResultsStreamController = null;\n\tconst toolResultsStream = new ReadableStream({ start(controller) {\n\t\ttoolResultsStreamController = controller;\n\t} });\n\tconst activeToolCalls = {};\n\tconst outstandingToolResults = /* @__PURE__ */ new Set();\n\tlet canClose = false;\n\tlet finishChunk = void 0;\n\tfunction attemptClose() {\n\t\tif (canClose && outstandingToolResults.size === 0) {\n\t\t\tif (finishChunk != null) toolResultsStreamController.enqueue(finishChunk);\n\t\t\ttoolResultsStreamController.close();\n\t\t}\n\t}\n\tconst forwardStream = new TransformStream({\n\t\tasync transform(chunk, controller) {\n\t\t\tconst chunkType = chunk.type;\n\t\t\tswitch (chunkType) {\n\t\t\t\tcase \"text-delta\":\n\t\t\t\tcase \"reasoning\":\n\t\t\t\tcase \"reasoning-signature\":\n\t\t\t\tcase \"redacted-reasoning\":\n\t\t\t\tcase \"source\":\n\t\t\t\tcase \"response-metadata\":\n\t\t\t\tcase \"error\":\n\t\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"file\":\n\t\t\t\t\tcontroller.enqueue(new DefaultGeneratedFileWithType({\n\t\t\t\t\t\tdata: chunk.data,\n\t\t\t\t\t\tmimeType: chunk.mimeType\n\t\t\t\t\t}));\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"tool-call-delta\":\n\t\t\t\t\tif (toolCallStreaming) {\n\t\t\t\t\t\tif (!activeToolCalls[chunk.toolCallId]) {\n\t\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\t\ttype: \"tool-call-streaming-start\",\n\t\t\t\t\t\t\t\ttoolCallId: chunk.toolCallId,\n\t\t\t\t\t\t\t\ttoolName: chunk.toolName\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tactiveToolCalls[chunk.toolCallId] = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\ttype: \"tool-call-delta\",\n\t\t\t\t\t\t\ttoolCallId: chunk.toolCallId,\n\t\t\t\t\t\t\ttoolName: chunk.toolName,\n\t\t\t\t\t\t\targsTextDelta: chunk.argsTextDelta\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"tool-call\":\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst toolCall = await parseToolCall({\n\t\t\t\t\t\t\ttoolCall: chunk,\n\t\t\t\t\t\t\ttools,\n\t\t\t\t\t\t\trepairToolCall,\n\t\t\t\t\t\t\tsystem,\n\t\t\t\t\t\t\tmessages\n\t\t\t\t\t\t});\n\t\t\t\t\t\tcontroller.enqueue(toolCall);\n\t\t\t\t\t\tconst tool2 = tools[toolCall.toolName];\n\t\t\t\t\t\tif (tool2.execute != null) {\n\t\t\t\t\t\t\tconst toolExecutionId = generateId();\n\t\t\t\t\t\t\toutstandingToolResults.add(toolExecutionId);\n\t\t\t\t\t\t\trecordSpan({\n\t\t\t\t\t\t\t\tname: \"ai.toolCall\",\n\t\t\t\t\t\t\t\tattributes: selectTelemetryAttributes({\n\t\t\t\t\t\t\t\t\ttelemetry,\n\t\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t\t...assembleOperationName({\n\t\t\t\t\t\t\t\t\t\t\toperationId: \"ai.toolCall\",\n\t\t\t\t\t\t\t\t\t\t\ttelemetry\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t\"ai.toolCall.name\": toolCall.toolName,\n\t\t\t\t\t\t\t\t\t\t\"ai.toolCall.id\": toolCall.toolCallId,\n\t\t\t\t\t\t\t\t\t\t\"ai.toolCall.args\": { output: () => JSON.stringify(toolCall.args) }\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\ttracer,\n\t\t\t\t\t\t\t\tfn: async (span) => tool2.execute(toolCall.args, {\n\t\t\t\t\t\t\t\t\ttoolCallId: toolCall.toolCallId,\n\t\t\t\t\t\t\t\t\tmessages,\n\t\t\t\t\t\t\t\t\tabortSignal\n\t\t\t\t\t\t\t\t}).then((result) => {\n\t\t\t\t\t\t\t\t\ttoolResultsStreamController.enqueue({\n\t\t\t\t\t\t\t\t\t\t...toolCall,\n\t\t\t\t\t\t\t\t\t\ttype: \"tool-result\",\n\t\t\t\t\t\t\t\t\t\tresult\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\toutstandingToolResults.delete(toolExecutionId);\n\t\t\t\t\t\t\t\t\tattemptClose();\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tspan.setAttributes(selectTelemetryAttributes({\n\t\t\t\t\t\t\t\t\t\t\ttelemetry,\n\t\t\t\t\t\t\t\t\t\t\tattributes: { \"ai.toolCall.result\": { output: () => JSON.stringify(result) } }\n\t\t\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\t\t} catch (ignored) {}\n\t\t\t\t\t\t\t\t}, (error) => {\n\t\t\t\t\t\t\t\t\trecordErrorOnSpan(span, error);\n\t\t\t\t\t\t\t\t\ttoolResultsStreamController.enqueue({\n\t\t\t\t\t\t\t\t\t\ttype: \"error\",\n\t\t\t\t\t\t\t\t\t\terror: new ToolExecutionError({\n\t\t\t\t\t\t\t\t\t\t\ttoolCallId: toolCall.toolCallId,\n\t\t\t\t\t\t\t\t\t\t\ttoolName: toolCall.toolName,\n\t\t\t\t\t\t\t\t\t\t\ttoolArgs: toolCall.args,\n\t\t\t\t\t\t\t\t\t\t\tcause: error\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\toutstandingToolResults.delete(toolExecutionId);\n\t\t\t\t\t\t\t\t\tattemptClose();\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\ttoolResultsStreamController.enqueue({\n\t\t\t\t\t\t\ttype: \"error\",\n\t\t\t\t\t\t\terror\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"finish\":\n\t\t\t\t\tfinishChunk = {\n\t\t\t\t\t\ttype: \"finish\",\n\t\t\t\t\t\tfinishReason: chunk.finishReason,\n\t\t\t\t\t\tlogprobs: chunk.logprobs,\n\t\t\t\t\t\tusage: calculateLanguageModelUsage(chunk.usage),\n\t\t\t\t\t\texperimental_providerMetadata: chunk.providerMetadata\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: throw new Error(`Unhandled chunk type: ${chunkType}`);\n\t\t\t}\n\t\t},\n\t\tflush() {\n\t\t\tcanClose = true;\n\t\t\tattemptClose();\n\t\t}\n\t});\n\treturn new ReadableStream({ async start(controller) {\n\t\treturn Promise.all([generatorStream.pipeThrough(forwardStream).pipeTo(new WritableStream({\n\t\t\twrite(chunk) {\n\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t},\n\t\t\tclose() {}\n\t\t})), toolResultsStream.pipeTo(new WritableStream({\n\t\t\twrite(chunk) {\n\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t},\n\t\t\tclose() {\n\t\t\t\tcontroller.close();\n\t\t\t}\n\t\t}))]);\n\t} });\n}\nvar originalGenerateId4 = createIdGenerator({\n\tprefix: \"aitxt\",\n\tsize: 24\n});\nvar originalGenerateMessageId2 = createIdGenerator({\n\tprefix: \"msg\",\n\tsize: 24\n});\nfunction streamText({ model, tools, toolChoice, system, prompt, messages, maxRetries, abortSignal, headers, maxSteps = 1, experimental_generateMessageId: generateMessageId = originalGenerateMessageId2, experimental_output: output, experimental_continueSteps: continueSteps = false, experimental_telemetry: telemetry, experimental_providerMetadata, providerOptions = experimental_providerMetadata, experimental_toolCallStreaming = false, toolCallStreaming = experimental_toolCallStreaming, experimental_activeTools: activeTools, experimental_repairToolCall: repairToolCall, experimental_transform: transform, onChunk, onError, onFinish, onStepFinish, _internal: { now: now2 = now, generateId: generateId3 = originalGenerateId4, currentDate = () => /* @__PURE__ */ new Date() } = {}, ...settings }) {\n\tif (typeof model === \"string\" || model.specificationVersion !== \"v1\") throw new UnsupportedModelVersionError();\n\treturn new DefaultStreamTextResult({\n\t\tmodel,\n\t\ttelemetry,\n\t\theaders,\n\t\tsettings,\n\t\tmaxRetries,\n\t\tabortSignal,\n\t\tsystem,\n\t\tprompt,\n\t\tmessages,\n\t\ttools,\n\t\ttoolChoice,\n\t\ttoolCallStreaming,\n\t\ttransforms: asArray(transform),\n\t\tactiveTools,\n\t\trepairToolCall,\n\t\tmaxSteps,\n\t\toutput,\n\t\tcontinueSteps,\n\t\tproviderOptions,\n\t\tonChunk,\n\t\tonError,\n\t\tonFinish,\n\t\tonStepFinish,\n\t\tnow: now2,\n\t\tcurrentDate,\n\t\tgenerateId: generateId3,\n\t\tgenerateMessageId\n\t});\n}\nfunction createOutputTransformStream(output) {\n\tif (!output) return new TransformStream({ transform(chunk, controller) {\n\t\tcontroller.enqueue({\n\t\t\tpart: chunk,\n\t\t\tpartialOutput: void 0\n\t\t});\n\t} });\n\tlet text2 = \"\";\n\tlet textChunk = \"\";\n\tlet lastPublishedJson = \"\";\n\tfunction publishTextChunk({ controller, partialOutput = void 0 }) {\n\t\tcontroller.enqueue({\n\t\t\tpart: {\n\t\t\t\ttype: \"text-delta\",\n\t\t\t\ttextDelta: textChunk\n\t\t\t},\n\t\t\tpartialOutput\n\t\t});\n\t\ttextChunk = \"\";\n\t}\n\treturn new TransformStream({\n\t\ttransform(chunk, controller) {\n\t\t\tif (chunk.type === \"step-finish\") publishTextChunk({ controller });\n\t\t\tif (chunk.type !== \"text-delta\") {\n\t\t\t\tcontroller.enqueue({\n\t\t\t\t\tpart: chunk,\n\t\t\t\t\tpartialOutput: void 0\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttext2 += chunk.textDelta;\n\t\t\ttextChunk += chunk.textDelta;\n\t\t\tconst result = output.parsePartial({ text: text2 });\n\t\t\tif (result != null) {\n\t\t\t\tconst currentJson = JSON.stringify(result.partial);\n\t\t\t\tif (currentJson !== lastPublishedJson) {\n\t\t\t\t\tpublishTextChunk({\n\t\t\t\t\t\tcontroller,\n\t\t\t\t\t\tpartialOutput: result.partial\n\t\t\t\t\t});\n\t\t\t\t\tlastPublishedJson = currentJson;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tflush(controller) {\n\t\t\tif (textChunk.length > 0) publishTextChunk({ controller });\n\t\t}\n\t});\n}\nvar DefaultStreamTextResult = class {\n\tconstructor({ model, telemetry, headers, settings, maxRetries: maxRetriesArg, abortSignal, system, prompt, messages, tools, toolChoice, toolCallStreaming, transforms, activeTools, repairToolCall, maxSteps, output, continueSteps, providerOptions, now: now2, currentDate, generateId: generateId3, generateMessageId, onChunk, onError, onFinish, onStepFinish }) {\n\t\tthis.warningsPromise = new DelayedPromise();\n\t\tthis.usagePromise = new DelayedPromise();\n\t\tthis.finishReasonPromise = new DelayedPromise();\n\t\tthis.providerMetadataPromise = new DelayedPromise();\n\t\tthis.textPromise = new DelayedPromise();\n\t\tthis.reasoningPromise = new DelayedPromise();\n\t\tthis.reasoningDetailsPromise = new DelayedPromise();\n\t\tthis.sourcesPromise = new DelayedPromise();\n\t\tthis.filesPromise = new DelayedPromise();\n\t\tthis.toolCallsPromise = new DelayedPromise();\n\t\tthis.toolResultsPromise = new DelayedPromise();\n\t\tthis.requestPromise = new DelayedPromise();\n\t\tthis.responsePromise = new DelayedPromise();\n\t\tthis.stepsPromise = new DelayedPromise();\n\t\tvar _a17;\n\t\tif (maxSteps < 1) throw new InvalidArgumentError({\n\t\t\tparameter: \"maxSteps\",\n\t\t\tvalue: maxSteps,\n\t\t\tmessage: \"maxSteps must be at least 1\"\n\t\t});\n\t\tthis.output = output;\n\t\tlet recordedStepText = \"\";\n\t\tlet recordedContinuationText = \"\";\n\t\tlet recordedFullText = \"\";\n\t\tlet stepReasoning = [];\n\t\tlet stepFiles = [];\n\t\tlet activeReasoningText = void 0;\n\t\tlet recordedStepSources = [];\n\t\tconst recordedSources = [];\n\t\tconst recordedResponse = {\n\t\t\tid: generateId3(),\n\t\t\ttimestamp: currentDate(),\n\t\t\tmodelId: model.modelId,\n\t\t\tmessages: []\n\t\t};\n\t\tlet recordedToolCalls = [];\n\t\tlet recordedToolResults = [];\n\t\tlet recordedFinishReason = void 0;\n\t\tlet recordedUsage = void 0;\n\t\tlet stepType = \"initial\";\n\t\tconst recordedSteps = [];\n\t\tlet rootSpan;\n\t\tconst eventProcessor = new TransformStream({\n\t\t\tasync transform(chunk, controller) {\n\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\tconst { part } = chunk;\n\t\t\t\tif (part.type === \"text-delta\" || part.type === \"reasoning\" || part.type === \"source\" || part.type === \"tool-call\" || part.type === \"tool-result\" || part.type === \"tool-call-streaming-start\" || part.type === \"tool-call-delta\") await (onChunk == null ? void 0 : onChunk({ chunk: part }));\n\t\t\t\tif (part.type === \"error\") await (onError == null ? void 0 : onError({ error: part.error }));\n\t\t\t\tif (part.type === \"text-delta\") {\n\t\t\t\t\trecordedStepText += part.textDelta;\n\t\t\t\t\trecordedContinuationText += part.textDelta;\n\t\t\t\t\trecordedFullText += part.textDelta;\n\t\t\t\t}\n\t\t\t\tif (part.type === \"reasoning\") if (activeReasoningText == null) {\n\t\t\t\t\tactiveReasoningText = {\n\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\ttext: part.textDelta\n\t\t\t\t\t};\n\t\t\t\t\tstepReasoning.push(activeReasoningText);\n\t\t\t\t} else activeReasoningText.text += part.textDelta;\n\t\t\t\tif (part.type === \"reasoning-signature\") {\n\t\t\t\t\tif (activeReasoningText == null) throw new AISDKError({\n\t\t\t\t\t\tname: \"InvalidStreamPart\",\n\t\t\t\t\t\tmessage: \"reasoning-signature without reasoning\"\n\t\t\t\t\t});\n\t\t\t\t\tactiveReasoningText.signature = part.signature;\n\t\t\t\t\tactiveReasoningText = void 0;\n\t\t\t\t}\n\t\t\t\tif (part.type === \"redacted-reasoning\") stepReasoning.push({\n\t\t\t\t\ttype: \"redacted\",\n\t\t\t\t\tdata: part.data\n\t\t\t\t});\n\t\t\t\tif (part.type === \"file\") stepFiles.push(part);\n\t\t\t\tif (part.type === \"source\") {\n\t\t\t\t\trecordedSources.push(part.source);\n\t\t\t\t\trecordedStepSources.push(part.source);\n\t\t\t\t}\n\t\t\t\tif (part.type === \"tool-call\") recordedToolCalls.push(part);\n\t\t\t\tif (part.type === \"tool-result\") recordedToolResults.push(part);\n\t\t\t\tif (part.type === \"step-finish\") {\n\t\t\t\t\tconst stepMessages = toResponseMessages({\n\t\t\t\t\t\ttext: recordedContinuationText,\n\t\t\t\t\t\tfiles: stepFiles,\n\t\t\t\t\t\treasoning: stepReasoning,\n\t\t\t\t\t\ttools: tools != null ? tools : {},\n\t\t\t\t\t\ttoolCalls: recordedToolCalls,\n\t\t\t\t\t\ttoolResults: recordedToolResults,\n\t\t\t\t\t\tmessageId: part.messageId,\n\t\t\t\t\t\tgenerateMessageId\n\t\t\t\t\t});\n\t\t\t\t\tconst currentStep = recordedSteps.length;\n\t\t\t\t\tlet nextStepType = \"done\";\n\t\t\t\t\tif (currentStep + 1 < maxSteps) {\n\t\t\t\t\t\tif (continueSteps && part.finishReason === \"length\" && recordedToolCalls.length === 0) nextStepType = \"continue\";\n\t\t\t\t\t\telse if (recordedToolCalls.length > 0 && recordedToolResults.length === recordedToolCalls.length) nextStepType = \"tool-result\";\n\t\t\t\t\t}\n\t\t\t\t\tconst currentStepResult = {\n\t\t\t\t\t\tstepType,\n\t\t\t\t\t\ttext: recordedStepText,\n\t\t\t\t\t\treasoning: asReasoningText(stepReasoning),\n\t\t\t\t\t\treasoningDetails: stepReasoning,\n\t\t\t\t\t\tfiles: stepFiles,\n\t\t\t\t\t\tsources: recordedStepSources,\n\t\t\t\t\t\ttoolCalls: recordedToolCalls,\n\t\t\t\t\t\ttoolResults: recordedToolResults,\n\t\t\t\t\t\tfinishReason: part.finishReason,\n\t\t\t\t\t\tusage: part.usage,\n\t\t\t\t\t\twarnings: part.warnings,\n\t\t\t\t\t\tlogprobs: part.logprobs,\n\t\t\t\t\t\trequest: part.request,\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\t...part.response,\n\t\t\t\t\t\t\tmessages: [...recordedResponse.messages, ...stepMessages]\n\t\t\t\t\t\t},\n\t\t\t\t\t\tproviderMetadata: part.experimental_providerMetadata,\n\t\t\t\t\t\texperimental_providerMetadata: part.experimental_providerMetadata,\n\t\t\t\t\t\tisContinued: part.isContinued\n\t\t\t\t\t};\n\t\t\t\t\tawait (onStepFinish == null ? void 0 : onStepFinish(currentStepResult));\n\t\t\t\t\trecordedSteps.push(currentStepResult);\n\t\t\t\t\trecordedToolCalls = [];\n\t\t\t\t\trecordedToolResults = [];\n\t\t\t\t\trecordedStepText = \"\";\n\t\t\t\t\trecordedStepSources = [];\n\t\t\t\t\tstepReasoning = [];\n\t\t\t\t\tstepFiles = [];\n\t\t\t\t\tactiveReasoningText = void 0;\n\t\t\t\t\tif (nextStepType !== \"done\") stepType = nextStepType;\n\t\t\t\t\tif (nextStepType !== \"continue\") {\n\t\t\t\t\t\trecordedResponse.messages.push(...stepMessages);\n\t\t\t\t\t\trecordedContinuationText = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (part.type === \"finish\") {\n\t\t\t\t\trecordedResponse.id = part.response.id;\n\t\t\t\t\trecordedResponse.timestamp = part.response.timestamp;\n\t\t\t\t\trecordedResponse.modelId = part.response.modelId;\n\t\t\t\t\trecordedResponse.headers = part.response.headers;\n\t\t\t\t\trecordedUsage = part.usage;\n\t\t\t\t\trecordedFinishReason = part.finishReason;\n\t\t\t\t}\n\t\t\t},\n\t\t\tasync flush(controller) {\n\t\t\t\tvar _a18;\n\t\t\t\ttry {\n\t\t\t\t\tif (recordedSteps.length === 0) return;\n\t\t\t\t\tconst lastStep = recordedSteps[recordedSteps.length - 1];\n\t\t\t\t\tself.warningsPromise.resolve(lastStep.warnings);\n\t\t\t\t\tself.requestPromise.resolve(lastStep.request);\n\t\t\t\t\tself.responsePromise.resolve(lastStep.response);\n\t\t\t\t\tself.toolCallsPromise.resolve(lastStep.toolCalls);\n\t\t\t\t\tself.toolResultsPromise.resolve(lastStep.toolResults);\n\t\t\t\t\tself.providerMetadataPromise.resolve(lastStep.experimental_providerMetadata);\n\t\t\t\t\tself.reasoningPromise.resolve(lastStep.reasoning);\n\t\t\t\t\tself.reasoningDetailsPromise.resolve(lastStep.reasoningDetails);\n\t\t\t\t\tconst finishReason = recordedFinishReason != null ? recordedFinishReason : \"unknown\";\n\t\t\t\t\tconst usage = recordedUsage != null ? recordedUsage : {\n\t\t\t\t\t\tcompletionTokens: NaN,\n\t\t\t\t\t\tpromptTokens: NaN,\n\t\t\t\t\t\ttotalTokens: NaN\n\t\t\t\t\t};\n\t\t\t\t\tself.finishReasonPromise.resolve(finishReason);\n\t\t\t\t\tself.usagePromise.resolve(usage);\n\t\t\t\t\tself.textPromise.resolve(recordedFullText);\n\t\t\t\t\tself.sourcesPromise.resolve(recordedSources);\n\t\t\t\t\tself.filesPromise.resolve(lastStep.files);\n\t\t\t\t\tself.stepsPromise.resolve(recordedSteps);\n\t\t\t\t\tawait (onFinish == null ? void 0 : onFinish({\n\t\t\t\t\t\tfinishReason,\n\t\t\t\t\t\tlogprobs: void 0,\n\t\t\t\t\t\tusage,\n\t\t\t\t\t\ttext: recordedFullText,\n\t\t\t\t\t\treasoning: lastStep.reasoning,\n\t\t\t\t\t\treasoningDetails: lastStep.reasoningDetails,\n\t\t\t\t\t\tfiles: lastStep.files,\n\t\t\t\t\t\tsources: lastStep.sources,\n\t\t\t\t\t\ttoolCalls: lastStep.toolCalls,\n\t\t\t\t\t\ttoolResults: lastStep.toolResults,\n\t\t\t\t\t\trequest: (_a18 = lastStep.request) != null ? _a18 : {},\n\t\t\t\t\t\tresponse: lastStep.response,\n\t\t\t\t\t\twarnings: lastStep.warnings,\n\t\t\t\t\t\tproviderMetadata: lastStep.providerMetadata,\n\t\t\t\t\t\texperimental_providerMetadata: lastStep.experimental_providerMetadata,\n\t\t\t\t\t\tsteps: recordedSteps\n\t\t\t\t\t}));\n\t\t\t\t\trootSpan.setAttributes(selectTelemetryAttributes({\n\t\t\t\t\t\ttelemetry,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\"ai.response.finishReason\": finishReason,\n\t\t\t\t\t\t\t\"ai.response.text\": { output: () => recordedFullText },\n\t\t\t\t\t\t\t\"ai.response.toolCalls\": { output: () => {\n\t\t\t\t\t\t\t\tvar _a19;\n\t\t\t\t\t\t\t\treturn ((_a19 = lastStep.toolCalls) == null ? void 0 : _a19.length) ? JSON.stringify(lastStep.toolCalls) : void 0;\n\t\t\t\t\t\t\t} },\n\t\t\t\t\t\t\t\"ai.usage.promptTokens\": usage.promptTokens,\n\t\t\t\t\t\t\t\"ai.usage.completionTokens\": usage.completionTokens,\n\t\t\t\t\t\t\t\"ai.response.providerMetadata\": JSON.stringify(lastStep.providerMetadata)\n\t\t\t\t\t\t}\n\t\t\t\t\t}));\n\t\t\t\t} catch (error) {\n\t\t\t\t\tcontroller.error(error);\n\t\t\t\t} finally {\n\t\t\t\t\trootSpan.end();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tconst stitchableStream = createStitchableStream();\n\t\tthis.addStream = stitchableStream.addStream;\n\t\tthis.closeStream = stitchableStream.close;\n\t\tlet stream = stitchableStream.stream;\n\t\tfor (const transform of transforms) stream = stream.pipeThrough(transform({\n\t\t\ttools,\n\t\t\tstopStream() {\n\t\t\t\tstitchableStream.terminate();\n\t\t\t}\n\t\t}));\n\t\tthis.baseStream = stream.pipeThrough(createOutputTransformStream(output)).pipeThrough(eventProcessor);\n\t\tconst { maxRetries, retry } = prepareRetries({ maxRetries: maxRetriesArg });\n\t\tconst tracer = getTracer(telemetry);\n\t\tconst baseTelemetryAttributes = getBaseTelemetryAttributes({\n\t\t\tmodel,\n\t\t\ttelemetry,\n\t\t\theaders,\n\t\t\tsettings: {\n\t\t\t\t...settings,\n\t\t\t\tmaxRetries\n\t\t\t}\n\t\t});\n\t\tconst initialPrompt = standardizePrompt({\n\t\t\tprompt: {\n\t\t\t\tsystem: (_a17 = output == null ? void 0 : output.injectIntoSystemPrompt({\n\t\t\t\t\tsystem,\n\t\t\t\t\tmodel\n\t\t\t\t})) != null ? _a17 : system,\n\t\t\t\tprompt,\n\t\t\t\tmessages\n\t\t\t},\n\t\t\ttools\n\t\t});\n\t\tconst self = this;\n\t\trecordSpan({\n\t\t\tname: \"ai.streamText\",\n\t\t\tattributes: selectTelemetryAttributes({\n\t\t\t\ttelemetry,\n\t\t\t\tattributes: {\n\t\t\t\t\t...assembleOperationName({\n\t\t\t\t\t\toperationId: \"ai.streamText\",\n\t\t\t\t\t\ttelemetry\n\t\t\t\t\t}),\n\t\t\t\t\t...baseTelemetryAttributes,\n\t\t\t\t\t\"ai.prompt\": { input: () => JSON.stringify({\n\t\t\t\t\t\tsystem,\n\t\t\t\t\t\tprompt,\n\t\t\t\t\t\tmessages\n\t\t\t\t\t}) },\n\t\t\t\t\t\"ai.settings.maxSteps\": maxSteps\n\t\t\t\t}\n\t\t\t}),\n\t\t\ttracer,\n\t\t\tendWhenDone: false,\n\t\t\tfn: async (rootSpanArg) => {\n\t\t\t\trootSpan = rootSpanArg;\n\t\t\t\tasync function streamStep({ currentStep, responseMessages, usage, stepType: stepType2, previousStepText, hasLeadingWhitespace, messageId }) {\n\t\t\t\t\tvar _a18;\n\t\t\t\t\tconst promptFormat = responseMessages.length === 0 ? initialPrompt.type : \"messages\";\n\t\t\t\t\tconst stepInputMessages = [...initialPrompt.messages, ...responseMessages];\n\t\t\t\t\tconst promptMessages = await convertToLanguageModelPrompt({\n\t\t\t\t\t\tprompt: {\n\t\t\t\t\t\t\ttype: promptFormat,\n\t\t\t\t\t\t\tsystem: initialPrompt.system,\n\t\t\t\t\t\t\tmessages: stepInputMessages\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmodelSupportsImageUrls: model.supportsImageUrls,\n\t\t\t\t\t\tmodelSupportsUrl: (_a18 = model.supportsUrl) == null ? void 0 : _a18.bind(model)\n\t\t\t\t\t});\n\t\t\t\t\tconst mode = {\n\t\t\t\t\t\ttype: \"regular\",\n\t\t\t\t\t\t...prepareToolsAndToolChoice({\n\t\t\t\t\t\t\ttools,\n\t\t\t\t\t\t\ttoolChoice,\n\t\t\t\t\t\t\tactiveTools\n\t\t\t\t\t\t})\n\t\t\t\t\t};\n\t\t\t\t\tconst { result: { stream: stream2, warnings, rawResponse, request }, doStreamSpan, startTimestampMs } = await retry(() => recordSpan({\n\t\t\t\t\t\tname: \"ai.streamText.doStream\",\n\t\t\t\t\t\tattributes: selectTelemetryAttributes({\n\t\t\t\t\t\t\ttelemetry,\n\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t...assembleOperationName({\n\t\t\t\t\t\t\t\t\toperationId: \"ai.streamText.doStream\",\n\t\t\t\t\t\t\t\t\ttelemetry\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t...baseTelemetryAttributes,\n\t\t\t\t\t\t\t\t\"ai.prompt.format\": { input: () => promptFormat },\n\t\t\t\t\t\t\t\t\"ai.prompt.messages\": { input: () => stringifyForTelemetry(promptMessages) },\n\t\t\t\t\t\t\t\t\"ai.prompt.tools\": { input: () => {\n\t\t\t\t\t\t\t\t\tvar _a19;\n\t\t\t\t\t\t\t\t\treturn (_a19 = mode.tools) == null ? void 0 : _a19.map((tool2) => JSON.stringify(tool2));\n\t\t\t\t\t\t\t\t} },\n\t\t\t\t\t\t\t\t\"ai.prompt.toolChoice\": { input: () => mode.toolChoice != null ? JSON.stringify(mode.toolChoice) : void 0 },\n\t\t\t\t\t\t\t\t\"gen_ai.system\": model.provider,\n\t\t\t\t\t\t\t\t\"gen_ai.request.model\": model.modelId,\n\t\t\t\t\t\t\t\t\"gen_ai.request.frequency_penalty\": settings.frequencyPenalty,\n\t\t\t\t\t\t\t\t\"gen_ai.request.max_tokens\": settings.maxTokens,\n\t\t\t\t\t\t\t\t\"gen_ai.request.presence_penalty\": settings.presencePenalty,\n\t\t\t\t\t\t\t\t\"gen_ai.request.stop_sequences\": settings.stopSequences,\n\t\t\t\t\t\t\t\t\"gen_ai.request.temperature\": settings.temperature,\n\t\t\t\t\t\t\t\t\"gen_ai.request.top_k\": settings.topK,\n\t\t\t\t\t\t\t\t\"gen_ai.request.top_p\": settings.topP\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}),\n\t\t\t\t\t\ttracer,\n\t\t\t\t\t\tendWhenDone: false,\n\t\t\t\t\t\tfn: async (doStreamSpan2) => ({\n\t\t\t\t\t\t\tstartTimestampMs: now2(),\n\t\t\t\t\t\t\tdoStreamSpan: doStreamSpan2,\n\t\t\t\t\t\t\tresult: await model.doStream({\n\t\t\t\t\t\t\t\tmode,\n\t\t\t\t\t\t\t\t...prepareCallSettings(settings),\n\t\t\t\t\t\t\t\tinputFormat: promptFormat,\n\t\t\t\t\t\t\t\tresponseFormat: output == null ? void 0 : output.responseFormat({ model }),\n\t\t\t\t\t\t\t\tprompt: promptMessages,\n\t\t\t\t\t\t\t\tproviderMetadata: providerOptions,\n\t\t\t\t\t\t\t\tabortSignal,\n\t\t\t\t\t\t\t\theaders\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t})\n\t\t\t\t\t}));\n\t\t\t\t\tconst transformedStream = runToolsTransformation({\n\t\t\t\t\t\ttools,\n\t\t\t\t\t\tgeneratorStream: stream2,\n\t\t\t\t\t\ttoolCallStreaming,\n\t\t\t\t\t\ttracer,\n\t\t\t\t\t\ttelemetry,\n\t\t\t\t\t\tsystem,\n\t\t\t\t\t\tmessages: stepInputMessages,\n\t\t\t\t\t\trepairToolCall,\n\t\t\t\t\t\tabortSignal\n\t\t\t\t\t});\n\t\t\t\t\tconst stepRequest = request != null ? request : {};\n\t\t\t\t\tconst stepToolCalls = [];\n\t\t\t\t\tconst stepToolResults = [];\n\t\t\t\t\tconst stepReasoning2 = [];\n\t\t\t\t\tconst stepFiles2 = [];\n\t\t\t\t\tlet activeReasoningText2 = void 0;\n\t\t\t\t\tlet stepFinishReason = \"unknown\";\n\t\t\t\t\tlet stepUsage = {\n\t\t\t\t\t\tpromptTokens: 0,\n\t\t\t\t\t\tcompletionTokens: 0,\n\t\t\t\t\t\ttotalTokens: 0\n\t\t\t\t\t};\n\t\t\t\t\tlet stepProviderMetadata;\n\t\t\t\t\tlet stepFirstChunk = true;\n\t\t\t\t\tlet stepText = \"\";\n\t\t\t\t\tlet fullStepText = stepType2 === \"continue\" ? previousStepText : \"\";\n\t\t\t\t\tlet stepLogProbs;\n\t\t\t\t\tlet stepResponse = {\n\t\t\t\t\t\tid: generateId3(),\n\t\t\t\t\t\ttimestamp: currentDate(),\n\t\t\t\t\t\tmodelId: model.modelId\n\t\t\t\t\t};\n\t\t\t\t\tlet chunkBuffer = \"\";\n\t\t\t\t\tlet chunkTextPublished = false;\n\t\t\t\t\tlet inWhitespacePrefix = true;\n\t\t\t\t\tlet hasWhitespaceSuffix = false;\n\t\t\t\t\tasync function publishTextChunk({ controller, chunk }) {\n\t\t\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\t\t\tstepText += chunk.textDelta;\n\t\t\t\t\t\tfullStepText += chunk.textDelta;\n\t\t\t\t\t\tchunkTextPublished = true;\n\t\t\t\t\t\thasWhitespaceSuffix = chunk.textDelta.trimEnd() !== chunk.textDelta;\n\t\t\t\t\t}\n\t\t\t\t\tself.addStream(transformedStream.pipeThrough(new TransformStream({\n\t\t\t\t\t\tasync transform(chunk, controller) {\n\t\t\t\t\t\t\tvar _a19, _b, _c;\n\t\t\t\t\t\t\tif (stepFirstChunk) {\n\t\t\t\t\t\t\t\tconst msToFirstChunk = now2() - startTimestampMs;\n\t\t\t\t\t\t\t\tstepFirstChunk = false;\n\t\t\t\t\t\t\t\tdoStreamSpan.addEvent(\"ai.stream.firstChunk\", { \"ai.response.msToFirstChunk\": msToFirstChunk });\n\t\t\t\t\t\t\t\tdoStreamSpan.setAttributes({ \"ai.response.msToFirstChunk\": msToFirstChunk });\n\t\t\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\t\t\ttype: \"step-start\",\n\t\t\t\t\t\t\t\t\tmessageId,\n\t\t\t\t\t\t\t\t\trequest: stepRequest,\n\t\t\t\t\t\t\t\t\twarnings: warnings != null ? warnings : []\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (chunk.type === \"text-delta\" && chunk.textDelta.length === 0) return;\n\t\t\t\t\t\t\tconst chunkType = chunk.type;\n\t\t\t\t\t\t\tswitch (chunkType) {\n\t\t\t\t\t\t\t\tcase \"text-delta\":\n\t\t\t\t\t\t\t\t\tif (continueSteps) {\n\t\t\t\t\t\t\t\t\t\tconst trimmedChunkText = inWhitespacePrefix && hasLeadingWhitespace ? chunk.textDelta.trimStart() : chunk.textDelta;\n\t\t\t\t\t\t\t\t\t\tif (trimmedChunkText.length === 0) break;\n\t\t\t\t\t\t\t\t\t\tinWhitespacePrefix = false;\n\t\t\t\t\t\t\t\t\t\tchunkBuffer += trimmedChunkText;\n\t\t\t\t\t\t\t\t\t\tconst split = splitOnLastWhitespace(chunkBuffer);\n\t\t\t\t\t\t\t\t\t\tif (split != null) {\n\t\t\t\t\t\t\t\t\t\t\tchunkBuffer = split.suffix;\n\t\t\t\t\t\t\t\t\t\t\tawait publishTextChunk({\n\t\t\t\t\t\t\t\t\t\t\t\tcontroller,\n\t\t\t\t\t\t\t\t\t\t\t\tchunk: {\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype: \"text-delta\",\n\t\t\t\t\t\t\t\t\t\t\t\t\ttextDelta: split.prefix + split.whitespace\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else await publishTextChunk({\n\t\t\t\t\t\t\t\t\t\tcontroller,\n\t\t\t\t\t\t\t\t\t\tchunk\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase \"reasoning\":\n\t\t\t\t\t\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\t\t\t\t\t\tif (activeReasoningText2 == null) {\n\t\t\t\t\t\t\t\t\t\tactiveReasoningText2 = {\n\t\t\t\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\t\t\t\ttext: chunk.textDelta\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tstepReasoning2.push(activeReasoningText2);\n\t\t\t\t\t\t\t\t\t} else activeReasoningText2.text += chunk.textDelta;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase \"reasoning-signature\":\n\t\t\t\t\t\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\t\t\t\t\t\tif (activeReasoningText2 == null) throw new InvalidStreamPartError({\n\t\t\t\t\t\t\t\t\t\tchunk,\n\t\t\t\t\t\t\t\t\t\tmessage: \"reasoning-signature without reasoning\"\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\tactiveReasoningText2.signature = chunk.signature;\n\t\t\t\t\t\t\t\t\tactiveReasoningText2 = void 0;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase \"redacted-reasoning\":\n\t\t\t\t\t\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\t\t\t\t\t\tstepReasoning2.push({\n\t\t\t\t\t\t\t\t\t\ttype: \"redacted\",\n\t\t\t\t\t\t\t\t\t\tdata: chunk.data\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase \"tool-call\":\n\t\t\t\t\t\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\t\t\t\t\t\tstepToolCalls.push(chunk);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase \"tool-result\":\n\t\t\t\t\t\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\t\t\t\t\t\tstepToolResults.push(chunk);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase \"response-metadata\":\n\t\t\t\t\t\t\t\t\tstepResponse = {\n\t\t\t\t\t\t\t\t\t\tid: (_a19 = chunk.id) != null ? _a19 : stepResponse.id,\n\t\t\t\t\t\t\t\t\t\ttimestamp: (_b = chunk.timestamp) != null ? _b : stepResponse.timestamp,\n\t\t\t\t\t\t\t\t\t\tmodelId: (_c = chunk.modelId) != null ? _c : stepResponse.modelId\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase \"finish\": {\n\t\t\t\t\t\t\t\t\tstepUsage = chunk.usage;\n\t\t\t\t\t\t\t\t\tstepFinishReason = chunk.finishReason;\n\t\t\t\t\t\t\t\t\tstepProviderMetadata = chunk.experimental_providerMetadata;\n\t\t\t\t\t\t\t\t\tstepLogProbs = chunk.logprobs;\n\t\t\t\t\t\t\t\t\tconst msToFinish = now2() - startTimestampMs;\n\t\t\t\t\t\t\t\t\tdoStreamSpan.addEvent(\"ai.stream.finish\");\n\t\t\t\t\t\t\t\t\tdoStreamSpan.setAttributes({\n\t\t\t\t\t\t\t\t\t\t\"ai.response.msToFinish\": msToFinish,\n\t\t\t\t\t\t\t\t\t\t\"ai.response.avgCompletionTokensPerSecond\": 1e3 * stepUsage.completionTokens / msToFinish\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase \"file\":\n\t\t\t\t\t\t\t\t\tstepFiles2.push(chunk);\n\t\t\t\t\t\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase \"source\":\n\t\t\t\t\t\t\t\tcase \"tool-call-streaming-start\":\n\t\t\t\t\t\t\t\tcase \"tool-call-delta\":\n\t\t\t\t\t\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase \"error\":\n\t\t\t\t\t\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\t\t\t\t\t\tstepFinishReason = \"error\";\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tdefault: throw new Error(`Unknown chunk type: ${chunkType}`);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tasync flush(controller) {\n\t\t\t\t\t\t\tconst stepToolCallsJson = stepToolCalls.length > 0 ? JSON.stringify(stepToolCalls) : void 0;\n\t\t\t\t\t\t\tlet nextStepType = \"done\";\n\t\t\t\t\t\t\tif (currentStep + 1 < maxSteps) {\n\t\t\t\t\t\t\t\tif (continueSteps && stepFinishReason === \"length\" && stepToolCalls.length === 0) nextStepType = \"continue\";\n\t\t\t\t\t\t\t\telse if (stepToolCalls.length > 0 && stepToolResults.length === stepToolCalls.length) nextStepType = \"tool-result\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (continueSteps && chunkBuffer.length > 0 && (nextStepType !== \"continue\" || stepType2 === \"continue\" && !chunkTextPublished)) {\n\t\t\t\t\t\t\t\tawait publishTextChunk({\n\t\t\t\t\t\t\t\t\tcontroller,\n\t\t\t\t\t\t\t\t\tchunk: {\n\t\t\t\t\t\t\t\t\t\ttype: \"text-delta\",\n\t\t\t\t\t\t\t\t\t\ttextDelta: chunkBuffer\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tchunkBuffer = \"\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tdoStreamSpan.setAttributes(selectTelemetryAttributes({\n\t\t\t\t\t\t\t\t\ttelemetry,\n\t\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t\t\"ai.response.finishReason\": stepFinishReason,\n\t\t\t\t\t\t\t\t\t\t\"ai.response.text\": { output: () => stepText },\n\t\t\t\t\t\t\t\t\t\t\"ai.response.toolCalls\": { output: () => stepToolCallsJson },\n\t\t\t\t\t\t\t\t\t\t\"ai.response.id\": stepResponse.id,\n\t\t\t\t\t\t\t\t\t\t\"ai.response.model\": stepResponse.modelId,\n\t\t\t\t\t\t\t\t\t\t\"ai.response.timestamp\": stepResponse.timestamp.toISOString(),\n\t\t\t\t\t\t\t\t\t\t\"ai.response.providerMetadata\": JSON.stringify(stepProviderMetadata),\n\t\t\t\t\t\t\t\t\t\t\"ai.usage.promptTokens\": stepUsage.promptTokens,\n\t\t\t\t\t\t\t\t\t\t\"ai.usage.completionTokens\": stepUsage.completionTokens,\n\t\t\t\t\t\t\t\t\t\t\"gen_ai.response.finish_reasons\": [stepFinishReason],\n\t\t\t\t\t\t\t\t\t\t\"gen_ai.response.id\": stepResponse.id,\n\t\t\t\t\t\t\t\t\t\t\"gen_ai.response.model\": stepResponse.modelId,\n\t\t\t\t\t\t\t\t\t\t\"gen_ai.usage.input_tokens\": stepUsage.promptTokens,\n\t\t\t\t\t\t\t\t\t\t\"gen_ai.usage.output_tokens\": stepUsage.completionTokens\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t} catch (error) {} finally {\n\t\t\t\t\t\t\t\tdoStreamSpan.end();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\t\ttype: \"step-finish\",\n\t\t\t\t\t\t\t\tfinishReason: stepFinishReason,\n\t\t\t\t\t\t\t\tusage: stepUsage,\n\t\t\t\t\t\t\t\tproviderMetadata: stepProviderMetadata,\n\t\t\t\t\t\t\t\texperimental_providerMetadata: stepProviderMetadata,\n\t\t\t\t\t\t\t\tlogprobs: stepLogProbs,\n\t\t\t\t\t\t\t\trequest: stepRequest,\n\t\t\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\t\t\t...stepResponse,\n\t\t\t\t\t\t\t\t\theaders: rawResponse == null ? void 0 : rawResponse.headers\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\twarnings,\n\t\t\t\t\t\t\t\tisContinued: nextStepType === \"continue\",\n\t\t\t\t\t\t\t\tmessageId\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tconst combinedUsage = addLanguageModelUsage(usage, stepUsage);\n\t\t\t\t\t\t\tif (nextStepType === \"done\") {\n\t\t\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\t\t\ttype: \"finish\",\n\t\t\t\t\t\t\t\t\tfinishReason: stepFinishReason,\n\t\t\t\t\t\t\t\t\tusage: combinedUsage,\n\t\t\t\t\t\t\t\t\tproviderMetadata: stepProviderMetadata,\n\t\t\t\t\t\t\t\t\texperimental_providerMetadata: stepProviderMetadata,\n\t\t\t\t\t\t\t\t\tlogprobs: stepLogProbs,\n\t\t\t\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\t\t\t\t...stepResponse,\n\t\t\t\t\t\t\t\t\t\theaders: rawResponse == null ? void 0 : rawResponse.headers\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tself.closeStream();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (stepType2 === \"continue\") {\n\t\t\t\t\t\t\t\t\tconst lastMessage = responseMessages[responseMessages.length - 1];\n\t\t\t\t\t\t\t\t\tif (typeof lastMessage.content === \"string\") lastMessage.content += stepText;\n\t\t\t\t\t\t\t\t\telse lastMessage.content.push({\n\t\t\t\t\t\t\t\t\t\ttext: stepText,\n\t\t\t\t\t\t\t\t\t\ttype: \"text\"\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t} else responseMessages.push(...toResponseMessages({\n\t\t\t\t\t\t\t\t\ttext: stepText,\n\t\t\t\t\t\t\t\t\tfiles: stepFiles2,\n\t\t\t\t\t\t\t\t\treasoning: stepReasoning2,\n\t\t\t\t\t\t\t\t\ttools: tools != null ? tools : {},\n\t\t\t\t\t\t\t\t\ttoolCalls: stepToolCalls,\n\t\t\t\t\t\t\t\t\ttoolResults: stepToolResults,\n\t\t\t\t\t\t\t\t\tmessageId,\n\t\t\t\t\t\t\t\t\tgenerateMessageId\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\tawait streamStep({\n\t\t\t\t\t\t\t\t\tcurrentStep: currentStep + 1,\n\t\t\t\t\t\t\t\t\tresponseMessages,\n\t\t\t\t\t\t\t\t\tusage: combinedUsage,\n\t\t\t\t\t\t\t\t\tstepType: nextStepType,\n\t\t\t\t\t\t\t\t\tpreviousStepText: fullStepText,\n\t\t\t\t\t\t\t\t\thasLeadingWhitespace: hasWhitespaceSuffix,\n\t\t\t\t\t\t\t\t\tmessageId: nextStepType === \"continue\" ? messageId : generateMessageId()\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t})));\n\t\t\t\t}\n\t\t\t\tawait streamStep({\n\t\t\t\t\tcurrentStep: 0,\n\t\t\t\t\tresponseMessages: [],\n\t\t\t\t\tusage: {\n\t\t\t\t\t\tpromptTokens: 0,\n\t\t\t\t\t\tcompletionTokens: 0,\n\t\t\t\t\t\ttotalTokens: 0\n\t\t\t\t\t},\n\t\t\t\t\tpreviousStepText: \"\",\n\t\t\t\t\tstepType: \"initial\",\n\t\t\t\t\thasLeadingWhitespace: false,\n\t\t\t\t\tmessageId: generateMessageId()\n\t\t\t\t});\n\t\t\t}\n\t\t}).catch((error) => {\n\t\t\tself.addStream(new ReadableStream({ start(controller) {\n\t\t\t\tcontroller.enqueue({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\terror\n\t\t\t\t});\n\t\t\t\tcontroller.close();\n\t\t\t} }));\n\t\t\tself.closeStream();\n\t\t});\n\t}\n\tget warnings() {\n\t\treturn this.warningsPromise.value;\n\t}\n\tget usage() {\n\t\treturn this.usagePromise.value;\n\t}\n\tget finishReason() {\n\t\treturn this.finishReasonPromise.value;\n\t}\n\tget experimental_providerMetadata() {\n\t\treturn this.providerMetadataPromise.value;\n\t}\n\tget providerMetadata() {\n\t\treturn this.providerMetadataPromise.value;\n\t}\n\tget text() {\n\t\treturn this.textPromise.value;\n\t}\n\tget reasoning() {\n\t\treturn this.reasoningPromise.value;\n\t}\n\tget reasoningDetails() {\n\t\treturn this.reasoningDetailsPromise.value;\n\t}\n\tget sources() {\n\t\treturn this.sourcesPromise.value;\n\t}\n\tget files() {\n\t\treturn this.filesPromise.value;\n\t}\n\tget toolCalls() {\n\t\treturn this.toolCallsPromise.value;\n\t}\n\tget toolResults() {\n\t\treturn this.toolResultsPromise.value;\n\t}\n\tget request() {\n\t\treturn this.requestPromise.value;\n\t}\n\tget response() {\n\t\treturn this.responsePromise.value;\n\t}\n\tget steps() {\n\t\treturn this.stepsPromise.value;\n\t}\n\t/**\n\tSplit out a new stream from the original stream.\n\tThe original stream is replaced to allow for further splitting,\n\tsince we do not know how many times the stream will be split.\n\t\n\tNote: this leads to buffering the stream content on the server.\n\tHowever, the LLM results are expected to be small enough to not cause issues.\n\t*/\n\tteeStream() {\n\t\tconst [stream1, stream2] = this.baseStream.tee();\n\t\tthis.baseStream = stream2;\n\t\treturn stream1;\n\t}\n\tget textStream() {\n\t\treturn createAsyncIterableStream(this.teeStream().pipeThrough(new TransformStream({ transform({ part }, controller) {\n\t\t\tif (part.type === \"text-delta\") controller.enqueue(part.textDelta);\n\t\t} })));\n\t}\n\tget fullStream() {\n\t\treturn createAsyncIterableStream(this.teeStream().pipeThrough(new TransformStream({ transform({ part }, controller) {\n\t\t\tcontroller.enqueue(part);\n\t\t} })));\n\t}\n\tasync consumeStream(options) {\n\t\tvar _a17;\n\t\ttry {\n\t\t\tawait consumeStream({\n\t\t\t\tstream: this.fullStream,\n\t\t\t\tonError: options == null ? void 0 : options.onError\n\t\t\t});\n\t\t} catch (error) {\n\t\t\t(_a17 = options == null ? void 0 : options.onError) == null || _a17.call(options, error);\n\t\t}\n\t}\n\tget experimental_partialOutputStream() {\n\t\tif (this.output == null) throw new NoOutputSpecifiedError();\n\t\treturn createAsyncIterableStream(this.teeStream().pipeThrough(new TransformStream({ transform({ partialOutput }, controller) {\n\t\t\tif (partialOutput != null) controller.enqueue(partialOutput);\n\t\t} })));\n\t}\n\ttoDataStreamInternal({ getErrorMessage: getErrorMessage5 = () => \"An error occurred.\", sendUsage = true, sendReasoning = false, sendSources = false, experimental_sendFinish = true }) {\n\t\treturn this.fullStream.pipeThrough(new TransformStream({ transform: async (chunk, controller) => {\n\t\t\tconst chunkType = chunk.type;\n\t\t\tswitch (chunkType) {\n\t\t\t\tcase \"text-delta\":\n\t\t\t\t\tcontroller.enqueue(formatDataStreamPart(\"text\", chunk.textDelta));\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"reasoning\":\n\t\t\t\t\tif (sendReasoning) controller.enqueue(formatDataStreamPart(\"reasoning\", chunk.textDelta));\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"redacted-reasoning\":\n\t\t\t\t\tif (sendReasoning) controller.enqueue(formatDataStreamPart(\"redacted_reasoning\", { data: chunk.data }));\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"reasoning-signature\":\n\t\t\t\t\tif (sendReasoning) controller.enqueue(formatDataStreamPart(\"reasoning_signature\", { signature: chunk.signature }));\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"file\":\n\t\t\t\t\tcontroller.enqueue(formatDataStreamPart(\"file\", {\n\t\t\t\t\t\tmimeType: chunk.mimeType,\n\t\t\t\t\t\tdata: chunk.base64\n\t\t\t\t\t}));\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"source\":\n\t\t\t\t\tif (sendSources) controller.enqueue(formatDataStreamPart(\"source\", chunk.source));\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"tool-call-streaming-start\":\n\t\t\t\t\tcontroller.enqueue(formatDataStreamPart(\"tool_call_streaming_start\", {\n\t\t\t\t\t\ttoolCallId: chunk.toolCallId,\n\t\t\t\t\t\ttoolName: chunk.toolName\n\t\t\t\t\t}));\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"tool-call-delta\":\n\t\t\t\t\tcontroller.enqueue(formatDataStreamPart(\"tool_call_delta\", {\n\t\t\t\t\t\ttoolCallId: chunk.toolCallId,\n\t\t\t\t\t\targsTextDelta: chunk.argsTextDelta\n\t\t\t\t\t}));\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"tool-call\":\n\t\t\t\t\tcontroller.enqueue(formatDataStreamPart(\"tool_call\", {\n\t\t\t\t\t\ttoolCallId: chunk.toolCallId,\n\t\t\t\t\t\ttoolName: chunk.toolName,\n\t\t\t\t\t\targs: chunk.args\n\t\t\t\t\t}));\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"tool-result\":\n\t\t\t\t\tcontroller.enqueue(formatDataStreamPart(\"tool_result\", {\n\t\t\t\t\t\ttoolCallId: chunk.toolCallId,\n\t\t\t\t\t\tresult: chunk.result\n\t\t\t\t\t}));\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"error\":\n\t\t\t\t\tcontroller.enqueue(formatDataStreamPart(\"error\", getErrorMessage5(chunk.error)));\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"step-start\":\n\t\t\t\t\tcontroller.enqueue(formatDataStreamPart(\"start_step\", { messageId: chunk.messageId }));\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"step-finish\":\n\t\t\t\t\tcontroller.enqueue(formatDataStreamPart(\"finish_step\", {\n\t\t\t\t\t\tfinishReason: chunk.finishReason,\n\t\t\t\t\t\tusage: sendUsage ? {\n\t\t\t\t\t\t\tpromptTokens: chunk.usage.promptTokens,\n\t\t\t\t\t\t\tcompletionTokens: chunk.usage.completionTokens\n\t\t\t\t\t\t} : void 0,\n\t\t\t\t\t\tisContinued: chunk.isContinued\n\t\t\t\t\t}));\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"finish\":\n\t\t\t\t\tif (experimental_sendFinish) controller.enqueue(formatDataStreamPart(\"finish_message\", {\n\t\t\t\t\t\tfinishReason: chunk.finishReason,\n\t\t\t\t\t\tusage: sendUsage ? {\n\t\t\t\t\t\t\tpromptTokens: chunk.usage.promptTokens,\n\t\t\t\t\t\t\tcompletionTokens: chunk.usage.completionTokens\n\t\t\t\t\t\t} : void 0\n\t\t\t\t\t}));\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: throw new Error(`Unknown chunk type: ${chunkType}`);\n\t\t\t}\n\t\t} }));\n\t}\n\tpipeDataStreamToResponse(response, { status, statusText, headers, data, getErrorMessage: getErrorMessage5, sendUsage, sendReasoning, sendSources, experimental_sendFinish } = {}) {\n\t\twriteToServerResponse({\n\t\t\tresponse,\n\t\t\tstatus,\n\t\t\tstatusText,\n\t\t\theaders: prepareOutgoingHttpHeaders(headers, {\n\t\t\t\tcontentType: \"text/plain; charset=utf-8\",\n\t\t\t\tdataStreamVersion: \"v1\"\n\t\t\t}),\n\t\t\tstream: this.toDataStream({\n\t\t\t\tdata,\n\t\t\t\tgetErrorMessage: getErrorMessage5,\n\t\t\t\tsendUsage,\n\t\t\t\tsendReasoning,\n\t\t\t\tsendSources,\n\t\t\t\texperimental_sendFinish\n\t\t\t})\n\t\t});\n\t}\n\tpipeTextStreamToResponse(response, init) {\n\t\twriteToServerResponse({\n\t\t\tresponse,\n\t\t\tstatus: init == null ? void 0 : init.status,\n\t\t\tstatusText: init == null ? void 0 : init.statusText,\n\t\t\theaders: prepareOutgoingHttpHeaders(init == null ? void 0 : init.headers, { contentType: \"text/plain; charset=utf-8\" }),\n\t\t\tstream: this.textStream.pipeThrough(new TextEncoderStream())\n\t\t});\n\t}\n\ttoDataStream(options) {\n\t\tconst stream = this.toDataStreamInternal({\n\t\t\tgetErrorMessage: options == null ? void 0 : options.getErrorMessage,\n\t\t\tsendUsage: options == null ? void 0 : options.sendUsage,\n\t\t\tsendReasoning: options == null ? void 0 : options.sendReasoning,\n\t\t\tsendSources: options == null ? void 0 : options.sendSources,\n\t\t\texperimental_sendFinish: options == null ? void 0 : options.experimental_sendFinish\n\t\t}).pipeThrough(new TextEncoderStream());\n\t\treturn (options == null ? void 0 : options.data) ? mergeStreams(options == null ? void 0 : options.data.stream, stream) : stream;\n\t}\n\tmergeIntoDataStream(writer, options) {\n\t\twriter.merge(this.toDataStreamInternal({\n\t\t\tgetErrorMessage: writer.onError,\n\t\t\tsendUsage: options == null ? void 0 : options.sendUsage,\n\t\t\tsendReasoning: options == null ? void 0 : options.sendReasoning,\n\t\t\tsendSources: options == null ? void 0 : options.sendSources,\n\t\t\texperimental_sendFinish: options == null ? void 0 : options.experimental_sendFinish\n\t\t}));\n\t}\n\ttoDataStreamResponse({ headers, status, statusText, data, getErrorMessage: getErrorMessage5, sendUsage, sendReasoning, sendSources, experimental_sendFinish } = {}) {\n\t\treturn new Response(this.toDataStream({\n\t\t\tdata,\n\t\t\tgetErrorMessage: getErrorMessage5,\n\t\t\tsendUsage,\n\t\t\tsendReasoning,\n\t\t\tsendSources,\n\t\t\texperimental_sendFinish\n\t\t}), {\n\t\t\tstatus,\n\t\t\tstatusText,\n\t\t\theaders: prepareResponseHeaders(headers, {\n\t\t\t\tcontentType: \"text/plain; charset=utf-8\",\n\t\t\t\tdataStreamVersion: \"v1\"\n\t\t\t})\n\t\t});\n\t}\n\ttoTextStreamResponse(init) {\n\t\tvar _a17;\n\t\treturn new Response(this.textStream.pipeThrough(new TextEncoderStream()), {\n\t\t\tstatus: (_a17 = init == null ? void 0 : init.status) != null ? _a17 : 200,\n\t\t\theaders: prepareResponseHeaders(init == null ? void 0 : init.headers, { contentType: \"text/plain; charset=utf-8\" })\n\t\t});\n\t}\n};\nvar NoSpeechGeneratedError = class extends AISDKError {\n\tconstructor(options) {\n\t\tsuper({\n\t\t\tname: \"AI_NoSpeechGeneratedError\",\n\t\t\tmessage: \"No speech audio generated.\"\n\t\t});\n\t\tthis.responses = options.responses;\n\t}\n};\nvar DefaultGeneratedAudioFile = class extends DefaultGeneratedFile {\n\tconstructor({ data, mimeType }) {\n\t\tsuper({\n\t\t\tdata,\n\t\t\tmimeType\n\t\t});\n\t\tlet format = \"mp3\";\n\t\tif (mimeType) {\n\t\t\tconst mimeTypeParts = mimeType.split(\"/\");\n\t\t\tif (mimeTypeParts.length === 2) {\n\t\t\t\tif (mimeType !== \"audio/mpeg\") format = mimeTypeParts[1];\n\t\t\t}\n\t\t}\n\t\tif (!format) throw new Error(\"Audio format must be provided or determinable from mimeType\");\n\t\tthis.format = format;\n\t}\n};\nasync function generateSpeech({ model, text: text2, voice, outputFormat, instructions, speed, providerOptions = {}, maxRetries: maxRetriesArg, abortSignal, headers }) {\n\tvar _a17;\n\tif (typeof model === \"string\" || model.specificationVersion !== \"v1\") throw new UnsupportedModelVersionError();\n\tconst { retry } = prepareRetries({ maxRetries: maxRetriesArg });\n\tconst result = await retry(() => model.doGenerate({\n\t\ttext: text2,\n\t\tvoice,\n\t\toutputFormat,\n\t\tinstructions,\n\t\tspeed,\n\t\tabortSignal,\n\t\theaders,\n\t\tproviderOptions\n\t}));\n\tif (!result.audio || result.audio.length === 0) throw new NoSpeechGeneratedError({ responses: [result.response] });\n\treturn new DefaultSpeechResult({\n\t\taudio: new DefaultGeneratedAudioFile({\n\t\t\tdata: result.audio,\n\t\t\tmimeType: (_a17 = detectMimeType({\n\t\t\t\tdata: result.audio,\n\t\t\t\tsignatures: audioMimeTypeSignatures\n\t\t\t})) != null ? _a17 : \"audio/mp3\"\n\t\t}),\n\t\twarnings: result.warnings,\n\t\tresponses: [result.response],\n\t\tproviderMetadata: result.providerMetadata\n\t});\n}\nvar DefaultSpeechResult = class {\n\tconstructor(options) {\n\t\tvar _a17;\n\t\tthis.audio = options.audio;\n\t\tthis.warnings = options.warnings;\n\t\tthis.responses = options.responses;\n\t\tthis.providerMetadata = (_a17 = options.providerMetadata) != null ? _a17 : {};\n\t}\n};\nvar NoTranscriptGeneratedError = class extends AISDKError {\n\tconstructor(options) {\n\t\tsuper({\n\t\t\tname: \"AI_NoTranscriptGeneratedError\",\n\t\t\tmessage: \"No transcript generated.\"\n\t\t});\n\t\tthis.responses = options.responses;\n\t}\n};\nasync function transcribe({ model, audio, providerOptions = {}, maxRetries: maxRetriesArg, abortSignal, headers }) {\n\tif (typeof model === \"string\" || model.specificationVersion !== \"v1\") throw new UnsupportedModelVersionError();\n\tconst { retry } = prepareRetries({ maxRetries: maxRetriesArg });\n\tconst audioData = audio instanceof URL ? (await download({ url: audio })).data : convertDataContentToUint8Array(audio);\n\tconst result = await retry(() => {\n\t\tvar _a17;\n\t\treturn model.doGenerate({\n\t\t\taudio: audioData,\n\t\t\tabortSignal,\n\t\t\theaders,\n\t\t\tproviderOptions,\n\t\t\tmediaType: (_a17 = detectMimeType({\n\t\t\t\tdata: audioData,\n\t\t\t\tsignatures: audioMimeTypeSignatures\n\t\t\t})) != null ? _a17 : \"audio/wav\"\n\t\t});\n\t});\n\tif (!result.text) throw new NoTranscriptGeneratedError({ responses: [result.response] });\n\treturn new DefaultTranscriptionResult({\n\t\ttext: result.text,\n\t\tsegments: result.segments,\n\t\tlanguage: result.language,\n\t\tdurationInSeconds: result.durationInSeconds,\n\t\twarnings: result.warnings,\n\t\tresponses: [result.response],\n\t\tproviderMetadata: result.providerMetadata\n\t});\n}\nvar DefaultTranscriptionResult = class {\n\tconstructor(options) {\n\t\tvar _a17;\n\t\tthis.text = options.text;\n\t\tthis.segments = options.segments;\n\t\tthis.language = options.language;\n\t\tthis.durationInSeconds = options.durationInSeconds;\n\t\tthis.warnings = options.warnings;\n\t\tthis.responses = options.responses;\n\t\tthis.providerMetadata = (_a17 = options.providerMetadata) != null ? _a17 : {};\n\t}\n};\nfunction mergeObjects(target, source) {\n\tif (target === void 0 && source === void 0) return;\n\tif (target === void 0) return source;\n\tif (source === void 0) return target;\n\tconst result = { ...target };\n\tfor (const key in source) if (Object.prototype.hasOwnProperty.call(source, key)) {\n\t\tconst sourceValue = source[key];\n\t\tif (sourceValue === void 0) continue;\n\t\tconst targetValue = key in target ? target[key] : void 0;\n\t\tconst isSourceObject = sourceValue !== null && typeof sourceValue === \"object\" && !Array.isArray(sourceValue) && !(sourceValue instanceof Date) && !(sourceValue instanceof RegExp);\n\t\tconst isTargetObject = targetValue !== null && targetValue !== void 0 && typeof targetValue === \"object\" && !Array.isArray(targetValue) && !(targetValue instanceof Date) && !(targetValue instanceof RegExp);\n\t\tif (isSourceObject && isTargetObject) result[key] = mergeObjects(targetValue, sourceValue);\n\t\telse result[key] = sourceValue;\n\t}\n\treturn result;\n}\nfunction defaultSettingsMiddleware({ settings }) {\n\treturn {\n\t\tmiddlewareVersion: \"v1\",\n\t\ttransformParams: async ({ params }) => {\n\t\t\tvar _a17;\n\t\t\treturn {\n\t\t\t\t...settings,\n\t\t\t\t...params,\n\t\t\t\tproviderMetadata: mergeObjects(settings.providerMetadata, params.providerMetadata),\n\t\t\t\ttemperature: params.temperature === 0 || params.temperature == null ? (_a17 = settings.temperature) != null ? _a17 : 0 : params.temperature\n\t\t\t};\n\t\t}\n\t};\n}\nfunction getPotentialStartIndex(text2, searchedText) {\n\tif (searchedText.length === 0) return null;\n\tconst directIndex = text2.indexOf(searchedText);\n\tif (directIndex !== -1) return directIndex;\n\tfor (let i = text2.length - 1; i >= 0; i--) {\n\t\tconst suffix = text2.substring(i);\n\t\tif (searchedText.startsWith(suffix)) return i;\n\t}\n\treturn null;\n}\nfunction extractReasoningMiddleware({ tagName, separator = \"\\n\", startWithReasoning = false }) {\n\tconst openingTag = `<${tagName}>`;\n\tconst closingTag = `</${tagName}>`;\n\treturn {\n\t\tmiddlewareVersion: \"v1\",\n\t\twrapGenerate: async ({ doGenerate }) => {\n\t\t\tconst { text: rawText, ...rest } = await doGenerate();\n\t\t\tif (rawText == null) return {\n\t\t\t\ttext: rawText,\n\t\t\t\t...rest\n\t\t\t};\n\t\t\tconst text2 = startWithReasoning ? openingTag + rawText : rawText;\n\t\t\tconst regexp = new RegExp(`${openingTag}(.*?)${closingTag}`, \"gs\");\n\t\t\tconst matches = Array.from(text2.matchAll(regexp));\n\t\t\tif (!matches.length) return {\n\t\t\t\ttext: text2,\n\t\t\t\t...rest\n\t\t\t};\n\t\t\tconst reasoning = matches.map((match) => match[1]).join(separator);\n\t\t\tlet textWithoutReasoning = text2;\n\t\t\tfor (let i = matches.length - 1; i >= 0; i--) {\n\t\t\t\tconst match = matches[i];\n\t\t\t\tconst beforeMatch = textWithoutReasoning.slice(0, match.index);\n\t\t\t\tconst afterMatch = textWithoutReasoning.slice(match.index + match[0].length);\n\t\t\t\ttextWithoutReasoning = beforeMatch + (beforeMatch.length > 0 && afterMatch.length > 0 ? separator : \"\") + afterMatch;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...rest,\n\t\t\t\ttext: textWithoutReasoning,\n\t\t\t\treasoning\n\t\t\t};\n\t\t},\n\t\twrapStream: async ({ doStream }) => {\n\t\t\tconst { stream, ...rest } = await doStream();\n\t\t\tlet isFirstReasoning = true;\n\t\t\tlet isFirstText = true;\n\t\t\tlet afterSwitch = false;\n\t\t\tlet isReasoning = startWithReasoning;\n\t\t\tlet buffer = \"\";\n\t\t\treturn {\n\t\t\t\tstream: stream.pipeThrough(new TransformStream({ transform: (chunk, controller) => {\n\t\t\t\t\tif (chunk.type !== \"text-delta\") {\n\t\t\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tbuffer += chunk.textDelta;\n\t\t\t\t\tfunction publish(text2) {\n\t\t\t\t\t\tif (text2.length > 0) {\n\t\t\t\t\t\t\tconst prefix = afterSwitch && (isReasoning ? !isFirstReasoning : !isFirstText) ? separator : \"\";\n\t\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\t\ttype: isReasoning ? \"reasoning\" : \"text-delta\",\n\t\t\t\t\t\t\t\ttextDelta: prefix + text2\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tafterSwitch = false;\n\t\t\t\t\t\t\tif (isReasoning) isFirstReasoning = false;\n\t\t\t\t\t\t\telse isFirstText = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdo {\n\t\t\t\t\t\tconst nextTag = isReasoning ? closingTag : openingTag;\n\t\t\t\t\t\tconst startIndex = getPotentialStartIndex(buffer, nextTag);\n\t\t\t\t\t\tif (startIndex == null) {\n\t\t\t\t\t\t\tpublish(buffer);\n\t\t\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpublish(buffer.slice(0, startIndex));\n\t\t\t\t\t\tif (startIndex + nextTag.length <= buffer.length) {\n\t\t\t\t\t\t\tbuffer = buffer.slice(startIndex + nextTag.length);\n\t\t\t\t\t\t\tisReasoning = !isReasoning;\n\t\t\t\t\t\t\tafterSwitch = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbuffer = buffer.slice(startIndex);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t} while (true);\n\t\t\t\t} })),\n\t\t\t\t...rest\n\t\t\t};\n\t\t}\n\t};\n}\nfunction simulateStreamingMiddleware() {\n\treturn {\n\t\tmiddlewareVersion: \"v1\",\n\t\twrapStream: async ({ doGenerate }) => {\n\t\t\tconst result = await doGenerate();\n\t\t\treturn {\n\t\t\t\tstream: new ReadableStream({ start(controller) {\n\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\ttype: \"response-metadata\",\n\t\t\t\t\t\t...result.response\n\t\t\t\t\t});\n\t\t\t\t\tif (result.reasoning) if (typeof result.reasoning === \"string\") controller.enqueue({\n\t\t\t\t\t\ttype: \"reasoning\",\n\t\t\t\t\t\ttextDelta: result.reasoning\n\t\t\t\t\t});\n\t\t\t\t\telse for (const reasoning of result.reasoning) switch (reasoning.type) {\n\t\t\t\t\t\tcase \"text\":\n\t\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\t\ttype: \"reasoning\",\n\t\t\t\t\t\t\t\ttextDelta: reasoning.text\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tif (reasoning.signature != null) controller.enqueue({\n\t\t\t\t\t\t\t\ttype: \"reasoning-signature\",\n\t\t\t\t\t\t\t\tsignature: reasoning.signature\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"redacted\":\n\t\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\t\ttype: \"redacted-reasoning\",\n\t\t\t\t\t\t\t\tdata: reasoning.data\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (result.text) controller.enqueue({\n\t\t\t\t\t\ttype: \"text-delta\",\n\t\t\t\t\t\ttextDelta: result.text\n\t\t\t\t\t});\n\t\t\t\t\tif (result.toolCalls) for (const toolCall of result.toolCalls) {\n\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\ttype: \"tool-call-delta\",\n\t\t\t\t\t\t\ttoolCallType: \"function\",\n\t\t\t\t\t\t\ttoolCallId: toolCall.toolCallId,\n\t\t\t\t\t\t\ttoolName: toolCall.toolName,\n\t\t\t\t\t\t\targsTextDelta: toolCall.args\n\t\t\t\t\t\t});\n\t\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\t\ttype: \"tool-call\",\n\t\t\t\t\t\t\t...toolCall\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tcontroller.enqueue({\n\t\t\t\t\t\ttype: \"finish\",\n\t\t\t\t\t\tfinishReason: result.finishReason,\n\t\t\t\t\t\tusage: result.usage,\n\t\t\t\t\t\tlogprobs: result.logprobs,\n\t\t\t\t\t\tproviderMetadata: result.providerMetadata\n\t\t\t\t\t});\n\t\t\t\t\tcontroller.close();\n\t\t\t\t} }),\n\t\t\t\trawCall: result.rawCall,\n\t\t\t\trawResponse: result.rawResponse,\n\t\t\t\twarnings: result.warnings\n\t\t\t};\n\t\t}\n\t};\n}\nvar wrapLanguageModel = ({ model, middleware: middlewareArg, modelId, providerId }) => {\n\treturn asArray(middlewareArg).reverse().reduce((wrappedModel, middleware) => {\n\t\treturn doWrap({\n\t\t\tmodel: wrappedModel,\n\t\t\tmiddleware,\n\t\t\tmodelId,\n\t\t\tproviderId\n\t\t});\n\t}, model);\n};\nvar doWrap = ({ model, middleware: { transformParams, wrapGenerate, wrapStream }, modelId, providerId }) => {\n\tvar _a17;\n\tasync function doTransform({ params, type }) {\n\t\treturn transformParams ? await transformParams({\n\t\t\tparams,\n\t\t\ttype\n\t\t}) : params;\n\t}\n\treturn {\n\t\tspecificationVersion: \"v1\",\n\t\tprovider: providerId != null ? providerId : model.provider,\n\t\tmodelId: modelId != null ? modelId : model.modelId,\n\t\tdefaultObjectGenerationMode: model.defaultObjectGenerationMode,\n\t\tsupportsImageUrls: model.supportsImageUrls,\n\t\tsupportsUrl: (_a17 = model.supportsUrl) == null ? void 0 : _a17.bind(model),\n\t\tsupportsStructuredOutputs: model.supportsStructuredOutputs,\n\t\tasync doGenerate(params) {\n\t\t\tconst transformedParams = await doTransform({\n\t\t\t\tparams,\n\t\t\t\ttype: \"generate\"\n\t\t\t});\n\t\t\tconst doGenerate = async () => model.doGenerate(transformedParams);\n\t\t\tconst doStream = async () => model.doStream(transformedParams);\n\t\t\treturn wrapGenerate ? wrapGenerate({\n\t\t\t\tdoGenerate,\n\t\t\t\tdoStream,\n\t\t\t\tparams: transformedParams,\n\t\t\t\tmodel\n\t\t\t}) : doGenerate();\n\t\t},\n\t\tasync doStream(params) {\n\t\t\tconst transformedParams = await doTransform({\n\t\t\t\tparams,\n\t\t\t\ttype: \"stream\"\n\t\t\t});\n\t\t\tconst doGenerate = async () => model.doGenerate(transformedParams);\n\t\t\tconst doStream = async () => model.doStream(transformedParams);\n\t\t\treturn wrapStream ? wrapStream({\n\t\t\t\tdoGenerate,\n\t\t\t\tdoStream,\n\t\t\t\tparams: transformedParams,\n\t\t\t\tmodel\n\t\t\t}) : doStream();\n\t\t}\n\t};\n};\nvar experimental_wrapLanguageModel = wrapLanguageModel;\nfunction appendClientMessage({ messages, message }) {\n\treturn [...messages.length > 0 && messages[messages.length - 1].id === message.id ? messages.slice(0, -1) : messages, message];\n}\nfunction appendResponseMessages({ messages, responseMessages, _internal: { currentDate = () => /* @__PURE__ */ new Date() } = {} }) {\n\tvar _b;\n\tconst clonedMessages = structuredClone(messages);\n\tfor (const message of responseMessages) {\n\t\tconst role = message.role;\n\t\tconst lastMessage = clonedMessages[clonedMessages.length - 1];\n\t\tconst isLastMessageAssistant = lastMessage.role === \"assistant\";\n\t\tswitch (role) {\n\t\t\tcase \"assistant\": {\n\t\t\t\tlet getToolInvocations2 = function(step) {\n\t\t\t\t\treturn (typeof message.content === \"string\" ? [] : message.content.filter((part) => part.type === \"tool-call\")).map((call) => ({\n\t\t\t\t\t\tstate: \"call\",\n\t\t\t\t\t\tstep,\n\t\t\t\t\t\targs: call.args,\n\t\t\t\t\t\ttoolCallId: call.toolCallId,\n\t\t\t\t\t\ttoolName: call.toolName\n\t\t\t\t\t}));\n\t\t\t\t};\n\t\t\t\tconst parts = [{ type: \"step-start\" }];\n\t\t\t\tlet textContent = \"\";\n\t\t\t\tlet reasoningTextContent = void 0;\n\t\t\t\tif (typeof message.content === \"string\") {\n\t\t\t\t\ttextContent = message.content;\n\t\t\t\t\tparts.push({\n\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\ttext: message.content\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tlet reasoningPart = void 0;\n\t\t\t\t\tfor (const part of message.content) switch (part.type) {\n\t\t\t\t\t\tcase \"text\":\n\t\t\t\t\t\t\treasoningPart = void 0;\n\t\t\t\t\t\t\ttextContent += part.text;\n\t\t\t\t\t\t\tparts.push({\n\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\ttext: part.text\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"reasoning\":\n\t\t\t\t\t\t\tif (reasoningPart == null) {\n\t\t\t\t\t\t\t\treasoningPart = {\n\t\t\t\t\t\t\t\t\ttype: \"reasoning\",\n\t\t\t\t\t\t\t\t\treasoning: \"\",\n\t\t\t\t\t\t\t\t\tdetails: []\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tparts.push(reasoningPart);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treasoningTextContent = (reasoningTextContent != null ? reasoningTextContent : \"\") + part.text;\n\t\t\t\t\t\t\treasoningPart.reasoning += part.text;\n\t\t\t\t\t\t\treasoningPart.details.push({\n\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\ttext: part.text,\n\t\t\t\t\t\t\t\tsignature: part.signature\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"redacted-reasoning\":\n\t\t\t\t\t\t\tif (reasoningPart == null) {\n\t\t\t\t\t\t\t\treasoningPart = {\n\t\t\t\t\t\t\t\t\ttype: \"reasoning\",\n\t\t\t\t\t\t\t\t\treasoning: \"\",\n\t\t\t\t\t\t\t\t\tdetails: []\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tparts.push(reasoningPart);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treasoningPart.details.push({\n\t\t\t\t\t\t\t\ttype: \"redacted\",\n\t\t\t\t\t\t\t\tdata: part.data\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"tool-call\": break;\n\t\t\t\t\t\tcase \"file\":\n\t\t\t\t\t\t\tif (part.data instanceof URL) throw new AISDKError({\n\t\t\t\t\t\t\t\tname: \"InvalidAssistantFileData\",\n\t\t\t\t\t\t\t\tmessage: \"File data cannot be a URL\"\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tparts.push({\n\t\t\t\t\t\t\t\ttype: \"file\",\n\t\t\t\t\t\t\t\tmimeType: part.mimeType,\n\t\t\t\t\t\t\t\tdata: convertDataContentToBase64String(part.data)\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (isLastMessageAssistant) {\n\t\t\t\t\tconst maxStep = extractMaxToolInvocationStep(lastMessage.toolInvocations);\n\t\t\t\t\tlastMessage.parts ??= [];\n\t\t\t\t\tlastMessage.content = textContent;\n\t\t\t\t\tlastMessage.reasoning = reasoningTextContent;\n\t\t\t\t\tlastMessage.parts.push(...parts);\n\t\t\t\t\tlastMessage.toolInvocations = [...(_b = lastMessage.toolInvocations) != null ? _b : [], ...getToolInvocations2(maxStep === void 0 ? 0 : maxStep + 1)];\n\t\t\t\t\tgetToolInvocations2(maxStep === void 0 ? 0 : maxStep + 1).map((call) => ({\n\t\t\t\t\t\ttype: \"tool-invocation\",\n\t\t\t\t\t\ttoolInvocation: call\n\t\t\t\t\t})).forEach((part) => {\n\t\t\t\t\t\tlastMessage.parts.push(part);\n\t\t\t\t\t});\n\t\t\t\t} else clonedMessages.push({\n\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\tid: message.id,\n\t\t\t\t\tcreatedAt: currentDate(),\n\t\t\t\t\tcontent: textContent,\n\t\t\t\t\treasoning: reasoningTextContent,\n\t\t\t\t\ttoolInvocations: getToolInvocations2(0),\n\t\t\t\t\tparts: [...parts, ...getToolInvocations2(0).map((call) => ({\n\t\t\t\t\t\ttype: \"tool-invocation\",\n\t\t\t\t\t\ttoolInvocation: call\n\t\t\t\t\t}))]\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"tool\":\n\t\t\t\tlastMessage.toolInvocations ??= [];\n\t\t\t\tif (lastMessage.role !== \"assistant\") throw new Error(`Tool result must follow an assistant message: ${lastMessage.role}`);\n\t\t\t\tlastMessage.parts ??= [];\n\t\t\t\tfor (const contentPart of message.content) {\n\t\t\t\t\tconst toolCall = lastMessage.toolInvocations.find((call) => call.toolCallId === contentPart.toolCallId);\n\t\t\t\t\tconst toolCallPart = lastMessage.parts.find((part) => part.type === \"tool-invocation\" && part.toolInvocation.toolCallId === contentPart.toolCallId);\n\t\t\t\t\tif (!toolCall) throw new Error(\"Tool call not found in previous message\");\n\t\t\t\t\ttoolCall.state = \"result\";\n\t\t\t\t\tconst toolResult = toolCall;\n\t\t\t\t\ttoolResult.result = contentPart.result;\n\t\t\t\t\tif (toolCallPart) toolCallPart.toolInvocation = toolResult;\n\t\t\t\t\telse lastMessage.parts.push({\n\t\t\t\t\t\ttype: \"tool-invocation\",\n\t\t\t\t\t\ttoolInvocation: toolResult\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault: throw new Error(`Unsupported message role: ${role}`);\n\t\t}\n\t}\n\treturn clonedMessages;\n}\nfunction customProvider({ languageModels, textEmbeddingModels, imageModels, fallbackProvider }) {\n\treturn {\n\t\tlanguageModel(modelId) {\n\t\t\tif (languageModels != null && modelId in languageModels) return languageModels[modelId];\n\t\t\tif (fallbackProvider) return fallbackProvider.languageModel(modelId);\n\t\t\tthrow new NoSuchModelError({\n\t\t\t\tmodelId,\n\t\t\t\tmodelType: \"languageModel\"\n\t\t\t});\n\t\t},\n\t\ttextEmbeddingModel(modelId) {\n\t\t\tif (textEmbeddingModels != null && modelId in textEmbeddingModels) return textEmbeddingModels[modelId];\n\t\t\tif (fallbackProvider) return fallbackProvider.textEmbeddingModel(modelId);\n\t\t\tthrow new NoSuchModelError({\n\t\t\t\tmodelId,\n\t\t\t\tmodelType: \"textEmbeddingModel\"\n\t\t\t});\n\t\t},\n\t\timageModel(modelId) {\n\t\t\tif (imageModels != null && modelId in imageModels) return imageModels[modelId];\n\t\t\tif (fallbackProvider == null ? void 0 : fallbackProvider.imageModel) return fallbackProvider.imageModel(modelId);\n\t\t\tthrow new NoSuchModelError({\n\t\t\t\tmodelId,\n\t\t\t\tmodelType: \"imageModel\"\n\t\t\t});\n\t\t}\n\t};\n}\nvar experimental_customProvider = customProvider;\nvar name16 = \"AI_NoSuchProviderError\";\nvar marker16 = `vercel.ai.error.${name16}`;\nvar symbol16 = Symbol.for(marker16);\nvar _a16;\nvar NoSuchProviderError = class extends NoSuchModelError {\n\tconstructor({ modelId, modelType, providerId, availableProviders, message = `No such provider: ${providerId} (available providers: ${availableProviders.join()})` }) {\n\t\tsuper({\n\t\t\terrorName: name16,\n\t\t\tmodelId,\n\t\t\tmodelType,\n\t\t\tmessage\n\t\t});\n\t\tthis[_a16] = true;\n\t\tthis.providerId = providerId;\n\t\tthis.availableProviders = availableProviders;\n\t}\n\tstatic isInstance(error) {\n\t\treturn AISDKError.hasMarker(error, marker16);\n\t}\n};\n_a16 = symbol16;\nfunction createProviderRegistry(providers, { separator = \":\" } = {}) {\n\tconst registry = new DefaultProviderRegistry({ separator });\n\tfor (const [id, provider] of Object.entries(providers)) registry.registerProvider({\n\t\tid,\n\t\tprovider\n\t});\n\treturn registry;\n}\nvar experimental_createProviderRegistry = createProviderRegistry;\nvar DefaultProviderRegistry = class {\n\tconstructor({ separator }) {\n\t\tthis.providers = {};\n\t\tthis.separator = separator;\n\t}\n\tregisterProvider({ id, provider }) {\n\t\tthis.providers[id] = provider;\n\t}\n\tgetProvider(id) {\n\t\tconst provider = this.providers[id];\n\t\tif (provider == null) throw new NoSuchProviderError({\n\t\t\tmodelId: id,\n\t\t\tmodelType: \"languageModel\",\n\t\t\tproviderId: id,\n\t\t\tavailableProviders: Object.keys(this.providers)\n\t\t});\n\t\treturn provider;\n\t}\n\tsplitId(id, modelType) {\n\t\tconst index = id.indexOf(this.separator);\n\t\tif (index === -1) throw new NoSuchModelError({\n\t\t\tmodelId: id,\n\t\t\tmodelType,\n\t\t\tmessage: `Invalid ${modelType} id for registry: ${id} (must be in the format \"providerId${this.separator}modelId\")`\n\t\t});\n\t\treturn [id.slice(0, index), id.slice(index + this.separator.length)];\n\t}\n\tlanguageModel(id) {\n\t\tvar _a17, _b;\n\t\tconst [providerId, modelId] = this.splitId(id, \"languageModel\");\n\t\tconst model = (_b = (_a17 = this.getProvider(providerId)).languageModel) == null ? void 0 : _b.call(_a17, modelId);\n\t\tif (model == null) throw new NoSuchModelError({\n\t\t\tmodelId: id,\n\t\t\tmodelType: \"languageModel\"\n\t\t});\n\t\treturn model;\n\t}\n\ttextEmbeddingModel(id) {\n\t\tvar _a17;\n\t\tconst [providerId, modelId] = this.splitId(id, \"textEmbeddingModel\");\n\t\tconst provider = this.getProvider(providerId);\n\t\tconst model = (_a17 = provider.textEmbeddingModel) == null ? void 0 : _a17.call(provider, modelId);\n\t\tif (model == null) throw new NoSuchModelError({\n\t\t\tmodelId: id,\n\t\t\tmodelType: \"textEmbeddingModel\"\n\t\t});\n\t\treturn model;\n\t}\n\timageModel(id) {\n\t\tvar _a17;\n\t\tconst [providerId, modelId] = this.splitId(id, \"imageModel\");\n\t\tconst provider = this.getProvider(providerId);\n\t\tconst model = (_a17 = provider.imageModel) == null ? void 0 : _a17.call(provider, modelId);\n\t\tif (model == null) throw new NoSuchModelError({\n\t\t\tmodelId: id,\n\t\t\tmodelType: \"imageModel\"\n\t\t});\n\t\treturn model;\n\t}\n};\nfunction tool(tool2) {\n\treturn tool2;\n}\nvar LATEST_PROTOCOL_VERSION = \"2024-11-05\";\nvar SUPPORTED_PROTOCOL_VERSIONS = [LATEST_PROTOCOL_VERSION, \"2024-10-07\"];\nvar ClientOrServerImplementationSchema = z.object({\n\tname: z.string(),\n\tversion: z.string()\n}).passthrough();\nvar BaseParamsSchema = z.object({ _meta: z.optional(z.object({}).passthrough()) }).passthrough();\nvar ResultSchema = BaseParamsSchema;\nvar RequestSchema = z.object({\n\tmethod: z.string(),\n\tparams: z.optional(BaseParamsSchema)\n});\nvar ServerCapabilitiesSchema = z.object({\n\texperimental: z.optional(z.object({}).passthrough()),\n\tlogging: z.optional(z.object({}).passthrough()),\n\tprompts: z.optional(z.object({ listChanged: z.optional(z.boolean()) }).passthrough()),\n\tresources: z.optional(z.object({\n\t\tsubscribe: z.optional(z.boolean()),\n\t\tlistChanged: z.optional(z.boolean())\n\t}).passthrough()),\n\ttools: z.optional(z.object({ listChanged: z.optional(z.boolean()) }).passthrough())\n}).passthrough();\nvar InitializeResultSchema = ResultSchema.extend({\n\tprotocolVersion: z.string(),\n\tcapabilities: ServerCapabilitiesSchema,\n\tserverInfo: ClientOrServerImplementationSchema,\n\tinstructions: z.optional(z.string())\n});\nvar PaginatedResultSchema = ResultSchema.extend({ nextCursor: z.optional(z.string()) });\nvar ToolSchema = z.object({\n\tname: z.string(),\n\tdescription: z.optional(z.string()),\n\tinputSchema: z.object({\n\t\ttype: z.literal(\"object\"),\n\t\tproperties: z.optional(z.object({}).passthrough())\n\t}).passthrough()\n}).passthrough();\nvar ListToolsResultSchema = PaginatedResultSchema.extend({ tools: z.array(ToolSchema) });\nvar TextContentSchema = z.object({\n\ttype: z.literal(\"text\"),\n\ttext: z.string()\n}).passthrough();\nvar ImageContentSchema = z.object({\n\ttype: z.literal(\"image\"),\n\tdata: z.string().base64(),\n\tmimeType: z.string()\n}).passthrough();\nvar ResourceContentsSchema = z.object({\n\t/**\n\t* The URI of this resource.\n\t*/\n\turi: z.string(),\n\t/**\n\t* The MIME type of this resource, if known.\n\t*/\n\tmimeType: z.optional(z.string())\n}).passthrough();\nvar TextResourceContentsSchema = ResourceContentsSchema.extend({ text: z.string() });\nvar BlobResourceContentsSchema = ResourceContentsSchema.extend({ blob: z.string().base64() });\nvar EmbeddedResourceSchema = z.object({\n\ttype: z.literal(\"resource\"),\n\tresource: z.union([TextResourceContentsSchema, BlobResourceContentsSchema])\n}).passthrough();\nvar CallToolResultSchema = ResultSchema.extend({\n\tcontent: z.array(z.union([\n\t\tTextContentSchema,\n\t\tImageContentSchema,\n\t\tEmbeddedResourceSchema\n\t])),\n\tisError: z.boolean().default(false).optional()\n}).or(ResultSchema.extend({ toolResult: z.unknown() }));\nvar JSONRPC_VERSION = \"2.0\";\nvar JSONRPCRequestSchema = z.object({\n\tjsonrpc: z.literal(JSONRPC_VERSION),\n\tid: z.union([z.string(), z.number().int()])\n}).merge(RequestSchema).strict();\nvar JSONRPCResponseSchema = z.object({\n\tjsonrpc: z.literal(JSONRPC_VERSION),\n\tid: z.union([z.string(), z.number().int()]),\n\tresult: ResultSchema\n}).strict();\nvar JSONRPCErrorSchema = z.object({\n\tjsonrpc: z.literal(JSONRPC_VERSION),\n\tid: z.union([z.string(), z.number().int()]),\n\terror: z.object({\n\t\tcode: z.number().int(),\n\t\tmessage: z.string(),\n\t\tdata: z.optional(z.unknown())\n\t})\n}).strict();\nvar JSONRPCNotificationSchema = z.object({ jsonrpc: z.literal(JSONRPC_VERSION) }).merge(z.object({\n\tmethod: z.string(),\n\tparams: z.optional(BaseParamsSchema)\n})).strict();\nvar JSONRPCMessageSchema = z.union([\n\tJSONRPCRequestSchema,\n\tJSONRPCNotificationSchema,\n\tJSONRPCResponseSchema,\n\tJSONRPCErrorSchema\n]);\nvar SseMCPTransport = class {\n\tconstructor({ url, headers }) {\n\t\tthis.connected = false;\n\t\tthis.url = new URL(url);\n\t\tthis.headers = headers;\n\t}\n\tasync start() {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (this.connected) return resolve();\n\t\t\tthis.abortController = new AbortController();\n\t\t\tconst establishConnection = async () => {\n\t\t\t\tvar _a17, _b, _c;\n\t\t\t\ttry {\n\t\t\t\t\tconst headers = new Headers(this.headers);\n\t\t\t\t\theaders.set(\"Accept\", \"text/event-stream\");\n\t\t\t\t\tconst response = await fetch(this.url.href, {\n\t\t\t\t\t\theaders,\n\t\t\t\t\t\tsignal: (_a17 = this.abortController) == null ? void 0 : _a17.signal\n\t\t\t\t\t});\n\t\t\t\t\tif (!response.ok || !response.body) {\n\t\t\t\t\t\tconst error = new MCPClientError({ message: `MCP SSE Transport Error: ${response.status} ${response.statusText}` });\n\t\t\t\t\t\t(_b = this.onerror) == null || _b.call(this, error);\n\t\t\t\t\t\treturn reject(error);\n\t\t\t\t\t}\n\t\t\t\t\tconst reader = response.body.pipeThrough(new TextDecoderStream()).pipeThrough(createEventSourceParserStream()).getReader();\n\t\t\t\t\tconst processEvents = async () => {\n\t\t\t\t\t\tvar _a18, _b2, _c2;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\twhile (true) {\n\t\t\t\t\t\t\t\tconst { done, value } = await reader.read();\n\t\t\t\t\t\t\t\tif (done) {\n\t\t\t\t\t\t\t\t\tif (this.connected) {\n\t\t\t\t\t\t\t\t\t\tthis.connected = false;\n\t\t\t\t\t\t\t\t\t\tthrow new MCPClientError({ message: \"MCP SSE Transport Error: Connection closed unexpectedly\" });\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst { event, data } = value;\n\t\t\t\t\t\t\t\tif (event === \"endpoint\") {\n\t\t\t\t\t\t\t\t\tthis.endpoint = new URL(data, this.url);\n\t\t\t\t\t\t\t\t\tif (this.endpoint.origin !== this.url.origin) throw new MCPClientError({ message: `MCP SSE Transport Error: Endpoint origin does not match connection origin: ${this.endpoint.origin}` });\n\t\t\t\t\t\t\t\t\tthis.connected = true;\n\t\t\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\t\t} else if (event === \"message\") try {\n\t\t\t\t\t\t\t\t\tconst message = JSONRPCMessageSchema.parse(JSON.parse(data));\n\t\t\t\t\t\t\t\t\t(_a18 = this.onmessage) == null || _a18.call(this, message);\n\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\tconst e = new MCPClientError({\n\t\t\t\t\t\t\t\t\t\tmessage: \"MCP SSE Transport Error: Failed to parse message\",\n\t\t\t\t\t\t\t\t\t\tcause: error\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t(_b2 = this.onerror) == null || _b2.call(this, e);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tif (error instanceof Error && error.name === \"AbortError\") return;\n\t\t\t\t\t\t\t(_c2 = this.onerror) == null || _c2.call(this, error);\n\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tthis.sseConnection = { close: () => reader.cancel() };\n\t\t\t\t\tprocessEvents();\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (error instanceof Error && error.name === \"AbortError\") return;\n\t\t\t\t\t(_c = this.onerror) == null || _c.call(this, error);\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\t\t\t};\n\t\t\testablishConnection();\n\t\t});\n\t}\n\tasync close() {\n\t\tvar _a17, _b, _c;\n\t\tthis.connected = false;\n\t\t(_a17 = this.sseConnection) == null || _a17.close();\n\t\t(_b = this.abortController) == null || _b.abort();\n\t\t(_c = this.onclose) == null || _c.call(this);\n\t}\n\tasync send(message) {\n\t\tvar _a17, _b, _c;\n\t\tif (!this.endpoint || !this.connected) throw new MCPClientError({ message: \"MCP SSE Transport Error: Not connected\" });\n\t\ttry {\n\t\t\tconst headers = new Headers(this.headers);\n\t\t\theaders.set(\"Content-Type\", \"application/json\");\n\t\t\tconst init = {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders,\n\t\t\t\tbody: JSON.stringify(message),\n\t\t\t\tsignal: (_a17 = this.abortController) == null ? void 0 : _a17.signal\n\t\t\t};\n\t\t\tconst response = await fetch(this.endpoint, init);\n\t\t\tif (!response.ok) {\n\t\t\t\tconst text2 = await response.text().catch(() => null);\n\t\t\t\tconst error = new MCPClientError({ message: `MCP SSE Transport Error: POSTing to endpoint (HTTP ${response.status}): ${text2}` });\n\t\t\t\t(_b = this.onerror) == null || _b.call(this, error);\n\t\t\t\treturn;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\t(_c = this.onerror) == null || _c.call(this, error);\n\t\t\treturn;\n\t\t}\n\t}\n};\nfunction createMcpTransport(config) {\n\tif (config.type !== \"sse\") throw new MCPClientError({ message: \"Unsupported or invalid transport configuration. If you are using a custom transport, make sure it implements the MCPTransport interface.\" });\n\treturn new SseMCPTransport(config);\n}\nfunction isCustomMcpTransport(transport) {\n\treturn \"start\" in transport && typeof transport.start === \"function\" && \"send\" in transport && typeof transport.send === \"function\" && \"close\" in transport && typeof transport.close === \"function\";\n}\nvar CLIENT_VERSION = \"1.0.0\";\nasync function createMCPClient(config) {\n\tconst client = new MCPClient(config);\n\tawait client.init();\n\treturn client;\n}\nvar MCPClient = class {\n\tconstructor({ transport: transportConfig, name: name17 = \"ai-sdk-mcp-client\", onUncaughtError }) {\n\t\tthis.requestMessageId = 0;\n\t\tthis.responseHandlers = /* @__PURE__ */ new Map();\n\t\tthis.serverCapabilities = {};\n\t\tthis.isClosed = true;\n\t\tthis.onUncaughtError = onUncaughtError;\n\t\tif (isCustomMcpTransport(transportConfig)) this.transport = transportConfig;\n\t\telse this.transport = createMcpTransport(transportConfig);\n\t\tthis.transport.onclose = () => this.onClose();\n\t\tthis.transport.onerror = (error) => this.onError(error);\n\t\tthis.transport.onmessage = (message) => {\n\t\t\tif (\"method\" in message) {\n\t\t\t\tthis.onError(new MCPClientError({ message: \"Unsupported message type\" }));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.onResponse(message);\n\t\t};\n\t\tthis.clientInfo = {\n\t\t\tname: name17,\n\t\t\tversion: CLIENT_VERSION\n\t\t};\n\t}\n\tasync init() {\n\t\ttry {\n\t\t\tawait this.transport.start();\n\t\t\tthis.isClosed = false;\n\t\t\tconst result = await this.request({\n\t\t\t\trequest: {\n\t\t\t\t\tmethod: \"initialize\",\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tprotocolVersion: LATEST_PROTOCOL_VERSION,\n\t\t\t\t\t\tcapabilities: {},\n\t\t\t\t\t\tclientInfo: this.clientInfo\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tresultSchema: InitializeResultSchema\n\t\t\t});\n\t\t\tif (result === void 0) throw new MCPClientError({ message: \"Server sent invalid initialize result\" });\n\t\t\tif (!SUPPORTED_PROTOCOL_VERSIONS.includes(result.protocolVersion)) throw new MCPClientError({ message: `Server's protocol version is not supported: ${result.protocolVersion}` });\n\t\t\tthis.serverCapabilities = result.capabilities;\n\t\t\tawait this.notification({ method: \"notifications/initialized\" });\n\t\t\treturn this;\n\t\t} catch (error) {\n\t\t\tawait this.close();\n\t\t\tthrow error;\n\t\t}\n\t}\n\tasync close() {\n\t\tvar _a17;\n\t\tif (this.isClosed) return;\n\t\tawait ((_a17 = this.transport) == null ? void 0 : _a17.close());\n\t\tthis.onClose();\n\t}\n\tassertCapability(method) {\n\t\tswitch (method) {\n\t\t\tcase \"initialize\": break;\n\t\t\tcase \"tools/list\":\n\t\t\tcase \"tools/call\":\n\t\t\t\tif (!this.serverCapabilities.tools) throw new MCPClientError({ message: `Server does not support tools` });\n\t\t\t\tbreak;\n\t\t\tdefault: throw new MCPClientError({ message: `Unsupported method: ${method}` });\n\t\t}\n\t}\n\tasync request({ request, resultSchema, options }) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (this.isClosed) return reject(new MCPClientError({ message: \"Attempted to send a request from a closed client\" }));\n\t\t\tthis.assertCapability(request.method);\n\t\t\tconst signal = options == null ? void 0 : options.signal;\n\t\t\tsignal?.throwIfAborted();\n\t\t\tconst messageId = this.requestMessageId++;\n\t\t\tconst jsonrpcRequest = {\n\t\t\t\t...request,\n\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\tid: messageId\n\t\t\t};\n\t\t\tconst cleanup = () => {\n\t\t\t\tthis.responseHandlers.delete(messageId);\n\t\t\t};\n\t\t\tthis.responseHandlers.set(messageId, (response) => {\n\t\t\t\tif (signal == null ? void 0 : signal.aborted) return reject(new MCPClientError({\n\t\t\t\t\tmessage: \"Request was aborted\",\n\t\t\t\t\tcause: signal.reason\n\t\t\t\t}));\n\t\t\t\tif (response instanceof Error) return reject(response);\n\t\t\t\ttry {\n\t\t\t\t\tresolve(resultSchema.parse(response.result));\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(new MCPClientError({\n\t\t\t\t\t\tmessage: \"Failed to parse server response\",\n\t\t\t\t\t\tcause: error\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.transport.send(jsonrpcRequest).catch((error) => {\n\t\t\t\tcleanup();\n\t\t\t\treject(error);\n\t\t\t});\n\t\t});\n\t}\n\tasync listTools({ params, options } = {}) {\n\t\ttry {\n\t\t\treturn this.request({\n\t\t\t\trequest: {\n\t\t\t\t\tmethod: \"tools/list\",\n\t\t\t\t\tparams\n\t\t\t\t},\n\t\t\t\tresultSchema: ListToolsResultSchema,\n\t\t\t\toptions\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t}\n\t}\n\tasync callTool({ name: name17, args, options }) {\n\t\ttry {\n\t\t\treturn this.request({\n\t\t\t\trequest: {\n\t\t\t\t\tmethod: \"tools/call\",\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tname: name17,\n\t\t\t\t\t\targuments: args\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tresultSchema: CallToolResultSchema,\n\t\t\t\toptions: { signal: options == null ? void 0 : options.abortSignal }\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t}\n\t}\n\tasync notification(notification) {\n\t\tconst jsonrpcNotification = {\n\t\t\t...notification,\n\t\t\tjsonrpc: \"2.0\"\n\t\t};\n\t\tawait this.transport.send(jsonrpcNotification);\n\t}\n\t/**\n\t* Returns a set of AI SDK tools from the MCP server\n\t* @returns A record of tool names to their implementations\n\t*/\n\tasync tools({ schemas = \"automatic\" } = {}) {\n\t\tvar _a17;\n\t\tconst tools = {};\n\t\ttry {\n\t\t\tconst listToolsResult = await this.listTools();\n\t\t\tfor (const { name: name17, description, inputSchema } of listToolsResult.tools) {\n\t\t\t\tif (schemas !== \"automatic\" && !(name17 in schemas)) continue;\n\t\t\t\tconst parameters = schemas === \"automatic\" ? jsonSchema({\n\t\t\t\t\t...inputSchema,\n\t\t\t\t\tproperties: (_a17 = inputSchema.properties) != null ? _a17 : {},\n\t\t\t\t\tadditionalProperties: false\n\t\t\t\t}) : schemas[name17].parameters;\n\t\t\t\tconst self = this;\n\t\t\t\ttools[name17] = tool({\n\t\t\t\t\tdescription,\n\t\t\t\t\tparameters,\n\t\t\t\t\texecute: async (args, options) => {\n\t\t\t\t\t\tvar _a18;\n\t\t\t\t\t\t(_a18 = options == null ? void 0 : options.abortSignal) == null || _a18.throwIfAborted();\n\t\t\t\t\t\treturn self.callTool({\n\t\t\t\t\t\t\tname: name17,\n\t\t\t\t\t\t\targs,\n\t\t\t\t\t\t\toptions\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn tools;\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t}\n\t}\n\tonClose() {\n\t\tif (this.isClosed) return;\n\t\tthis.isClosed = true;\n\t\tconst error = new MCPClientError({ message: \"Connection closed\" });\n\t\tfor (const handler of this.responseHandlers.values()) handler(error);\n\t\tthis.responseHandlers.clear();\n\t}\n\tonError(error) {\n\t\tif (this.onUncaughtError) this.onUncaughtError(error);\n\t}\n\tonResponse(response) {\n\t\tconst messageId = Number(response.id);\n\t\tconst handler = this.responseHandlers.get(messageId);\n\t\tif (handler === void 0) throw new MCPClientError({ message: `Protocol error: Received a response for an unknown message ID: ${JSON.stringify(response)}` });\n\t\tthis.responseHandlers.delete(messageId);\n\t\thandler(\"result\" in response ? response : new MCPClientError({\n\t\t\tmessage: response.error.message,\n\t\t\tcause: response.error\n\t\t}));\n\t}\n};\nfunction cosineSimilarity(vector1, vector2, options) {\n\tif (vector1.length !== vector2.length) throw new InvalidArgumentError({\n\t\tparameter: \"vector1,vector2\",\n\t\tvalue: {\n\t\t\tvector1Length: vector1.length,\n\t\t\tvector2Length: vector2.length\n\t\t},\n\t\tmessage: `Vectors must have the same length`\n\t});\n\tconst n = vector1.length;\n\tif (n === 0) {\n\t\tif (options == null ? void 0 : options.throwErrorForEmptyVectors) throw new InvalidArgumentError({\n\t\t\tparameter: \"vector1\",\n\t\t\tvalue: vector1,\n\t\t\tmessage: \"Vectors cannot be empty\"\n\t\t});\n\t\treturn 0;\n\t}\n\tlet magnitudeSquared1 = 0;\n\tlet magnitudeSquared2 = 0;\n\tlet dotProduct = 0;\n\tfor (let i = 0; i < n; i++) {\n\t\tconst value1 = vector1[i];\n\t\tconst value2 = vector2[i];\n\t\tmagnitudeSquared1 += value1 * value1;\n\t\tmagnitudeSquared2 += value2 * value2;\n\t\tdotProduct += value1 * value2;\n\t}\n\treturn magnitudeSquared1 === 0 || magnitudeSquared2 === 0 ? 0 : dotProduct / (Math.sqrt(magnitudeSquared1) * Math.sqrt(magnitudeSquared2));\n}\nfunction simulateReadableStream({ chunks, initialDelayInMs = 0, chunkDelayInMs = 0, _internal }) {\n\tvar _a17;\n\tconst delay2 = (_a17 = _internal == null ? void 0 : _internal.delay) != null ? _a17 : delay;\n\tlet index = 0;\n\treturn new ReadableStream({ async pull(controller) {\n\t\tif (index < chunks.length) {\n\t\t\tawait delay2(index === 0 ? initialDelayInMs : chunkDelayInMs);\n\t\t\tcontroller.enqueue(chunks[index++]);\n\t\t} else controller.close();\n\t} });\n}\nfunction AssistantResponse({ threadId, messageId }, process2) {\n\tconst stream = new ReadableStream({\n\t\tasync start(controller) {\n\t\t\tvar _a17;\n\t\t\tconst textEncoder = new TextEncoder();\n\t\t\tconst sendMessage = (message) => {\n\t\t\t\tcontroller.enqueue(textEncoder.encode(formatAssistantStreamPart(\"assistant_message\", message)));\n\t\t\t};\n\t\t\tconst sendDataMessage = (message) => {\n\t\t\t\tcontroller.enqueue(textEncoder.encode(formatAssistantStreamPart(\"data_message\", message)));\n\t\t\t};\n\t\t\tconst sendError = (errorMessage) => {\n\t\t\t\tcontroller.enqueue(textEncoder.encode(formatAssistantStreamPart(\"error\", errorMessage)));\n\t\t\t};\n\t\t\tconst forwardStream = async (stream2) => {\n\t\t\t\tvar _a18, _b;\n\t\t\t\tlet result = void 0;\n\t\t\t\tfor await (const value of stream2) switch (value.event) {\n\t\t\t\t\tcase \"thread.message.created\":\n\t\t\t\t\t\tcontroller.enqueue(textEncoder.encode(formatAssistantStreamPart(\"assistant_message\", {\n\t\t\t\t\t\t\tid: value.data.id,\n\t\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\t\tcontent: [{\n\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\ttext: { value: \"\" }\n\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t})));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"thread.message.delta\": {\n\t\t\t\t\t\tconst content = (_a18 = value.data.delta.content) == null ? void 0 : _a18[0];\n\t\t\t\t\t\tif ((content == null ? void 0 : content.type) === \"text\" && ((_b = content.text) == null ? void 0 : _b.value) != null) controller.enqueue(textEncoder.encode(formatAssistantStreamPart(\"text\", content.text.value)));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase \"thread.run.completed\":\n\t\t\t\t\tcase \"thread.run.requires_action\":\n\t\t\t\t\t\tresult = value.data;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t};\n\t\t\tcontroller.enqueue(textEncoder.encode(formatAssistantStreamPart(\"assistant_control_data\", {\n\t\t\t\tthreadId,\n\t\t\t\tmessageId\n\t\t\t})));\n\t\t\ttry {\n\t\t\t\tawait process2({\n\t\t\t\t\tsendMessage,\n\t\t\t\t\tsendDataMessage,\n\t\t\t\t\tforwardStream\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tsendError((_a17 = error.message) != null ? _a17 : `${error}`);\n\t\t\t} finally {\n\t\t\t\tcontroller.close();\n\t\t\t}\n\t\t},\n\t\tpull(controller) {},\n\t\tcancel() {}\n\t});\n\treturn new Response(stream, {\n\t\tstatus: 200,\n\t\theaders: { \"Content-Type\": \"text/plain; charset=utf-8\" }\n\t});\n}\nvar langchain_adapter_exports = {};\n__export(langchain_adapter_exports, {\n\tmergeIntoDataStream: () => mergeIntoDataStream,\n\ttoDataStream: () => toDataStream,\n\ttoDataStreamResponse: () => toDataStreamResponse\n});\nfunction createCallbacksTransformer(callbacks = {}) {\n\tconst textEncoder = new TextEncoder();\n\tlet aggregatedResponse = \"\";\n\treturn new TransformStream({\n\t\tasync start() {\n\t\t\tif (callbacks.onStart) await callbacks.onStart();\n\t\t},\n\t\tasync transform(message, controller) {\n\t\t\tcontroller.enqueue(textEncoder.encode(message));\n\t\t\taggregatedResponse += message;\n\t\t\tif (callbacks.onToken) await callbacks.onToken(message);\n\t\t\tif (callbacks.onText && typeof message === \"string\") await callbacks.onText(message);\n\t\t},\n\t\tasync flush() {\n\t\t\tif (callbacks.onCompletion) await callbacks.onCompletion(aggregatedResponse);\n\t\t\tif (callbacks.onFinal) await callbacks.onFinal(aggregatedResponse);\n\t\t}\n\t});\n}\nfunction toDataStreamInternal(stream, callbacks) {\n\treturn stream.pipeThrough(new TransformStream({ transform: async (value, controller) => {\n\t\tvar _a17;\n\t\tif (typeof value === \"string\") {\n\t\t\tcontroller.enqueue(value);\n\t\t\treturn;\n\t\t}\n\t\tif (\"event\" in value) {\n\t\t\tif (value.event === \"on_chat_model_stream\") forwardAIMessageChunk((_a17 = value.data) == null ? void 0 : _a17.chunk, controller);\n\t\t\treturn;\n\t\t}\n\t\tforwardAIMessageChunk(value, controller);\n\t} })).pipeThrough(createCallbacksTransformer(callbacks)).pipeThrough(new TextDecoderStream()).pipeThrough(new TransformStream({ transform: async (chunk, controller) => {\n\t\tcontroller.enqueue(formatDataStreamPart(\"text\", chunk));\n\t} }));\n}\nfunction toDataStream(stream, callbacks) {\n\treturn toDataStreamInternal(stream, callbacks).pipeThrough(new TextEncoderStream());\n}\nfunction toDataStreamResponse(stream, options) {\n\tvar _a17;\n\tconst dataStream = toDataStreamInternal(stream, options == null ? void 0 : options.callbacks).pipeThrough(new TextEncoderStream());\n\tconst data = options == null ? void 0 : options.data;\n\tconst init = options == null ? void 0 : options.init;\n\tconst responseStream = data ? mergeStreams(data.stream, dataStream) : dataStream;\n\treturn new Response(responseStream, {\n\t\tstatus: (_a17 = init == null ? void 0 : init.status) != null ? _a17 : 200,\n\t\tstatusText: init == null ? void 0 : init.statusText,\n\t\theaders: prepareResponseHeaders(init == null ? void 0 : init.headers, {\n\t\t\tcontentType: \"text/plain; charset=utf-8\",\n\t\t\tdataStreamVersion: \"v1\"\n\t\t})\n\t});\n}\nfunction mergeIntoDataStream(stream, options) {\n\toptions.dataStream.merge(toDataStreamInternal(stream, options.callbacks));\n}\nfunction forwardAIMessageChunk(chunk, controller) {\n\tif (typeof chunk.content === \"string\") controller.enqueue(chunk.content);\n\telse {\n\t\tconst content = chunk.content;\n\t\tfor (const item of content) if (item.type === \"text\") controller.enqueue(item.text);\n\t}\n}\nvar llamaindex_adapter_exports = {};\n__export(llamaindex_adapter_exports, {\n\tmergeIntoDataStream: () => mergeIntoDataStream2,\n\ttoDataStream: () => toDataStream2,\n\ttoDataStreamResponse: () => toDataStreamResponse2\n});\nfunction toDataStreamInternal2(stream, callbacks) {\n\tconst trimStart = trimStartOfStream();\n\treturn convertAsyncIteratorToReadableStream(stream[Symbol.asyncIterator]()).pipeThrough(new TransformStream({ async transform(message, controller) {\n\t\tcontroller.enqueue(trimStart(message.delta));\n\t} })).pipeThrough(createCallbacksTransformer(callbacks)).pipeThrough(new TextDecoderStream()).pipeThrough(new TransformStream({ transform: async (chunk, controller) => {\n\t\tcontroller.enqueue(formatDataStreamPart(\"text\", chunk));\n\t} }));\n}\nfunction toDataStream2(stream, callbacks) {\n\treturn toDataStreamInternal2(stream, callbacks).pipeThrough(new TextEncoderStream());\n}\nfunction toDataStreamResponse2(stream, options = {}) {\n\tvar _a17;\n\tconst { init, data, callbacks } = options;\n\tconst dataStream = toDataStreamInternal2(stream, callbacks).pipeThrough(new TextEncoderStream());\n\tconst responseStream = data ? mergeStreams(data.stream, dataStream) : dataStream;\n\treturn new Response(responseStream, {\n\t\tstatus: (_a17 = init == null ? void 0 : init.status) != null ? _a17 : 200,\n\t\tstatusText: init == null ? void 0 : init.statusText,\n\t\theaders: prepareResponseHeaders(init == null ? void 0 : init.headers, {\n\t\t\tcontentType: \"text/plain; charset=utf-8\",\n\t\t\tdataStreamVersion: \"v1\"\n\t\t})\n\t});\n}\nfunction mergeIntoDataStream2(stream, options) {\n\toptions.dataStream.merge(toDataStreamInternal2(stream, options.callbacks));\n}\nfunction trimStartOfStream() {\n\tlet isStreamStart = true;\n\treturn (text2) => {\n\t\tif (isStreamStart) {\n\t\t\ttext2 = text2.trimStart();\n\t\t\tif (text2) isStreamStart = false;\n\t\t}\n\t\treturn text2;\n\t};\n}\nvar StreamData = class {\n\tconstructor() {\n\t\tthis.encoder = new TextEncoder();\n\t\tthis.controller = null;\n\t\tthis.isClosed = false;\n\t\tthis.warningTimeout = null;\n\t\tconst self = this;\n\t\tthis.stream = new ReadableStream({\n\t\t\tstart: async (controller) => {\n\t\t\t\tself.controller = controller;\n\t\t\t},\n\t\t\tpull: (controller) => {},\n\t\t\tcancel: (reason) => {\n\t\t\t\tthis.isClosed = true;\n\t\t\t}\n\t\t});\n\t}\n\tasync close() {\n\t\tif (this.isClosed) throw new Error(\"Data Stream has already been closed.\");\n\t\tif (!this.controller) throw new Error(\"Stream controller is not initialized.\");\n\t\tthis.controller.close();\n\t\tthis.isClosed = true;\n\t\tif (this.warningTimeout) clearTimeout(this.warningTimeout);\n\t}\n\tappend(value) {\n\t\tif (this.isClosed) throw new Error(\"Data Stream has already been closed.\");\n\t\tif (!this.controller) throw new Error(\"Stream controller is not initialized.\");\n\t\tthis.controller.enqueue(this.encoder.encode(formatDataStreamPart(\"data\", [value])));\n\t}\n\tappendMessageAnnotation(value) {\n\t\tif (this.isClosed) throw new Error(\"Data Stream has already been closed.\");\n\t\tif (!this.controller) throw new Error(\"Stream controller is not initialized.\");\n\t\tthis.controller.enqueue(this.encoder.encode(formatDataStreamPart(\"message_annotations\", [value])));\n\t}\n};\n//#endregion\nexport { AISDKError, APICallError, AssistantResponse, DownloadError, EmptyResponseBodyError, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidPromptError, InvalidResponseDataError, InvalidStreamPartError, InvalidToolArgumentsError, JSONParseError, langchain_adapter_exports as LangChainAdapter, llamaindex_adapter_exports as LlamaIndexAdapter, LoadAPIKeyError, MCPClientError, MessageConversionError, NoContentGeneratedError, NoImageGeneratedError, NoObjectGeneratedError, NoOutputSpecifiedError, NoSuchModelError, NoSuchProviderError, NoSuchToolError, output_exports as Output, RetryError, StreamData, ToolCallRepairError, ToolExecutionError, TypeValidationError, UnsupportedFunctionalityError, UnsupportedModelVersionError, appendClientMessage, appendResponseMessages, convertToCoreMessages, coreAssistantMessageSchema, coreMessageSchema, coreSystemMessageSchema, coreToolMessageSchema, coreUserMessageSchema, cosineSimilarity, createDataStream, createDataStreamResponse, createIdGenerator, createProviderRegistry, customProvider, defaultSettingsMiddleware, embed, embedMany, createMCPClient as experimental_createMCPClient, experimental_createProviderRegistry, experimental_customProvider, generateImage as experimental_generateImage, generateSpeech as experimental_generateSpeech, transcribe as experimental_transcribe, experimental_wrapLanguageModel, extractReasoningMiddleware, formatAssistantStreamPart, formatDataStreamPart, generateId, generateObject, generateText, jsonSchema, parseAssistantStreamPart, parseDataStreamPart, pipeDataStreamToResponse, processDataStream, processTextStream, simulateReadableStream, simulateStreamingMiddleware, smoothStream, streamObject, streamText, tool, wrapLanguageModel, zodSchema };\n\n//# sourceMappingURL=index.js.map","import { z } from 'zod';\nimport type { ZodSchema as ZodSchemaV3, ZodType as ZodTypeV3 } from 'zod/v3';\nimport type { ZodType as ZodSchemaV4, ZodType as ZodTypeV4 } from 'zod/v4';\nimport { convertJsonSchemaToZod } from 'zod-from-json-schema';\nimport { convertJsonSchemaToZod as convertJsonSchemaToZodV3 } from 'zod-from-json-schema-v3';\nimport type { Targets } from 'zod-to-json-schema';\nimport type { JSONSchema7, Schema } from './json-schema';\nimport { jsonSchema } from './json-schema';\nimport type { PublicSchema } from './schema';\nimport { isStandardSchemaWithJSON, standardSchemaToJSONSchema, toStandardSchema } from './schema';\nimport type { SchemaCompatLayer } from './schema-compatibility';\nimport { zodToJsonSchema } from './zod-to-json';\n\ntype ZodSchema = ZodSchemaV3 | ZodSchemaV4;\ntype ZodType = ZodTypeV3 | ZodTypeV4;\n\n/**\n * Converts a Zod schema to an AI SDK Schema with validation support.\n *\n * This function mirrors the behavior of Vercel's AI SDK zod-schema utility but allows\n * customization of the JSON Schema target format.\n *\n * @param zodSchema - The Zod schema to convert\n * @param target - The JSON Schema target format (defaults to 'jsonSchema7')\n * @returns An AI SDK Schema object with built-in validation\n *\n * @example\n * ```typescript\n * import { z } from 'zod';\n * import { convertZodSchemaToAISDKSchema } from '@mastra/schema-compat';\n *\n * const userSchema = z.object({\n * name: z.string(),\n * age: z.number().min(0)\n * });\n *\n * const aiSchema = convertZodSchemaToAISDKSchema(userSchema);\n * ```\n */\n// mirrors https://github.com/vercel/ai/blob/main/packages/ui-utils/src/zod-schema.ts#L21 but with a custom target\nexport function convertZodSchemaToAISDKSchema(zodSchema: ZodSchema, target: Targets = 'jsonSchema7'): Schema<any> {\n const jsonSchemaToUse = zodToJsonSchema(zodSchema, target) as JSONSchema7;\n\n return jsonSchema(jsonSchemaToUse, {\n validate: value => {\n const result = zodSchema.safeParse(value);\n return result.success ? { success: true, value: result.data } : { success: false, error: result.error };\n },\n });\n}\n\n/**\n * Checks if a value is a Zod type by examining its properties and methods.\n *\n * @param value - The value to check\n * @returns True if the value is a Zod type, false otherwise\n * @internal\n */\nexport function isZodType(value: unknown): value is ZodType {\n // Check if it's a Zod schema by looking for common Zod properties and methods\n // _def is used in Zod v3, _zod is used in Zod v4\n return (\n typeof value === 'object' &&\n value !== null &&\n ('_def' in value || '_zod' in value) &&\n 'parse' in value &&\n typeof (value as any).parse === 'function' &&\n 'safeParse' in value &&\n typeof (value as any).safeParse === 'function'\n );\n}\n\n/**\n * Converts an AI SDK Schema or Zod schema to a Zod schema.\n *\n * If the input is already a Zod schema, it returns it unchanged.\n * If the input is an AI SDK Schema, it extracts the JSON schema and converts it to Zod.\n *\n * @param schema - The schema to convert (AI SDK Schema or Zod schema)\n * @returns A Zod schema equivalent of the input\n * @throws Error if the conversion fails\n *\n * @example\n * ```typescript\n * import { jsonSchema } from 'ai';\n * import { convertSchemaToZod } from '@mastra/schema-compat';\n *\n * const aiSchema = jsonSchema({\n * type: 'object',\n * properties: {\n * name: { type: 'string' }\n * }\n * });\n *\n * const zodSchema = convertSchemaToZod(aiSchema);\n * ```\n */\nexport function convertSchemaToZod(schema: Schema | ZodSchema | JSONSchema7): ZodType {\n if (isZodType(schema)) {\n return schema;\n } else {\n const jsonSchemaToConvert = 'jsonSchema' in schema ? schema.jsonSchema : schema;\n try {\n if ('toJSONSchema' in z) {\n // @ts-expect-error - type issue in convertJsonSchemaToZod\n return convertJsonSchemaToZod(jsonSchemaToConvert);\n } else {\n // @ts-expect-error - type issue in convertJsonSchemaToZodV3\n return convertJsonSchemaToZodV3(jsonSchemaToConvert);\n }\n } catch (e: unknown) {\n const errorMessage = `[Schema Builder] Failed to convert schema parameters to Zod. Original schema: ${JSON.stringify(jsonSchemaToConvert)}`;\n console.error(errorMessage, e);\n throw new Error(errorMessage + (e instanceof Error ? `\\n${e.stack}` : '\\nUnknown error object'));\n }\n }\n}\n\n/**\n * Processes a schema using provider compatibility layers and converts it to an AI SDK Schema.\n *\n * @param options - Configuration object for schema processing\n * @param options.schema - The schema to process (AI SDK Schema or Zod object schema)\n * @param options.compatLayers - Array of compatibility layers to try\n * @param options.mode - Must be 'aiSdkSchema'\n * @returns Processed schema as an AI SDK Schema\n */\nexport function applyCompatLayer(options: {\n schema: PublicSchema<any>;\n compatLayers: SchemaCompatLayer[];\n mode: 'aiSdkSchema';\n}): Schema;\n\n/**\n * Processes a schema using provider compatibility layers and converts it to a JSON Schema.\n *\n * @param options - Configuration object for schema processing\n * @param options.schema - The schema to process (AI SDK Schema or Zod object schema)\n * @param options.compatLayers - Array of compatibility layers to try\n * @param options.mode - Must be 'jsonSchema'\n * @returns Processed schema as a JSONSchema7\n */\nexport function applyCompatLayer(options: {\n schema: PublicSchema<any>;\n compatLayers: SchemaCompatLayer[];\n mode: 'jsonSchema';\n}): JSONSchema7;\n\n/**\n * Processes a schema using provider compatibility layers and converts it to the specified format.\n *\n * This function automatically applies the first matching compatibility layer from the provided\n * list based on the model configuration. If no compatibility applies, it falls back to\n * standard conversion.\n *\n * @param options - Configuration object for schema processing\n * @param options.schema - The schema to process (AI SDK Schema or Zod object schema)\n * @param options.compatLayers - Array of compatibility layers to try\n * @param options.mode - Output format: 'jsonSchema' for JSONSchema7 or 'aiSdkSchema' for AI SDK Schema\n * @returns Processed schema in the requested format\n *\n * @example\n * ```typescript\n * import { z } from 'zod';\n * import { applyCompatLayer, OpenAISchemaCompatLayer, AnthropicSchemaCompatLayer } from '@mastra/schema-compat';\n *\n * const schema = z.object({\n * query: z.string().email(),\n * limit: z.number().min(1).max(100)\n * });\n *\n * const compatLayers = [\n * new OpenAISchemaCompatLayer(model),\n * new AnthropicSchemaCompatLayer(model)\n * ];\n *\n * const result = applyCompatLayer({\n * schema,\n * compatLayers,\n * mode: 'aiSdkSchema'\n * });\n * ```\n */\nexport function applyCompatLayer({\n schema,\n compatLayers,\n mode,\n}: {\n schema: PublicSchema<any>;\n compatLayers: SchemaCompatLayer[];\n mode: 'jsonSchema' | 'aiSdkSchema';\n}): JSONSchema7 | Schema {\n if (mode === 'jsonSchema') {\n const standardSchema = toStandardSchema(schema);\n\n for (const compat of compatLayers) {\n if (compat.shouldApply()) {\n const compatSchema = compat.processToCompatSchema(standardSchema);\n\n return standardSchemaToJSONSchema(compatSchema);\n }\n }\n\n return standardSchemaToJSONSchema(standardSchema);\n } else {\n let zodSchema: ZodSchema;\n\n if (isZodType(schema)) {\n zodSchema = schema;\n } else {\n if (isStandardSchemaWithJSON(schema)) {\n throw new Error('StandardSchemaWithJSON is not supported for applyCompatLayer and aiSdkSchema mode');\n }\n\n // Convert non-zod schema to Zod\n // After ruling out ZodType and StandardSchemaWithJSON above, remaining PublicSchema\n // types are Schema (v4/v5/v6) and JSONSchema7, all handled by convertSchemaToZod\n zodSchema = convertSchemaToZod(schema as Schema | JSONSchema7);\n }\n\n for (const compat of compatLayers) {\n if (compat.shouldApply()) {\n return compat.processToAISDKSchema(zodSchema);\n }\n }\n\n return convertZodSchemaToAISDKSchema(zodSchema);\n }\n}\n","import {\n z,\n ZodOptional,\n ZodObject,\n ZodArray,\n ZodUnion,\n ZodString,\n ZodNumber,\n ZodDate,\n ZodDefault,\n ZodNull,\n ZodNullable,\n ZodIntersection,\n} from 'zod/v3';\nimport type { ZodTypeAny } from 'zod/v3';\nimport type { Targets } from 'zod-to-json-schema';\nimport type { JSONSchema7, Schema } from './json-schema';\nimport type { SchemaCompatLayer as ParentSchemaCompatLayer } from './schema-compatibility';\nimport type { ModelInformation } from './types';\nimport { convertZodSchemaToAISDKSchema } from './utils';\n\n/**\n * All supported string validation check types that can be processed or converted to descriptions.\n * @constant\n */\nexport const ALL_STRING_CHECKS = ['regex', 'emoji', 'email', 'url', 'uuid', 'cuid', 'min', 'max'] as const;\n\n/**\n * All supported number validation check types that can be processed or converted to descriptions.\n * @constant\n */\nexport const ALL_NUMBER_CHECKS = [\n 'min', // gte internally\n 'max', // lte internally\n 'multipleOf',\n] as const;\n\n/**\n * All supported array validation check types that can be processed or converted to descriptions.\n * @constant\n */\nexport const ALL_ARRAY_CHECKS = ['min', 'max', 'length'] as const;\n\nexport const isOptional = (v: ZodTypeAny): v is ZodOptional<any> => v instanceof ZodOptional;\nexport const isObj = (v: ZodTypeAny): v is ZodObject<any, any, any> => v instanceof ZodObject;\nexport const isNull = (v: ZodTypeAny): v is ZodNull => v instanceof ZodNull;\nexport const isNullable = (v: ZodTypeAny): v is ZodNullable<any> => v instanceof ZodNullable;\nexport const isArr = (v: ZodTypeAny): v is ZodArray<any, any> => v instanceof ZodArray;\nexport const isUnion = (v: ZodTypeAny): v is ZodUnion<[ZodTypeAny, ...ZodTypeAny[]]> => v instanceof ZodUnion;\nexport const isString = (v: ZodTypeAny): v is ZodString => v instanceof ZodString;\nexport const isNumber = (v: ZodTypeAny): v is ZodNumber => v instanceof ZodNumber;\nexport const isDate = (v: ZodTypeAny): v is ZodDate => v instanceof ZodDate;\nexport const isDefault = (v: ZodTypeAny): v is ZodDefault<any> => v instanceof ZodDefault;\nexport const isIntersection = (v: ZodTypeAny): v is ZodIntersection<any, any> => v instanceof ZodIntersection;\n\n/**\n * Zod types that are not supported by most AI model providers and should be avoided.\n * @constant\n */\nexport const UNSUPPORTED_ZOD_TYPES = ['ZodIntersection', 'ZodNever', 'ZodNull', 'ZodTuple', 'ZodUndefined'] as const;\n\n/**\n * Zod types that are generally supported by AI model providers.\n * @constant\n */\nexport const SUPPORTED_ZOD_TYPES = [\n 'ZodObject',\n 'ZodArray',\n 'ZodUnion',\n 'ZodString',\n 'ZodNumber',\n 'ZodDate',\n 'ZodAny',\n 'ZodDefault',\n 'ZodNullable',\n] as const;\n\n/**\n * All Zod types (both supported and unsupported).\n * @constant\n */\nexport const ALL_ZOD_TYPES = [...SUPPORTED_ZOD_TYPES, ...UNSUPPORTED_ZOD_TYPES] as const;\n\n/**\n * Type representing string validation checks.\n */\nexport type StringCheckType = (typeof ALL_STRING_CHECKS)[number];\n\n/**\n * Type representing number validation checks.\n */\nexport type NumberCheckType = (typeof ALL_NUMBER_CHECKS)[number];\n\n/**\n * Type representing array validation checks.\n */\nexport type ArrayCheckType = (typeof ALL_ARRAY_CHECKS)[number];\n\n/**\n * Type representing unsupported Zod schema types.\n */\nexport type UnsupportedZodType = (typeof UNSUPPORTED_ZOD_TYPES)[number];\n\n/**\n * Type representing supported Zod schema types.\n */\nexport type SupportedZodType = (typeof SUPPORTED_ZOD_TYPES)[number];\n\n/**\n * Type representing all Zod schema types (supported and unsupported).\n */\nexport type AllZodType = (typeof ALL_ZOD_TYPES)[number];\n\n/**\n * Utility type to extract the shape of a Zod object schema.\n */\nexport type ZodShape<T extends z.AnyZodObject> = T['shape'];\n\n/**\n * Utility type to extract the keys from a Zod object shape.\n */\nexport type ShapeKey<T extends z.AnyZodObject> = keyof ZodShape<T>;\n\n/**\n * Utility type to extract the value types from a Zod object shape.\n */\nexport type ShapeValue<T extends z.AnyZodObject> = ZodShape<T>[ShapeKey<T>];\n\n// Add constraint types at the top\n\ntype ConstraintHelperText = string[];\n\n/**\n * Abstract base class for creating schema compatibility layers for different AI model providers.\n *\n * This class provides a framework for transforming Zod schemas to work with specific AI model\n * provider requirements and limitations. Each provider may have different support levels for\n * JSON Schema features, validation constraints, and data types.\n *\n *\n * @example\n * ```typescript\n * import { SchemaCompatLayer } from '@mastra/schema-compat';\n * import type { LanguageModelV1 } from 'ai';\n *\n * class CustomProviderCompat extends SchemaCompatLayer {\n * constructor(model: ModelInformation) {\n * super(model);\n * }\n *\n * shouldApply(): boolean {\n * return this.getModel().provider === 'custom-provider';\n * }\n *\n * getSchemaTarget() {\n * return 'jsonSchema7';\n * }\n *\n * processZodType<T extends z.AnyZodObject>(value: z.ZodTypeAny): ShapeValue<T> {\n * // Custom processing logic for this provider\n * switch (value._def.typeName) {\n * case 'ZodString':\n * return this.defaultZodStringHandler(value, ['email', 'url']);\n * default:\n * return this.defaultUnsupportedZodTypeHandler(value);\n * }\n * }\n * }\n * ```\n */\nexport class SchemaCompatLayer {\n private model: ModelInformation;\n private parent: ParentSchemaCompatLayer;\n\n /**\n * Creates a new schema compatibility instance.\n *\n * @param model - The language model this compatibility layer applies to\n */\n constructor(model: ModelInformation, parent: ParentSchemaCompatLayer) {\n this.model = model;\n this.parent = parent;\n }\n\n /**\n * Gets the language model associated with this compatibility layer.\n *\n * @returns The language model instance\n */\n getModel(): ModelInformation {\n return this.model;\n }\n\n getUnsupportedZodTypes(): readonly string[] {\n return UNSUPPORTED_ZOD_TYPES;\n }\n\n /**\n * Type guard for optional Zod types\n */\n isOptional(v: ZodTypeAny): v is ZodOptional<any> {\n return v instanceof ZodOptional;\n }\n\n /**\n * Type guard for object Zod types\n */\n isObj(v: ZodTypeAny): v is ZodObject<any, any, any> {\n return v instanceof ZodObject;\n }\n\n /**\n * Type guard for null Zod types\n */\n isNull(v: ZodTypeAny): v is ZodNull {\n return v instanceof ZodNull;\n }\n\n /**\n * Type guard for nullable Zod types\n */\n isNullable(v: ZodTypeAny): v is ZodNullable<any> {\n return v instanceof ZodNullable;\n }\n\n /**\n * Type guard for array Zod types\n */\n isArr(v: ZodTypeAny): v is ZodArray<any, any> {\n return v instanceof ZodArray;\n }\n\n /**\n * Type guard for union Zod types\n */\n isUnion(v: ZodTypeAny): v is ZodUnion<[ZodTypeAny, ...ZodTypeAny[]]> {\n return v instanceof ZodUnion;\n }\n\n /**\n * Type guard for string Zod types\n */\n isString(v: ZodTypeAny): v is ZodString {\n return v instanceof ZodString;\n }\n\n /**\n * Type guard for number Zod types\n */\n isNumber(v: ZodTypeAny): v is ZodNumber {\n return v instanceof ZodNumber;\n }\n\n /**\n * Type guard for date Zod types\n */\n isDate(v: ZodTypeAny): v is ZodDate {\n return v instanceof ZodDate;\n }\n\n /**\n * Type guard for default Zod types\n */\n isDefault(v: ZodTypeAny): v is ZodDefault<any> {\n return v instanceof ZodDefault;\n }\n\n /**\n * Type guard for intersection Zod types\n */\n isIntersection(v: ZodTypeAny): v is ZodIntersection<any, any> {\n return v instanceof ZodIntersection;\n }\n\n /**\n * Determines whether this compatibility layer should be applied for the current model.\n *\n * @returns True if this compatibility layer should be used, false otherwise\n * @abstract\n */\n shouldApply(): boolean {\n return this.parent.shouldApply();\n }\n\n /**\n * Returns the JSON Schema target format for this provider.\n *\n * @returns The schema target format, or undefined to use the default 'jsonSchema7'\n * @abstract\n */\n getSchemaTarget(): Targets | undefined {\n return this.parent.getSchemaTarget();\n }\n\n /**\n * Processes a specific Zod type according to the provider's requirements.\n *\n * @param value - The Zod type to process\n * @returns The processed Zod type\n * @abstract\n */\n processZodType(value: ZodTypeAny): ZodTypeAny {\n return this.parent.processZodType(value) as ZodTypeAny;\n }\n\n /**\n * Default handler for Zod object types. Recursively processes all properties in the object.\n *\n * @param value - The Zod object to process\n * @returns The processed Zod object\n */\n public defaultZodObjectHandler(\n value: ZodObject<any, any, any>,\n options: { passthrough?: boolean } = { passthrough: true },\n ): ZodObject<any, any, any> {\n const processedShape = Object.entries(value.shape).reduce<Record<string, ZodTypeAny>>((acc, [key, propValue]) => {\n acc[key] = this.processZodType(propValue as ZodTypeAny);\n return acc;\n }, {});\n\n let result: ZodObject<any, any, any> = z.object(processedShape);\n\n if (value._def.unknownKeys === 'strict') {\n result = result.strict();\n }\n if (value._def.catchall && !(value._def.catchall instanceof z.ZodNever)) {\n result = result.catchall(value._def.catchall);\n }\n\n if (value.description) {\n result = result.describe(value.description);\n }\n\n if (options.passthrough && value._def.unknownKeys === 'passthrough') {\n result = result.passthrough();\n }\n\n return result;\n }\n\n /**\n * Merges validation constraints into a parameter description.\n *\n * This helper method converts validation constraints that may not be supported\n * by a provider into human-readable descriptions.\n *\n * @param description - The existing parameter description\n * @param constraints - The validation constraints to merge\n * @returns The updated description with constraints, or undefined if no constraints\n */\n public mergeParameterDescription(\n description: string | undefined,\n constraints: ConstraintHelperText,\n ): string | undefined {\n if (constraints.length > 0) {\n return (description ? description + '\\n' : '') + `constraints: ${constraints.join(`, `)}`;\n } else {\n return description;\n }\n }\n\n /**\n * Default handler for unsupported Zod types. Throws an error for specified unsupported types.\n *\n * @param value - The Zod type to check\n * @param throwOnTypes - Array of type names to throw errors for\n * @returns The original value if not in the throw list\n * @throws Error if the type is in the unsupported list\n */\n public defaultUnsupportedZodTypeHandler<T extends z.AnyZodObject>(\n value: z.ZodTypeAny,\n throwOnTypes: readonly UnsupportedZodType[] = UNSUPPORTED_ZOD_TYPES,\n ): ShapeValue<T> {\n if (throwOnTypes.includes(value._def?.typeName as UnsupportedZodType)) {\n throw new Error(`${this.model.modelId} does not support zod type: ${value._def?.typeName}`);\n }\n return value as ShapeValue<T>;\n }\n\n /**\n * Default handler for Zod array types. Processes array constraints according to provider support.\n *\n * @param value - The Zod array to process\n * @param handleChecks - Array constraints to convert to descriptions vs keep as validation\n * @returns The processed Zod array\n */\n public defaultZodArrayHandler(\n value: ZodArray<any, any>,\n handleChecks: readonly ArrayCheckType[] = ALL_ARRAY_CHECKS,\n ): ZodArray<any, any> {\n const zodArrayDef = value._def;\n const processedType = this.processZodType(zodArrayDef.type);\n\n let result = z.array(processedType);\n\n const constraints: ConstraintHelperText = [];\n\n if (zodArrayDef.minLength?.value !== undefined) {\n if (handleChecks.includes('min')) {\n constraints.push(`minimum length ${zodArrayDef.minLength.value}`);\n } else {\n result = result.min(zodArrayDef.minLength.value);\n }\n }\n\n if (zodArrayDef.maxLength?.value !== undefined) {\n if (handleChecks.includes('max')) {\n constraints.push(`maximum length ${zodArrayDef.maxLength.value}`);\n } else {\n result = result.max(zodArrayDef.maxLength.value);\n }\n }\n\n if (zodArrayDef.exactLength?.value !== undefined) {\n if (handleChecks.includes('length')) {\n constraints.push(`exact length ${zodArrayDef.exactLength.value}`);\n } else {\n result = result.length(zodArrayDef.exactLength.value);\n }\n }\n\n const description = this.mergeParameterDescription(value.description, constraints);\n if (description) {\n result = result.describe(description);\n }\n return result;\n }\n\n /**\n * Default handler for Zod union types. Processes all union options.\n *\n * @param value - The Zod union to process\n * @returns The processed Zod union\n * @throws Error if union has fewer than 2 options\n */\n public defaultZodUnionHandler(value: ZodUnion<[ZodTypeAny, ...ZodTypeAny[]]>): ZodTypeAny {\n const processedOptions = value._def.options.map((option: ZodTypeAny) => this.processZodType(option));\n if (processedOptions.length < 2) throw new Error('Union must have at least 2 options');\n let result = z.union(processedOptions as [ZodTypeAny, ZodTypeAny, ...ZodTypeAny[]]);\n if (value.description) {\n result = result.describe(value.description);\n }\n return result;\n }\n\n /**\n * Default handler for Zod string types. Processes string validation constraints.\n *\n * @param value - The Zod string to process\n * @param handleChecks - String constraints to convert to descriptions vs keep as validation\n * @returns The processed Zod string\n */\n public defaultZodStringHandler(\n value: ZodString,\n handleChecks: readonly StringCheckType[] = ALL_STRING_CHECKS,\n ): ZodString {\n const constraints: ConstraintHelperText = [];\n const checks = value._def.checks || [];\n type ZodStringCheck = (typeof checks)[number];\n const newChecks: ZodStringCheck[] = [];\n for (const check of checks) {\n if ('kind' in check) {\n if (handleChecks.includes(check.kind as StringCheckType)) {\n switch (check.kind) {\n case 'regex': {\n constraints.push(`input must match this regex ${check.regex.source}`);\n break;\n }\n case 'emoji':\n case 'email':\n case 'url':\n case 'uuid':\n case 'cuid': {\n constraints.push(`a valid ${check.kind}`);\n break;\n }\n case 'min':\n case 'max': {\n constraints.push(`${check.kind}imum length ${check.value}`);\n break;\n }\n }\n } else {\n newChecks.push(check);\n }\n }\n }\n let result = z.string();\n for (const check of newChecks) {\n result = result._addCheck(check);\n }\n const description = this.mergeParameterDescription(value.description, constraints);\n if (description) {\n result = result.describe(description);\n }\n return result;\n }\n\n /**\n * Default handler for Zod number types. Processes number validation constraints.\n *\n * @param value - The Zod number to process\n * @param handleChecks - Number constraints to convert to descriptions vs keep as validation\n * @returns The processed Zod number\n */\n public defaultZodNumberHandler(\n value: ZodNumber,\n handleChecks: readonly NumberCheckType[] = ALL_NUMBER_CHECKS,\n ): ZodNumber {\n const constraints: ConstraintHelperText = [];\n const checks = value._def.checks || [];\n type ZodNumberCheck = (typeof checks)[number];\n const newChecks: ZodNumberCheck[] = [];\n for (const check of checks) {\n if ('kind' in check) {\n if (handleChecks.includes(check.kind as NumberCheckType)) {\n switch (check.kind) {\n case 'min':\n if (check.inclusive) {\n constraints.push(`greater than or equal to ${check.value}`);\n } else {\n constraints.push(`greater than ${check.value}`);\n }\n break;\n case 'max':\n if (check.inclusive) {\n constraints.push(`lower than or equal to ${check.value}`);\n } else {\n constraints.push(`lower than ${check.value}`);\n }\n break;\n case 'multipleOf': {\n constraints.push(`multiple of ${check.value}`);\n break;\n }\n }\n } else {\n newChecks.push(check);\n }\n }\n }\n let result = z.number();\n for (const check of newChecks) {\n switch (check.kind) {\n case 'int':\n result = result.int();\n break;\n case 'finite':\n result = result.finite();\n break;\n default:\n result = result._addCheck(check);\n }\n }\n const description = this.mergeParameterDescription(value.description, constraints);\n if (description) {\n result = result.describe(description);\n }\n return result;\n }\n\n /**\n * Default handler for Zod date types. Converts dates to ISO strings with constraint descriptions.\n *\n * @param value - The Zod date to process\n * @returns A Zod string schema representing the date in ISO format\n */\n public defaultZodDateHandler(value: ZodDate): ZodString {\n const constraints: ConstraintHelperText = [];\n const checks = value._def.checks || [];\n type ZodDateCheck = (typeof checks)[number];\n const newChecks: ZodDateCheck[] = [];\n for (const check of checks) {\n if ('kind' in check) {\n switch (check.kind) {\n case 'min':\n const minDate = new Date(check.value);\n if (!isNaN(minDate.getTime())) {\n constraints.push(`Date must be newer than ${minDate.toISOString()} (ISO)`);\n }\n break;\n case 'max':\n const maxDate = new Date(check.value);\n if (!isNaN(maxDate.getTime())) {\n constraints.push(`Date must be older than ${maxDate.toISOString()} (ISO)`);\n }\n break;\n default:\n newChecks.push(check);\n }\n }\n }\n constraints.push(`Date format is date-time`);\n let result = z.string().describe('date-time');\n const description = this.mergeParameterDescription(value.description, constraints);\n if (description) {\n result = result.describe(description);\n }\n return result;\n }\n\n /**\n * Default handler for Zod optional types. Processes the inner type and maintains optionality.\n *\n * @param value - The Zod optional to process\n * @param handleTypes - Types that should be processed vs passed through\n * @returns The processed Zod optional\n */\n public defaultZodOptionalHandler(\n value: ZodOptional<any>,\n handleTypes: readonly AllZodType[] = SUPPORTED_ZOD_TYPES,\n ): ZodTypeAny {\n if (handleTypes.includes(value._def.innerType._def.typeName as AllZodType)) {\n return this.processZodType(value._def.innerType).optional();\n } else {\n return value;\n }\n }\n\n /**\n * Default handler for Zod nullable types. Processes the inner type and maintains nullability.\n *\n * @param value - The Zod nullable to process\n * @param handleTypes - Types that should be processed vs passed through\n * @returns The processed Zod nullable\n */\n public defaultZodNullableHandler(\n value: ZodNullable<any>,\n handleTypes: readonly AllZodType[] = SUPPORTED_ZOD_TYPES,\n ): ZodTypeAny {\n if (handleTypes.includes(value._def.innerType._def.typeName as AllZodType)) {\n return this.processZodType(value._def.innerType).nullable();\n } else {\n return value;\n }\n }\n\n /**\n * Recursively collects leaf types from a ZodIntersection tree.\n */\n private collectIntersectionLeaves(value: ZodTypeAny): ZodTypeAny[] {\n if (value instanceof ZodIntersection) {\n return [...this.collectIntersectionLeaves(value._def.left), ...this.collectIntersectionLeaves(value._def.right)];\n }\n return [value];\n }\n\n /**\n * Default handler for Zod intersection types.\n * Flattens the intersection tree and merges object shapes into a single z.object().\n * Falls back to z.any() for non-object intersections.\n */\n public defaultZodIntersectionHandler(value: ZodIntersection<any, any>): ZodTypeAny {\n const leaves = this.collectIntersectionLeaves(value);\n const processed = leaves.map(leaf => this.processZodType(leaf));\n\n if (processed.every(p => p instanceof ZodObject)) {\n const mergedShape: Record<string, ZodTypeAny> = {};\n for (const obj of processed as ZodObject<any, any, any>[]) {\n Object.assign(mergedShape, obj.shape);\n }\n let result: ZodTypeAny = z.object(mergedShape);\n if (value.description) {\n result = result.describe(value.description);\n }\n return result;\n }\n\n return z.any().describe(value.description || 'intersection type');\n }\n\n /**\n * Processes a Zod object schema and converts it to an AI SDK Schema.\n *\n * @param zodSchema - The Zod object schema to process\n * @returns An AI SDK Schema with provider-specific compatibility applied\n */\n public processToAISDKSchema(zodSchema: z.ZodSchema): Schema {\n const processedSchema = this.processZodType(zodSchema);\n\n return convertZodSchemaToAISDKSchema(processedSchema, this.getSchemaTarget());\n }\n\n /**\n * Processes a Zod object schema and converts it to a JSON Schema.\n *\n * @param zodSchema - The Zod object schema to process\n * @returns A JSONSchema7 object with provider-specific compatibility applied\n */\n public processToJSONSchema(zodSchema: z.ZodSchema): JSONSchema7 {\n return this.processToAISDKSchema(zodSchema).jsonSchema;\n }\n}\n","import {\n z,\n ZodOptional,\n ZodObject,\n ZodArray,\n ZodUnion,\n ZodString,\n ZodNumber,\n ZodDate,\n ZodDefault,\n ZodNull,\n ZodNullable,\n ZodIntersection,\n} from 'zod/v4';\nimport type { ZodAny, ZodType } from 'zod/v4';\nimport type { Targets } from 'zod-to-json-schema';\nimport type { JSONSchema7, Schema } from './json-schema';\nimport type { SchemaCompatLayer as ParentSchemaCompatLayer } from './schema-compatibility';\nimport type { ModelInformation } from './types';\nimport { convertZodSchemaToAISDKSchema } from './utils';\n\n/**\n * All supported string validation check types that can be processed or converted to descriptions.\n * @constant\n */\nexport const ALL_STRING_CHECKS = [\n 'regex',\n 'emoji',\n 'email',\n 'url',\n 'uuid',\n 'cuid',\n 'min_length',\n 'max_length',\n 'string_format',\n] as const;\n\n/**\n * All supported number validation check types that can be processed or converted to descriptions.\n * @constant\n */\nexport const ALL_NUMBER_CHECKS = ['greater_than', 'less_than', 'multiple_of'] as const;\n\n/**\n * All supported array validation check types that can be processed or converted to descriptions.\n * @constant\n */\nexport const ALL_ARRAY_CHECKS = ['min', 'max', 'length'] as const;\n\n/**\n * Zod types that are not supported by most AI model providers and should be avoided.\n * @constant\n */\nexport const UNSUPPORTED_ZOD_TYPES = ['ZodIntersection', 'ZodNever', 'ZodNull', 'ZodTuple', 'ZodUndefined'] as const;\n\n/**\n * Zod types that are generally supported by AI model providers.\n * @constant\n */\nexport const SUPPORTED_ZOD_TYPES = [\n 'ZodObject',\n 'ZodArray',\n 'ZodUnion',\n 'ZodString',\n 'ZodNumber',\n 'ZodDate',\n 'ZodAny',\n 'ZodDefault',\n 'ZodNullable',\n] as const;\n\n/**\n * All Zod types (both supported and unsupported).\n * @constant\n */\nexport const ALL_ZOD_TYPES = [...SUPPORTED_ZOD_TYPES, ...UNSUPPORTED_ZOD_TYPES] as const;\n\n/**\n * Type representing string validation checks.\n */\nexport type StringCheckType = (typeof ALL_STRING_CHECKS)[number];\n\n/**\n * Type representing number validation checks.\n */\nexport type NumberCheckType = (typeof ALL_NUMBER_CHECKS)[number];\n\n/**\n * Type representing array validation checks.\n */\nexport type ArrayCheckType = (typeof ALL_ARRAY_CHECKS)[number];\n\n/**\n * Type representing unsupported Zod schema types.\n */\nexport type UnsupportedZodType = (typeof UNSUPPORTED_ZOD_TYPES)[number];\n\n/**\n * Type representing supported Zod schema types.\n */\nexport type SupportedZodType = (typeof SUPPORTED_ZOD_TYPES)[number];\n\n/**\n * Type representing all Zod schema types (supported and unsupported).\n */\nexport type AllZodType = (typeof ALL_ZOD_TYPES)[number];\n\n/**\n * Utility type to extract the shape of a Zod object schema.\n */\nexport type ZodShape<T extends z.ZodObject<any, any>> = T['shape'];\n\n/**\n * Utility type to extract the keys from a Zod object shape.\n */\nexport type ShapeKey<T extends z.ZodObject<any, any>> = keyof ZodShape<T>;\n\n/**\n * Utility type to extract the value types from a Zod object shape.\n */\nexport type ShapeValue<T extends z.ZodObject<any, any>> = ZodShape<T>[ShapeKey<T>];\n\ntype ConstraintHelperText = string[];\n\n/**\n * Returns the v3-style type name (e.g. \"ZodString\") for a Zod v4 schema. Zod v4\n * stores the kind as a lowercase `type` (e.g. \"string\"), so this normalizes it\n * for comparison against the `*_ZOD_TYPES` lists, mirroring the dispatcher in\n * `schema-compatibility.ts`.\n */\nfunction zodV4TypeName(value: unknown): string {\n const v4Type = (value as { _zod?: { def?: { type?: string } } } | undefined)?._zod?.def?.type;\n return v4Type ? 'Zod' + v4Type.charAt(0).toUpperCase() + v4Type.slice(1) : '';\n}\n\n/**\n * Abstract base class for creating schema compatibility layers for different AI model providers.\n *\n * This class provides a framework for transforming Zod schemas to work with specific AI model\n * provider requirements and limitations. Each provider may have different support levels for\n * JSON Schema features, validation constraints, and data types.\n *\n *\n * @example\n * ```typescript\n * import { SchemaCompatLayer } from '@mastra/schema-compat';\n * import type { LanguageModelV1 } from 'ai';\n *\n * class CustomProviderCompat extends SchemaCompatLayer {\n * constructor(model: LanguageModelV1) {\n * super(model);\n * }\n *\n * shouldApply(): boolean {\n * return this.getModel().provider === 'custom-provider';\n * }\n *\n * getSchemaTarget() {\n * return 'jsonSchema7';\n * }\n *\n * processZodType<T extends z.AnyZodObject>(value: z.ZodAny): ShapeValue<T> {\n * // Custom processing logic for this provider\n * switch (value._def.typeName) {\n * case 'ZodString':\n * return this.defaultZodStringHandler(value, ['email', 'url']);\n * default:\n * return this.defaultUnsupportedZodTypeHandler(value);\n * }\n * }\n * }\n * ```\n */\nexport class SchemaCompatLayer {\n private model: ModelInformation;\n private parent: ParentSchemaCompatLayer;\n\n /**\n * Creates a new schema compatibility instance.\n *\n * @param model - The language model this compatibility layer applies to\n */\n constructor(model: ModelInformation, parent: ParentSchemaCompatLayer) {\n this.model = model;\n this.parent = parent;\n }\n\n /**\n * Gets the language model associated with this compatibility layer.\n *\n * @returns The language model instance\n */\n getModel(): ModelInformation {\n return this.model;\n }\n\n getUnsupportedZodTypes(): readonly string[] {\n return UNSUPPORTED_ZOD_TYPES;\n }\n\n /**\n * Type guard for optional Zod types\n */\n isOptional(v: ZodAny | ZodOptional<any>): v is ZodOptional<any> {\n return v instanceof ZodOptional;\n }\n\n /**\n * Type guard for object Zod types\n */\n isObj(v: ZodAny | ZodObject<any, any>): v is ZodObject<any, any> {\n return v instanceof ZodObject;\n }\n\n /**\n * Type guard for null Zod types\n */\n isNull(v: ZodAny | ZodNull): v is ZodNull {\n return v instanceof ZodNull;\n }\n\n /**\n * Type guard for nullable Zod types\n */\n isNullable(v: ZodAny | ZodNullable<any>): v is ZodNullable<any> {\n return v instanceof ZodNullable;\n }\n\n /**\n * Type guard for array Zod types\n */\n isArr(v: ZodAny | ZodArray<any>): v is ZodArray<any> {\n return v instanceof ZodArray;\n }\n\n /**\n * Type guard for union Zod types\n */\n isUnion(v: ZodAny | ZodUnion<[ZodAny, ...ZodAny[]]>): v is ZodUnion<[ZodAny, ...ZodAny[]]> {\n return v instanceof ZodUnion;\n }\n\n /**\n * Type guard for string Zod types\n */\n isString(v: ZodAny | ZodString): v is ZodString {\n return v instanceof ZodString;\n }\n\n /**\n * Type guard for number Zod types\n */\n isNumber(v: ZodAny | ZodNumber): v is ZodNumber {\n return v instanceof ZodNumber;\n }\n\n /**\n * Type guard for date Zod types\n */\n isDate(v: ZodAny | ZodDate): v is ZodDate {\n return v instanceof ZodDate;\n }\n\n /**\n * Type guard for default Zod types\n */\n isDefault(v: ZodAny | ZodDefault<any>): v is ZodDefault<any> {\n return v instanceof ZodDefault;\n }\n\n /**\n * Type guard for intersection Zod types\n */\n isIntersection(v: ZodAny | ZodIntersection<any, any>): v is ZodIntersection<any, any> {\n return v instanceof ZodIntersection;\n }\n\n /**\n * Determines whether this compatibility layer should be applied for the current model.\n *\n * @returns True if this compatibility layer should be used, false otherwise\n * @abstract\n */\n shouldApply(): boolean {\n return this.parent.shouldApply();\n }\n\n /**\n * Returns the JSON Schema target format for this provider.\n *\n * @returns The schema target format, or undefined to use the default 'jsonSchema7'\n * @abstract\n */\n getSchemaTarget(): Targets | undefined {\n return this.parent.getSchemaTarget();\n }\n\n /**\n * Processes a specific Zod type according to the provider's requirements.\n *\n * @param value - The Zod type to process\n * @returns The processed Zod type\n * @abstract\n */\n processZodType(value: ZodType): ZodType {\n return this.parent.processZodType(value) as ZodType;\n }\n\n /**\n * Default handler for Zod object types. Recursively processes all properties in the object.\n *\n * @param value - The Zod object to process\n * @returns The processed Zod object\n */\n public defaultZodObjectHandler(\n value: ZodObject<any, any>,\n options: { passthrough?: boolean } = { passthrough: true },\n ): ZodObject<any, any> {\n const processedShape = Object.entries(value.shape).reduce<Record<string, ZodType>>((acc, [key, propValue]) => {\n acc[key] = this.processZodType(propValue as ZodAny);\n return acc;\n }, {});\n\n let result: ZodObject<any, any> = z.object(processedShape);\n\n // Handle strict objects (catchall is ZodNever) - preserve strict behavior\n if (value._zod.def.catchall instanceof z.ZodNever) {\n result = z.strictObject(processedShape);\n }\n // Handle passthrough objects (catchall is ZodUnknown)\n else if (value._zod.def.catchall instanceof z.ZodUnknown) {\n if (options.passthrough) {\n // Preserve passthrough behavior\n result = z.looseObject(processedShape);\n }\n // else: use default z.object() which strips unknown keys\n }\n // Handle custom catchall (not ZodNever or ZodUnknown)\n else if (value._zod.def.catchall) {\n result = result.catchall(value._zod.def.catchall);\n }\n\n if (value.description) {\n result = result.describe(value.description);\n }\n\n return result;\n }\n\n /**\n * Merges validation constraints into a parameter description.\n *\n * This helper method converts validation constraints that may not be supported\n * by a provider into human-readable descriptions.\n *\n * @param description - The existing parameter description\n * @param constraints - The validation constraints to merge\n * @returns The updated description with constraints, or undefined if no constraints\n */\n public mergeParameterDescription(\n description: string | undefined,\n constraints: ConstraintHelperText,\n ): string | undefined {\n if (constraints.length > 0) {\n return (description ? description + '\\n' : '') + `constraints: ${constraints.join(`, `)}`;\n } else {\n return description;\n }\n }\n\n /**\n * Default handler for unsupported Zod types. Throws an error for specified unsupported types.\n *\n * @param value - The Zod type to check\n * @param throwOnTypes - Array of type names to throw errors for\n * @returns The original value if not in the throw list\n * @throws Error if the type is in the unsupported list\n */\n public defaultUnsupportedZodTypeHandler<T extends z.ZodObject<any, any>>(\n value: z.ZodAny,\n throwOnTypes: readonly UnsupportedZodType[] = UNSUPPORTED_ZOD_TYPES,\n ): ShapeValue<T> {\n if (throwOnTypes.includes(value.constructor.name as UnsupportedZodType)) {\n throw new Error(`${this.model.modelId} does not support zod type: ${value.constructor.name}`);\n }\n return value as ShapeValue<T>;\n }\n\n /**\n * Default handler for Zod array types. Processes array constraints according to provider support.\n *\n * @param value - The Zod array to process\n * @param handleChecks - Array constraints to convert to descriptions vs keep as validation\n * @returns The processed Zod array\n */\n public defaultZodArrayHandler(\n value: ZodArray<any>,\n handleChecks: readonly ArrayCheckType[] = ALL_ARRAY_CHECKS,\n ): ZodArray<any> {\n const zodArrayDef = value._zod.def;\n const processedType = this.processZodType(zodArrayDef.element);\n\n let result = z.array(processedType);\n\n const constraints: ConstraintHelperText = [];\n if (zodArrayDef.checks) {\n for (const check of zodArrayDef.checks) {\n if (check._zod.def.check === 'min_length') {\n if (handleChecks.includes('min')) {\n // @ts-expect-error - fix later\n constraints.push(`minimum length ${check._zod.def.minimum}`);\n } else {\n // @ts-expect-error - fix later\n result = result.min(check._zod.def.minimum);\n }\n }\n if (check._zod.def.check === 'max_length') {\n if (handleChecks.includes('max')) {\n // @ts-expect-error - fix later\n constraints.push(`maximum length ${check._zod.def.maximum}`);\n } else {\n // @ts-expect-error - fix later\n result = result.max(check._zod.def.maximum);\n }\n }\n if (check._zod.def.check === 'length_equals') {\n if (handleChecks.includes('length')) {\n // @ts-expect-error - fix later\n constraints.push(`exact length ${check._zod.def.length}`);\n } else {\n // @ts-expect-error - fix later\n result = result.length(check._zod.def.length);\n }\n }\n }\n }\n\n const metaDescription = value.meta()?.description;\n const legacyDescription = value.description;\n\n const description = this.mergeParameterDescription(metaDescription || legacyDescription, constraints);\n if (description) {\n result = result.describe(description);\n }\n return result;\n }\n\n /**\n * Default handler for Zod union types. Processes all union options.\n *\n * @param value - The Zod union to process\n * @returns The processed Zod union\n * @throws Error if union has fewer than 2 options\n */\n public defaultZodUnionHandler(value: ZodUnion<[ZodAny, ...ZodAny[]]>): ZodAny {\n const processedOptions = value._zod.def.options.map((option: ZodAny) => this.processZodType(option));\n if (processedOptions.length < 2) throw new Error('Union must have at least 2 options');\n let result = z.union(processedOptions as [ZodAny, ZodAny, ...ZodAny[]]);\n if (value.description) {\n result = result.describe(value.description);\n }\n // @ts-expect-error - fix later\n return result;\n }\n\n /**\n * Default handler for Zod string types. Processes string validation constraints.\n *\n * @param value - The Zod string to process\n * @param handleChecks - String constraints to convert to descriptions vs keep as validation\n * @returns The processed Zod string\n */\n public defaultZodStringHandler(\n value: ZodString,\n handleChecks: readonly StringCheckType[] = ALL_STRING_CHECKS,\n ): ZodString {\n const constraints: ConstraintHelperText = [];\n const checks = value._zod.def.checks || [];\n type ZodStringCheck = (typeof checks)[number];\n const newChecks: ZodStringCheck[] = [];\n\n if (checks) {\n for (const check of checks) {\n if (handleChecks.includes(check._zod.def.check as StringCheckType)) {\n switch (check._zod.def.check) {\n case 'min_length':\n // @ts-expect-error - fix later\n constraints.push(`minimum length ${check._zod.def.minimum}`);\n break;\n case 'max_length':\n // @ts-expect-error - fix later\n constraints.push(`maximum length ${check._zod.def.maximum}`);\n break;\n case 'string_format':\n {\n // @ts-expect-error - fix later\n switch (check._zod.def.format) {\n case 'email':\n case 'url':\n case 'emoji':\n case 'uuid':\n case 'cuid':\n // @ts-expect-error - fix later\n constraints.push(`a valid ${check._zod.def.format}`);\n break;\n case 'regex':\n // @ts-expect-error - fix later\n constraints.push(`input must match this regex ${check._zod.def.pattern}`);\n break;\n default:\n // Formats without a textual description (ipv4, datetime,\n // base64, etc.) must be preserved as real validation instead\n // of being silently dropped.\n newChecks.push(check);\n break;\n }\n }\n break;\n }\n } else {\n newChecks.push(check);\n }\n }\n }\n\n let result = z.string();\n for (const check of newChecks) {\n result = result.check(check);\n }\n\n const metaDescription = value.meta()?.description;\n const legacyDescription = value.description;\n\n const description = this.mergeParameterDescription(metaDescription || legacyDescription, constraints);\n if (description) {\n result = result.describe(description);\n }\n return result;\n }\n\n /**\n * Default handler for Zod number types. Processes number validation constraints.\n *\n * @param value - The Zod number to process\n * @param handleChecks - Number constraints to convert to descriptions vs keep as validation\n * @returns The processed Zod number\n */\n public defaultZodNumberHandler(\n value: ZodNumber,\n handleChecks: readonly NumberCheckType[] = ALL_NUMBER_CHECKS,\n ): ZodNumber {\n const constraints: ConstraintHelperText = [];\n const checks = value._zod.def.checks || [];\n type ZodNumberCheck = (typeof checks)[number];\n const newChecks: ZodNumberCheck[] = [];\n\n if (checks) {\n for (const check of checks) {\n if (handleChecks.includes(check._zod.def.check as NumberCheckType)) {\n switch (check._zod.def.check) {\n case 'greater_than':\n // @ts-expect-error - fix later\n if (check._zod.def.inclusive) {\n // @ts-expect-error - fix later\n constraints.push(`greater than or equal to ${check._zod.def.value}`);\n } else {\n // @ts-expect-error - fix later\n constraints.push(`greater than ${check._zod.def.value}`);\n }\n break;\n case 'less_than':\n // @ts-expect-error - fix later\n if (check._zod.def.inclusive) {\n // @ts-expect-error - fix later\n constraints.push(`lower than or equal to ${check._zod.def.value}`);\n } else {\n // @ts-expect-error - fix later\n constraints.push(`lower than ${check._zod.def.value}`);\n }\n break;\n case 'multiple_of': {\n // @ts-expect-error - fix later\n constraints.push(`multiple of ${check._zod.def.value}`);\n break;\n }\n }\n } else {\n newChecks.push(check);\n }\n }\n }\n let result = z.number();\n\n for (const check of newChecks) {\n switch (check._zod.def.check) {\n case 'number_format': {\n // @ts-expect-error - fix later\n switch (check._zod.def.format) {\n case 'safeint':\n result = result.int();\n break;\n }\n break;\n }\n default:\n // @ts-expect-error - fix later\n result = result.check(check);\n }\n }\n const description = this.mergeParameterDescription(value.description, constraints);\n if (description) {\n result = result.describe(description);\n }\n return result;\n }\n\n /**\n * Default handler for Zod date types. Converts dates to ISO strings with constraint descriptions.\n *\n * @param value - The Zod date to process\n * @returns A Zod string schema representing the date in ISO format\n */\n public defaultZodDateHandler(value: ZodDate): ZodString {\n const constraints: ConstraintHelperText = [];\n const checks = value._zod.def.checks || [];\n type ZodDateCheck = (typeof checks)[number];\n const newChecks: ZodDateCheck[] = [];\n if (checks) {\n for (const check of checks) {\n switch (check._zod.def.check) {\n // `.max(d)` lowers the upper bound, stored as a `less_than` check: the date must be older than `d`.\n case 'less_than':\n // @ts-expect-error - fix later\n const maxDate = new Date(check._zod.def.value);\n if (!isNaN(maxDate.getTime())) {\n constraints.push(`Date must be older than ${maxDate.toISOString()} (ISO)`);\n }\n break;\n // `.min(d)` raises the lower bound, stored as a `greater_than` check: the date must be newer than `d`.\n case 'greater_than':\n // @ts-expect-error - fix later\n const minDate = new Date(check._zod.def.value);\n if (!isNaN(minDate.getTime())) {\n constraints.push(`Date must be newer than ${minDate.toISOString()} (ISO)`);\n }\n break;\n default:\n newChecks.push(check);\n }\n }\n }\n constraints.push(`Date format is date-time`);\n let result = z.string().describe('date-time');\n const description = this.mergeParameterDescription(value.description, constraints);\n if (description) {\n result = result.describe(description);\n }\n return result;\n }\n\n /**\n * Default handler for Zod optional types. Processes the inner type and maintains optionality.\n *\n * @param value - The Zod optional to process\n * @param handleTypes - Types that should be processed vs passed through\n * @returns The processed Zod optional\n */\n public defaultZodOptionalHandler(\n value: ZodOptional<any>,\n handleTypes: readonly AllZodType[] = SUPPORTED_ZOD_TYPES,\n ): ZodType {\n const innerType = value._zod?.def?.innerType;\n // Gate on the INNER type, not the wrapper. `value.constructor.name` is always\n // \"ZodOptional\", so it never reflects what is being wrapped.\n if (innerType && handleTypes.includes(zodV4TypeName(innerType) as AllZodType)) {\n return this.processZodType(innerType).optional();\n } else {\n return value;\n }\n }\n\n /**\n * Default handler for Zod nullable types. Processes the inner type and maintains nullability.\n *\n * @param value - The Zod nullable to process\n * @param handleTypes - Types that should be processed vs passed through\n * @returns The processed Zod nullable\n */\n public defaultZodNullableHandler(\n value: ZodNullable<any>,\n handleTypes: readonly AllZodType[] = SUPPORTED_ZOD_TYPES,\n ): ZodType {\n const innerType = value._zod?.def?.innerType;\n // Gate on the INNER type, not the wrapper. `value.constructor.name` is always\n // \"ZodNullable\", so it never reflects what is being wrapped.\n if (innerType && handleTypes.includes(zodV4TypeName(innerType) as AllZodType)) {\n return this.processZodType(innerType).nullable();\n } else {\n return value;\n }\n }\n\n /**\n * Recursively collects leaf types from a ZodIntersection tree.\n */\n private collectIntersectionLeaves(value: ZodType): ZodType[] {\n if (value instanceof ZodIntersection) {\n return [\n ...this.collectIntersectionLeaves(value._zod.def.left as ZodType),\n ...this.collectIntersectionLeaves(value._zod.def.right as ZodType),\n ];\n }\n return [value];\n }\n\n /**\n * Default handler for Zod intersection types.\n * Flattens the intersection tree and merges object shapes into a single z.object().\n * Falls back to z.any() for non-object intersections.\n */\n public defaultZodIntersectionHandler(value: ZodIntersection<any, any>): ZodType {\n const leaves = this.collectIntersectionLeaves(value);\n const processed = leaves.map(leaf => this.processZodType(leaf));\n\n if (processed.every(p => p instanceof ZodObject)) {\n const mergedShape: Record<string, ZodType> = {};\n for (const obj of processed as ZodObject<any, any>[]) {\n for (const [key, field] of Object.entries(obj.shape)) {\n if (key in mergedShape) {\n throw new Error('Cannot flatten intersections with overlapping keys');\n }\n mergedShape[key] = field as ZodType;\n }\n }\n let result: ZodType = z.object(mergedShape);\n if (value.description) {\n result = result.describe(value.description);\n }\n return result;\n }\n\n return z.any().describe(value.description || 'intersection type');\n }\n\n /**\n * Processes a Zod object schema and converts it to an AI SDK Schema.\n *\n * @param zodSchema - The Zod object schema to process\n * @returns An AI SDK Schema with provider-specific compatibility applied\n */\n public processToAISDKSchema(zodSchema: ZodType): Schema {\n const processedSchema = this.processZodType(zodSchema);\n\n return convertZodSchemaToAISDKSchema(processedSchema, this.getSchemaTarget());\n }\n\n /**\n * Processes a Zod object schema and converts it to a JSON Schema.\n *\n * @param zodSchema - The Zod object schema to process\n * @returns A JSONSchema7 object with provider-specific compatibility applied\n */\n public processToJSONSchema(zodSchema: ZodType): JSONSchema7 {\n return this.processToAISDKSchema(zodSchema).jsonSchema;\n }\n}\n","import type { JSONSchema7, JSONSchema7TypeName } from 'json-schema';\n\n/**\n * Type guard to check if a JSON Schema has a specific type\n */\nfunction hasType(schema: JSONSchema7, type: JSONSchema7TypeName): boolean {\n if (schema.type === type) return true;\n if (Array.isArray(schema.type) && schema.type.includes(type)) return true;\n return false;\n}\n\n/**\n * Check if a JSON Schema represents an object type\n */\nexport function isObjectSchema(schema: JSONSchema7): boolean {\n return hasType(schema, 'object') || schema.properties !== undefined;\n}\n\n/**\n * Check if a JSON Schema represents an array type\n */\nexport function isArraySchema(schema: JSONSchema7): boolean {\n return hasType(schema, 'array') || schema.items !== undefined;\n}\n\n/**\n * Check if a JSON Schema represents a string type\n */\nexport function isStringSchema(schema: JSONSchema7): boolean {\n return hasType(schema, 'string');\n}\n\n/**\n * Check if a JSON Schema represents a number type (number or integer)\n */\nexport function isNumberSchema(schema: JSONSchema7): boolean {\n return hasType(schema, 'number') || hasType(schema, 'integer');\n}\n\n/**\n * Check if a JSON Schema uses anyOf\n */\nexport function isAnyOfSchema(schema: JSONSchema7): schema is JSONSchema7 & { anyOf: JSONSchema7[] } {\n return Array.isArray(schema.anyOf) && schema.anyOf.length > 0;\n}\n\n/**\n * Check if a JSON Schema uses oneOf\n */\nexport function isOneOfSchema(schema: JSONSchema7): schema is JSONSchema7 & { oneOf: JSONSchema7[] } {\n return Array.isArray(schema.oneOf) && schema.oneOf.length > 0;\n}\n\n/**\n * Check if a JSON Schema is a union type (anyOf or oneOf)\n */\nexport function isUnionSchema(schema: JSONSchema7): boolean {\n return isAnyOfSchema(schema) || isOneOfSchema(schema) || Array.isArray(schema.type);\n}\n\n/**\n * Check if a JSON Schema is an enum type\n */\nexport function isEnumSchema(schema: JSONSchema7): boolean {\n return Array.isArray(schema.enum) && schema.enum.length > 0;\n}\n\n/**\n * Check if a JSON Schema is a nullable type\n */\nexport function isNullableSchema(schema: JSONSchema7): boolean {\n return schema.type === 'null';\n}\n\n/**\n * Check if a JSON Schema uses allOf (intersection)\n */\nexport function isAllOfSchema(schema: JSONSchema7): schema is JSONSchema7 & { allOf: JSONSchema7[] } {\n return Array.isArray(schema.allOf) && schema.allOf.length > 0;\n}\n\n/**\n * Check if a JSON Schema has number constraints (minimum, maximum, etc.)\n */\nexport function hasNumberConstraints(schema: JSONSchema7): boolean {\n return (\n schema.minimum !== undefined ||\n schema.maximum !== undefined ||\n schema.exclusiveMinimum !== undefined ||\n schema.exclusiveMaximum !== undefined ||\n schema.multipleOf !== undefined\n );\n}\n\n/**\n * Check if a JSON Schema has string constraints (minLength, maxLength, pattern, format)\n */\nexport function hasStringConstraints(schema: JSONSchema7): boolean {\n return (\n schema.minLength !== undefined ||\n schema.maxLength !== undefined ||\n schema.pattern !== undefined ||\n schema.format !== undefined\n );\n}\n\n/**\n * Check if a JSON Schema has array constraints (minItems, maxItems, uniqueItems)\n */\nexport function hasArrayConstraints(schema: JSONSchema7): boolean {\n return schema.minItems !== undefined || schema.maxItems !== undefined || schema.uniqueItems !== undefined;\n}\n\n/**\n * Check if a property is optional within a parent object schema.\n * A property is optional if it's not in the parent's `required` array.\n * @param propertyName - The name of the property to check\n * @param parentSchema - The parent object schema containing the property\n */\nexport function isOptionalSchema(propertyName: string, parentSchema: JSONSchema7): boolean {\n if (!parentSchema.required || !Array.isArray(parentSchema.required)) {\n return true; // If no required array, all properties are optional\n }\n return !parentSchema.required.includes(propertyName);\n}\n","import type { StandardJSONSchemaV1 } from '@standard-schema/spec';\nimport traverse from 'json-schema-traverse';\nimport type { z as zV3 } from 'zod/v3';\nimport type { z as zV4 } from 'zod/v4';\nimport type { Targets } from 'zod-to-json-schema';\nimport type { JSONSchema7, Schema } from './json-schema';\nimport * as jsonSchemaUtils from './json-schema/utils';\nimport type { PublicSchema, StandardSchemaWithJSON } from './schema';\nimport * as v3 from './schema-compatibility-v3';\nimport { SchemaCompatLayer as SchemaCompatLayerV3 } from './schema-compatibility-v3';\nimport * as v4 from './schema-compatibility-v4';\nimport { SchemaCompatLayer as SchemaCompatLayerV4 } from './schema-compatibility-v4';\nimport type { ZodType, ZodUnion } from './schema.types';\nimport { standardSchemaToJSONSchema, toStandardSchema } from './standard-schema/standard-schema';\nimport type { ModelInformation } from './types';\nimport { convertZodSchemaToAISDKSchema } from './utils';\n\n// Re-export constants and types\nexport {\n ALL_STRING_CHECKS,\n ALL_NUMBER_CHECKS,\n ALL_ARRAY_CHECKS,\n UNSUPPORTED_ZOD_TYPES as UNSUPPORTED_ZOD_TYPES_V3,\n SUPPORTED_ZOD_TYPES as SUPPORTED_ZOD_TYPES_V3,\n} from './schema-compatibility-v3';\nexport type {\n UnsupportedZodType as UnsupportedZodTypeV3,\n ShapeValue as ShapeValueV3,\n StringCheckType,\n NumberCheckType,\n ArrayCheckType,\n AllZodType as AllZodTypeV3,\n} from './schema-compatibility-v3';\nexport {\n UNSUPPORTED_ZOD_TYPES as UNSUPPORTED_ZOD_TYPES_V4,\n SUPPORTED_ZOD_TYPES as SUPPORTED_ZOD_TYPES_V4,\n} from './schema-compatibility-v4';\nexport type {\n UnsupportedZodType as UnsupportedZodTypeV4,\n ShapeValue as ShapeValueV4,\n AllZodType as AllZodTypeV4,\n} from './schema-compatibility-v4';\n\ntype ConstraintHelperText = string[];\n\nexport abstract class SchemaCompatLayer {\n private model: ModelInformation;\n private v3Layer: SchemaCompatLayerV3;\n private v4Layer: SchemaCompatLayerV4;\n\n /**\n * Creates a new schema compatibility instance.\n *\n * @param model - The language model this compatibility layer applies to\n */\n constructor(model: ModelInformation) {\n this.model = model;\n this.v3Layer = new SchemaCompatLayerV3(model, this);\n this.v4Layer = new SchemaCompatLayerV4(model, this);\n }\n\n public preProcessJSONNode(_schema: JSONSchema7, _parentSchema?: JSONSchema7): void {}\n public postProcessJSONNode(_schema: JSONSchema7, _parentSchema?: JSONSchema7): void {}\n\n /**\n * Gets the language model associated with this compatibility layer.\n *\n * @returns The language model instance\n */\n getModel(): ModelInformation {\n return this.model;\n }\n\n getUnsupportedZodTypes(value: ZodType): readonly string[] {\n if ('_zod' in value) {\n return this.v4Layer.getUnsupportedZodTypes();\n } else {\n return this.v3Layer.getUnsupportedZodTypes();\n }\n }\n\n isOptional(v: zV3.ZodType | zV4.ZodType): v is zV3.ZodOptional<any> | zV4.ZodOptional<any> {\n if ('_zod' in v) {\n return this.v4Layer.isOptional(v as any);\n } else {\n return this.v3Layer.isOptional(v as any);\n }\n }\n\n isObj(v: zV3.ZodType | zV4.ZodType): v is zV3.ZodObject<any, any, any, any, any> | zV4.ZodObject<any, any> {\n if ('_zod' in v) {\n return this.v4Layer.isObj(v as any);\n } else {\n return this.v3Layer.isObj(v as any);\n }\n }\n\n isNull(v: zV3.ZodType | zV4.ZodType): v is zV3.ZodNull | zV4.ZodNull {\n if ('_zod' in v) {\n return this.v4Layer.isNull(v as any);\n } else {\n return this.v3Layer.isNull(v as any);\n }\n }\n\n isNullable(v: zV3.ZodType | zV4.ZodType): v is zV3.ZodNullable<any> | zV4.ZodNullable<any> {\n if ('_zod' in v) {\n return this.v4Layer.isNullable(v as any);\n } else {\n return this.v3Layer.isNullable(v as any);\n }\n }\n\n isArr(v: zV3.ZodType | zV4.ZodType): v is zV3.ZodArray<any, any> | zV4.ZodArray<any> {\n if ('_zod' in v) {\n return this.v4Layer.isArr(v as any);\n } else {\n return this.v3Layer.isArr(v as any);\n }\n }\n\n isUnion(\n v: zV3.ZodType | zV4.ZodType,\n ): v is zV3.ZodUnion<[zV3.ZodType, ...zV3.ZodType[]]> | zV4.ZodUnion<[zV4.ZodType, ...zV4.ZodType[]]> {\n if ('_zod' in v) {\n return this.v4Layer.isUnion(v as any);\n } else {\n return this.v3Layer.isUnion(v as any);\n }\n }\n\n isString(v: zV3.ZodType | zV4.ZodType): v is zV3.ZodString | zV4.ZodString {\n if ('_zod' in v) {\n return this.v4Layer.isString(v as any);\n } else {\n return this.v3Layer.isString(v as any);\n }\n }\n\n isNumber(v: zV3.ZodType | zV4.ZodType): v is zV3.ZodNumber | zV4.ZodNumber {\n if ('_zod' in v) {\n return this.v4Layer.isNumber(v as any);\n } else {\n return this.v3Layer.isNumber(v as any);\n }\n }\n\n isDate(v: zV3.ZodType | zV4.ZodType): v is zV3.ZodDate | zV4.ZodDate {\n if ('_zod' in v) {\n return this.v4Layer.isDate(v as any);\n } else {\n return this.v3Layer.isDate(v as any);\n }\n }\n\n isDefault(v: zV3.ZodType | zV4.ZodType): v is zV3.ZodDefault<any> | zV4.ZodDefault<any> {\n if ('_zod' in v) {\n return this.v4Layer.isDefault(v as any);\n } else {\n return this.v3Layer.isDefault(v as any);\n }\n }\n\n isIntersection(v: zV3.ZodType | zV4.ZodType): v is zV3.ZodIntersection<any, any> | zV4.ZodIntersection<any, any> {\n if ('_zod' in v) {\n return this.v4Layer.isIntersection(v as any);\n } else {\n return this.v3Layer.isIntersection(v as any);\n }\n }\n\n abstract shouldApply(): boolean;\n abstract getSchemaTarget(): Targets | undefined;\n abstract processZodType(value: ZodType): ZodType;\n\n public defaultZodObjectHandler(\n value: zV3.ZodObject<any, any, any, any, any> | zV4.ZodObject<any, any>,\n options: { passthrough?: boolean } = { passthrough: true },\n ): zV3.ZodObject<any, any, any, any, any> | zV4.ZodObject<any, any> {\n if ('_zod' in value) {\n return this.v4Layer.defaultZodObjectHandler(value, options);\n } else {\n return this.v3Layer.defaultZodObjectHandler(value, options);\n }\n }\n\n public mergeParameterDescription(\n description: string | undefined,\n constraints: ConstraintHelperText,\n ): string | undefined {\n return this.v3Layer.mergeParameterDescription(description, constraints);\n }\n\n public defaultUnsupportedZodTypeHandler(\n value: zV3.ZodType | zV4.ZodType,\n throwOnTypes?: readonly (v3.UnsupportedZodType | v4.UnsupportedZodType)[],\n ): zV3.ZodType | zV4.ZodType {\n if ('_zod' in value) {\n return this.v4Layer.defaultUnsupportedZodTypeHandler(\n value as any,\n (throwOnTypes ?? v4.UNSUPPORTED_ZOD_TYPES) as typeof v4.UNSUPPORTED_ZOD_TYPES,\n );\n } else {\n return this.v3Layer.defaultUnsupportedZodTypeHandler(\n value as any,\n (throwOnTypes ?? v3.UNSUPPORTED_ZOD_TYPES) as typeof v3.UNSUPPORTED_ZOD_TYPES,\n );\n }\n }\n\n public defaultZodArrayHandler(\n value: zV3.ZodArray<any, any> | zV4.ZodArray<any>,\n handleChecks: readonly v3.ArrayCheckType[] = v3.ALL_ARRAY_CHECKS,\n ): zV3.ZodArray<any, any> | zV4.ZodArray<any> {\n if ('_zod' in value) {\n return this.v4Layer.defaultZodArrayHandler(value, handleChecks);\n } else {\n return this.v3Layer.defaultZodArrayHandler(value, handleChecks);\n }\n }\n\n public defaultZodUnionHandler(value: ZodUnion): zV3.ZodType | zV4.ZodType {\n if ('_zod' in value) {\n return this.v4Layer.defaultZodUnionHandler(value as any);\n } else {\n return this.v3Layer.defaultZodUnionHandler(value as any);\n }\n }\n\n public defaultZodStringHandler(\n value: zV3.ZodString | zV4.ZodString,\n handleChecks: readonly v3.StringCheckType[] = v3.ALL_STRING_CHECKS,\n ): zV3.ZodString | zV4.ZodString {\n if ('_zod' in value) {\n return this.v4Layer.defaultZodStringHandler(value);\n } else {\n return this.v3Layer.defaultZodStringHandler(value, handleChecks);\n }\n }\n\n public defaultZodNumberHandler(\n value: zV3.ZodNumber | zV4.ZodNumber,\n handleChecks: readonly v3.NumberCheckType[] = v3.ALL_NUMBER_CHECKS,\n ): zV3.ZodNumber | zV4.ZodNumber {\n if ('_zod' in value) {\n return this.v4Layer.defaultZodNumberHandler(value);\n } else {\n return this.v3Layer.defaultZodNumberHandler(value, handleChecks);\n }\n }\n\n public defaultZodDateHandler(value: zV3.ZodDate | zV4.ZodDate): zV3.ZodString | zV4.ZodString {\n if ('_zod' in value) {\n return this.v4Layer.defaultZodDateHandler(value);\n } else {\n return this.v3Layer.defaultZodDateHandler(value);\n }\n }\n\n public defaultZodOptionalHandler(\n value: zV3.ZodOptional<any> | zV4.ZodOptional<any>,\n handleTypes?: readonly string[],\n ): zV3.ZodType | zV4.ZodType {\n if (!handleTypes) {\n handleTypes = ['ZodObject', 'ZodArray', 'ZodUnion', 'ZodString', 'ZodNumber'];\n }\n\n // Get the inner type name to check if it should be processed\n // Zod v3 uses typeName (e.g., \"ZodString\"), v4 uses type (e.g., \"string\")\n let innerTypeName: string;\n if ('_zod' in value) {\n // Zod v4: type is lowercase without \"Zod\" prefix (e.g., \"string\", \"object\", \"array\")\n // Add defensive checks for nested property access\n const innerType = value._zod?.def?.innerType;\n const v4Type = innerType?._zod?.def?.type as string | undefined;\n if (!v4Type) {\n // If nested properties are missing, return the value unchanged\n return value;\n }\n // Convert to v3-style name for comparison (e.g., \"string\" -> \"ZodString\")\n innerTypeName = 'Zod' + v4Type.charAt(0).toUpperCase() + v4Type.slice(1);\n } else {\n innerTypeName = value._def.innerType._def.typeName;\n }\n\n if (handleTypes.includes(innerTypeName)) {\n if ('_zod' in value) {\n const innerType = value._zod?.def?.innerType;\n if (!innerType) {\n return value;\n }\n return this.processZodType(innerType).optional();\n } else {\n return this.processZodType(value._def.innerType).optional();\n }\n } else {\n return value;\n }\n }\n\n public defaultZodNullableHandler(\n value: zV3.ZodNullable<any> | zV4.ZodNullable<any>,\n handleTypes?: readonly string[],\n ): zV3.ZodType | zV4.ZodType {\n if ('_zod' in value) {\n return this.v4Layer.defaultZodNullableHandler(\n value,\n (handleTypes ?? v4.SUPPORTED_ZOD_TYPES) as typeof v4.SUPPORTED_ZOD_TYPES,\n );\n } else {\n return this.v3Layer.defaultZodNullableHandler(\n value as any,\n (handleTypes ?? v3.SUPPORTED_ZOD_TYPES) as typeof v3.SUPPORTED_ZOD_TYPES,\n );\n }\n }\n\n public defaultZodIntersectionHandler(\n value: zV3.ZodIntersection<any, any> | zV4.ZodIntersection<any, any>,\n ): zV3.ZodType | zV4.ZodType {\n if ('_zod' in value) {\n return this.v4Layer.defaultZodIntersectionHandler(value as any);\n } else {\n return this.v3Layer.defaultZodIntersectionHandler(value as any);\n }\n }\n\n /**\n * @deprecated please use processToCompatSchema to usse StandardSchemaWithJSON\n * @param zodSchema\n * @returns\n */\n public processToAISDKSchema(zodSchema: zV3.ZodSchema | zV4.ZodType): Schema {\n const processedSchema = this.processZodType(zodSchema);\n\n return convertZodSchemaToAISDKSchema(processedSchema, this.getSchemaTarget());\n }\n\n /**\n * @param schema\n * @returns\n */\n public processToJSONSchema(schema: PublicSchema<any>, io: 'input' | 'output' = 'input'): JSONSchema7 {\n const standardSchema = toStandardSchema(schema);\n\n const jsonSchema = standardSchemaToJSONSchema(standardSchema, {\n target: 'draft-07',\n io, // Use input mode so fields with defaults are optional\n });\n\n traverse(jsonSchema, {\n cb: {\n pre: schema => {\n this.preProcessJSONNode(schema);\n },\n post: schema => {\n this.postProcessJSONNode(schema);\n },\n },\n });\n\n return jsonSchema;\n }\n\n public processToCompatSchema<T>(schema: PublicSchema<T>): StandardSchemaWithJSON<T> {\n return {\n '~standard': {\n version: 1,\n vendor: 'mastra',\n validate: (value: unknown) => toStandardSchema(schema)['~standard'].validate(value),\n jsonSchema: {\n input: () => {\n return this.processToJSONSchema(schema, 'input') as Record<string, unknown>;\n },\n output: () => {\n return this.processToJSONSchema(schema, 'output') as Record<string, unknown>;\n },\n },\n },\n };\n }\n\n // ==========================================\n // JSON Schema Default Handlers\n // ==========================================\n\n /**\n * Default handler for JSON Schema objects.\n * Processes object schemas with properties and required fields.\n */\n protected defaultObjectHandler(schema: JSONSchema7): JSONSchema7 {\n // Ensure additionalProperties is set appropriately for strict mode\n if (schema.properties && schema.additionalProperties === undefined) {\n schema.additionalProperties = false;\n }\n\n if (!Object.keys(schema.properties ?? {}).length) {\n schema.required = [];\n }\n\n return schema;\n }\n\n /**\n * Default handler for JSON Schema arrays.\n * Converts array constraints (minItems, maxItems) to description text.\n */\n protected defaultArrayHandler(schema: JSONSchema7): JSONSchema7 {\n let constraints: string[] = [];\n\n const minItems = schema.minItems;\n const maxItems = schema.maxItems;\n\n if (minItems !== undefined && maxItems !== undefined && minItems === maxItems) {\n constraints = [`exact length ${minItems}`];\n delete schema.minItems;\n delete schema.maxItems;\n } else {\n if (minItems !== undefined) {\n constraints.push(`minimum length ${minItems}`);\n delete schema.minItems;\n }\n if (maxItems !== undefined) {\n constraints.push(`maximum length ${maxItems}`);\n delete schema.maxItems;\n }\n }\n\n if (constraints.length) {\n schema.description = this.mergeParameterDescription(schema.description, constraints);\n }\n\n return schema;\n }\n\n /**\n * Default handler for JSON Schema strings.\n * Converts string constraints (minLength, maxLength, pattern, format) to description text.\n */\n protected defaultStringHandler(schema: JSONSchema7): JSONSchema7 {\n const constraints: string[] = [];\n\n if (schema.minLength !== undefined) {\n constraints.push(`minimum length ${schema.minLength}`);\n delete schema.minLength;\n }\n if (schema.maxLength !== undefined) {\n constraints.push(`maximum length ${schema.maxLength}`);\n delete schema.maxLength;\n }\n\n switch (schema.format) {\n case 'email':\n case 'emoji':\n case 'uri':\n case 'uuid':\n case 'date-time':\n case 'date':\n case 'time': {\n constraints.push(`a valid ${schema.format}`);\n\n delete schema.pattern;\n delete schema.format;\n break;\n }\n }\n\n if (constraints.length === 0 && schema.pattern !== undefined) {\n constraints.push(`input must match this regex ${schema.pattern}`);\n delete schema.pattern;\n }\n\n if (constraints.length) {\n schema.description = this.mergeParameterDescription(schema.description, constraints);\n }\n\n return schema;\n }\n\n /**\n * Default handler for JSON Schema numbers/integers.\n * Converts number constraints (minimum, maximum, multipleOf, exclusiveMinimum, exclusiveMaximum) to description text.\n */\n protected defaultNumberHandler(schema: JSONSchema7): JSONSchema7 {\n const constraints: string[] = [];\n if (schema.minimum !== undefined) {\n if (schema.minimum !== Number.MIN_SAFE_INTEGER) {\n constraints.push(`greater than or equal to ${schema.minimum}`);\n }\n\n delete schema.minimum;\n }\n if (schema.maximum !== undefined) {\n if (schema.maximum !== Number.MAX_SAFE_INTEGER) {\n constraints.push(`lower than or equal to ${schema.maximum}`);\n }\n\n delete schema.maximum;\n }\n if (schema.exclusiveMinimum !== undefined) {\n constraints.push(`greater than ${schema.exclusiveMinimum}`);\n delete schema.exclusiveMinimum;\n }\n if (schema.exclusiveMaximum !== undefined) {\n constraints.push(`lower than ${schema.exclusiveMaximum}`);\n delete schema.exclusiveMaximum;\n }\n if (schema.multipleOf !== undefined) {\n constraints.push(`multiple of ${schema.multipleOf}`);\n delete schema.multipleOf;\n }\n\n if (constraints.length) {\n schema.description = this.mergeParameterDescription(schema.description, constraints);\n }\n\n return schema;\n }\n\n /**\n * Default handler for JSON Schema unions (anyOf/oneOf).\n * Processes union schemas and can convert anyOf patterns to type arrays for simple primitives.\n */\n protected defaultUnionHandler(schema: JSONSchema7): JSONSchema7 {\n // if (Array.isArray(schema.type)) {\n // schema.anyOf = schema.type.map(type => {\n // const result = { type };\n\n // return result;\n // });\n\n // delete schema.type;\n // }\n\n if (Array.isArray(schema.anyOf)) {\n // const hasNull = schema.anyOf.some(subSchema => typeof subSchema === 'object' && subSchema.type === 'null');\n // const hasString = schema.anyOf.some(subSchema => typeof subSchema === 'object' && subSchema.type === 'string');\n\n schema.anyOf = schema.anyOf\n .map(subSchema => {\n if (typeof subSchema !== 'object' || subSchema === null) {\n return false;\n }\n\n // if (subSchema.type === 'string' && hasNull) {\n // // @ts-expect-error - nullable is a valid property for JSON Schema\n // subSchema.nullable = true;\n // } else if (subSchema.type === 'array') {\n // subSchema.items = [];\n // } else if (subSchema.type === 'null' && hasString) {\n // return false;\n // }\n\n this.preProcessJSONNode(subSchema);\n this.postProcessJSONNode(subSchema);\n\n // if (hasNull && subSchema.type && subSchema.type !== 'null') {\n // subSchema.type = [].concat(subSchema.type, 'null');\n // }\n\n return subSchema;\n })\n .filter(Boolean);\n\n if (schema.anyOf.length === 1) {\n schema = schema.anyOf[0] as unknown as JSONSchema7;\n }\n }\n\n return schema;\n }\n\n /**\n * Default handler for JSON Schema allOf (intersection) types.\n * Flattens allOf sub-schemas by merging properties and required arrays into a single object schema.\n */\n protected defaultAllOfHandler(schema: JSONSchema7): JSONSchema7 {\n if (!schema.allOf || !Array.isArray(schema.allOf)) return schema;\n\n const mergedProperties: Record<string, JSONSchema7> = {};\n const mergedRequired: string[] = [];\n\n for (const subSchema of schema.allOf as JSONSchema7[]) {\n if (subSchema.properties) {\n Object.assign(mergedProperties, subSchema.properties);\n }\n if (Array.isArray(subSchema.required)) {\n mergedRequired.push(...subSchema.required);\n }\n }\n\n delete schema.allOf;\n schema.type = 'object';\n schema.properties = mergedProperties;\n if (mergedRequired.length > 0) {\n schema.required = [...new Set(mergedRequired)];\n }\n schema.additionalProperties = false;\n\n return schema;\n }\n\n /**\n * Default handler for JSON Schema nullable types.\n * Ensures nullable types are represented correctly.\n */\n protected defaultNullableHandler(schema: JSONSchema7): JSONSchema7 {\n return this.defaultUnionHandler(schema);\n }\n\n /**\n * Default handler for JSON Schema dates (string with date/date-time format).\n * Converts date formats to string type with format constraint in description.\n */\n protected defaultDateHandler(schema: JSONSchema7): JSONSchema7 {\n if (schema.format === 'date' || schema.format === 'date-time') {\n const format = schema.format;\n delete schema.format;\n schema.description = this.mergeParameterDescription(schema.description, [`format: ${format}`]);\n }\n return schema;\n }\n\n /**\n * Default handler for empty JSON schemas.\n * Converts empty {} schemas to a union of primitive types.\n */\n protected defaultEmptySchemaHandler(schema: JSONSchema7): JSONSchema7 {\n if (Object.keys(schema).length === 0) {\n schema.type = ['string', 'number', 'boolean', 'null'] as JSONSchema7['type'];\n }\n return schema;\n }\n\n /**\n * Default handler for unsupported JSON Schema features.\n * Can be used to strip or convert unsupported keywords.\n */\n protected defaultUnsupportedHandler(schema: JSONSchema7, unsupportedKeywords: string[] = []): JSONSchema7 {\n for (const keyword of unsupportedKeywords) {\n if (keyword in schema) {\n delete (schema as Record<string, unknown>)[keyword];\n }\n }\n return schema;\n }\n\n // ==========================================\n // JSON Schema Type Checkers (delegating to json-schema/utils)\n // ==========================================\n\n protected isObjectSchema(schema: JSONSchema7): boolean {\n return jsonSchemaUtils.isObjectSchema(schema);\n }\n\n protected isArraySchema(schema: JSONSchema7): boolean {\n return jsonSchemaUtils.isArraySchema(schema);\n }\n\n protected isStringSchema(schema: JSONSchema7): boolean {\n return jsonSchemaUtils.isStringSchema(schema);\n }\n\n protected isNumberSchema(schema: JSONSchema7): boolean {\n return jsonSchemaUtils.isNumberSchema(schema);\n }\n\n protected isUnionSchema(schema: JSONSchema7): boolean {\n return jsonSchemaUtils.isUnionSchema(schema);\n }\n\n protected isAllOfSchema(schema: JSONSchema7): schema is JSONSchema7 & { allOf: JSONSchema7[] } {\n return jsonSchemaUtils.isAllOfSchema(schema);\n }\n\n /**\n * Checks if a property is optional within a parent object schema.\n * A property is optional if it's not in the parent's `required` array.\n * @param propertyName - The name of the property to check\n * @param parentSchema - The parent object schema containing the property\n */\n protected isOptionalProperty(propertyName: string, parentSchema: JSONSchema7): boolean {\n return jsonSchemaUtils.isOptionalSchema(propertyName, parentSchema);\n }\n\n /**\n * Converts a Zod schema to JSON Schema using the standard-schema interface\n * and applies pre/post processing via traverse.\n *\n * Uses 'input' io mode so that fields with defaults are optional (appropriate for tool parameters).\n * @deprecated please use processToCompatSchema\n */\n public toJSONSchema(zodSchema: ZodType): JSONSchema7 {\n const SCHEMA_TARGET_TO_STANDARD: Record<string, StandardJSONSchemaV1.Target> = {\n jsonSchema7: 'draft-07',\n 'jsonSchema2019-09': 'draft-2020-12',\n openApi3: 'openapi-3.0',\n };\n const schemaTarget = this.getSchemaTarget();\n const target = (schemaTarget && SCHEMA_TARGET_TO_STANDARD[schemaTarget]) ?? schemaTarget;\n const standardSchema = toStandardSchema(zodSchema);\n const jsonSchema = standardSchemaToJSONSchema(standardSchema, {\n target,\n io: 'input', // Use input mode so fields with defaults are optional\n });\n\n traverse(jsonSchema, {\n cb: {\n pre: schema => {\n this.preProcessJSONNode(schema);\n },\n post: schema => {\n this.postProcessJSONNode(schema);\n },\n },\n });\n\n return jsonSchema;\n }\n}\n","import type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type { StandardSchemaWithJSON } from './standard-schema/standard-schema.types';\n\n/**\n * Recursively converts null values to undefined in an object based on which\n * properties are optional in the JSON Schema. This is needed because OpenAI\n * strict mode sends null for optional fields, but schemas like Zod's .optional()\n * reject null.\n *\n * Only converts null→undefined for properties that are NOT in the schema's\n * `required` array, preserving null for explicitly .nullable() fields.\n */\nexport function transformNullToUndefined(value: unknown, jsonSchema: Record<string, unknown>): unknown {\n if (value === null || value === undefined) {\n return value;\n }\n\n if (typeof value !== 'object' || Array.isArray(value)) {\n if (Array.isArray(value) && jsonSchema.items && typeof jsonSchema.items === 'object') {\n return value.map(item => transformNullToUndefined(item, jsonSchema.items as Record<string, unknown>));\n }\n return value;\n }\n\n const properties = jsonSchema.properties as Record<string, Record<string, unknown>> | undefined;\n if (!properties) {\n return value;\n }\n\n const required = (jsonSchema.required as string[]) || [];\n const result: Record<string, unknown> = {};\n\n for (const [key, val] of Object.entries(value as Record<string, unknown>)) {\n if (val === null && !required.includes(key)) {\n // Optional field with null value → convert to undefined\n result[key] = undefined;\n } else if (val !== null && typeof val === 'object' && properties[key]) {\n // Recurse into nested objects/arrays\n result[key] = transformNullToUndefined(val, properties[key]);\n } else {\n result[key] = val;\n }\n }\n\n return result;\n}\n\n/**\n * Wraps a StandardSchemaWithJSON to transform null values to undefined for\n * optional fields before validation. This is a schema-agnostic solution for\n * OpenAI strict mode, which sends null for optional fields.\n *\n * The wrapper:\n * 1. Extracts the JSON Schema from the inner schema to determine optional fields\n * 2. Before validation, transforms null→undefined for non-required properties\n * 3. Delegates validation to the inner schema with the transformed value\n * 4. Delegates JSON Schema conversion to the inner schema unchanged\n */\nexport function wrapSchemaWithNullTransform<Input = unknown, Output = Input>(\n schema: StandardSchemaWithJSON<Input, Output>,\n): StandardSchemaWithJSON<Input, Output> {\n // Extract JSON Schema to know which fields are optional\n let jsonSchema: Record<string, unknown> | undefined;\n try {\n jsonSchema = schema['~standard'].jsonSchema.input({ target: 'draft-07' });\n } catch {\n // If we can't get JSON Schema, fall through to unwrapped validation\n }\n\n if (!jsonSchema) {\n return schema;\n }\n\n const innerProps = schema['~standard'];\n\n return {\n '~standard': {\n version: innerProps.version,\n vendor: innerProps.vendor,\n types: innerProps.types,\n validate: (\n value: unknown,\n options?: StandardSchemaV1.Options,\n ): StandardSchemaV1.Result<Output> | Promise<StandardSchemaV1.Result<Output>> => {\n const transformed = transformNullToUndefined(value, jsonSchema);\n return innerProps.validate(transformed, options);\n },\n jsonSchema: innerProps.jsonSchema,\n },\n } as StandardSchemaWithJSON<Input, Output>;\n}\n","import type { z as zV3 } from 'zod/v3';\nimport type { z as zV4 } from 'zod/v4';\n\n/**\n * All supported string validation check types that can be processed or converted to descriptions.\n * @constant\n */\nexport const ALL_STRING_CHECKS = ['regex', 'emoji', 'email', 'url', 'uuid', 'cuid', 'min', 'max'] as const;\n\n/**\n * All supported number validation check types that can be processed or converted to descriptions.\n * @constant\n */\nexport const ALL_NUMBER_CHECKS = [\n 'min', // gte internally\n 'max', // lte internally\n 'multipleOf',\n] as const;\n\n/**\n * All supported array validation check types that can be processed or converted to descriptions.\n * @constant\n */\nexport const ALL_ARRAY_CHECKS = ['min', 'max', 'length'] as const;\n\n/**\n * Zod types that are not supported by most AI model providers and should be avoided.\n * @constant\n */\nexport const UNSUPPORTED_ZOD_TYPES = ['ZodIntersection', 'ZodNever', 'ZodNull', 'ZodTuple', 'ZodUndefined'] as const;\n\n/**\n * Zod types that are generally supported by AI model providers.\n * @constant\n */\nexport const SUPPORTED_ZOD_TYPES = [\n 'ZodObject',\n 'ZodArray',\n 'ZodUnion',\n 'ZodString',\n 'ZodNumber',\n 'ZodDate',\n 'ZodAny',\n 'ZodDefault',\n 'ZodNullable',\n] as const;\n\n/**\n * All Zod types (both supported and unsupported).\n * @constant\n */\nexport const ALL_ZOD_TYPES = [...SUPPORTED_ZOD_TYPES, ...UNSUPPORTED_ZOD_TYPES] as const;\n\n/**\n * Type representing string validation checks.\n */\nexport type StringCheckType = (typeof ALL_STRING_CHECKS)[number];\n\n/**\n * Type representing number validation checks.\n */\nexport type NumberCheckType = (typeof ALL_NUMBER_CHECKS)[number];\n\n/**\n * Type representing array validation checks.\n */\nexport type ArrayCheckType = (typeof ALL_ARRAY_CHECKS)[number];\n\n/**\n * Type representing unsupported Zod schema types.\n */\nexport type UnsupportedZodType = (typeof UNSUPPORTED_ZOD_TYPES)[number];\n\n/**\n * Type representing supported Zod schema types.\n */\nexport type SupportedZodType = (typeof SUPPORTED_ZOD_TYPES)[number];\n\n/**\n * Type representing all Zod schema types (supported and unsupported).\n */\nexport type AllZodType = (typeof ALL_ZOD_TYPES)[number];\n\n/**\n * Utility type to extract the shape of a Zod object schema.\n */\nexport type ZodShape<T extends zV3.ZodObject<any, any, any> | zV4.ZodObject<any, any>> = T['shape'];\n\n/**\n * Utility type to extract the keys from a Zod object shape.\n */\nexport type ShapeKey<T extends zV3.ZodObject<any, any, any> | zV4.ZodObject<any, any>> = keyof ZodShape<T>;\n\n/**\n * Utility type to extract the value types from a Zod object shape.\n */\nexport type ShapeValue<T extends zV3.ZodObject<any, any, any> | zV4.ZodObject<any, any>> = ZodShape<T>[ShapeKey<T>];\n\nexport function isOptional<Z extends typeof zV3>(z: Z): (v: any) => v is zV3.ZodOptional<any>;\nexport function isOptional<Z extends typeof zV4>(z: Z): (v: any) => v is zV4.ZodOptional<any>;\nexport function isOptional<Z extends typeof zV3 | typeof zV4>(z: Z) {\n return (v: any): v is Z['ZodOptional'] => v instanceof z['ZodOptional'];\n}\n\nexport function isObj<Z extends typeof zV3>(z: Z): (v: any) => v is zV3.ZodObject<any>;\nexport function isObj<Z extends typeof zV4>(z: Z): (v: any) => v is zV4.ZodObject;\nexport function isObj<Z extends typeof zV3 | typeof zV4>(z: Z) {\n return (v: any): v is Z['ZodObject'] => v instanceof z['ZodObject'];\n}\n\nexport function isNull<Z extends typeof zV3>(z: Z): (v: any) => v is zV3.ZodNull;\nexport function isNull<Z extends typeof zV4>(z: Z): (v: any) => v is zV4.ZodNull;\nexport function isNull<Z extends typeof zV3 | typeof zV4>(z: Z) {\n return (v: any): v is Z['ZodNull'] => v instanceof z['ZodNull'];\n}\n\nexport function isArr<Z extends typeof zV3>(z: Z): (v: any) => v is zV3.ZodArray<any>;\nexport function isArr<Z extends typeof zV4>(z: Z): (v: any) => v is zV4.ZodArray;\nexport function isArr<Z extends typeof zV3 | typeof zV4>(z: Z) {\n return (v: any): v is Z['ZodArray'] => v instanceof z['ZodArray'];\n}\n\nexport function isUnion<Z extends typeof zV3>(z: Z): (v: any) => v is zV3.ZodUnion<any>;\nexport function isUnion<Z extends typeof zV4>(z: Z): (v: any) => v is zV4.ZodUnion;\nexport function isUnion<Z extends typeof zV3 | typeof zV4>(z: Z) {\n return (v: any): v is Z['ZodUnion'] => v instanceof z['ZodUnion'];\n}\n\nexport function isString<Z extends typeof zV3>(z: Z): (v: any) => v is zV3.ZodString;\nexport function isString<Z extends typeof zV4>(z: Z): (v: any) => v is zV4.ZodString;\nexport function isString<Z extends typeof zV3 | typeof zV4>(z: Z) {\n return (v: any): v is Z['ZodString'] => v instanceof z['ZodString'];\n}\n\nexport function isNumber<Z extends typeof zV3>(z: Z): (v: any) => v is zV3.ZodNumber;\nexport function isNumber<Z extends typeof zV4>(z: Z): (v: any) => v is zV4.ZodNumber;\nexport function isNumber<Z extends typeof zV3 | typeof zV4>(z: Z) {\n return (v: any): v is Z['ZodNumber'] => v instanceof z['ZodNumber'];\n}\n\nexport function isDate<Z extends typeof zV3>(z: Z): (v: any) => v is zV3.ZodDate;\nexport function isDate<Z extends typeof zV4>(z: Z): (v: any) => v is zV4.ZodDate;\nexport function isDate<Z extends typeof zV3 | typeof zV4>(z: Z) {\n return (v: any): v is Z['ZodDate'] => v instanceof z['ZodDate'];\n}\n\nexport function isDefault<Z extends typeof zV3>(z: Z): (v: any) => v is zV3.ZodDefault<any>;\nexport function isDefault<Z extends typeof zV4>(z: Z): (v: any) => v is zV4.ZodDefault;\nexport function isDefault<Z extends typeof zV3 | typeof zV4>(z: Z) {\n return (v: any): v is Z['ZodDefault'] => v instanceof z['ZodDefault'];\n}\n\nexport function isNullable<Z extends typeof zV3>(z: Z): (v: any) => v is zV3.ZodNullable<any>;\nexport function isNullable<Z extends typeof zV4>(z: Z): (v: any) => v is zV4.ZodNullable;\nexport function isNullable<Z extends typeof zV3 | typeof zV4>(z: Z) {\n return (v: any): v is Z['ZodNullable'] => v instanceof z['ZodNullable'];\n}\n\nexport function isIntersection<Z extends typeof zV3>(z: Z): (v: any) => v is zV3.ZodIntersection<any, any>;\nexport function isIntersection<Z extends typeof zV4>(z: Z): (v: any) => v is zV4.ZodIntersection;\nexport function isIntersection<Z extends typeof zV3 | typeof zV4>(z: Z) {\n return (v: any): v is Z['ZodIntersection'] => v instanceof z['ZodIntersection'];\n}\n","import type { JSONSchema7 } from 'json-schema';\nimport { z } from 'zod';\nimport type { ZodType as ZodTypeV3, ZodObject as ZodObjectV3 } from 'zod/v3';\nimport type { ZodType as ZodTypeV4, ZodObject as ZodObjectV4 } from 'zod/v4';\nimport type { Targets } from 'zod-to-json-schema';\nimport type { Schema } from '../json-schema';\nimport { jsonSchema } from '../json-schema';\nimport {\n isAllOfSchema,\n isArraySchema,\n isNumberSchema,\n isObjectSchema,\n isStringSchema,\n isUnionSchema,\n} from '../json-schema/utils';\nimport { SchemaCompatLayer } from '../schema-compatibility';\nimport type { PublicSchema, ZodType } from '../schema.types';\nimport { standardSchemaToJSONSchema, toStandardSchema } from '../standard-schema/standard-schema';\nimport type { StandardSchemaWithJSON } from '../standard-schema/standard-schema.types';\nimport { isOptional, isObj, isUnion, isArr, isString, isNullable, isDefault, isIntersection } from '../zodTypes';\n\n// @see https://developers.openai.com/api/docs/guides/structured-outputs#supported-schemas\nconst allowedStringFormats = [\n 'date-time',\n 'time',\n 'date',\n 'duration',\n 'email',\n 'hostname',\n 'ipv4',\n 'ipv6',\n 'uuid',\n] as const;\n\nexport class OpenAISchemaCompatLayer extends SchemaCompatLayer {\n getSchemaTarget(): Targets | undefined {\n return `jsonSchema7`;\n }\n\n isReasoningModel(): boolean {\n // there isn't a good way to automatically detect reasoning models besides doing this.\n // in the future when o5 is released this compat wont apply and we'll want to come back and update this class + our tests\n const modelId = this.getModel().modelId;\n if (!modelId) return false;\n return modelId.includes(`o3`) || modelId.includes(`o4`) || modelId.includes(`o1`);\n }\n\n shouldApply(): boolean {\n const model = this.getModel();\n if (\n !this.isReasoningModel() &&\n (model.provider.includes(`openai`) || model.modelId?.includes(`openai`) || model.provider.includes(`groq`))\n ) {\n return true;\n }\n\n return false;\n }\n\n processZodType(value: ZodType): ZodType {\n if (isOptional(z)(value)) {\n // For OpenAI strict mode, convert .optional() to .nullable() with transform\n // This ensures all fields are in the required array but can accept null values\n // The transform converts null -> undefined to match original .optional() semantics\n const innerType = '_def' in value ? value._def.innerType : (value as any)._zod?.def?.innerType;\n\n if (innerType) {\n // If inner is nullable, just process and return it with transform (strips the optional wrapper)\n // This converts .optional().nullable() -> .nullable() with transform\n if (isNullable(z)(innerType)) {\n const processed = this.processZodType(innerType);\n return processed.transform((val: any) => (val === null ? undefined : val));\n }\n\n // Otherwise, process inner, make it nullable, and add transform\n // This converts .optional() -> .nullable() with transform that converts null to undefined\n const processedInner = this.processZodType(innerType);\n return processedInner.nullable().transform((val: any) => (val === null ? undefined : val));\n }\n\n return value;\n } else if (isNullable(z)(value)) {\n // Process nullable: unwrap, process inner, and re-wrap with nullable\n const innerType = '_def' in value ? value._def.innerType : (value as any)._zod?.def?.innerType;\n if (innerType) {\n // Special case: if inner is optional, strip it and add transform for OpenAI strict mode\n // This converts .nullable().optional() -> .nullable() with transform\n if (isOptional(z)(innerType)) {\n const innerInnerType =\n '_def' in innerType ? innerType._def.innerType : (innerType as any)._zod?.def?.innerType;\n if (innerInnerType) {\n const processedInnerInner = this.processZodType(innerInnerType);\n return processedInnerInner.nullable().transform((val: any) => (val === null ? undefined : val));\n }\n }\n\n const processedInner = this.processZodType(innerType);\n return processedInner.nullable();\n }\n return value;\n } else if (isDefault(z)(value)) {\n // For OpenAI strict mode, convert .default() to .nullable() with transform\n // This ensures all fields are in the required array but can accept null values\n // The transform converts null -> default value to match original .default() semantics\n const innerType = '_def' in value ? value._def.innerType : (value as any)._zod?.def?.innerType;\n const defaultValue = '_def' in value ? value._def.defaultValue : (value as any)._zod?.def?.defaultValue;\n\n if (innerType) {\n const processedInner = this.processZodType(innerType);\n // Transform null -> default value (call defaultValue() if it's a function)\n return processedInner.nullable().transform((val: any) => {\n if (val === null) {\n return typeof defaultValue === 'function' ? defaultValue() : defaultValue;\n }\n return val;\n });\n }\n\n return value;\n } else if (isObj(z)(value)) {\n return this.defaultZodObjectHandler(value);\n } else if (isUnion(z)(value)) {\n return this.defaultZodUnionHandler(value);\n } else if (isArr(z)(value)) {\n return this.defaultZodArrayHandler(value);\n } else if (isString(z)(value)) {\n const model = this.getModel();\n const checks = ['emoji'] as const;\n\n if (model.modelId?.includes('gpt-4o-mini')) {\n return this.defaultZodStringHandler(value, ['emoji', 'regex']);\n }\n\n return this.defaultZodStringHandler(value, checks);\n }\n\n if (isIntersection(z)(value)) {\n return this.defaultZodIntersectionHandler(value);\n }\n\n return this.defaultUnsupportedZodTypeHandler(value as ZodObjectV4<any> | ZodObjectV3<any>, [\n 'ZodNever',\n 'ZodUndefined',\n 'ZodTuple',\n ]);\n }\n\n /**\n * Override to apply the same JSON Schema fixes (additionalProperties, required fields)\n * that processToJSONSchema applies. The base implementation skips JSON Schema traversal,\n * which causes OpenAI strict mode to reject tool schemas missing additionalProperties: false.\n */\n processToAISDKSchema(zodSchema: ZodTypeV3 | ZodTypeV4): Schema {\n const compat = this.processToCompatSchema(zodSchema);\n\n // Apply the same JSON Schema fixes as processToJSONSchema\n const transformedJsonSchema = standardSchemaToJSONSchema(compat);\n\n // Post-process the raw LLM value: strip falsy optional fields and convert\n // date strings back to Date objects, then validate against the original Zod schema.\n return jsonSchema(transformedJsonSchema, {\n validate: (value: unknown) => {\n const transformed = this.#traverse(value, transformedJsonSchema as Record<string, unknown>);\n const result = zodSchema.safeParse(transformed);\n return result.success ? { success: true, value: result.data } : { success: false, error: result.error };\n },\n });\n }\n\n public processToCompatSchema<T>(schema: PublicSchema<T>): StandardSchemaWithJSON<T> {\n const originalStandardSchema = toStandardSchema(schema);\n\n return {\n '~standard': {\n version: 1,\n vendor: 'mastra',\n validate: (value: unknown) => {\n const transformedJsonSchema = this.processToJSONSchema(schema, 'input') as Record<string, unknown>;\n // Apply OpenAI-specific transforms: null→undefined for optional fields, date string→Date\n const transformed = this.#traverse(value, transformedJsonSchema as Record<string, unknown>);\n\n // Then validate against the original schema\n return originalStandardSchema['~standard'].validate(transformed);\n },\n jsonSchema: {\n input: () => {\n return this.processToJSONSchema(schema, 'input') as Record<string, unknown>;\n },\n output: () => {\n return this.processToJSONSchema(schema, 'output') as Record<string, unknown>;\n },\n },\n },\n };\n }\n\n preProcessJSONNode(schema: JSONSchema7, _parentSchema?: JSONSchema7): void {\n if (isAllOfSchema(schema)) {\n this.defaultAllOfHandler(schema);\n }\n\n if (isObjectSchema(schema)) {\n this.defaultObjectHandler(schema);\n } else if (isArraySchema(schema)) {\n this.defaultArrayHandler(schema);\n } else if (isNumberSchema(schema)) {\n this.defaultNumberHandler(schema);\n } else if (isStringSchema(schema)) {\n if (schema.format) {\n if (!(allowedStringFormats as readonly string[]).includes(schema.format as string)) {\n delete schema.format;\n delete schema.pattern;\n }\n }\n\n this.defaultStringHandler(schema);\n }\n }\n\n postProcessJSONNode(schema: JSONSchema7): void {\n // Handle union schemas in post-processing (after children are processed)\n if (isUnionSchema(schema)) {\n this.defaultUnionHandler(schema);\n }\n\n if (schema.type === undefined && !schema.anyOf) {\n let subSchema: typeof schema = {};\n for (const key of Object.keys(schema)) {\n // @ts-expect-error - key is a valid property for JSON Schema\n subSchema[key] = schema[key];\n // @ts-expect-error - key is a valid property for JSON Schema\n delete schema[key];\n }\n\n schema.anyOf = [\n subSchema,\n {\n type: 'null',\n },\n ];\n }\n\n // Ensure bare {\"type\":\"object\"} nodes (e.g., inside anyOf) have additionalProperties: false.\n // OpenAI strict mode requires this on every object-type node, even without properties.\n if (isObjectSchema(schema)) {\n schema.additionalProperties = false;\n\n if (schema.properties) {\n for (const key of Object.keys(schema.properties)) {\n const prop = schema.properties[key] as JSONSchema7;\n\n if (!schema.required) {\n schema.required = [];\n }\n\n if (!schema.required?.includes(key)) {\n // @ts-expect-error - x-optional is a custom property\n schema['x-optional'] = [...(schema['x-optional'] || []), key];\n schema.required?.push(key);\n if (prop.type) {\n if (Array.isArray(prop.type)) {\n const types = [...prop.type];\n if (!types.includes('null')) {\n types.push('null');\n }\n\n const propSchema = { ...prop } as JSONSchema7;\n delete propSchema.anyOf;\n delete propSchema.type;\n delete prop.type;\n\n prop.anyOf = types.map(type =>\n type === 'null'\n ? { type: 'null' }\n : {\n ...propSchema,\n type,\n },\n );\n } else if (prop.type !== 'null') {\n const originalType = prop.type;\n const propSchema = { ...prop } as JSONSchema7;\n delete propSchema.anyOf;\n delete propSchema.type;\n delete prop.type;\n prop.anyOf = [\n {\n ...propSchema,\n type: originalType,\n },\n { type: 'null' },\n ];\n }\n }\n }\n }\n }\n }\n }\n\n #traverse(value: unknown, schema: Record<string, unknown>): unknown {\n // If schema uses anyOf, find the non-null variant for traversal\n const resolved = this.#resolveAnyOf(schema);\n\n if ((isDateFormat(resolved) || resolved['x-date'] === true) && typeof value === 'string') {\n return new Date(value);\n }\n\n const isArrayType =\n resolved.type === 'array' || (Array.isArray(resolved.type) && (resolved.type as string[]).includes('array'));\n if (isArrayType) {\n if (!Array.isArray(value)) {\n return value;\n }\n return value.map(item => this.#traverse(item, resolved.items as Record<string, unknown>));\n }\n\n const isObjectType =\n resolved.type === 'object' || (Array.isArray(resolved.type) && (resolved.type as string[]).includes('object'));\n if (!isObjectType) {\n return value;\n }\n\n const properties = resolved.properties as Record<string, Record<string, unknown>> | undefined;\n if (!properties || !value) {\n return value;\n }\n\n const obj = value as Record<string, unknown>;\n const optionalProperties = (resolved['x-optional'] ?? []) as string[];\n for (const key in obj) {\n if (optionalProperties.includes(key) && obj[key] === null) {\n obj[key] = undefined;\n } else if (properties[key]) {\n obj[key] = this.#traverse(obj[key], properties[key]);\n }\n }\n\n return obj;\n }\n\n /**\n * If schema has anyOf, return the first non-null variant for traversal.\n * Otherwise return the schema itself.\n */\n #resolveAnyOf(schema: Record<string, unknown>): Record<string, unknown> {\n if (Array.isArray(schema.anyOf)) {\n const nonNull = (schema.anyOf as Record<string, unknown>[]).find(s => s.type !== 'null');\n if (nonNull) {\n return nonNull;\n }\n }\n\n return schema;\n }\n}\n\nfunction isDateFormat(schema: Record<string, unknown>): boolean {\n return schema.format === 'date-time' || schema.format === 'date';\n}\n","import { z } from 'zod';\nimport type { ZodType as ZodTypeV3, ZodObject as ZodObjectV3 } from 'zod/v3';\nimport type { ZodType as ZodTypeV4, ZodObject as ZodObjectV4 } from 'zod/v4';\nimport type { Targets } from 'zod-to-json-schema';\nimport type { ZodType } from '../schema.types';\nimport {\n isOptional,\n isObj,\n isArr,\n isUnion,\n isDefault,\n isNumber,\n isString,\n isDate,\n isNullable,\n isNull,\n isIntersection,\n} from '../zodTypes';\nimport { OpenAISchemaCompatLayer } from './openai';\n\nexport class OpenAIReasoningSchemaCompatLayer extends OpenAISchemaCompatLayer {\n getSchemaTarget(): Targets | undefined {\n return `openApi3`;\n }\n\n isReasoningModel(): boolean {\n // there isn't a good way to automatically detect reasoning models besides doing this.\n // in the future when o5 is released this compat wont apply and we'll want to come back and update this class + our tests\n const modelId = this.getModel().modelId;\n if (!modelId) return false;\n return modelId.includes(`o3`) || modelId.includes(`o4`) || modelId.includes(`o1`);\n }\n\n shouldApply(): boolean {\n const model = this.getModel();\n if (this.isReasoningModel() && (model.provider.includes(`openai`) || model.modelId?.includes(`openai`))) {\n return true;\n }\n\n return false;\n }\n\n processZodType(value: ZodType): ZodType {\n if (isOptional(z)(value)) {\n // For OpenAI reasoning models strict mode, convert .optional() to .nullable() with transform\n // The transform converts null -> undefined to match original .optional() semantics\n const innerType = '_def' in value ? value._def.innerType : (value as any)._zod?.def?.innerType;\n\n if (innerType) {\n // If inner is nullable, just process and return it with transform (strips the optional wrapper)\n if (isNullable(z)(innerType)) {\n const processed = this.processZodType(innerType);\n return processed.transform((val: any) => (val === null ? undefined : val));\n }\n\n // Otherwise, process inner, make it nullable, and add transform\n const processedInner = this.processZodType(innerType);\n return processedInner.nullable().transform((val: any) => (val === null ? undefined : val));\n }\n\n return value;\n } else if (isNullable(z)(value)) {\n // Handle nullable: if inner is optional, strip it and add transform\n // This converts .optional().nullable() -> .nullable() with transform\n const innerType = '_def' in value ? value._def.innerType : (value as any)._zod?.def?.innerType;\n if (innerType && isOptional(z)(innerType)) {\n const innerInnerType = '_def' in innerType ? innerType._def.innerType : (innerType as any)._zod?.def?.innerType;\n if (innerInnerType) {\n const processedInnerInner = this.processZodType(innerInnerType);\n return processedInnerInner.nullable().transform((val: any) => (val === null ? undefined : val));\n }\n }\n // Otherwise process inner and re-wrap with nullable (no transform - intentionally nullable)\n if (innerType) {\n const processedInner = this.processZodType(innerType);\n return processedInner.nullable();\n }\n return value;\n } else if (isObj(z)(value)) {\n return this.defaultZodObjectHandler(value, { passthrough: false });\n } else if (isArr(z)(value)) {\n return this.defaultZodArrayHandler(value);\n } else if (isUnion(z)(value)) {\n return this.defaultZodUnionHandler(value);\n } else if (isDefault(z)(value)) {\n const defaultDef = value._def;\n const innerType = defaultDef.innerType;\n // Handle both Zod v3 (function) and v4 (direct value)\n const defaultValue =\n typeof defaultDef.defaultValue === 'function' ? defaultDef.defaultValue() : defaultDef.defaultValue;\n const constraints: string[] = [];\n if (defaultValue !== undefined) {\n constraints.push(`the default value is ${defaultValue}`);\n }\n\n const description = this.mergeParameterDescription(value.description, constraints);\n let result = this.processZodType(innerType as ZodTypeV3 | ZodTypeV4);\n if (description) {\n result = result.describe(description);\n }\n return result;\n } else if (isNumber(z)(value)) {\n return this.defaultZodNumberHandler(value);\n } else if (isString(z)(value)) {\n return this.defaultZodStringHandler(value);\n } else if (isDate(z)(value)) {\n return this.defaultZodDateHandler(value);\n } else if (isNull(z)(value)) {\n return z\n .any()\n .refine(v => v === null, { message: 'must be null' })\n .describe(value.description || 'must be null');\n } else if (value.constructor.name === 'ZodAny') {\n // It's bad practice in the tool to use any, it's not reasonable for models that don't support that OOTB, to cast every single possible type\n // in the schema. Usually when it's \"any\" it could be a json object or a union of specific types.\n return z\n .string()\n .describe(\n (value.description ?? '') +\n `\\nArgument was an \"any\" type, but you (the LLM) do not support \"any\", so it was cast to a \"string\" type`,\n );\n }\n\n if (isIntersection(z)(value)) {\n return this.defaultZodIntersectionHandler(value);\n }\n\n return this.defaultUnsupportedZodTypeHandler(value as ZodObjectV4<any> | ZodObjectV3<any>);\n }\n}\n","/**\n * Standard Schema compatibility utilities\n *\n * This module provides utilities to apply provider-specific schema transformations\n * to StandardSchemaWithJSON types, particularly for OpenAI compatibility.\n */\n\nimport { OpenAISchemaCompatLayer } from './provider-compats/openai';\nimport { OpenAIReasoningSchemaCompatLayer } from './provider-compats/openai-reasoning';\nimport { toStandardSchema } from './standard-schema/standard-schema';\nimport type { StandardSchemaWithJSON } from './standard-schema/standard-schema.types';\nimport type { ModelInformation } from './types';\nimport { isZodType } from './utils';\n\n/**\n * Extracts the underlying Zod schema from a schema value.\n *\n * Handles both:\n * - Raw Zod schemas (z.object(...))\n * - StandardSchemaWithJSON wrappers that preserve Zod methods via prototype\n *\n * @param schema - The schema to extract from\n * @returns The underlying Zod schema, or null if not a Zod schema\n */\nexport function extractZodSchema(schema: unknown): unknown {\n if (!isZodType(schema)) {\n return null;\n }\n\n // Both raw Zod schemas and StandardSchemaWithJSON wrappers pass isZodType\n // check due to prototype chain preservation. We can treat them the same.\n return schema;\n}\n\n/**\n * Applies OpenAI schema compatibility transforms to a schema.\n *\n * For OpenAI models, converts `.optional()` fields to `.nullable().transform()`\n * to work around OpenAI's limitation with optional fields in structured outputs.\n *\n * @param schema - The schema to process (raw Zod or StandardSchemaWithJSON)\n * @param modelInfo - Information about the target model\n * @returns The processed schema as StandardSchemaWithJSON, or original if not applicable\n *\n * @example\n * ```typescript\n * const schema = z.object({\n * name: z.string(),\n * age: z.number().optional(), // Will be converted to .nullable().transform()\n * });\n *\n * const processed = applyOpenAICompatTransforms(schema, {\n * provider: 'openai',\n * modelId: 'gpt-4',\n * supportsStructuredOutputs: false,\n * });\n * ```\n */\nexport function applyOpenAICompatTransforms<T>(schema: T, modelInfo: ModelInformation): T | StandardSchemaWithJSON {\n // Only apply to OpenAI models\n const isOpenAI = modelInfo.provider?.includes('openai') || modelInfo.modelId?.includes('openai');\n\n if (!isOpenAI) {\n return schema;\n }\n\n // Extract underlying Zod schema (works with both raw Zod and StandardSchemaWithJSON)\n const zodSchema = extractZodSchema(schema);\n if (!zodSchema) {\n // Not a Zod schema, return unchanged\n return schema;\n }\n\n // Create appropriate compat layer based on model type\n const isReasoningModel = /^o[1-5]/.test(modelInfo.modelId);\n const compatLayer = isReasoningModel\n ? new OpenAIReasoningSchemaCompatLayer(modelInfo)\n : new OpenAISchemaCompatLayer(modelInfo);\n\n if (!compatLayer.shouldApply()) {\n // Compat layer determined it's not needed\n return schema;\n }\n\n // Process the Zod schema with OpenAI-specific transforms\n // processZodType expects and returns a Zod schema\n const processedZodSchema = compatLayer.processZodType(zodSchema as any);\n\n // Re-wrap as StandardSchemaWithJSON and return\n // Type assertion is safe because we're returning StandardSchemaWithJSON\n return toStandardSchema(processedZodSchema) as any;\n}\n\n/**\n * Applies OpenAI compat transforms to all tools in a toolset.\n *\n * Processes each tool's inputSchema (if present) with OpenAI compatibility transforms.\n *\n * @param tools - The toolset to process\n * @param modelInfo - Information about the target model\n * @returns The processed toolset with transformed schemas\n *\n * @example\n * ```typescript\n * const tools = {\n * getTodo: {\n * inputSchema: z.object({\n * id: z.string(),\n * includeCompleted: z.boolean().optional(), // Will be transformed\n * }),\n * execute: async (input) => { ... },\n * },\n * };\n *\n * const processed = applyOpenAICompatToTools(tools, {\n * provider: 'openai',\n * modelId: 'gpt-4',\n * supportsStructuredOutputs: false,\n * });\n * ```\n */\nexport function applyOpenAICompatToTools<T extends Record<string, any>>(\n tools: T | undefined,\n modelInfo: ModelInformation,\n): T | undefined {\n if (!tools) {\n return tools;\n }\n\n const transformedTools: Record<string, any> = {};\n\n for (const [name, tool] of Object.entries(tools)) {\n if (tool.inputSchema) {\n // Apply transforms to the tool's input schema\n const processedSchema = applyOpenAICompatTransforms(tool.inputSchema, modelInfo);\n\n transformedTools[name] = {\n ...tool,\n inputSchema: processedSchema,\n };\n } else {\n // No schema, pass through unchanged\n transformedTools[name] = tool;\n }\n }\n\n return transformedTools as T;\n}\n","import type { JSONSchema7, JSONSchema7Definition } from 'json-schema';\nimport { z } from 'zod';\nimport type { ZodType as ZodTypeV3 } from 'zod/v3';\nimport type { ZodType as ZodTypeV4 } from 'zod/v4';\nimport type { Targets } from 'zod-to-json-schema';\n\nimport { jsonSchema } from '../json-schema';\nimport {\n isAllOfSchema,\n isArraySchema,\n isObjectSchema,\n isNumberSchema,\n isStringSchema,\n isUnionSchema,\n} from '../json-schema/utils';\nimport { SchemaCompatLayer } from '../schema-compatibility';\nimport type { PublicSchema, ZodType } from '../schema.types';\nimport { standardSchemaToJSONSchema, toStandardSchema } from '../standard-schema/standard-schema';\nimport type { StandardSchemaWithJSON } from '../standard-schema/standard-schema.types';\nimport type { ModelInformation } from '../types';\nimport { isIntersection, isNull } from '../zodTypes';\n\nexport class AnthropicSchemaCompatLayer extends SchemaCompatLayer {\n constructor(model: ModelInformation) {\n super(model);\n }\n\n getSchemaTarget(): Targets | undefined {\n return 'jsonSchema7';\n }\n\n override processToJSONSchema(schema: PublicSchema<any>, io: 'input' | 'output' = 'input'): JSONSchema7 {\n const jsonSchema = super.processToJSONSchema(schema, io);\n const union = jsonSchema.anyOf ?? jsonSchema.oneOf;\n\n if (io !== 'input' || !Array.isArray(union)) {\n return jsonSchema;\n }\n\n const objectSchemas = union.filter(\n (subSchema): subSchema is JSONSchema7 =>\n typeof subSchema === 'object' && subSchema !== null && subSchema.type === 'object',\n );\n\n if (objectSchemas.length === 0 || objectSchemas.length !== union.length) {\n return jsonSchema;\n }\n\n delete jsonSchema.anyOf;\n delete jsonSchema.oneOf;\n jsonSchema.type = 'object';\n\n // Merge branch properties. When the same key appears in multiple branches with\n // differing schemas, preserve every variant via a property-level anyOf instead\n // of letting later branches overwrite earlier ones.\n const mergedProperties: Record<string, JSONSchema7Definition[]> = {};\n for (const subSchema of objectSchemas) {\n for (const [key, propSchema] of Object.entries(subSchema.properties ?? {})) {\n const variants = (mergedProperties[key] ??= []);\n if (!variants.some(existing => JSON.stringify(existing) === JSON.stringify(propSchema))) {\n variants.push(propSchema);\n }\n }\n }\n jsonSchema.properties = Object.fromEntries(\n Object.entries(mergedProperties).map(([key, variants]) => [\n key,\n variants.length === 1 ? variants[0]! : { anyOf: variants },\n ]),\n );\n\n jsonSchema.required = objectSchemas\n .map(subSchema => subSchema.required ?? [])\n .reduce((required, branchRequired) => required.filter(key => branchRequired.includes(key)));\n jsonSchema.additionalProperties = false;\n\n return jsonSchema;\n }\n\n shouldApply(): boolean {\n return this.getModel().modelId.includes('claude');\n }\n\n processZodType(value: ZodType): ZodType {\n if (this.isOptional(value)) {\n const handleTypes: string[] = ['ZodObject', 'ZodArray', 'ZodUnion', 'ZodNever', 'ZodUndefined', 'ZodTuple'];\n if (this.getModel().modelId.includes('claude-3.5-haiku')) handleTypes.push('ZodString');\n return this.defaultZodOptionalHandler(value, handleTypes);\n } else if (this.isObj(value)) {\n return this.defaultZodObjectHandler(value);\n } else if (this.isArr(value)) {\n return this.defaultZodArrayHandler(value, []);\n } else if (this.isUnion(value)) {\n return this.defaultZodUnionHandler(value);\n } else if (this.isString(value)) {\n // the claude-3.5-haiku model support these properties but the model doesn't respect them, but it respects them when they're\n // added to the tool description\n\n if (this.getModel().modelId.includes('claude-3.5-haiku')) {\n return this.defaultZodStringHandler(value, ['max', 'min']);\n } else {\n return value;\n }\n } else if (isNull(z)(value)) {\n return z\n .any()\n .refine(v => v === null, { message: 'must be null' })\n .describe(value.description || 'must be null');\n } else if (isIntersection(z)(value)) {\n return this.defaultZodIntersectionHandler(value);\n }\n\n return this.defaultUnsupportedZodTypeHandler(value);\n }\n\n processToAISDKSchema(zodSchema: ZodTypeV3 | ZodTypeV4) {\n const compat = this.processToCompatSchema(zodSchema);\n const transformedJsonSchema = standardSchemaToJSONSchema(compat);\n\n return jsonSchema(transformedJsonSchema, {\n validate: (value: unknown) => {\n const transformed = this.#traverse(value, transformedJsonSchema as Record<string, unknown>);\n const result = zodSchema.safeParse(transformed);\n return result.success ? { success: true, value: result.data } : { success: false, error: result.error };\n },\n });\n }\n\n public processToCompatSchema<T>(schema: PublicSchema<T>): StandardSchemaWithJSON<T> {\n const originalStandardSchema = toStandardSchema(schema);\n\n return {\n '~standard': {\n version: 1,\n vendor: 'mastra',\n validate: (value: unknown) => {\n const transformedJsonSchema = this.processToJSONSchema(schema, 'input') as Record<string, unknown>;\n const transformed = this.#traverse(value, transformedJsonSchema);\n return originalStandardSchema['~standard'].validate(transformed);\n },\n jsonSchema: {\n input: () => {\n return this.processToJSONSchema(schema, 'input') as Record<string, unknown>;\n },\n output: () => {\n return this.processToJSONSchema(schema, 'output') as Record<string, unknown>;\n },\n },\n },\n };\n }\n\n preProcessJSONNode(schema: JSONSchema7): void {\n if (isAllOfSchema(schema)) {\n this.defaultAllOfHandler(schema);\n }\n\n if (isObjectSchema(schema)) {\n this.defaultObjectHandler(schema);\n } else if (isArraySchema(schema)) {\n this.defaultArrayHandler(schema);\n } else if (isNumberSchema(schema)) {\n this.defaultNumberHandler(schema);\n } else if (isStringSchema(schema)) {\n this.defaultStringHandler(schema);\n }\n }\n\n postProcessJSONNode(schema: JSONSchema7): void {\n // Handle union schemas in post-processing (after children are processed)\n if (isUnionSchema(schema)) {\n this.defaultUnionHandler(schema);\n }\n }\n\n #traverse(value: unknown, schema: Record<string, unknown>): unknown {\n const resolved = this.#resolveSchemaForValue(schema, value);\n\n if (resolved['x-date'] === true && typeof value === 'string') {\n return new Date(value);\n }\n\n const isArrayType =\n resolved.type === 'array' || (Array.isArray(resolved.type) && (resolved.type as string[]).includes('array'));\n if (isArrayType) {\n if (!Array.isArray(value)) {\n return value;\n }\n return value.map(item => this.#traverse(item, resolved.items as Record<string, unknown>));\n }\n\n const isObjectType =\n resolved.type === 'object' || (Array.isArray(resolved.type) && (resolved.type as string[]).includes('object'));\n if (!isObjectType) {\n return value;\n }\n\n const properties = resolved.properties as Record<string, Record<string, unknown>> | undefined;\n if (!properties || !value) {\n return value;\n }\n\n const obj = value as Record<string, unknown>;\n for (const key in obj) {\n if (properties[key]) {\n obj[key] = this.#traverse(obj[key], properties[key]);\n }\n }\n\n return obj;\n }\n\n // #resolveAnyOf(schema: Record<string, unknown>): Record<string, unknown> {\n // if (Array.isArray(schema.anyOf)) {\n // const nonNull = (schema.anyOf as Record<string, unknown>[]).find(s => s.type !== 'null');\n // if (nonNull) {\n // return nonNull;\n // }\n // }\n\n // return schema;\n // }\n\n #resolveSchemaForValue(schema: Record<string, unknown>, value: unknown): Record<string, unknown> {\n if (!Array.isArray(schema.anyOf)) {\n return schema;\n }\n\n const variants = schema.anyOf as Record<string, unknown>[];\n const nonNullVariants = variants.filter(variant => variant.type !== 'null');\n // fast-path only for nullable wrappers\n if (variants.length === 2 && nonNullVariants.length === 1) {\n return nonNullVariants[0]!;\n }\n // otherwise choose a branch from the runtime value, or recurse each branch\n const keys = value && typeof value === 'object' ? Object.keys(value as Record<string, unknown>) : [];\n return (\n nonNullVariants.find(variant => {\n const properties = variant.properties as Record<string, unknown> | undefined;\n return !!properties && keys.some(key => key in properties);\n }) ?? schema\n );\n }\n}\n","import type { JSONSchema7 } from 'json-schema';\nimport { z } from 'zod';\nimport type { ZodType as ZodTypeV3 } from 'zod/v3';\nimport type { ZodType as ZodTypeV4 } from 'zod/v4';\nimport type { Targets } from 'zod-to-json-schema';\nimport { jsonSchema } from '../json-schema';\nimport {\n isAllOfSchema,\n isArraySchema,\n isNumberSchema,\n isObjectSchema,\n isStringSchema,\n isUnionSchema,\n} from '../json-schema/utils';\nimport { SchemaCompatLayer } from '../schema-compatibility';\nimport type { PublicSchema } from '../schema.types';\nimport { standardSchemaToJSONSchema, toStandardSchema } from '../standard-schema/standard-schema';\nimport type { StandardSchemaWithJSON } from '../standard-schema/standard-schema.types';\nimport type { ModelInformation } from '../types';\nimport { isOptional, isObj, isArr, isUnion, isString, isIntersection } from '../zodTypes';\n\nexport class DeepSeekSchemaCompatLayer extends SchemaCompatLayer {\n constructor(model: ModelInformation) {\n super(model);\n }\n\n getSchemaTarget(): Targets | undefined {\n return 'jsonSchema7';\n }\n\n shouldApply(): boolean {\n // Deepseek R1 performs perfectly without this compat layer\n return this.getModel().modelId.includes('deepseek') && !this.getModel().modelId.includes('r1');\n }\n\n processZodType(value: ZodTypeV3): ZodTypeV3;\n processZodType(value: ZodTypeV4): ZodTypeV4;\n processZodType(value: ZodTypeV3 | ZodTypeV4): ZodTypeV3 | ZodTypeV4 {\n if (isOptional(z)(value)) {\n return this.defaultZodOptionalHandler(value, ['ZodObject', 'ZodArray', 'ZodUnion', 'ZodString', 'ZodNumber']);\n } else if (isObj(z)(value)) {\n return this.defaultZodObjectHandler(value);\n } else if (isArr(z)(value)) {\n return this.defaultZodArrayHandler(value, ['min', 'max']);\n } else if (isUnion(z)(value)) {\n return this.defaultZodUnionHandler(value);\n } else if (isString(z)(value)) {\n return this.defaultZodStringHandler(value);\n } else if (isIntersection(z)(value)) {\n return this.defaultZodIntersectionHandler(value);\n }\n\n return value;\n }\n\n processToAISDKSchema(zodSchema: ZodTypeV3 | ZodTypeV4) {\n const compat = this.processToCompatSchema(zodSchema);\n const transformedJsonSchema = standardSchemaToJSONSchema(compat);\n\n return jsonSchema(transformedJsonSchema, {\n validate: (value: unknown) => {\n const transformed = this.#traverse(value, transformedJsonSchema as Record<string, unknown>);\n const result = zodSchema.safeParse(transformed);\n return result.success ? { success: true, value: result.data } : { success: false, error: result.error };\n },\n });\n }\n\n public processToCompatSchema<T>(schema: PublicSchema<T>): StandardSchemaWithJSON<T> {\n const originalStandardSchema = toStandardSchema(schema);\n\n return {\n '~standard': {\n version: 1,\n vendor: 'mastra',\n validate: (value: unknown) => {\n const transformedJsonSchema = this.processToJSONSchema(schema, 'input') as Record<string, unknown>;\n const transformed = this.#traverse(value, transformedJsonSchema);\n return originalStandardSchema['~standard'].validate(transformed);\n },\n jsonSchema: {\n input: () => {\n return this.processToJSONSchema(schema, 'input') as Record<string, unknown>;\n },\n output: () => {\n return this.processToJSONSchema(schema, 'output') as Record<string, unknown>;\n },\n },\n },\n };\n }\n\n preProcessJSONNode(schema: JSONSchema7): void {\n if (isAllOfSchema(schema)) {\n this.defaultAllOfHandler(schema);\n }\n\n if (isObjectSchema(schema)) {\n this.defaultObjectHandler(schema);\n } else if (isArraySchema(schema)) {\n this.defaultArrayHandler(schema);\n } else if (isNumberSchema(schema)) {\n this.defaultNumberHandler(schema);\n } else if (isStringSchema(schema)) {\n this.defaultStringHandler(schema);\n }\n }\n\n postProcessJSONNode(schema: JSONSchema7): void {\n // Handle union schemas in post-processing (after children are processed)\n if (isUnionSchema(schema)) {\n this.defaultUnionHandler(schema);\n }\n }\n\n #traverse(value: unknown, schema: Record<string, unknown>): unknown {\n const resolved = this.#resolveAnyOf(schema);\n\n if (resolved['x-date'] === true && typeof value === 'string') {\n return new Date(value);\n }\n\n const isArrayType =\n resolved.type === 'array' || (Array.isArray(resolved.type) && (resolved.type as string[]).includes('array'));\n if (isArrayType) {\n if (!Array.isArray(value)) {\n return value;\n }\n return value.map(item => this.#traverse(item, resolved.items as Record<string, unknown>));\n }\n\n const isObjectType =\n resolved.type === 'object' || (Array.isArray(resolved.type) && (resolved.type as string[]).includes('object'));\n if (!isObjectType) {\n return value;\n }\n\n const properties = resolved.properties as Record<string, Record<string, unknown>> | undefined;\n if (!properties || !value) {\n return value;\n }\n\n const obj = value as Record<string, unknown>;\n for (const key in obj) {\n if (properties[key]) {\n obj[key] = this.#traverse(obj[key], properties[key]);\n }\n }\n\n return obj;\n }\n\n #resolveAnyOf(schema: Record<string, unknown>): Record<string, unknown> {\n if (Array.isArray(schema.anyOf)) {\n const nonNull = (schema.anyOf as Record<string, unknown>[]).find(s => s.type !== 'null');\n if (nonNull) {\n return nonNull;\n }\n }\n\n return schema;\n }\n}\n","import type { JSONSchema7 } from 'json-schema';\nimport { z } from 'zod';\nimport type { ZodType as ZodTypeV3, ZodObject as ZodObjectV3 } from 'zod/v3';\nimport type { ZodType as ZodTypeV4, ZodObject as ZodObjectV4 } from 'zod/v4';\nimport type { Targets } from 'zod-to-json-schema';\nimport type { Schema } from '../json-schema';\nimport { jsonSchema } from '../json-schema';\nimport {\n isAllOfSchema,\n isArraySchema,\n isNumberSchema,\n isObjectSchema,\n isStringSchema,\n isUnionSchema,\n} from '../json-schema/utils';\nimport { SchemaCompatLayer } from '../schema-compatibility';\nimport type { PublicSchema } from '../schema.types';\nimport { standardSchemaToJSONSchema, toStandardSchema } from '../standard-schema/standard-schema';\nimport type { StandardSchemaWithJSON } from '../standard-schema/standard-schema.types';\nimport type { ModelInformation } from '../types';\nimport { isOptional, isNullable, isNull, isObj, isArr, isUnion, isString, isNumber, isIntersection } from '../zodTypes';\n\nfunction fixAISDKNullableUnionTypes(schema: Record<string, any>): Record<string, any> {\n if (typeof schema !== 'object' || schema === null) {\n return schema;\n }\n\n const result = { ...schema };\n\n if (Array.isArray(result.type)) {\n const nonNullTypes = result.type.filter((t: string) => t !== 'null');\n if (nonNullTypes.length === 1) {\n result.type = nonNullTypes[0];\n result.nullable = true;\n } else {\n delete result.type;\n delete result.nullable;\n }\n }\n\n if (Array.isArray(result.enum) && result.enum.some((value: unknown) => typeof value !== 'string')) {\n delete result.enum;\n }\n\n if ('const' in result && typeof result.const !== 'string') {\n delete result.const;\n }\n\n if (result.anyOf && Array.isArray(result.anyOf)) {\n const nullSchema = result.anyOf.find((s: any) => typeof s === 'object' && s !== null && s.type === 'null');\n const nonNullSchemas = result.anyOf.filter((s: any) => !(typeof s === 'object' && s !== null && s.type === 'null'));\n\n if (nullSchema) {\n const { anyOf: _, ...rest } = result;\n if (nonNullSchemas.length === 1 && typeof nonNullSchemas[0] === 'object' && nonNullSchemas[0] !== null) {\n const fixedOther = fixAISDKNullableUnionTypes(nonNullSchemas[0]);\n return fixedOther.type ? { ...rest, ...fixedOther, nullable: true } : { ...rest, ...fixedOther };\n }\n return rest;\n }\n }\n\n if (result.properties && typeof result.properties === 'object') {\n result.properties = Object.fromEntries(\n Object.entries(result.properties).map(([key, value]) => [key, fixAISDKNullableUnionTypes(value as any)]),\n );\n }\n\n if (result.items) {\n if (Array.isArray(result.items)) {\n result.items = result.items.map((item: any) => fixAISDKNullableUnionTypes(item));\n } else {\n result.items = fixAISDKNullableUnionTypes(result.items);\n }\n }\n\n if (result.additionalProperties && typeof result.additionalProperties === 'object') {\n result.additionalProperties = fixAISDKNullableUnionTypes(result.additionalProperties);\n }\n\n if (result.anyOf && Array.isArray(result.anyOf)) {\n result.anyOf = result.anyOf.map((s: any) => fixAISDKNullableUnionTypes(s));\n }\n if (result.oneOf && Array.isArray(result.oneOf)) {\n result.oneOf = result.oneOf.map((s: any) => fixAISDKNullableUnionTypes(s));\n }\n if (result.allOf && Array.isArray(result.allOf)) {\n result.allOf = result.allOf.map((s: any) => fixAISDKNullableUnionTypes(s));\n }\n\n if (result.anyOf && Array.isArray(result.anyOf)) {\n if (result.description) {\n for (const item of result.anyOf) {\n if (typeof item === 'object' && item !== null && !item.description) {\n item.description = result.description;\n }\n }\n }\n return { anyOf: result.anyOf };\n }\n\n return result;\n}\n\n/**\n * Inline `$ref` pointers one level and drop `definitions`/`$defs`.\n * Gemini can't follow JSON Schema `$ref`s — they cause silent mis-fills.\n * Self-references (recursive schemas) are collapsed to `{ type: 'object' }`\n * to avoid infinite expansion.\n */\nfunction inlineRefsAndDropDefinitions(schema: Record<string, unknown>): void {\n // Check for any $ref in the schema tree (may be nested, e.g. { properties: { x: { $ref: \"#\" } } })\n const json = JSON.stringify(schema);\n if (!json.includes('\"$ref\"')) return;\n\n const defs =\n (schema['definitions'] as Record<string, Record<string, unknown>> | undefined) ??\n (schema['$defs'] as Record<string, Record<string, unknown>> | undefined);\n\n // Snapshot the original schema before any mutations so $ref: \"#\" resolves correctly\n const snapshot = JSON.parse(json) as Record<string, unknown>;\n const snapshotDefs =\n (snapshot['definitions'] as Record<string, Record<string, unknown>> | undefined) ??\n (snapshot['$defs'] as Record<string, Record<string, unknown>> | undefined);\n resolveRefs(schema, snapshot, snapshotDefs ?? defs ?? {}, new Set());\n\n delete schema['definitions'];\n delete schema['$defs'];\n}\n\nfunction resolveRefs(\n node: Record<string, unknown>,\n rootSnapshot: Record<string, unknown>,\n defs: Record<string, Record<string, unknown>>,\n visiting: Set<string>,\n): void {\n if (typeof node !== 'object' || node === null) return;\n\n for (const [key, value] of Object.entries(node)) {\n if (key === '$ref' && typeof value === 'string') {\n const resolved = resolveRef(value, rootSnapshot, defs);\n if (!resolved || visiting.has(value)) {\n // Self-reference or unresolvable — collapse to plain object\n delete node['$ref'];\n node['type'] = 'object';\n } else {\n delete node['$ref'];\n visiting.add(value);\n // Deep-clone from the immutable snapshot, resolve nested refs, then merge\n const clone = JSON.parse(JSON.stringify(resolved)) as Record<string, unknown>;\n resolveRefs(clone, rootSnapshot, defs, visiting);\n visiting.delete(value);\n Object.assign(node, clone);\n }\n } else if (Array.isArray(value)) {\n for (const item of value) {\n if (typeof item === 'object' && item !== null) {\n resolveRefs(item as Record<string, unknown>, rootSnapshot, defs, visiting);\n }\n }\n } else if (typeof value === 'object' && value !== null) {\n resolveRefs(value as Record<string, unknown>, rootSnapshot, defs, visiting);\n }\n }\n}\n\nfunction resolveRef(\n ref: string,\n rootSnapshot: Record<string, unknown>,\n defs: Record<string, Record<string, unknown>>,\n): Record<string, unknown> | undefined {\n if (ref === '#') return rootSnapshot;\n\n // Handle #/definitions/Foo or #/$defs/Foo\n const match = ref.match(/^#\\/(?:definitions|\\$defs)\\/(.+)$/);\n if (match) {\n return defs[match[1]!];\n }\n\n return undefined;\n}\n\nexport class GoogleSchemaCompatLayer extends SchemaCompatLayer {\n constructor(model: ModelInformation) {\n super(model);\n }\n\n getSchemaTarget(): Targets | undefined {\n return 'jsonSchema7';\n }\n\n shouldApply(): boolean {\n return (\n this.getModel().provider.includes('google') ||\n this.getModel().modelId.includes('gemini-') ||\n this.getModel().modelId.includes('google')\n );\n }\n processZodType(value: ZodTypeV3): ZodTypeV3;\n processZodType(value: ZodTypeV4): ZodTypeV4;\n processZodType(value: ZodTypeV3 | ZodTypeV4): ZodTypeV3 | ZodTypeV4 {\n if (isOptional(z)(value)) {\n return this.defaultZodOptionalHandler(value, [\n 'ZodObject',\n 'ZodArray',\n 'ZodUnion',\n 'ZodString',\n 'ZodNumber',\n 'ZodNullable',\n ]);\n } else if (isNullable(z)(value)) {\n return this.defaultZodNullableHandler(value);\n } else if (isNull(z)(value)) {\n // Google models don't support null, so we need to convert it to any and then refine it to null\n return z\n .any()\n .refine(v => v === null, { message: 'must be null' })\n .describe(value.description || 'must be null');\n } else if (isObj(z)(value)) {\n return this.defaultZodObjectHandler(value);\n } else if (isArr(z)(value)) {\n return this.defaultZodArrayHandler(value, []);\n } else if (isUnion(z)(value)) {\n return this.defaultZodUnionHandler(value);\n } else if (isString(z)(value)) {\n // Google models support these properties but the model doesn't respect them, but it respects them when they're\n // added to the tool description\n return this.defaultZodStringHandler(value);\n } else if (isNumber(z)(value)) {\n // Google models support these properties but the model doesn't respect them, but it respects them when they're\n // added to the tool description\n return this.defaultZodNumberHandler(value);\n } else if (isIntersection(z)(value)) {\n return this.defaultZodIntersectionHandler(value);\n }\n return this.defaultUnsupportedZodTypeHandler(value as ZodObjectV4<any> | ZodObjectV3<any>);\n }\n\n public processToJSONSchema(schema: PublicSchema<any>, io?: 'input' | 'output'): JSONSchema7 {\n const result = super.processToJSONSchema(schema, io);\n inlineRefsAndDropDefinitions(result as Record<string, unknown>);\n return result;\n }\n\n processToAISDKSchema(zodSchema: ZodTypeV3 | ZodTypeV4): Schema {\n const compat = this.processToCompatSchema(zodSchema);\n const transformedJsonSchema = standardSchemaToJSONSchema(compat);\n const fixedJsonSchema = fixAISDKNullableUnionTypes(transformedJsonSchema as Record<string, any>) as JSONSchema7;\n\n return jsonSchema(fixedJsonSchema, {\n validate: (value: unknown) => {\n const transformed = this.#traverse(value, fixedJsonSchema as Record<string, unknown>);\n const result = zodSchema.safeParse(transformed);\n return result.success ? { success: true, value: result.data } : { success: false, error: result.error };\n },\n });\n }\n\n public processToCompatSchema<T>(schema: PublicSchema<T>): StandardSchemaWithJSON<T> {\n const originalStandardSchema = toStandardSchema(schema);\n\n return {\n '~standard': {\n version: 1,\n vendor: 'mastra',\n validate: (value: unknown) => {\n const transformedJsonSchema = this.processToJSONSchema(schema, 'input') as Record<string, unknown>;\n const transformed = this.#traverse(value, transformedJsonSchema);\n return originalStandardSchema['~standard'].validate(transformed);\n },\n jsonSchema: {\n input: () => {\n return this.processToJSONSchema(schema, 'input') as Record<string, unknown>;\n },\n output: () => {\n return this.processToJSONSchema(schema, 'output') as Record<string, unknown>;\n },\n },\n },\n };\n }\n\n preProcessJSONNode(schema: JSONSchema7): void {\n if (isAllOfSchema(schema)) {\n this.defaultAllOfHandler(schema);\n }\n\n if (isObjectSchema(schema)) {\n this.defaultObjectHandler(schema);\n } else if (isNumberSchema(schema)) {\n this.defaultNumberHandler(schema);\n } else if (isArraySchema(schema)) {\n this.defaultArrayHandler(schema);\n } else if (isStringSchema(schema)) {\n this.defaultStringHandler(schema);\n }\n }\n\n postProcessJSONNode(schema: JSONSchema7): void {\n // Handle union schemas in post-processing (after children are processed)\n if (isUnionSchema(schema)) {\n this.defaultUnionHandler(schema);\n }\n\n const s = schema as Record<string, unknown>;\n\n // Strip keywords Gemini rejects (OpenAPI 3.0 Schema Object subset)\n delete s['$schema'];\n delete s['additionalProperties'];\n delete s['propertyNames'];\n\n // Rewrite type arrays: `type: ['string', 'null']` → `type: 'string', nullable: true`\n if (Array.isArray(s['type'])) {\n const types = s['type'] as string[];\n const nonNull = types.filter(t => t !== 'null');\n const hasNull = types.includes('null');\n if (nonNull.length === 1) {\n s['type'] = nonNull[0];\n if (hasNull) s['nullable'] = true;\n } else if (nonNull.length === 0 && hasNull) {\n s['type'] = 'object';\n s['nullable'] = true;\n } else {\n // Multiple non-null types — can't represent as single OpenAPI 3.0 type.\n // Drop `type` entirely; don't emit a bare `nullable` (it's meaningless\n // without an accompanying type and Gemini may reject it).\n delete s['type'];\n delete s['nullable'];\n }\n }\n\n // Rewrite `oneOf` → `anyOf` (Gemini accepts anyOf but rejects oneOf)\n if (Array.isArray(s['oneOf'])) {\n s['anyOf'] = s['oneOf'];\n delete s['oneOf'];\n }\n\n // Rewrite `const: value` → `enum: [value]`\n if ('const' in s) {\n s['enum'] = [s['const']];\n delete s['const'];\n }\n\n // Fix tuple items: `items: [schema, ...]` (array form) → `items: { anyOf: [...] }` (single-schema)\n if (Array.isArray(s['items'])) {\n s['items'] = { anyOf: s['items'] };\n // Drop tuple-specific keywords that aren't in OpenAPI 3.0\n delete s['minItems'];\n delete s['maxItems'];\n }\n\n // Collapse nullable anyOf: `{ anyOf: [{ type: T }, { type: 'null' }] }` → `{ type: T, nullable: true }`\n if (Array.isArray(s['anyOf'])) {\n const variants = s['anyOf'] as Record<string, unknown>[];\n const nonNull = variants.filter(v => v && typeof v === 'object' && v['type'] !== 'null');\n const hasNull = variants.some(v => v && typeof v === 'object' && v['type'] === 'null');\n\n if (hasNull && nonNull.length === 1) {\n const base = nonNull[0]!;\n delete s['anyOf'];\n Object.assign(s, base);\n s['nullable'] = true;\n } else if (hasNull && nonNull.length > 1) {\n s['anyOf'] = nonNull;\n s['nullable'] = true;\n }\n }\n }\n\n #traverse(value: unknown, schema: Record<string, unknown>): unknown {\n const resolved = this.#resolveAnyOf(schema);\n\n if (resolved['x-date'] === true && typeof value === 'string') {\n return new Date(value);\n }\n\n const isArrayType =\n resolved.type === 'array' || (Array.isArray(resolved.type) && (resolved.type as string[]).includes('array'));\n if (isArrayType) {\n if (!Array.isArray(value)) {\n return value;\n }\n return value.map(item => this.#traverse(item, resolved.items as Record<string, unknown>));\n }\n\n const isObjectType =\n resolved.type === 'object' || (Array.isArray(resolved.type) && (resolved.type as string[]).includes('object'));\n if (!isObjectType) {\n return value;\n }\n\n const properties = resolved.properties as Record<string, Record<string, unknown>> | undefined;\n if (!properties || !value) {\n return value;\n }\n\n const obj = value as Record<string, unknown>;\n for (const key in obj) {\n if (properties[key]) {\n obj[key] = this.#traverse(obj[key], properties[key]);\n }\n }\n\n return obj;\n }\n\n #resolveAnyOf(schema: Record<string, unknown>): Record<string, unknown> {\n if (Array.isArray(schema.anyOf)) {\n const nonNull = (schema.anyOf as Record<string, unknown>[]).find(s => s.type !== 'null');\n if (nonNull) {\n return nonNull;\n }\n }\n\n return schema;\n }\n}\n","import type { JSONSchema7 } from 'json-schema';\nimport { z } from 'zod';\nimport type { ZodType as ZodTypeV3 } from 'zod/v3';\nimport type { ZodType as ZodTypeV4 } from 'zod/v4';\nimport type { Targets } from 'zod-to-json-schema';\nimport { jsonSchema } from '../json-schema';\nimport {\n isAllOfSchema,\n isArraySchema,\n isNumberSchema,\n isObjectSchema,\n isStringSchema,\n isUnionSchema,\n} from '../json-schema/utils';\nimport { SchemaCompatLayer } from '../schema-compatibility';\nimport type { PublicSchema } from '../schema.types';\nimport { standardSchemaToJSONSchema, toStandardSchema } from '../standard-schema/standard-schema';\nimport type { StandardSchemaWithJSON } from '../standard-schema/standard-schema.types';\nimport type { ModelInformation } from '../types';\nimport { isOptional, isObj, isArr, isUnion, isNumber, isString, isIntersection } from '../zodTypes';\n\nexport class MetaSchemaCompatLayer extends SchemaCompatLayer {\n constructor(model: ModelInformation) {\n super(model);\n }\n\n getSchemaTarget(): Targets | undefined {\n return 'jsonSchema7';\n }\n\n shouldApply(): boolean {\n return this.getModel().modelId.includes('meta');\n }\n\n processZodType(value: ZodTypeV3): ZodTypeV3;\n processZodType(value: ZodTypeV4): ZodTypeV4;\n processZodType(value: ZodTypeV3 | ZodTypeV4): ZodTypeV3 | ZodTypeV4 {\n if (isOptional(z)(value)) {\n return this.defaultZodOptionalHandler(value, ['ZodObject', 'ZodArray', 'ZodUnion', 'ZodString', 'ZodNumber']);\n } else if (isObj(z)(value)) {\n return this.defaultZodObjectHandler(value);\n } else if (isArr(z)(value)) {\n return this.defaultZodArrayHandler(value, ['min', 'max']);\n } else if (isUnion(z)(value)) {\n return this.defaultZodUnionHandler(value);\n } else if (isNumber(z)(value)) {\n return this.defaultZodNumberHandler(value);\n } else if (isString(z)(value)) {\n return this.defaultZodStringHandler(value);\n } else if (isIntersection(z)(value)) {\n return this.defaultZodIntersectionHandler(value);\n }\n\n return value;\n }\n\n processToAISDKSchema(zodSchema: ZodTypeV3 | ZodTypeV4) {\n const compat = this.processToCompatSchema(zodSchema);\n const transformedJsonSchema = standardSchemaToJSONSchema(compat);\n\n return jsonSchema(transformedJsonSchema, {\n validate: (value: unknown) => {\n const transformed = this.#traverse(value, transformedJsonSchema as Record<string, unknown>);\n const result = zodSchema.safeParse(transformed);\n return result.success ? { success: true, value: result.data } : { success: false, error: result.error };\n },\n });\n }\n\n public processToCompatSchema<T>(schema: PublicSchema<T>): StandardSchemaWithJSON<T> {\n const originalStandardSchema = toStandardSchema(schema);\n\n return {\n '~standard': {\n version: 1,\n vendor: 'mastra',\n validate: (value: unknown) => {\n const transformedJsonSchema = this.processToJSONSchema(schema, 'input') as Record<string, unknown>;\n const transformed = this.#traverse(value, transformedJsonSchema);\n return originalStandardSchema['~standard'].validate(transformed);\n },\n jsonSchema: {\n input: () => {\n return this.processToJSONSchema(schema, 'input') as Record<string, unknown>;\n },\n output: () => {\n return this.processToJSONSchema(schema, 'output') as Record<string, unknown>;\n },\n },\n },\n };\n }\n\n preProcessJSONNode(schema: JSONSchema7): void {\n if (isAllOfSchema(schema)) {\n this.defaultAllOfHandler(schema);\n }\n\n if (isObjectSchema(schema)) {\n this.defaultObjectHandler(schema);\n } else if (isArraySchema(schema)) {\n this.defaultArrayHandler(schema);\n } else if (isNumberSchema(schema)) {\n this.defaultNumberHandler(schema);\n } else if (isStringSchema(schema)) {\n this.defaultStringHandler(schema);\n }\n }\n\n postProcessJSONNode(schema: JSONSchema7): void {\n // Handle union schemas in post-processing (after children are processed)\n if (isUnionSchema(schema)) {\n this.defaultUnionHandler(schema);\n }\n }\n\n #traverse(value: unknown, schema: Record<string, unknown>): unknown {\n const resolved = this.#resolveAnyOf(schema);\n\n if (resolved['x-date'] === true && typeof value === 'string') {\n return new Date(value);\n }\n\n const isArrayType =\n resolved.type === 'array' || (Array.isArray(resolved.type) && (resolved.type as string[]).includes('array'));\n if (isArrayType) {\n if (!Array.isArray(value)) {\n return value;\n }\n return value.map(item => this.#traverse(item, resolved.items as Record<string, unknown>));\n }\n\n const isObjectType =\n resolved.type === 'object' || (Array.isArray(resolved.type) && (resolved.type as string[]).includes('object'));\n if (!isObjectType) {\n return value;\n }\n\n const properties = resolved.properties as Record<string, Record<string, unknown>> | undefined;\n if (!properties || !value) {\n return value;\n }\n\n const obj = value as Record<string, unknown>;\n for (const key in obj) {\n if (properties[key]) {\n obj[key] = this.#traverse(obj[key], properties[key]);\n }\n }\n\n return obj;\n }\n\n #resolveAnyOf(schema: Record<string, unknown>): Record<string, unknown> {\n if (Array.isArray(schema.anyOf)) {\n const nonNull = (schema.anyOf as Record<string, unknown>[]).find(s => s.type !== 'null');\n if (nonNull) {\n return nonNull;\n }\n }\n\n return schema;\n }\n}\n"],"mappings":";;;;;;;;;;;AACA,IAAIA,WAAS;AACb,IAAIC,WAAS,OAAO,IAAID,QAAM;AAC9B,IAAIE;AACJ,IAAI,cAAc,MAAM,oBAAoB,MAAM;;;;;;;;;CASjD,YAAY,EAAE,MAAM,QAAQ,SAAS,SAAS;EAC7C,MAAM,OAAO;EACb,KAAKA,QAAM;EACX,KAAK,OAAO;EACZ,KAAK,QAAQ;CACd;;;;;;CAMA,OAAO,WAAW,OAAO;EACxB,OAAO,YAAY,UAAU,OAAOF,QAAM;CAC3C;CACA,OAAO,UAAU,OAAO,UAAU;EACjC,MAAM,eAAe,OAAO,IAAI,QAAQ;EACxC,OAAO,SAAS,QAAQ,OAAO,UAAU,YAAY,gBAAgB,SAAS,OAAO,MAAM,kBAAkB,aAAa,MAAM,kBAAkB;CACnJ;AACD;AACA,OAAKC;AACL,IAAI,aAAa;AA2CjB,SAAS,gBAAgB,OAAO;CAC/B,IAAI,SAAS,MAAM,OAAO;CAC1B,IAAI,OAAO,UAAU,UAAU,OAAO;CACtC,IAAI,iBAAiB,OAAO,OAAO,MAAM;CACzC,OAAO,KAAK,UAAU,KAAK;AAC5B;AACA,IAAIU,UAAQ;AACZ,IAAIC,YAAU,mBAAmBD;AACjC,IAAIE,YAAU,OAAO,IAAID,SAAO;AAChC,IAAIE;AACJ,IAAI,uBAAuB,cAAc,WAAW;CACnD,YAAY,EAAE,SAAS,OAAO,YAAY;EACzC,MAAM;GACL,MAAMH;GACN;GACA;EACD,CAAC;EACD,KAAKG,SAAO;EACZ,KAAK,WAAW;CACjB;CACA,OAAO,WAAW,OAAO;EACxB,OAAO,WAAW,UAAU,OAAOF,SAAO;CAC3C;AACD;AACA,QAAMC;AAsCN,IAAIU,UAAQ;AACZ,IAAIC,YAAU,mBAAmBD;AACjC,IAAIE,YAAU,OAAO,IAAID,SAAO;AAChC,IAAIE;AACJ,IAAI,iBAAiB,cAAc,WAAW;CAC7C,YAAY,EAAE,MAAM,SAAS;EAC5B,MAAM;GACL,MAAMH;GACN,SAAS,8BAA8B,KAAK;iBAC9B,gBAAgB,KAAK;GACnC;EACD,CAAC;EACD,KAAKG,SAAO;EACZ,KAAK,OAAO;CACb;CACA,OAAO,WAAW,OAAO;EACxB,OAAO,WAAW,UAAU,OAAOF,SAAO;CAC3C;AACD;AACA,QAAMC;AAsDN,IAAIc,WAAS;AACb,IAAIC,aAAW,mBAAmBD;AAClC,IAAIE,aAAW,OAAO,IAAID,UAAQ;AAClC,IAAIE;AACJ,IAAI,uBAAuB,MAAM,6BAA6B,WAAW;CACxE,YAAY,EAAE,OAAO,SAAS;EAC7B,MAAM;GACL,MAAMH;GACN,SAAS,kCAAkC,KAAK,UAAU,KAAK,EAAE;iBACnD,gBAAgB,KAAK;GACnC;EACD,CAAC;EACD,KAAKG,UAAQ;EACb,KAAK,QAAQ;CACd;CACA,OAAO,WAAW,OAAO;EACxB,OAAO,WAAW,UAAU,OAAOF,UAAQ;CAC5C;;;;;;;;;;;CAWA,OAAO,KAAK,EAAE,OAAO,SAAS;EAC7B,OAAO,qBAAqB,WAAW,KAAK,KAAK,MAAM,UAAU,QAAQ,QAAQ,IAAI,qBAAqB;GACzG;GACA;EACD,CAAC;CACF;AACD;AACA,SAAOC;AACP,IAAI,sBAAsB;;;ACpP1B,IAAI,WAAW,OAAO;AACtB,IAAIM,cAAY,OAAO;AACvB,IAAI,mBAAmB,OAAO;AAC9B,IAAI,oBAAoB,OAAO;AAC/B,IAAI,eAAe,OAAO;AAC1B,IAAI,eAAe,OAAO,UAAU;AACpC,IAAI,iBAAiB,IAAI,eAAe,QAAQ,IAAI,MAAM,EAAE,SAAS,CAAC,EAAE,EAAA,CAAG,SAAS,GAAG,GAAG,KAAK,OAAO,IAAI;AAC1G,IAAI,eAAe,IAAI,MAAM,QAAQ,SAAS;CAC7C,IAAI,QAAQ,OAAO,SAAS,YAAY,OAAO,SAAS,YAAY,KAAK,IAAI,OAAO,kBAAkB,IAAI,GAAG,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK,IAAI,GAAG,KAAK;EACrJ,MAAM,KAAK;EACX,IAAI,CAAC,aAAa,KAAK,IAAI,GAAG,KAAK,QAAQ,QAAQ,YAAU,IAAI,KAAK;GACrE,OAAO,MAAM,KAAK,GAAA,CAAI,KAAK,MAAM,GAAG;GACpC,YAAY,EAAE,OAAO,iBAAiB,MAAM,GAAG,MAAM,KAAK;EAC3D,CAAC;CACF;CACA,OAAO;AACR;AACA,IAAI,WAAW,KAAK,YAAY,YAAY,SAAS,OAAO,OAAO,SAAS,aAAa,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,cAAc,CAAC,OAAO,CAAC,IAAI,aAAaA,YAAU,QAAQ,WAAW;CACrL,OAAO;CACP,YAAY;AACb,CAAC,IAAI,QAAQ,GAAG;AAIhB,IAAI,kBAAkB,UAAU,cAAc,OAAO;CACpD,QAAQ,OAAO,gBAAgB;EAC9B,IAAI,KAAK;EACT,IAAI,IAAI,OAAO;EACf,OAAO,KAAK,MAAM,SAAS,KAAK,OAAO,IAAI,SAAS,SAAS;EAC7D,OAAO;CACR;AACD;AAGA,IAAI,2BAA2C,yBAAyB,gCAAgB,SAAS,WAAW;CAC3G,MAAM,YAAY,OAAO,WAAW;CACpC,MAAM,iBAAiB;CACvB,MAAM,uBAAuB;CAC7B,SAAS,OAAO,MAAM,SAAS,SAAS;EACvC,IAAI,WAAW,MACV;OAAA,YAAY,QAAQ,OAAO,YAAY,UAAU;IACpD,UAAU;IACV,UAAU,KAAK;GAChB;;EAED,IAAI,aAAa,OAAO,SAAS,IAAI,GAAG,OAAO,KAAK,SAAS;EAC7D,IAAI,QAAQ,KAAK,WAAW,CAAC,MAAM,OAAO,OAAO,KAAK,MAAM,CAAC;EAC7D,MAAM,MAAM,KAAK,MAAM,MAAM,OAAO;EACpC,IAAI,QAAQ,QAAQ,OAAO,QAAQ,UAAU,OAAO;EACpD,MAAM,cAAc,WAAW,QAAQ,eAAe;EACtD,MAAM,oBAAoB,WAAW,QAAQ,qBAAqB;EAClE,IAAI,gBAAgB,YAAY,sBAAsB,UAAU,OAAO;EACvE,IAAI,gBAAgB,YAAY,sBAAsB,UACjD;OAAA,eAAe,KAAK,IAAI,MAAM,SAAS,qBAAqB,KAAK,IAAI,MAAM,OAAO,OAAO;EAAA,OACvF,IAAI,gBAAgB,YAAY,sBAAsB,UACxD;OAAA,eAAe,KAAK,IAAI,MAAM,OAAO,OAAO;EAAA,OAC1C,IAAI,qBAAqB,KAAK,IAAI,MAAM,OAAO,OAAO;EAC7D,OAAO,OAAO,KAAK;GAClB;GACA;GACA,MAAM,WAAW,QAAQ;EAC1B,CAAC;CACF;CACA,SAAS,OAAO,KAAK,EAAE,cAAc,SAAS,oBAAoB,SAAS,SAAS,CAAC,GAAG;EACvF,IAAI,OAAO,CAAC,GAAG;EACf,OAAO,KAAK,QAAQ;GACnB,MAAM,QAAQ;GACd,OAAO,CAAC;GACR,KAAK,MAAM,QAAQ,OAAO;IACzB,IAAI,gBAAgB,YAAY,OAAO,UAAU,eAAe,KAAK,MAAM,WAAW,GAAG;KACxF,IAAI,SAAS,MAAM,OAAO;UACrB,IAAI,gBAAgB,SAAS,MAAM,IAAI,YAAY,8CAA8C;KACtG,OAAO,KAAK;IACb;IACA,IAAI,sBAAsB,YAAY,OAAO,UAAU,eAAe,KAAK,MAAM,aAAa,KAAK,OAAO,UAAU,eAAe,KAAK,KAAK,aAAa,WAAW,GAAG;KACvK,IAAI,SAAS,MAAM,OAAO;UACrB,IAAI,sBAAsB,SAAS,MAAM,IAAI,YAAY,8CAA8C;KAC5G,OAAO,KAAK;IACb;IACA,KAAK,MAAM,OAAO,MAAM;KACvB,MAAM,QAAQ,KAAK;KACnB,IAAI,SAAS,OAAO,UAAU,UAAU,KAAK,KAAK,KAAK;IACxD;GACD;EACD;EACA,OAAO;CACR;CACA,SAAS,MAAM,MAAM,SAAS,SAAS;EACtC,MAAM,kBAAkB,MAAM;EAC9B,MAAM,kBAAkB;EACxB,IAAI;GACH,OAAO,OAAO,MAAM,SAAS,OAAO;EACrC,UAAU;GACT,MAAM,kBAAkB;EACzB;CACD;CACA,SAAS,UAAU,MAAM,SAAS;EACjC,MAAM,kBAAkB,MAAM;EAC9B,MAAM,kBAAkB;EACxB,IAAI;GACH,OAAO,OAAO,MAAM,SAAS,EAAE,MAAM,KAAK,CAAC;EAC5C,SAAS,IAAI;GACZ,OAAO;EACR,UAAU;GACT,MAAM,kBAAkB;EACzB;CACD;CACA,OAAO,UAAU;CACjB,OAAO,QAAQ,UAAU;CACzB,OAAO,QAAQ,QAAQ;CACvB,OAAO,QAAQ,YAAY;CAC3B,OAAO,QAAQ,OAAO;AACvB,EAAE,EAAA,CAAG,GAAG,CAAC;AACT,SAAS,qCAAqC,UAAU;CACvD,OAAO,IAAI,eAAe;;;;;;;EAOzB,MAAM,KAAK,YAAY;GACtB,IAAI;IACH,MAAM,EAAE,OAAO,SAAS,MAAM,SAAS,KAAK;IAC5C,IAAI,MAAM,WAAW,MAAM;SACtB,WAAW,QAAQ,KAAK;GAC9B,SAAS,OAAO;IACf,WAAW,MAAM,KAAK;GACvB;EACD;;;;EAIA,SAAS,CAAC;CACX,CAAC;AACF;AAsFA,IAAI,qBAAqB,EAAE,QAAQ,MAAM,cAAc,IAAI,WAAW,kEAAkE,YAAY,QAAQ,CAAC,MAAM;CAClK,MAAM,YAAY,eAAe,UAAU,WAAW;CACtD,IAAI,UAAU,MAAM,OAAO;CAC3B,IAAI,SAAS,SAAS,SAAS,GAAG,MAAM,IAAI,qBAAqB;EAChE,UAAU;EACV,SAAS,kBAAkB,UAAU,sCAAsC,SAAS;CACrF,CAAC;CACD,QAAQ,SAAS,GAAG,SAAS,YAAY,UAAU,IAAI;AACxD;AACiB,kBAAkB;AAUnC,IAAI,kBAAkB,OAAO,IAAI,qBAAqB;AACtD,SAAS,UAAU,UAAU;CAC5B,OAAO;GACL,kBAAkB;EACnB;CACD;AACD;AACA,SAAS,YAAY,OAAO;CAC3B,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,mBAAmB,SAAS,MAAM,qBAAqB,QAAQ,cAAc;AACpI;AACA,SAAS,YAAY,OAAO;CAC3B,OAAO,YAAY,KAAK,IAAI,QAAQ,aAAa,KAAK;AACvD;AACA,SAAS,aAAa,WAAW;CAChC,OAAO,WAAW,UAAU;EAC3B,MAAM,SAAS,UAAU,UAAU,KAAK;EACxC,OAAO,OAAO,UAAU;GACvB,SAAS;GACT,OAAO,OAAO;EACf,IAAI;GACH,SAAS;GACT,OAAO,OAAO;EACf;CACD,CAAC;AACF;AACA,SAAS,kBAAkB,EAAE,OAAO,UAAU;CAC7C,MAAM,aAAa,YAAY,MAAM;CACrC,IAAI;EACH,IAAI,WAAW,YAAY,MAAM,OAAO;GACvC,SAAS;GACT;EACD;EACA,MAAM,SAAS,WAAW,SAAS,KAAK;EACxC,IAAI,OAAO,SAAS,OAAO;EAC3B,OAAO;GACN,SAAS;GACT,OAAO,oBAAoB,KAAK;IAC/B;IACA,OAAO,OAAO;GACf,CAAC;EACF;CACD,SAAS,OAAO;EACf,OAAO;GACN,SAAS;GACT,OAAO,oBAAoB,KAAK;IAC/B;IACA,OAAO;GACR,CAAC;EACF;CACD;AACD;AACA,SAAS,cAAc,EAAE,MAAM,UAAU;CACxC,IAAI;EACH,MAAM,QAAQ,yBAAyB,QAAQ,MAAM,IAAI;EACzD,IAAI,UAAU,MAAM,OAAO;GAC1B,SAAS;GACT;GACA,UAAU;EACX;EACA,MAAM,mBAAmB,kBAAkB;GAC1C;GACA;EACD,CAAC;EACD,OAAO,iBAAiB,UAAU;GACjC,GAAG;GACH,UAAU;EACX,IAAI;CACL,SAAS,OAAO;EACf,OAAO;GACN,SAAS;GACT,OAAO,eAAe,WAAW,KAAK,IAAI,QAAQ,IAAI,eAAe;IACpE;IACA,OAAO;GACR,CAAC;EACF;CACD;AACD;AACA,IAAI,EAAE,MAAM,SAAS;;;AC3TrB,MAAM,iBAAiB,OAAO,mDAAmD;AACjF,MAAM,iBAAiB;CACtB,MAAM,KAAK;CACX,cAAc;CACd,UAAU,CAAC,GAAG;CACd,gBAAgB;CAChB,cAAc;CACd,cAAc;CACd,aAAa;CACb,0BAA0B;CAC1B,6BAA6B;CAC7B,8BAA8B;CAC9B,gBAAgB;CAChB,QAAQ;CACR,cAAc;CACd,aAAa,CAAC;CACd,eAAe;CACf,qBAAqB;CACrB,iBAAiB;CACjB,iBAAiB;CACjB,eAAe;CACf,gBAAgB;CAChB,cAAc;CACd,mBAAmB;AACpB;AACA,MAAM,qBAAqB,YAAY,OAAO,YAAY,WAAW;CACpE,GAAG;CACH,MAAM;AACP,IAAI;CACH,GAAG;CACH,GAAG;AACJ;AAGA,MAAM,WAAW,YAAY;CAC5B,MAAM,WAAW,kBAAkB,OAAO;CAC1C,MAAM,cAAc,SAAS,SAAS,KAAK,IAAI;EAC9C,GAAG,SAAS;EACZ,SAAS;EACT,SAAS;CACV,IAAI,SAAS;CACb,OAAO;EACN,GAAG;EACH,OAAO,EAAE,4BAA4B,MAAM;EAC3C;EACA,cAAc,KAAK;EACnB,MAAM,IAAI,IAAI,OAAO,QAAQ,SAAS,WAAW,CAAC,CAAC,KAAK,CAAC,MAAM,SAAS,CAAC,IAAI,MAAM;GAClF,KAAK,IAAI;GACT,MAAM;IACL,GAAG,SAAS;IACZ,SAAS;IACT;GACD;GACA,YAAY,KAAK;EAClB,CAAC,CAAC,CAAC;CACJ;AACD;AAGA,SAAS,gBAAgB,KAAK,KAAK,cAAc,MAAM;CACtD,IAAI,CAAC,MAAM,eAAe;CAC1B,IAAI,cAAc,IAAI,eAAe;EACpC,GAAG,IAAI;GACN,MAAM;CACR;AACD;AACA,SAAS,0BAA0B,KAAK,KAAK,OAAO,cAAc,MAAM;CACvE,IAAI,OAAO;CACX,gBAAgB,KAAK,KAAK,cAAc,IAAI;AAC7C;AAGA,MAAM,mBAAmB,OAAO,UAAU;CACzC,IAAI,IAAI;CACR,OAAO,IAAI,MAAM,UAAU,IAAI,MAAM,QAAQ,KAAK,IAAI,MAAM,OAAO,MAAM,IAAI;CAC7E,OAAO,EAAE,MAAM,SAAS,EAAA,CAAG,SAAS,GAAG,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;AACnE;AAGA,SAAS,YAAY,MAAM;CAC1B,IAAI,KAAK,WAAW,UAAU,OAAO,CAAC;CACtC,MAAM,oBAAoB;EACzB,GAAG,KAAK;EACR,KAAK;EACL,KAAK;CACN;CACA,KAAK,MAAM,6BAA6B;CACxC,OAAO,EAAE,MAAM,KAAK,iBAAiB,aAAa,gBAAgB,mBAAmB,KAAK,WAAW,IAAI,kBAAkB,KAAK,GAAG,EAAE;AACtI;AAGA,SAAS,cAAc,KAAK,MAAM;CACjC,MAAM,MAAM,EAAE,MAAM,QAAQ;CAC5B,IAAI,IAAI,MAAM,QAAQ,IAAI,MAAM,MAAM,aAAaC,OAAAA,sBAAsB,QAAQ,IAAI,QAAQ,SAAS,IAAI,KAAK,MAAM;EACpH,GAAG;EACH,aAAa,CAAC,GAAG,KAAK,aAAa,OAAO;CAC3C,CAAC;CACD,IAAI,IAAI,WAAW,0BAA0B,KAAK,YAAY,IAAI,UAAU,OAAO,IAAI,UAAU,SAAS,IAAI;CAC9G,IAAI,IAAI,WAAW,0BAA0B,KAAK,YAAY,IAAI,UAAU,OAAO,IAAI,UAAU,SAAS,IAAI;CAC9G,IAAI,IAAI,aAAa;EACpB,0BAA0B,KAAK,YAAY,IAAI,YAAY,OAAO,IAAI,YAAY,SAAS,IAAI;EAC/F,0BAA0B,KAAK,YAAY,IAAI,YAAY,OAAO,IAAI,YAAY,SAAS,IAAI;CAChG;CACA,OAAO;AACR;AAGA,SAAS,eAAe,KAAK,MAAM;CAClC,MAAM,MAAM;EACX,MAAM;EACN,QAAQ;CACT;CACA,IAAI,CAAC,IAAI,QAAQ,OAAO;CACxB,KAAK,MAAM,SAAS,IAAI,QAAQ,QAAQ,MAAM,MAAd;EAC/B,KAAK;GACJ,IAAI,KAAK,WAAW,eAAe,IAAI,MAAM,WAAW,0BAA0B,KAAK,WAAW,MAAM,OAAO,MAAM,SAAS,IAAI;QAC7H,0BAA0B,KAAK,oBAAoB,MAAM,OAAO,MAAM,SAAS,IAAI;QACnF;IACJ,IAAI,CAAC,MAAM,WAAW,IAAI,mBAAmB;IAC7C,0BAA0B,KAAK,WAAW,MAAM,OAAO,MAAM,SAAS,IAAI;GAC3E;GACA;EACD,KAAK;GACJ,IAAI,KAAK,WAAW,eAAe,IAAI,MAAM,WAAW,0BAA0B,KAAK,WAAW,MAAM,OAAO,MAAM,SAAS,IAAI;QAC7H,0BAA0B,KAAK,oBAAoB,MAAM,OAAO,MAAM,SAAS,IAAI;QACnF;IACJ,IAAI,CAAC,MAAM,WAAW,IAAI,mBAAmB;IAC7C,0BAA0B,KAAK,WAAW,MAAM,OAAO,MAAM,SAAS,IAAI;GAC3E;GACA;EACD,KAAK;GACJ,0BAA0B,KAAK,cAAc,MAAM,OAAO,MAAM,SAAS,IAAI;GAC7E;CACF;CACA,OAAO;AACR;AAGA,SAAS,kBAAkB;CAC1B,OAAO,EAAE,MAAM,UAAU;AAC1B;AAGA,SAAS,gBAAgB,MAAM,MAAM;CACpC,OAAO,SAAS,KAAK,KAAK,MAAM,IAAI;AACrC;AAGA,MAAM,iBAAiB,KAAK,SAAS;CACpC,OAAO,SAAS,IAAI,UAAU,MAAM,IAAI;AACzC;AAGA,SAAS,aAAa,KAAK,MAAM,sBAAsB;CACtD,MAAM,WAAW,wBAAwB,KAAK;CAC9C,IAAI,MAAM,QAAQ,QAAQ,GAAG,OAAO,EAAE,OAAO,SAAS,KAAK,MAAM,MAAM,aAAa,KAAK,MAAM,IAAI,CAAC,EAAE;CACtG,QAAQ,UAAR;EACC,KAAK;EACL,KAAK,oBAAoB,OAAO;GAC/B,MAAM;GACN,QAAQ;EACT;EACA,KAAK,eAAe,OAAO;GAC1B,MAAM;GACN,QAAQ;EACT;EACA,KAAK,WAAW,OAAO,kBAAkB,KAAK,IAAI;CACnD;AACD;AACA,MAAM,qBAAqB,KAAK,SAAS;CACxC,MAAM,MAAM;EACX,MAAM;EACN,QAAQ;CACT;CACA,IAAI,KAAK,WAAW,YAAY,OAAO;CACvC,KAAK,MAAM,SAAS,IAAI,QAAQ,QAAQ,MAAM,MAAd;EAC/B,KAAK;GACJ,0BAA0B,KAAK,WAAW,MAAM,OAAO,MAAM,SAAS,IAAI;GAC1E;EACD,KAAK;GACJ,0BAA0B,KAAK,WAAW,MAAM,OAAO,MAAM,SAAS,IAAI;GAC1E;CACF;CACA,OAAO;AACR;AAGA,SAAS,gBAAgB,MAAM,MAAM;CACpC,OAAO;EACN,GAAG,SAAS,KAAK,UAAU,MAAM,IAAI;EACrC,SAAS,KAAK,aAAa;CAC5B;AACD;AAGA,SAAS,gBAAgB,MAAM,MAAM;CACpC,OAAO,KAAK,mBAAmB,UAAU,SAAS,KAAK,OAAO,MAAM,IAAI,IAAI,YAAY,IAAI;AAC7F;AAGA,SAAS,aAAa,KAAK;CAC1B,OAAO;EACN,MAAM;EACN,MAAM,MAAM,KAAK,IAAI,MAAM;CAC5B;AACD;AAGA,MAAM,0BAA0B,SAAS;CACxC,IAAI,UAAU,QAAQ,KAAK,SAAS,UAAU,OAAO;CACrD,OAAO,WAAW;AACnB;AACA,SAAS,qBAAqB,KAAK,MAAM;CACxC,MAAM,QAAQ,CAAC,SAAS,IAAI,KAAK,MAAM;EACtC,GAAG;EACH,aAAa;GACZ,GAAG,KAAK;GACR;GACA;EACD;CACD,CAAC,GAAG,SAAS,IAAI,MAAM,MAAM;EAC5B,GAAG;EACH,aAAa;GACZ,GAAG,KAAK;GACR;GACA;EACD;CACD,CAAC,CAAC,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,CAAC;CACrB,IAAI,wBAAwB,KAAK,WAAW,sBAAsB,EAAE,uBAAuB,MAAM,IAAI,KAAK;CAC1G,MAAM,cAAc,CAAC;CACrB,MAAM,SAAS,WAAW;EACzB,IAAI,uBAAuB,MAAM,GAAG;GACnC,YAAY,KAAK,GAAG,OAAO,KAAK;GAChC,IAAI,OAAO,0BAA0B,KAAK,GAAG,wBAAwB,KAAK;EAC3E,OAAO;GACN,IAAI,eAAe;GACnB,IAAI,0BAA0B,UAAU,OAAO,yBAAyB,OAAO;IAC9E,MAAM,EAAE,sBAAsB,GAAG,SAAS;IAC1C,eAAe;GAChB,OAAO,wBAAwB,KAAK;GACpC,YAAY,KAAK,YAAY;EAC9B;CACD,CAAC;CACD,OAAO,YAAY,SAAS;EAC3B,OAAO;EACP,GAAG;CACJ,IAAI,KAAK;AACV;AAGA,SAAS,gBAAgB,KAAK,MAAM;CACnC,MAAM,aAAa,OAAO,IAAI;CAC9B,IAAI,eAAe,YAAY,eAAe,YAAY,eAAe,aAAa,eAAe,UAAU,OAAO,EAAE,MAAM,MAAM,QAAQ,IAAI,KAAK,IAAI,UAAU,SAAS;CAC5K,IAAI,KAAK,WAAW,YAAY,OAAO;EACtC,MAAM,eAAe,WAAW,YAAY;EAC5C,MAAM,CAAC,IAAI,KAAK;CACjB;CACA,OAAO;EACN,MAAM,eAAe,WAAW,YAAY;EAC5C,OAAO,IAAI;CACZ;AACD;AAGA,IAAI,aAAa,KAAK;;;;;;;AAOtB,MAAM,cAAc;;;;CAInB,MAAM;CACN,OAAO;CACP,MAAM;;;;CAIN,OAAO;;;;;;;;;;;;CAYP,aAAa;EACZ,IAAI,eAAe,KAAK,GAAG,aAAa,OAAO,wDAAwD,GAAG;EAC1G,OAAO;CACR;;;;CAIA,MAAM;;;;CAIN,MAAM;CACN,UAAU;;;;CAIV,MAAM;CACN,UAAU;CACV,QAAQ;CACR,WAAW;CACX,QAAQ;CACR,KAAK;AACN;AACA,SAAS,eAAe,KAAK,MAAM;CAClC,MAAM,MAAM,EAAE,MAAM,SAAS;CAC7B,IAAI,IAAI,QAAQ,KAAK,MAAM,SAAS,IAAI,QAAQ,QAAQ,MAAM,MAAd;EAC/C,KAAK;GACJ,0BAA0B,KAAK,aAAa,OAAO,IAAI,cAAc,WAAW,KAAK,IAAI,IAAI,WAAW,MAAM,KAAK,IAAI,MAAM,OAAO,MAAM,SAAS,IAAI;GACvJ;EACD,KAAK;GACJ,0BAA0B,KAAK,aAAa,OAAO,IAAI,cAAc,WAAW,KAAK,IAAI,IAAI,WAAW,MAAM,KAAK,IAAI,MAAM,OAAO,MAAM,SAAS,IAAI;GACvJ;EACD,KAAK;GACJ,QAAQ,KAAK,eAAb;IACC,KAAK;KACJ,UAAU,KAAK,SAAS,MAAM,SAAS,IAAI;KAC3C;IACD,KAAK;KACJ,UAAU,KAAK,aAAa,MAAM,SAAS,IAAI;KAC/C;IACD,KAAK;KACJ,WAAW,KAAK,YAAY,OAAO,MAAM,SAAS,IAAI;KACtD;GACF;GACA;EACD,KAAK;GACJ,UAAU,KAAK,OAAO,MAAM,SAAS,IAAI;GACzC;EACD,KAAK;GACJ,UAAU,KAAK,QAAQ,MAAM,SAAS,IAAI;GAC1C;EACD,KAAK;GACJ,WAAW,KAAK,MAAM,OAAO,MAAM,SAAS,IAAI;GAChD;EACD,KAAK;GACJ,WAAW,KAAK,YAAY,MAAM,MAAM,SAAS,IAAI;GACrD;EACD,KAAK;GACJ,WAAW,KAAK,YAAY,OAAO,MAAM,SAAS,IAAI;GACtD;EACD,KAAK;GACJ,WAAW,KAAK,OAAO,IAAI,wBAAwB,MAAM,OAAO,IAAI,GAAG,GAAG,MAAM,SAAS,IAAI;GAC7F;EACD,KAAK;GACJ,WAAW,KAAK,OAAO,GAAG,wBAAwB,MAAM,OAAO,IAAI,EAAE,EAAE,GAAG,MAAM,SAAS,IAAI;GAC7F;EACD,KAAK;GACJ,UAAU,KAAK,aAAa,MAAM,SAAS,IAAI;GAC/C;EACD,KAAK;GACJ,UAAU,KAAK,QAAQ,MAAM,SAAS,IAAI;GAC1C;EACD,KAAK;GACJ,UAAU,KAAK,QAAQ,MAAM,SAAS,IAAI;GAC1C;EACD,KAAK;GACJ,UAAU,KAAK,YAAY,MAAM,SAAS,IAAI;GAC9C;EACD,KAAK;GACJ,0BAA0B,KAAK,aAAa,OAAO,IAAI,cAAc,WAAW,KAAK,IAAI,IAAI,WAAW,MAAM,KAAK,IAAI,MAAM,OAAO,MAAM,SAAS,IAAI;GACvJ,0BAA0B,KAAK,aAAa,OAAO,IAAI,cAAc,WAAW,KAAK,IAAI,IAAI,WAAW,MAAM,KAAK,IAAI,MAAM,OAAO,MAAM,SAAS,IAAI;GACvJ;EACD,KAAK;GACJ,WAAW,KAAK,OAAO,wBAAwB,MAAM,OAAO,IAAI,CAAC,GAAG,MAAM,SAAS,IAAI;GACvF;EACD,KAAK;GACJ,IAAI,MAAM,YAAY,MAAM,UAAU,KAAK,QAAQ,MAAM,SAAS,IAAI;GACtE,IAAI,MAAM,YAAY,MAAM,UAAU,KAAK,QAAQ,MAAM,SAAS,IAAI;GACtE;EACD,KAAK;GACJ,WAAW,KAAK,YAAY,WAAW,MAAM,SAAS,IAAI;GAC1D;EACD,KAAK;GACJ,WAAW,KAAK,YAAY,KAAK,MAAM,SAAS,IAAI;GACpD;EACD,KAAK;GACJ,IAAI,MAAM,YAAY,MAAM,WAAW,KAAK,YAAY,UAAU,MAAM,SAAS,IAAI;GACrF,IAAI,MAAM,YAAY,MAAM,WAAW,KAAK,YAAY,UAAU,MAAM,SAAS,IAAI;GACrF;EACD,KAAK;GACJ,WAAW,KAAK,YAAY,MAAM,GAAG,MAAM,SAAS,IAAI;GACxD;EACD,KAAK;GACJ,WAAW,KAAK,YAAY,MAAM,MAAM,SAAS,IAAI;GACrD;EACD,KAAK;GACJ,QAAQ,KAAK,gBAAb;IACC,KAAK;KACJ,UAAU,KAAK,UAAU,MAAM,SAAS,IAAI;KAC5C;IACD,KAAK;KACJ,0BAA0B,KAAK,mBAAmB,UAAU,MAAM,SAAS,IAAI;KAC/E;IACD,KAAK;KACJ,WAAW,KAAK,YAAY,QAAQ,MAAM,SAAS,IAAI;KACvD;GACF;GACA;EACD,KAAK,UAAU,WAAW,KAAK,YAAY,QAAQ,MAAM,SAAS,IAAI;EACtE,KAAK;EACL,KAAK;EACL,KAAK,QAAQ;EACb;CACD;CACA,OAAO;AACR;AACA,SAAS,wBAAwB,SAAS,MAAM;CAC/C,OAAO,KAAK,oBAAoB,WAAW,sBAAsB,OAAO,IAAI;AAC7E;AACA,MAAM,gCAAgC,IAAI,IAAI,8DAA8D;AAC5G,SAAS,sBAAsB,QAAQ;CACtC,IAAI,SAAS;CACb,KAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;EACvC,IAAI,CAAC,cAAc,IAAI,OAAO,EAAE,GAAG,UAAU;EAC7C,UAAU,OAAO;CAClB;CACA,OAAO;AACR;AACA,SAAS,UAAU,QAAQ,OAAO,SAAS,MAAM;CAChD,IAAI,OAAO,UAAU,OAAO,OAAO,MAAM,MAAM,EAAE,MAAM,GAAG;EACzD,IAAI,CAAC,OAAO,OAAO,OAAO,QAAQ,CAAC;EACnC,IAAI,OAAO,QAAQ;GAClB,OAAO,MAAM,KAAK;IACjB,QAAQ,OAAO;IACf,GAAG,OAAO,gBAAgB,KAAK,iBAAiB,EAAE,cAAc,EAAE,QAAQ,OAAO,aAAa,OAAO,EAAE;GACxG,CAAC;GACD,OAAO,OAAO;GACd,IAAI,OAAO,cAAc;IACxB,OAAO,OAAO,aAAa;IAC3B,IAAI,OAAO,KAAK,OAAO,YAAY,CAAC,CAAC,WAAW,GAAG,OAAO,OAAO;GAClE;EACD;EACA,OAAO,MAAM,KAAK;GACjB,QAAQ;GACR,GAAG,WAAW,KAAK,iBAAiB,EAAE,cAAc,EAAE,QAAQ,QAAQ,EAAE;EACzE,CAAC;CACF,OAAO,0BAA0B,QAAQ,UAAU,OAAO,SAAS,IAAI;AACxE;AACA,SAAS,WAAW,QAAQ,OAAO,SAAS,MAAM;CACjD,IAAI,OAAO,WAAW,OAAO,OAAO,MAAM,MAAM,EAAE,OAAO,GAAG;EAC3D,IAAI,CAAC,OAAO,OAAO,OAAO,QAAQ,CAAC;EACnC,IAAI,OAAO,SAAS;GACnB,OAAO,MAAM,KAAK;IACjB,SAAS,OAAO;IAChB,GAAG,OAAO,gBAAgB,KAAK,iBAAiB,EAAE,cAAc,EAAE,SAAS,OAAO,aAAa,QAAQ,EAAE;GAC1G,CAAC;GACD,OAAO,OAAO;GACd,IAAI,OAAO,cAAc;IACxB,OAAO,OAAO,aAAa;IAC3B,IAAI,OAAO,KAAK,OAAO,YAAY,CAAC,CAAC,WAAW,GAAG,OAAO,OAAO;GAClE;EACD;EACA,OAAO,MAAM,KAAK;GACjB,SAAS,yBAAyB,OAAO,IAAI;GAC7C,GAAG,WAAW,KAAK,iBAAiB,EAAE,cAAc,EAAE,SAAS,QAAQ,EAAE;EAC1E,CAAC;CACF,OAAO,0BAA0B,QAAQ,WAAW,yBAAyB,OAAO,IAAI,GAAG,SAAS,IAAI;AACzG;AACA,SAAS,yBAAyB,OAAO,MAAM;CAC9C,IAAI,CAAC,KAAK,mBAAmB,CAAC,MAAM,OAAO,OAAO,MAAM;CACxD,MAAM,QAAQ;EACb,GAAG,MAAM,MAAM,SAAS,GAAG;EAC3B,GAAG,MAAM,MAAM,SAAS,GAAG;EAC3B,GAAG,MAAM,MAAM,SAAS,GAAG;CAC5B;CACA,MAAM,SAAS,MAAM,IAAI,MAAM,OAAO,YAAY,IAAI,MAAM;CAC5D,IAAI,UAAU;CACd,IAAI,YAAY;CAChB,IAAI,cAAc;CAClB,IAAI,cAAc;CAClB,KAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;EACvC,IAAI,WAAW;GACd,WAAW,OAAO;GAClB,YAAY;GACZ;EACD;EACA,IAAI,MAAM,GACL;OAAA,aACC;QAAA,OAAO,EAAE,CAAC,MAAM,OAAO,GAAG;KAC7B,IAAI,aAAa;MAChB,WAAW,OAAO;MAClB,WAAW,GAAG,OAAO,IAAI,GAAG,GAAG,OAAO,KAAK,YAAY;MACvD,cAAc;KACf,OAAO,IAAI,OAAO,IAAI,OAAO,OAAO,OAAO,IAAI,EAAE,EAAE,MAAM,OAAO,GAAG;MAClE,WAAW,OAAO;MAClB,cAAc;KACf,OAAO,WAAW,GAAG,OAAO,KAAK,OAAO,EAAE,CAAC,YAAY;KACvD;IACD;UACM,IAAI,OAAO,EAAE,CAAC,MAAM,OAAO,GAAG;IACpC,WAAW,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC,YAAY,EAAE;IACnD;GACD;;EAED,IAAI,MAAM,GACL;OAAA,OAAO,OAAO,KAAK;IACtB,WAAW;IACX;GACD,OAAO,IAAI,OAAO,OAAO,KAAK;IAC7B,WAAW;IACX;GACD;;EAED,IAAI,MAAM,KAAK,OAAO,OAAO,KAAK;GACjC,WAAW,cAAc,GAAG,OAAO,GAAG,QAAQ,IAAI,OAAO,GAAG;GAC5D;EACD;EACA,WAAW,OAAO;EAClB,IAAI,OAAO,OAAO,MAAM,YAAY;OAC/B,IAAI,eAAe,OAAO,OAAO,KAAK,cAAc;OACpD,IAAI,CAAC,eAAe,OAAO,OAAO,KAAK,cAAc;CAC3D;CACA,IAAI;EACH,IAAI,OAAO,OAAO;CACnB,QAAQ;EACP,QAAQ,KAAK,sCAAsC,KAAK,YAAY,KAAK,GAAG,EAAE,sEAAsE;EACpJ,OAAO,MAAM;CACd;CACA,OAAO;AACR;AAGA,SAAS,eAAe,KAAK,MAAM;CAClC,IAAI,KAAK,WAAW,UAAU,QAAQ,KAAK,8FAA8F;CACzI,IAAI,KAAK,WAAW,cAAc,IAAI,SAAS,KAAK,aAAaA,OAAAA,sBAAsB,SAAS,OAAO;EACtG,MAAM;EACN,UAAU,IAAI,QAAQ,KAAK;EAC3B,YAAY,IAAI,QAAQ,KAAK,OAAO,QAAQ,KAAK,SAAS;GACzD,GAAG;IACF,MAAM,SAAS,IAAI,UAAU,MAAM;IACnC,GAAG;IACH,aAAa;KACZ,GAAG,KAAK;KACR;KACA;IACD;GACD,CAAC,KAAK,YAAY,IAAI;EACvB,IAAI,CAAC,CAAC;EACN,sBAAsB,KAAK;CAC5B;CACA,MAAM,SAAS;EACd,MAAM;EACN,sBAAsB,SAAS,IAAI,UAAU,MAAM;GAClD,GAAG;GACH,aAAa,CAAC,GAAG,KAAK,aAAa,sBAAsB;EAC1D,CAAC,KAAK,KAAK;CACZ;CACA,IAAI,KAAK,WAAW,YAAY,OAAO;CACvC,IAAI,IAAI,SAAS,KAAK,aAAaA,OAAAA,sBAAsB,aAAa,IAAI,QAAQ,KAAK,QAAQ,QAAQ;EACtG,MAAM,EAAE,MAAM,GAAG,YAAY,eAAe,IAAI,QAAQ,MAAM,IAAI;EAClE,OAAO;GACN,GAAG;GACH,eAAe;EAChB;CACD,OAAO,IAAI,IAAI,SAAS,KAAK,aAAaA,OAAAA,sBAAsB,SAAS,OAAO;EAC/E,GAAG;EACH,eAAe,EAAE,MAAM,IAAI,QAAQ,KAAK,OAAO;CAChD;MACK,IAAI,IAAI,SAAS,KAAK,aAAaA,OAAAA,sBAAsB,cAAc,IAAI,QAAQ,KAAK,KAAK,KAAK,aAAaA,OAAAA,sBAAsB,aAAa,IAAI,QAAQ,KAAK,KAAK,KAAK,QAAQ,QAAQ;EACjM,MAAM,EAAE,MAAM,GAAG,YAAY,gBAAgB,IAAI,QAAQ,MAAM,IAAI;EACnE,OAAO;GACN,GAAG;GACH,eAAe;EAChB;CACD;CACA,OAAO;AACR;AAGA,SAAS,YAAY,KAAK,MAAM;CAC/B,IAAI,KAAK,gBAAgB,UAAU,OAAO,eAAe,KAAK,IAAI;CAClE,OAAO;EACN,MAAM;EACN,UAAU;EACV,OAAO;GACN,MAAM;GACN,OAAO,CAAC,SAAS,IAAI,QAAQ,MAAM;IAClC,GAAG;IACH,aAAa;KACZ,GAAG,KAAK;KACR;KACA;KACA;IACD;GACD,CAAC,KAAK,YAAY,IAAI,GAAG,SAAS,IAAI,UAAU,MAAM;IACrD,GAAG;IACH,aAAa;KACZ,GAAG,KAAK;KACR;KACA;KACA;IACD;GACD,CAAC,KAAK,YAAY,IAAI,CAAC;GACvB,UAAU;GACV,UAAU;EACX;CACD;AACD;AAGA,SAAS,mBAAmB,KAAK;CAChC,MAAM,SAAS,IAAI;CACnB,MAAM,eAAe,OAAO,KAAK,IAAI,MAAM,CAAC,CAAC,QAAQ,QAAQ;EAC5D,OAAO,OAAO,OAAO,OAAO,UAAU;CACvC,CAAC,CAAC,CAAC,KAAK,QAAQ,OAAO,IAAI;CAC3B,MAAM,cAAc,MAAM,KAAK,IAAI,IAAI,aAAa,KAAK,WAAW,OAAO,MAAM,CAAC,CAAC;CACnF,OAAO;EACN,MAAM,YAAY,WAAW,IAAI,YAAY,OAAO,WAAW,WAAW,WAAW,CAAC,UAAU,QAAQ;EACxG,MAAM;CACP;AACD;AAGA,SAAS,cAAc,MAAM;CAC5B,OAAO,KAAK,WAAW,WAAW,KAAK,IAAI,EAAE,KAAK,YAAY;EAC7D,GAAG;EACH,aAAa,CAAC,GAAG,KAAK,aAAa,KAAK;CACzC,CAAC,EAAE;AACJ;AAGA,SAAS,aAAa,MAAM;CAC3B,OAAO,KAAK,WAAW,aAAa;EACnC,MAAM,CAAC,MAAM;EACb,UAAU;CACX,IAAI,EAAE,MAAM,OAAO;AACpB;AAGA,MAAM,oBAAoB;CACzB,WAAW;CACX,WAAW;CACX,WAAW;CACX,YAAY;CACZ,SAAS;AACV;AACA,SAAS,cAAc,KAAK,MAAM;CACjC,IAAI,KAAK,WAAW,YAAY,OAAO,QAAQ,KAAK,IAAI;CACxD,MAAM,UAAU,IAAI,mBAAmB,MAAM,MAAM,KAAK,IAAI,QAAQ,OAAO,CAAC,IAAI,IAAI;CACpF,IAAI,QAAQ,OAAO,MAAM,EAAE,KAAK,YAAY,sBAAsB,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,KAAK,OAAO,OAAO,GAAG;EAC5G,MAAM,QAAQ,QAAQ,QAAQ,OAAO,MAAM;GAC1C,MAAM,OAAO,kBAAkB,EAAE,KAAK;GACtC,OAAO,QAAQ,CAAC,MAAM,SAAS,IAAI,IAAI,CAAC,GAAG,OAAO,IAAI,IAAI;EAC3D,GAAG,CAAC,CAAC;EACL,OAAO,EAAE,MAAM,MAAM,SAAS,IAAI,QAAQ,MAAM,GAAG;CACpD,OAAO,IAAI,QAAQ,OAAO,MAAM,EAAE,KAAK,aAAa,gBAAgB,CAAC,EAAE,WAAW,GAAG;EACpF,MAAM,QAAQ,QAAQ,QAAQ,KAAK,MAAM;GACxC,MAAM,OAAO,OAAO,EAAE,KAAK;GAC3B,QAAQ,MAAR;IACC,KAAK;IACL,KAAK;IACL,KAAK,WAAW,OAAO,CAAC,GAAG,KAAK,IAAI;IACpC,KAAK,UAAU,OAAO,CAAC,GAAG,KAAK,SAAS;IACxC,KAAK,UAAU,IAAI,EAAE,KAAK,UAAU,MAAM,OAAO,CAAC,GAAG,KAAK,MAAM;IAChE,SAAS,OAAO;GACjB;EACD,GAAG,CAAC,CAAC;EACL,IAAI,MAAM,WAAW,QAAQ,QAAQ;GACpC,MAAM,cAAc,MAAM,QAAQ,GAAG,GAAG,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;GAChE,OAAO;IACN,MAAM,YAAY,SAAS,IAAI,cAAc,YAAY;IACzD,MAAM,QAAQ,QAAQ,KAAK,MAAM;KAChC,OAAO,IAAI,SAAS,EAAE,KAAK,KAAK,IAAI,MAAM,CAAC,GAAG,KAAK,EAAE,KAAK,KAAK;IAChE,GAAG,CAAC,CAAC;GACN;EACD;CACD,OAAO,IAAI,QAAQ,OAAO,MAAM,EAAE,KAAK,aAAa,SAAS,GAAG,OAAO;EACtE,MAAM;EACN,MAAM,QAAQ,QAAQ,KAAK,MAAM,CAAC,GAAG,KAAK,GAAG,EAAE,KAAK,OAAO,QAAQ,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CAChG;CACA,OAAO,QAAQ,KAAK,IAAI;AACzB;AACA,MAAM,WAAW,KAAK,SAAS;CAC9B,MAAM,SAAS,IAAI,mBAAmB,MAAM,MAAM,KAAK,IAAI,QAAQ,OAAO,CAAC,IAAI,IAAI,QAAA,CAAS,KAAK,GAAG,MAAM,SAAS,EAAE,MAAM;EAC1H,GAAG;EACH,aAAa;GACZ,GAAG,KAAK;GACR;GACA,GAAG;EACJ;CACD,CAAC,CAAC,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,gBAAgB,OAAO,MAAM,YAAY,OAAO,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE;CACnG,OAAO,MAAM,SAAS,EAAE,MAAM,IAAI,KAAK;AACxC;AAGA,SAAS,iBAAiB,KAAK,MAAM;CACpC,IAAI;EACH;EACA;EACA;EACA;EACA;CACD,CAAC,CAAC,SAAS,IAAI,UAAU,KAAK,QAAQ,MAAM,CAAC,IAAI,UAAU,KAAK,UAAU,CAAC,IAAI,UAAU,KAAK,OAAO,SAAS;EAC7G,IAAI,KAAK,WAAW,YAAY,OAAO;GACtC,MAAM,kBAAkB,IAAI,UAAU,KAAK;GAC3C,UAAU;EACX;EACA,OAAO,EAAE,MAAM,CAAC,kBAAkB,IAAI,UAAU,KAAK,WAAW,MAAM,EAAE;CACzE;CACA,IAAI,KAAK,WAAW,YAAY;EAC/B,MAAM,OAAO,SAAS,IAAI,UAAU,MAAM;GACzC,GAAG;GACH,aAAa,CAAC,GAAG,KAAK,WAAW;EAClC,CAAC;EACD,IAAI,QAAQ,UAAU,MAAM,OAAO;GAClC,OAAO,CAAC,IAAI;GACZ,UAAU;EACX;EACA,OAAO,QAAQ;GACd,GAAG;GACH,UAAU;EACX;CACD;CACA,MAAM,OAAO,SAAS,IAAI,UAAU,MAAM;EACzC,GAAG;EACH,aAAa;GACZ,GAAG,KAAK;GACR;GACA;EACD;CACD,CAAC;CACD,OAAO,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,EAAE;AAClD;AAGA,SAAS,eAAe,KAAK,MAAM;CAClC,MAAM,MAAM,EAAE,MAAM,SAAS;CAC7B,IAAI,CAAC,IAAI,QAAQ,OAAO;CACxB,KAAK,MAAM,SAAS,IAAI,QAAQ,QAAQ,MAAM,MAAd;EAC/B,KAAK;GACJ,IAAI,OAAO;GACX,gBAAgB,KAAK,QAAQ,MAAM,SAAS,IAAI;GAChD;EACD,KAAK;GACJ,IAAI,KAAK,WAAW,eAAe,IAAI,MAAM,WAAW,0BAA0B,KAAK,WAAW,MAAM,OAAO,MAAM,SAAS,IAAI;QAC7H,0BAA0B,KAAK,oBAAoB,MAAM,OAAO,MAAM,SAAS,IAAI;QACnF;IACJ,IAAI,CAAC,MAAM,WAAW,IAAI,mBAAmB;IAC7C,0BAA0B,KAAK,WAAW,MAAM,OAAO,MAAM,SAAS,IAAI;GAC3E;GACA;EACD,KAAK;GACJ,IAAI,KAAK,WAAW,eAAe,IAAI,MAAM,WAAW,0BAA0B,KAAK,WAAW,MAAM,OAAO,MAAM,SAAS,IAAI;QAC7H,0BAA0B,KAAK,oBAAoB,MAAM,OAAO,MAAM,SAAS,IAAI;QACnF;IACJ,IAAI,CAAC,MAAM,WAAW,IAAI,mBAAmB;IAC7C,0BAA0B,KAAK,WAAW,MAAM,OAAO,MAAM,SAAS,IAAI;GAC3E;GACA;EACD,KAAK;GACJ,0BAA0B,KAAK,cAAc,MAAM,OAAO,MAAM,SAAS,IAAI;GAC7E;CACF;CACA,OAAO;AACR;AAGA,SAAS,eAAe,KAAK,MAAM;CAClC,MAAM,4BAA4B,KAAK,WAAW;CAClD,MAAM,SAAS;EACd,MAAM;EACN,YAAY,CAAC;CACd;CACA,MAAM,WAAW,CAAC;CAClB,MAAM,QAAQ,IAAI,MAAM;CACxB,KAAK,MAAM,YAAY,OAAO;EAC7B,IAAI,UAAU,MAAM;EACpB,IAAI,YAAY,KAAK,KAAK,QAAQ,SAAS,KAAK,GAAG;EACnD,IAAI,eAAe,eAAe,OAAO;EACzC,IAAI,gBAAgB,2BAA2B;GAC9C,IAAI,QAAQ,KAAK,aAAa,eAAe,UAAU,QAAQ,KAAK;GACpE,IAAI,CAAC,QAAQ,WAAW,GAAG,UAAU,QAAQ,SAAS;GACtD,eAAe;EAChB;EACA,MAAM,YAAY,SAAS,QAAQ,MAAM;GACxC,GAAG;GACH,aAAa;IACZ,GAAG,KAAK;IACR;IACA;GACD;GACA,cAAc;IACb,GAAG,KAAK;IACR;IACA;GACD;EACD,CAAC;EACD,IAAI,cAAc,KAAK,GAAG;EAC1B,OAAO,WAAW,YAAY;EAC9B,IAAI,CAAC,cAAc,SAAS,KAAK,QAAQ;CAC1C;CACA,IAAI,SAAS,QAAQ,OAAO,WAAW;CACvC,MAAM,uBAAuB,2BAA2B,KAAK,IAAI;CACjE,IAAI,yBAAyB,KAAK,GAAG,OAAO,uBAAuB;CACnE,OAAO;AACR;AACA,SAAS,2BAA2B,KAAK,MAAM;CAC9C,IAAI,IAAI,SAAS,KAAK,aAAa,YAAY,OAAO,SAAS,IAAI,SAAS,MAAM;EACjF,GAAG;EACH,aAAa,CAAC,GAAG,KAAK,aAAa,sBAAsB;CAC1D,CAAC;CACD,QAAQ,IAAI,aAAZ;EACC,KAAK,eAAe,OAAO,KAAK;EAChC,KAAK,UAAU,OAAO,KAAK;EAC3B,KAAK,SAAS,OAAO,KAAK,6BAA6B,WAAW,KAAK,8BAA8B,KAAK;CAC3G;AACD;AACA,SAAS,eAAe,QAAQ;CAC/B,IAAI;EACH,OAAO,OAAO,WAAW;CAC1B,QAAQ;EACP,OAAO;CACR;AACD;AAGA,MAAM,oBAAoB,KAAK,SAAS;CACvC,IAAI,KAAK,YAAY,SAAS,MAAM,KAAK,cAAc,SAAS,GAAG,OAAO,SAAS,IAAI,UAAU,MAAM,IAAI;CAC3G,MAAM,cAAc,SAAS,IAAI,UAAU,MAAM;EAChD,GAAG;EACH,aAAa;GACZ,GAAG,KAAK;GACR;GACA;EACD;CACD,CAAC;CACD,OAAO,cAAc,EAAE,OAAO,CAAC,EAAE,KAAK,YAAY,IAAI,EAAE,GAAG,WAAW,EAAE,IAAI,YAAY,IAAI;AAC7F;AAGA,MAAM,oBAAoB,KAAK,SAAS;CACvC,IAAI,KAAK,iBAAiB,SAAS,OAAO,SAAS,IAAI,GAAG,MAAM,IAAI;MAC/D,IAAI,KAAK,iBAAiB,UAAU,OAAO,SAAS,IAAI,IAAI,MAAM,IAAI;CAC3E,MAAM,IAAI,SAAS,IAAI,GAAG,MAAM;EAC/B,GAAG;EACH,aAAa;GACZ,GAAG,KAAK;GACR;GACA;EACD;CACD,CAAC;CACD,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS,IAAI,IAAI,MAAM;EAC1C,GAAG;EACH,aAAa;GACZ,GAAG,KAAK;GACR;GACA,IAAI,MAAM;EACX;CACD,CAAC,CAAC,CAAC,CAAC,QAAQ,MAAM,MAAM,KAAK,CAAC,EAAE;AACjC;AAGA,SAAS,gBAAgB,KAAK,MAAM;CACnC,OAAO,SAAS,IAAI,KAAK,MAAM,IAAI;AACpC;AAGA,SAAS,YAAY,KAAK,MAAM;CAC/B,MAAM,SAAS;EACd,MAAM;EACN,aAAa;EACb,OAAO,SAAS,IAAI,UAAU,MAAM;GACnC,GAAG;GACH,aAAa,CAAC,GAAG,KAAK,aAAa,OAAO;EAC3C,CAAC;CACF;CACA,IAAI,IAAI,SAAS,0BAA0B,QAAQ,YAAY,IAAI,QAAQ,OAAO,IAAI,QAAQ,SAAS,IAAI;CAC3G,IAAI,IAAI,SAAS,0BAA0B,QAAQ,YAAY,IAAI,QAAQ,OAAO,IAAI,QAAQ,SAAS,IAAI;CAC3G,OAAO;AACR;AAGA,SAAS,cAAc,KAAK,MAAM;CACjC,IAAI,IAAI,MAAM,OAAO;EACpB,MAAM;EACN,UAAU,IAAI,MAAM;EACpB,OAAO,IAAI,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,MAAM;GAC/C,GAAG;GACH,aAAa;IACZ,GAAG,KAAK;IACR;IACA,GAAG;GACJ;EACD,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,MAAM,KAAK,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;EAC3D,iBAAiB,SAAS,IAAI,KAAK,MAAM;GACxC,GAAG;GACH,aAAa,CAAC,GAAG,KAAK,aAAa,iBAAiB;EACrD,CAAC;CACF;MACK,OAAO;EACX,MAAM;EACN,UAAU,IAAI,MAAM;EACpB,UAAU,IAAI,MAAM;EACpB,OAAO,IAAI,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,MAAM;GAC/C,GAAG;GACH,aAAa;IACZ,GAAG,KAAK;IACR;IACA,GAAG;GACJ;EACD,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,MAAM,KAAK,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;CAC5D;AACD;AAGA,SAAS,kBAAkB,MAAM;CAChC,OAAO,EAAE,KAAK,YAAY,IAAI,EAAE;AACjC;AAGA,SAAS,gBAAgB,MAAM;CAC9B,OAAO,YAAY,IAAI;AACxB;AAGA,MAAM,oBAAoB,KAAK,SAAS;CACvC,OAAO,SAAS,IAAI,UAAU,MAAM,IAAI;AACzC;AAGA,MAAM,gBAAgB,KAAK,UAAU,SAAS;CAC7C,QAAQ,UAAR;EACC,KAAKA,OAAAA,sBAAsB,WAAW,OAAO,eAAe,KAAK,IAAI;EACrE,KAAKA,OAAAA,sBAAsB,WAAW,OAAO,eAAe,KAAK,IAAI;EACrE,KAAKA,OAAAA,sBAAsB,WAAW,OAAO,eAAe,KAAK,IAAI;EACrE,KAAKA,OAAAA,sBAAsB,WAAW,OAAO,eAAe,KAAK,IAAI;EACrE,KAAKA,OAAAA,sBAAsB,YAAY,OAAO,gBAAgB;EAC9D,KAAKA,OAAAA,sBAAsB,SAAS,OAAO,aAAa,KAAK,IAAI;EACjE,KAAKA,OAAAA,sBAAsB,cAAc,OAAO,kBAAkB,IAAI;EACtE,KAAKA,OAAAA,sBAAsB,SAAS,OAAO,aAAa,IAAI;EAC5D,KAAKA,OAAAA,sBAAsB,UAAU,OAAO,cAAc,KAAK,IAAI;EACnE,KAAKA,OAAAA,sBAAsB;EAC3B,KAAKA,OAAAA,sBAAsB,uBAAuB,OAAO,cAAc,KAAK,IAAI;EAChF,KAAKA,OAAAA,sBAAsB,iBAAiB,OAAO,qBAAqB,KAAK,IAAI;EACjF,KAAKA,OAAAA,sBAAsB,UAAU,OAAO,cAAc,KAAK,IAAI;EACnE,KAAKA,OAAAA,sBAAsB,WAAW,OAAO,eAAe,KAAK,IAAI;EACrE,KAAKA,OAAAA,sBAAsB,YAAY,OAAO,gBAAgB,KAAK,IAAI;EACvE,KAAKA,OAAAA,sBAAsB,SAAS,OAAO,aAAa,GAAG;EAC3D,KAAKA,OAAAA,sBAAsB,eAAe,OAAO,mBAAmB,GAAG;EACvE,KAAKA,OAAAA,sBAAsB,aAAa,OAAO,iBAAiB,KAAK,IAAI;EACzE,KAAKA,OAAAA,sBAAsB,aAAa,OAAO,iBAAiB,KAAK,IAAI;EACzE,KAAKA,OAAAA,sBAAsB,QAAQ,OAAO,YAAY,KAAK,IAAI;EAC/D,KAAKA,OAAAA,sBAAsB,QAAQ,OAAO,YAAY,KAAK,IAAI;EAC/D,KAAKA,OAAAA,sBAAsB,SAAS,aAAa,IAAI,OAAO,CAAC,CAAC;EAC9D,KAAKA,OAAAA,sBAAsB,YAAY,OAAO,gBAAgB,KAAK,IAAI;EACvE,KAAKA,OAAAA,sBAAsB;EAC3B,KAAKA,OAAAA,sBAAsB,UAAU,OAAO,cAAc,IAAI;EAC9D,KAAKA,OAAAA,sBAAsB,YAAY,OAAO,gBAAgB,KAAK,IAAI;EACvE,KAAKA,OAAAA,sBAAsB,QAAQ,OAAO,YAAY,IAAI;EAC1D,KAAKA,OAAAA,sBAAsB,YAAY,OAAO,gBAAgB,IAAI;EAClE,KAAKA,OAAAA,sBAAsB,YAAY,OAAO,gBAAgB,KAAK,IAAI;EACvE,KAAKA,OAAAA,sBAAsB,YAAY,OAAO,gBAAgB,KAAK,IAAI;EACvE,KAAKA,OAAAA,sBAAsB,aAAa,OAAO,iBAAiB,KAAK,IAAI;EACzE,KAAKA,OAAAA,sBAAsB,UAAU,OAAO,cAAc,KAAK,IAAI;EACnE,KAAKA,OAAAA,sBAAsB,aAAa,OAAO,iBAAiB,KAAK,IAAI;EACzE,KAAKA,OAAAA,sBAAsB;EAC3B,KAAKA,OAAAA,sBAAsB;EAC3B,KAAKA,OAAAA,sBAAsB,WAAW;EACtC,SAAS,SAAS,MAAM,KAAK,EAAA,CAAG,QAAQ;CACzC;AACD;AAGA,SAAS,SAAS,KAAK,MAAM,kBAAkB,OAAO;CACrD,MAAM,WAAW,KAAK,KAAK,IAAI,GAAG;CAClC,IAAI,KAAK,UAAU;EAClB,MAAM,iBAAiB,KAAK,WAAW,KAAK,MAAM,UAAU,eAAe;EAC3E,IAAI,mBAAmB,gBAAgB,OAAO;CAC/C;CACA,IAAI,YAAY,CAAC,iBAAiB;EACjC,MAAM,aAAa,QAAQ,UAAU,IAAI;EACzC,IAAI,eAAe,KAAK,GAAG,OAAO;CACnC;CACA,MAAM,UAAU;EACf;EACA,MAAM,KAAK;EACX,YAAY,KAAK;CAClB;CACA,KAAK,KAAK,IAAI,KAAK,OAAO;CAC1B,MAAM,qBAAqB,aAAa,KAAK,IAAI,UAAU,IAAI;CAC/D,MAAM,aAAa,OAAO,uBAAuB,aAAa,SAAS,mBAAmB,GAAG,IAAI,IAAI;CACrG,IAAI,YAAY,QAAQ,KAAK,MAAM,UAAU;CAC7C,IAAI,KAAK,aAAa;EACrB,MAAM,oBAAoB,KAAK,YAAY,YAAY,KAAK,IAAI;EAChE,QAAQ,aAAa;EACrB,OAAO;CACR;CACA,QAAQ,aAAa;CACrB,OAAO;AACR;AACA,MAAM,WAAW,MAAM,SAAS;CAC/B,QAAQ,KAAK,cAAb;EACC,KAAK,QAAQ,OAAO,EAAE,MAAM,KAAK,KAAK,KAAK,GAAG,EAAE;EAChD,KAAK,YAAY,OAAO,EAAE,MAAM,gBAAgB,KAAK,aAAa,KAAK,IAAI,EAAE;EAC7E,KAAK;EACL,KAAK;GACJ,IAAI,KAAK,KAAK,SAAS,KAAK,YAAY,UAAU,KAAK,KAAK,OAAO,OAAO,UAAU,KAAK,YAAY,WAAW,KAAK,GAAG;IACvH,QAAQ,KAAK,mCAAmC,KAAK,YAAY,KAAK,GAAG,EAAE,oBAAoB;IAC/F,OAAO,YAAY,IAAI;GACxB;GACA,OAAO,KAAK,iBAAiB,SAAS,YAAY,IAAI,IAAI,KAAK;CACjE;AACD;AACA,MAAM,WAAW,KAAK,MAAM,eAAe;CAC1C,IAAI,IAAI,aAAa;EACpB,WAAW,cAAc,IAAI;EAC7B,IAAI,KAAK,qBAAqB,WAAW,sBAAsB,IAAI;CACpE;CACA,OAAO;AACR;AAGA,MAAM,mBAAmB,QAAQ,YAAY;CAC5C,MAAM,OAAO,QAAQ,OAAO;CAC5B,IAAI,cAAc,OAAO,YAAY,YAAY,QAAQ,cAAc,OAAO,QAAQ,QAAQ,WAAW,CAAC,CAAC,QAAQ,KAAK,CAAC,MAAM,aAAa;EAC3I,GAAG;GACF,OAAO,SAAS,OAAO,MAAM;GAC7B,GAAG;GACH,aAAa;IACZ,GAAG,KAAK;IACR,KAAK;IACL;GACD;EACD,GAAG,IAAI,KAAK,YAAY,IAAI;CAC7B,IAAI,CAAC,CAAC,IAAI,KAAK;CACf,MAAM,OAAO,OAAO,YAAY,WAAW,UAAU,SAAS,iBAAiB,UAAU,KAAK,IAAI,SAAS;CAC3G,MAAM,OAAO,SAAS,OAAO,MAAM,SAAS,KAAK,IAAI,OAAO;EAC3D,GAAG;EACH,aAAa;GACZ,GAAG,KAAK;GACR,KAAK;GACL;EACD;CACD,GAAG,KAAK,KAAK,YAAY,IAAI;CAC7B,MAAM,QAAQ,OAAO,YAAY,YAAY,QAAQ,SAAS,KAAK,KAAK,QAAQ,iBAAiB,UAAU,QAAQ,OAAO,KAAK;CAC/H,IAAI,UAAU,KAAK,GAAG,KAAK,QAAQ;CACnC,IAAI,KAAK,MAAM,4BAA4B;EAC1C,IAAI,CAAC,aAAa,cAAc,CAAC;EACjC,IAAI,CAAC,YAAY,KAAK,oBAAoB,YAAY,KAAK,qBAAqB;GAC/E,MAAM;IACL;IACA;IACA;IACA;IACA;IACA;GACD;GACA,OAAO,EAAE,MAAM,KAAK,iBAAiB,aAAa,MAAM;IACvD,GAAG,KAAK;IACR,KAAK;IACL,KAAK;GACN,CAAC,CAAC,KAAK,GAAG,EAAE;EACb;CACD;CACA,MAAM,WAAW,SAAS,KAAK,IAAI,cAAc;EAChD,GAAG;GACF,KAAK,iBAAiB;CACxB,IAAI,OAAO;EACV,MAAM;GACL,GAAG,KAAK,iBAAiB,aAAa,CAAC,IAAI,KAAK;GAChD,KAAK;GACL;EACD,CAAC,CAAC,KAAK,GAAG;GACT,KAAK,iBAAiB;GACtB,GAAG;IACF,OAAO;EACT;CACD;CACA,IAAI,KAAK,WAAW,eAAe,SAAS,UAAU;MACjD,IAAI,KAAK,WAAW,uBAAuB,KAAK,WAAW,UAAU,SAAS,UAAU;CAC7F,IAAI,KAAK,WAAW,aAAa,WAAW,YAAY,WAAW,YAAY,WAAW,YAAY,UAAU,YAAY,MAAM,QAAQ,SAAS,IAAI,IAAI,QAAQ,KAAK,sGAAsG;CAC9Q,OAAO;AACR;AAGA,IAAI,cAAc;AAGlB,IAAI,iBAAiB;CACpB,MAAM;CACN,MAAM;CACN,QAAQ,UAAU;EACjB,IAAI,OAAO,UAAU,UAAU,MAAM,IAAI,MAAM,uCAAuC;EACtF,OAAO;GACN,MAAM;GACN;EACD;CACD;AACD;AACA,IAAI,kBAAkB;CACrB,MAAM;CACN,MAAM;CACN,QAAQ,UAAU;EACjB,IAAI,OAAO,UAAU,UAAU,MAAM,IAAI,MAAM,wCAAwC;EACvF,OAAO;GACN,MAAM;GACN;EACD;CACD;AACD;AACA,IAAI,6BAA6B;CAChC,MAAM;CACN,MAAM;CACN,QAAQ,UAAU;EACjB,IAAI,SAAS,QAAQ,OAAO,UAAU,YAAY,EAAE,QAAQ,UAAU,EAAE,UAAU,UAAU,EAAE,aAAa,UAAU,OAAO,MAAM,OAAO,YAAY,OAAO,MAAM,SAAS,YAAY,MAAM,SAAS,eAAe,CAAC,MAAM,QAAQ,MAAM,OAAO,KAAK,CAAC,MAAM,QAAQ,OAAO,SAAS,QAAQ,QAAQ,OAAO,SAAS,YAAY,UAAU,QAAQ,KAAK,SAAS,UAAU,UAAU,QAAQ,KAAK,QAAQ,QAAQ,OAAO,KAAK,SAAS,YAAY,WAAW,KAAK,QAAQ,OAAO,KAAK,KAAK,UAAU,QAAQ,GAAG,MAAM,IAAI,MAAM,kGAAkG;EACnmB,OAAO;GACN,MAAM;GACN;EACD;CACD;AACD;AACA,IAAI,iCAAiC;CACpC,MAAM;CACN,MAAM;CACN,QAAQ,UAAU;EACjB,IAAI,SAAS,QAAQ,OAAO,UAAU,YAAY,EAAE,cAAc,UAAU,EAAE,eAAe,UAAU,OAAO,MAAM,aAAa,YAAY,OAAO,MAAM,cAAc,UAAU,MAAM,IAAI,MAAM,mGAAmG;EACrS,OAAO;GACN,MAAM;GACN,OAAO;IACN,UAAU,MAAM;IAChB,WAAW,MAAM;GAClB;EACD;CACD;AACD;AACA,IAAI,wBAAwB;CAC3B,MAAM;CACN,MAAM;CACN,QAAQ,UAAU;EACjB,IAAI,SAAS,QAAQ,OAAO,UAAU,YAAY,EAAE,UAAU,UAAU,EAAE,UAAU,UAAU,OAAO,MAAM,SAAS,YAAY,MAAM,SAAS,QAAQ,MAAM,IAAI,MAAM,gFAAgF;EACvP,OAAO;GACN,MAAM;GACN;EACD;CACD;AACD;AACA,IAAI,uBAAuB;CAC1B;CACA;CACA;CACA;CACA;AACD;AAEE,eAAe,MACf,gBAAgB,MAChB,2BAA2B,MAC3B,+BAA+B,MAC/B,sBAAsB;AAExB,eAAe,MAAM,eAAe,MAAM,gBAAgB,MAAM,gBAAgB,MAAM,2BAA2B,MAAM,2BAA2B,MAAM,+BAA+B,MAAM,+BAA+B,MAAM,sBAAsB,MAAM,sBAAsB;AACnQ,qBAAqB,KAAK,SAAS,KAAK,IAAI;AAiB7D,SAAS,QAAQ,OAAO;CACvB,MAAM,QAAQ,CAAC,MAAM;CACrB,IAAI,iBAAiB;CACrB,IAAI,eAAe;CACnB,SAAS,kBAAkB,MAAM,GAAG,WAAW;EAC9C,QAAQ,MAAR;GACC,KAAK;IACJ,iBAAiB;IACjB,MAAM,IAAI;IACV,MAAM,KAAK,SAAS;IACpB,MAAM,KAAK,eAAe;IAC1B;GACD,KAAK;GACL,KAAK;GACL,KAAK;IACJ,iBAAiB;IACjB,eAAe;IACf,MAAM,IAAI;IACV,MAAM,KAAK,SAAS;IACpB,MAAM,KAAK,gBAAgB;IAC3B;GACD,KAAK;IACJ,MAAM,IAAI;IACV,MAAM,KAAK,SAAS;IACpB,MAAM,KAAK,eAAe;IAC1B;GACD,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;IACJ,iBAAiB;IACjB,MAAM,IAAI;IACV,MAAM,KAAK,SAAS;IACpB,MAAM,KAAK,eAAe;IAC1B;GACD,KAAK;IACJ,iBAAiB;IACjB,MAAM,IAAI;IACV,MAAM,KAAK,SAAS;IACpB,MAAM,KAAK,qBAAqB;IAChC;GACD,KAAK;IACJ,iBAAiB;IACjB,MAAM,IAAI;IACV,MAAM,KAAK,SAAS;IACpB,MAAM,KAAK,oBAAoB;IAC/B;EACF;CACD;CACA,SAAS,wBAAwB,MAAM,GAAG;EACzC,QAAQ,MAAR;GACC,KAAK;IACJ,MAAM,IAAI;IACV,MAAM,KAAK,2BAA2B;IACtC;GACD,KAAK;IACJ,iBAAiB;IACjB,MAAM,IAAI;IACV;EACF;CACD;CACA,SAAS,uBAAuB,MAAM,GAAG;EACxC,QAAQ,MAAR;GACC,KAAK;IACJ,MAAM,IAAI;IACV,MAAM,KAAK,0BAA0B;IACrC;GACD,KAAK;IACJ,iBAAiB;IACjB,MAAM,IAAI;IACV;EACF;CACD;CACA,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;EACtC,MAAM,OAAO,MAAM;EACnB,QAAQ,MAAM,MAAM,SAAS,IAA7B;GACC,KAAK;IACJ,kBAAkB,MAAM,GAAG,QAAQ;IACnC;GACD,KAAK;IACJ,QAAQ,MAAR;KACC,KAAK;MACJ,MAAM,IAAI;MACV,MAAM,KAAK,mBAAmB;MAC9B;KACD,KAAK;MACJ,iBAAiB;MACjB,MAAM,IAAI;MACV;IACF;IACA;GACD,KAAK;IACJ,QAAQ,MAAR;KACC,KAAK;MACJ,MAAM,IAAI;MACV,MAAM,KAAK,mBAAmB;MAC9B;IACF;IACA;GACD,KAAK;IACJ,QAAQ,MAAR;KACC,KAAK;MACJ,MAAM,IAAI;MACV,MAAM,KAAK,yBAAyB;MACpC;IACF;IACA;GACD,KAAK;IACJ,QAAQ,MAAR;KACC,KAAK;MACJ,MAAM,IAAI;MACV,MAAM,KAAK,4BAA4B;MACvC;IACF;IACA;GACD,KAAK;IACJ,kBAAkB,MAAM,GAAG,2BAA2B;IACtD;GACD,KAAK;IACJ,wBAAwB,MAAM,CAAC;IAC/B;GACD,KAAK;IACJ,QAAQ,MAAR;KACC,KAAK;MACJ,MAAM,IAAI;MACV,iBAAiB;MACjB;KACD,KAAK;MACJ,MAAM,KAAK,sBAAsB;MACjC;KACD,SAAS,iBAAiB;IAC3B;IACA;GACD,KAAK;IACJ,QAAQ,MAAR;KACC,KAAK;MACJ,iBAAiB;MACjB,MAAM,IAAI;MACV;KACD;MACC,iBAAiB;MACjB,kBAAkB,MAAM,GAAG,0BAA0B;MACrD;IACF;IACA;GACD,KAAK;IACJ,QAAQ,MAAR;KACC,KAAK;MACJ,MAAM,IAAI;MACV,MAAM,KAAK,0BAA0B;MACrC;KACD,KAAK;MACJ,iBAAiB;MACjB,MAAM,IAAI;MACV;KACD;MACC,iBAAiB;MACjB;IACF;IACA;GACD,KAAK;IACJ,kBAAkB,MAAM,GAAG,0BAA0B;IACrD;GACD,KAAK;IACJ,MAAM,IAAI;IACV,iBAAiB;IACjB;GACD,KAAK;IACJ,QAAQ,MAAR;KACC,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;MACJ,iBAAiB;MACjB;KACD,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK,KAAK;KACV,KAAK;MACJ,MAAM,IAAI;MACV,IAAI,MAAM,MAAM,SAAS,OAAO,4BAA4B,uBAAuB,MAAM,CAAC;MAC1F,IAAI,MAAM,MAAM,SAAS,OAAO,6BAA6B,wBAAwB,MAAM,CAAC;MAC5F;KACD,KAAK;MACJ,MAAM,IAAI;MACV,IAAI,MAAM,MAAM,SAAS,OAAO,6BAA6B,wBAAwB,MAAM,CAAC;MAC5F;KACD,KAAK;MACJ,MAAM,IAAI;MACV,IAAI,MAAM,MAAM,SAAS,OAAO,4BAA4B,uBAAuB,MAAM,CAAC;MAC1F;KACD;MACC,MAAM,IAAI;MACV;IACF;IACA;GACD,KAAK,kBAAkB;IACtB,MAAM,iBAAiB,MAAM,UAAU,cAAc,IAAI,CAAC;IAC1D,IAAI,CAAC,QAAQ,WAAW,cAAc,KAAK,CAAC,OAAO,WAAW,cAAc,KAAK,CAAC,OAAO,WAAW,cAAc,GAAG;KACpH,MAAM,IAAI;KACV,IAAI,MAAM,MAAM,SAAS,OAAO,6BAA6B,wBAAwB,MAAM,CAAC;UACvF,IAAI,MAAM,MAAM,SAAS,OAAO,4BAA4B,uBAAuB,MAAM,CAAC;IAChG,OAAO,iBAAiB;IACxB;GACD;EACD;CACD;CACA,IAAI,SAAS,MAAM,MAAM,GAAG,iBAAiB,CAAC;CAC9C,KAAK,IAAI,IAAI,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK,QAAQ,MAAM,IAAd;EAC3C,KAAK;GACJ,UAAU;GACV;EACD,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;GACJ,UAAU;GACV;EACD,KAAK;EACL,KAAK;EACL,KAAK;GACJ,UAAU;GACV;EACD,KAAK,kBAAkB;GACtB,MAAM,iBAAiB,MAAM,UAAU,cAAc,MAAM,MAAM;GACjE,IAAI,OAAO,WAAW,cAAc,GAAG,UAAU,OAAO,MAAM,eAAe,MAAM;QAC9E,IAAI,QAAQ,WAAW,cAAc,GAAG,UAAU,QAAQ,MAAM,eAAe,MAAM;QACrF,IAAI,OAAO,WAAW,cAAc,GAAG,UAAU,OAAO,MAAM,eAAe,MAAM;EACzF;CACD;CACA,OAAO;AACR;AACA,SAAS,iBAAiB,UAAU;CACnC,IAAI,aAAa,KAAK,GAAG,OAAO;EAC/B,OAAO,KAAK;EACZ,OAAO;CACR;CACA,IAAI,SAAS,cAAc,EAAE,MAAM,SAAS,CAAC;CAC7C,IAAI,OAAO,SAAS,OAAO;EAC1B,OAAO,OAAO;EACd,OAAO;CACR;CACA,SAAS,cAAc,EAAE,MAAM,QAAQ,QAAQ,EAAE,CAAC;CAClD,IAAI,OAAO,SAAS,OAAO;EAC1B,OAAO,OAAO;EACd,OAAO;CACR;CACA,OAAO;EACN,OAAO,KAAK;EACZ,OAAO;CACR;AACD;AACA,IAAI,kBAAkB;CACrB;EACC,MAAM;EACN,MAAM;EACN,QAAQ,UAAU;GACjB,IAAI,OAAO,UAAU,UAAU,MAAM,IAAI,MAAM,uCAAuC;GACtF,OAAO;IACN,MAAM;IACN;GACD;EACD;CACD;CACA;EACC,MAAM;EACN,MAAM;EACN,QAAQ,UAAU;GACjB,IAAI,CAAC,MAAM,QAAQ,KAAK,GAAG,MAAM,IAAI,MAAM,uCAAuC;GAClF,OAAO;IACN,MAAM;IACN;GACD;EACD;CACD;CACA;EACC,MAAM;EACN,MAAM;EACN,QAAQ,UAAU;GACjB,IAAI,OAAO,UAAU,UAAU,MAAM,IAAI,MAAM,wCAAwC;GACvF,OAAO;IACN,MAAM;IACN;GACD;EACD;CACD;CACA;EACC,MAAM;EACN,MAAM;EACN,QAAQ,UAAU;GACjB,IAAI,CAAC,MAAM,QAAQ,KAAK,GAAG,MAAM,IAAI,MAAM,sDAAsD;GACjG,OAAO;IACN,MAAM;IACN;GACD;EACD;CACD;CACA;EACC,MAAM;EACN,MAAM;EACN,QAAQ,UAAU;GACjB,IAAI,SAAS,QAAQ,OAAO,UAAU,YAAY,EAAE,gBAAgB,UAAU,OAAO,MAAM,eAAe,YAAY,EAAE,cAAc,UAAU,OAAO,MAAM,aAAa,YAAY,EAAE,UAAU,UAAU,OAAO,MAAM,SAAS,UAAU,MAAM,IAAI,MAAM,kGAAkG;GAC9V,OAAO;IACN,MAAM;IACN;GACD;EACD;CACD;CACA;EACC,MAAM;EACN,MAAM;EACN,QAAQ,UAAU;GACjB,IAAI,SAAS,QAAQ,OAAO,UAAU,YAAY,EAAE,gBAAgB,UAAU,OAAO,MAAM,eAAe,YAAY,EAAE,YAAY,QAAQ,MAAM,IAAI,MAAM,yFAAyF;GACrP,OAAO;IACN,MAAM;IACN;GACD;EACD;CACD;CACA;EACC,MAAM;EACN,MAAM;EACN,QAAQ,UAAU;GACjB,IAAI,SAAS,QAAQ,OAAO,UAAU,YAAY,EAAE,gBAAgB,UAAU,OAAO,MAAM,eAAe,YAAY,EAAE,cAAc,UAAU,OAAO,MAAM,aAAa,UAAU,MAAM,IAAI,MAAM,uGAAuG;GAC3S,OAAO;IACN,MAAM;IACN;GACD;EACD;CACD;CACA;EACC,MAAM;EACN,MAAM;EACN,QAAQ,UAAU;GACjB,IAAI,SAAS,QAAQ,OAAO,UAAU,YAAY,EAAE,gBAAgB,UAAU,OAAO,MAAM,eAAe,YAAY,EAAE,mBAAmB,UAAU,OAAO,MAAM,kBAAkB,UAAU,MAAM,IAAI,MAAM,kGAAkG;GAChT,OAAO;IACN,MAAM;IACN;GACD;EACD;CACD;CACA;EACC,MAAM;EACN,MAAM;EACN,QAAQ,UAAU;GACjB,IAAI,SAAS,QAAQ,OAAO,UAAU,YAAY,EAAE,kBAAkB,UAAU,OAAO,MAAM,iBAAiB,UAAU,MAAM,IAAI,MAAM,6EAA6E;GACrN,MAAM,SAAS,EAAE,cAAc,MAAM,aAAa;GAClD,IAAI,WAAW,SAAS,MAAM,SAAS,QAAQ,OAAO,MAAM,UAAU,YAAY,kBAAkB,MAAM,SAAS,sBAAsB,MAAM,OAAO,OAAO,QAAQ;IACpK,cAAc,OAAO,MAAM,MAAM,iBAAiB,WAAW,MAAM,MAAM,eAAe;IACxF,kBAAkB,OAAO,MAAM,MAAM,qBAAqB,WAAW,MAAM,MAAM,mBAAmB;GACrG;GACA,OAAO;IACN,MAAM;IACN,OAAO;GACR;EACD;CACD;CACA;EACC,MAAM;EACN,MAAM;EACN,QAAQ,UAAU;GACjB,IAAI,SAAS,QAAQ,OAAO,UAAU,YAAY,EAAE,kBAAkB,UAAU,OAAO,MAAM,iBAAiB,UAAU,MAAM,IAAI,MAAM,0EAA0E;GAClN,MAAM,SAAS;IACd,cAAc,MAAM;IACpB,aAAa;GACd;GACA,IAAI,WAAW,SAAS,MAAM,SAAS,QAAQ,OAAO,MAAM,UAAU,YAAY,kBAAkB,MAAM,SAAS,sBAAsB,MAAM,OAAO,OAAO,QAAQ;IACpK,cAAc,OAAO,MAAM,MAAM,iBAAiB,WAAW,MAAM,MAAM,eAAe;IACxF,kBAAkB,OAAO,MAAM,MAAM,qBAAqB,WAAW,MAAM,MAAM,mBAAmB;GACrG;GACA,IAAI,iBAAiB,SAAS,OAAO,MAAM,gBAAgB,WAAW,OAAO,cAAc,MAAM;GACjG,OAAO;IACN,MAAM;IACN,OAAO;GACR;EACD;CACD;CACA;EACC,MAAM;EACN,MAAM;EACN,QAAQ,UAAU;GACjB,IAAI,SAAS,QAAQ,OAAO,UAAU,YAAY,EAAE,eAAe,UAAU,OAAO,MAAM,cAAc,UAAU,MAAM,IAAI,MAAM,gEAAgE;GAClM,OAAO;IACN,MAAM;IACN,OAAO,EAAE,WAAW,MAAM,UAAU;GACrC;EACD;CACD;CACA;EACC,MAAM;EACN,MAAM;EACN,QAAQ,UAAU;GACjB,IAAI,OAAO,UAAU,UAAU,MAAM,IAAI,MAAM,4CAA4C;GAC3F,OAAO;IACN,MAAM;IACN;GACD;EACD;CACD;CACA;EACC,MAAM;EACN,MAAM;EACN,QAAQ,UAAU;GACjB,IAAI,SAAS,QAAQ,OAAO,UAAU,UAAU,MAAM,IAAI,MAAM,0CAA0C;GAC1G,OAAO;IACN,MAAM;IACN;GACD;EACD;CACD;CACA;EACC,MAAM;EACN,MAAM;EACN,QAAQ,UAAU;GACjB,IAAI,SAAS,QAAQ,OAAO,UAAU,YAAY,EAAE,UAAU,UAAU,OAAO,MAAM,SAAS,UAAU,MAAM,IAAI,MAAM,yEAAyE;GACjM,OAAO;IACN,MAAM;IACN,OAAO,EAAE,MAAM,MAAM,KAAK;GAC3B;EACD;CACD;CACA;EACC,MAAM;EACN,MAAM;EACN,QAAQ,UAAU;GACjB,IAAI,SAAS,QAAQ,OAAO,UAAU,YAAY,EAAE,eAAe,UAAU,OAAO,MAAM,cAAc,UAAU,MAAM,IAAI,MAAM,+EAA+E;GACjN,OAAO;IACN,MAAM;IACN,OAAO,EAAE,WAAW,MAAM,UAAU;GACrC;EACD;CACD;CACA;EACC,MAAM;EACN,MAAM;EACN,QAAQ,UAAU;GACjB,IAAI,SAAS,QAAQ,OAAO,UAAU,YAAY,EAAE,UAAU,UAAU,OAAO,MAAM,SAAS,YAAY,EAAE,cAAc,UAAU,OAAO,MAAM,aAAa,UAAU,MAAM,IAAI,MAAM,4EAA4E;GACpQ,OAAO;IACN,MAAM;IACN;GACD;EACD;CACD;AACD;AAC4B,OAAO,YAAY,gBAAgB,KAAK,SAAS,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC;AAC/F,OAAO,YAAY,gBAAgB,KAAK,SAAS,CAAC,KAAK,MAAM,KAAK,IAAI,CAAC,CAAC;AACtD,gBAAgB,KAAK,SAAS,KAAK,IAAI;AAWzD,SAAS,qBAAqB,MAAM,OAAO;CAC1C,MAAM,aAAa,gBAAgB,MAAM,SAAS,KAAK,SAAS,IAAI;CACpE,IAAI,CAAC,YAAY,MAAM,IAAI,MAAM,6BAA6B,MAAM;CACpE,OAAO,GAAG,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK,EAAE;;AAEpD;AACc,KAAK,WAAW,CAAC;AAkH/B,KAAK,WAAW,CAAC;AACjB,SAAS,UAAU,YAAY,SAAS;CACvC,IAAI;CACJ,OAAO,WAAW,YAAY,YAAY;EACzC,gBAAgB,KAAK,WAAW,OAAO,KAAK,IAAI,QAAQ,kBAAkB,OAAO,KAAK,SAAS,SAAS;EACxG,QAAQ;CACT,CAAC,GAAG,EAAE,WAAW,UAAU;EAC1B,MAAM,SAAS,WAAW,UAAU,KAAK;EACzC,OAAO,OAAO,UAAU;GACvB,SAAS;GACT,OAAO,OAAO;EACf,IAAI;GACH,SAAS;GACT,OAAO,OAAO;EACf;CACD,EAAE,CAAC;AACJ;AACA,IAAI,eAAe,OAAO,IAAI,kBAAkB;AAChD,SAAS,WAAW,aAAa,EAAE,aAAa,CAAC,GAAG;CACnD,OAAO;GACL,eAAe;EAChB,OAAO,KAAK;GACX,kBAAkB;EACnB,YAAY;EACZ;CACD;AACD;AACA,SAAS,SAAS,OAAO;CACxB,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,gBAAgB,SAAS,MAAM,kBAAkB,QAAQ,gBAAgB,SAAS,cAAc;AACvJ;AACA,SAAS,SAAS,QAAQ;CACzB,OAAO,SAAS,MAAM,IAAI,SAAS,UAAU,MAAM;AACpD;;AAIA,IAAI,cAAc,OAAO,eAAe,WAAW,aAAa;AAGhE,IAAI,UAAU;AAGd,IAAI,KAAK;;;;;;;;;;;;;;;;;AAiBT,SAAS,wBAAwB,YAAY;CAC5C,IAAI,mCAAmC,IAAI,IAAI,CAAC,UAAU,CAAC;CAC3D,IAAI,mCAAmC,IAAI,IAAI;CAC/C,IAAI,iBAAiB,WAAW,MAAM,EAAE;CACxC,IAAI,CAAC,gBAAgB,OAAO,WAAW;EACtC,OAAO;CACR;CACA,IAAI,mBAAmB;EACtB,OAAO,CAAC,eAAe;EACvB,OAAO,CAAC,eAAe;EACvB,OAAO,CAAC,eAAe;EACvB,YAAY,eAAe;CAC5B;CACA,IAAI,iBAAiB,cAAc,MAAM,OAAO,SAAS,aAAa,eAAe;EACpF,OAAO,kBAAkB;CAC1B;CACA,SAAS,QAAQ,GAAG;EACnB,iBAAiB,IAAI,CAAC;EACtB,OAAO;CACR;CACA,SAAS,QAAQ,GAAG;EACnB,iBAAiB,IAAI,CAAC;EACtB,OAAO;CACR;CACA,OAAO,SAAS,aAAa,eAAe;EAC3C,IAAI,iBAAiB,IAAI,aAAa,GAAG,OAAO;EAChD,IAAI,iBAAiB,IAAI,aAAa,GAAG,OAAO;EAChD,IAAI,qBAAqB,cAAc,MAAM,EAAE;EAC/C,IAAI,CAAC,oBAAoB,OAAO,QAAQ,aAAa;EACrD,IAAI,sBAAsB;GACzB,OAAO,CAAC,mBAAmB;GAC3B,OAAO,CAAC,mBAAmB;GAC3B,OAAO,CAAC,mBAAmB;GAC3B,YAAY,mBAAmB;EAChC;EACA,IAAI,oBAAoB,cAAc,MAAM,OAAO,QAAQ,aAAa;EACxE,IAAI,iBAAiB,UAAU,oBAAoB,OAAO,OAAO,QAAQ,aAAa;EACtF,IAAI,iBAAiB,UAAU,GAAG;GACjC,IAAI,iBAAiB,UAAU,oBAAoB,SAAS,iBAAiB,SAAS,oBAAoB,OAAO,OAAO,QAAQ,aAAa;GAC7I,OAAO,QAAQ,aAAa;EAC7B;EACA,IAAI,iBAAiB,SAAS,oBAAoB,OAAO,OAAO,QAAQ,aAAa;EACrF,OAAO,QAAQ,aAAa;CAC7B;AACD;;;;;;;;;;;;;;;;AAgBA,IAAI,eAAe,wBAAwB,OAAO;AAGlD,IAAI,QAAQ,QAAQ,MAAM,GAAG,CAAC,CAAC;AAC/B,IAAI,+BAA+B,OAAO,IAAI,0BAA0B,KAAK;AAC7E,IAAI,UAAU;AACd,SAAS,eAAe,MAAM,UAAU,MAAM,eAAe;CAC5D,IAAI;CACJ,IAAI,kBAAkB,KAAK,GAAG,gBAAgB;CAC9C,IAAI,MAAM,QAAQ,iCAAiC,KAAK,QAAQ,mCAAmC,QAAQ,OAAO,KAAK,IAAI,KAAK,EAAE,SAAS,QAAQ;CACnJ,IAAI,CAAC,iBAAiB,IAAI,OAAO;EAChC,IAAI,sBAAsB,IAAI,MAAM,kEAAkE,IAAI;EAC1G,KAAK,MAAM,IAAI,SAAS,IAAI,OAAO;EACnC,OAAO;CACR;CACA,IAAI,IAAI,YAAY,SAAS;EAC5B,IAAI,sBAAsB,IAAI,MAAM,kDAAkD,IAAI,UAAU,UAAU,OAAO,gDAAgD,OAAO;EAC5K,KAAK,MAAM,IAAI,SAAS,IAAI,OAAO;EACnC,OAAO;CACR;CACA,IAAI,QAAQ;CACZ,KAAK,MAAM,iDAAiD,OAAO,OAAO,UAAU,GAAG;CACvF,OAAO;AACR;AACA,SAAS,UAAU,MAAM;CACxB,IAAI,IAAI;CACR,IAAI,iBAAiB,KAAK,QAAQ,mCAAmC,QAAQ,OAAO,KAAK,IAAI,KAAK,IAAI,GAAG;CACzG,IAAI,CAAC,iBAAiB,CAAC,aAAa,aAAa,GAAG;CACpD,QAAQ,KAAK,QAAQ,mCAAmC,QAAQ,OAAO,KAAK,IAAI,KAAK,IAAI,GAAG;AAC7F;AACA,SAAS,iBAAiB,MAAM,MAAM;CACrC,KAAK,MAAM,oDAAoD,OAAO,OAAO,UAAU,GAAG;CAC1F,IAAI,MAAM,QAAQ;CAClB,IAAI,KAAK,OAAO,IAAI;AACrB;AAGA,IAAI,WAAW,SAAS,GAAG,GAAG;CAC7B,IAAI,IAAI,OAAO,WAAW,cAAc,EAAE,OAAO;CACjD,IAAI,CAAC,GAAG,OAAO;CACf,IAAI,IAAI,EAAE,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG;CAC/B,IAAI;EACH,QAAQ,MAAM,KAAK,KAAK,MAAM,MAAM,EAAE,IAAI,EAAE,KAAK,EAAA,CAAG,MAAM,GAAG,KAAK,EAAE,KAAK;CAC1E,SAAS,OAAO;EACf,IAAI,EAAE,MAAM;CACb,UAAU;EACT,IAAI;GACH,IAAI,KAAK,CAAC,EAAE,SAAS,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC;EAChD,UAAU;GACT,IAAI,GAAG,MAAM,EAAE;EAChB;CACD;CACA,OAAO;AACR;AACA,IAAI,kBAAkB,SAAS,IAAI,MAAM,MAAM;CAC9C,IAAI,QAAQ,UAAU,WAAW,GAC3B;OAAA,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,IAAI,GAAG,KAAK,IAAI,MAAM,EAAE,KAAK,OAAO;GACxE,IAAI,CAAC,IAAI,KAAK,MAAM,UAAU,MAAM,KAAK,MAAM,GAAG,CAAC;GACnD,GAAG,KAAK,KAAK;EACd;;CAED,OAAO,GAAG,OAAO,MAAM,MAAM,UAAU,MAAM,KAAK,IAAI,CAAC;AACxD;;;;;;;;;;AAUA,IAAI,sBAAsB,WAAW;CACpC,SAAS,oBAAoB,OAAO;EACnC,KAAK,aAAa,MAAM,aAAa;CACtC;CACA,oBAAoB,UAAU,QAAQ,WAAW;EAChD,IAAI,OAAO,CAAC;EACZ,KAAK,IAAI,KAAK,GAAG,KAAK,UAAU,QAAQ,MAAM,KAAK,MAAM,UAAU;EACnE,OAAO,SAAS,SAAS,KAAK,YAAY,IAAI;CAC/C;CACA,oBAAoB,UAAU,QAAQ,WAAW;EAChD,IAAI,OAAO,CAAC;EACZ,KAAK,IAAI,KAAK,GAAG,KAAK,UAAU,QAAQ,MAAM,KAAK,MAAM,UAAU;EACnE,OAAO,SAAS,SAAS,KAAK,YAAY,IAAI;CAC/C;CACA,oBAAoB,UAAU,OAAO,WAAW;EAC/C,IAAI,OAAO,CAAC;EACZ,KAAK,IAAI,KAAK,GAAG,KAAK,UAAU,QAAQ,MAAM,KAAK,MAAM,UAAU;EACnE,OAAO,SAAS,QAAQ,KAAK,YAAY,IAAI;CAC9C;CACA,oBAAoB,UAAU,OAAO,WAAW;EAC/C,IAAI,OAAO,CAAC;EACZ,KAAK,IAAI,KAAK,GAAG,KAAK,UAAU,QAAQ,MAAM,KAAK,MAAM,UAAU;EACnE,OAAO,SAAS,QAAQ,KAAK,YAAY,IAAI;CAC9C;CACA,oBAAoB,UAAU,UAAU,WAAW;EAClD,IAAI,OAAO,CAAC;EACZ,KAAK,IAAI,KAAK,GAAG,KAAK,UAAU,QAAQ,MAAM,KAAK,MAAM,UAAU;EACnE,OAAO,SAAS,WAAW,KAAK,YAAY,IAAI;CACjD;CACA,OAAO;AACR,EAAE;AACF,SAAS,SAAS,UAAU,WAAW,MAAM;CAC5C,IAAI,SAAS,UAAU,MAAM;CAC7B,IAAI,CAAC,QAAQ;CACb,KAAK,QAAQ,SAAS;CACtB,OAAO,OAAO,SAAS,CAAC,MAAM,QAAQ,gBAAgB,CAAC,GAAG,SAAS,IAAI,GAAG,KAAK,CAAC;AACjF;;;;;;AAQA,IAAI;CACH,SAAS,cAAc;;CAEvB,aAAa,aAAa,UAAU,KAAK;;CAEzC,aAAa,aAAa,WAAW,MAAM;;CAE3C,aAAa,aAAa,UAAU,MAAM;;CAE1C,aAAa,aAAa,UAAU,MAAM;;CAE1C,aAAa,aAAa,WAAW,MAAM;;;;;CAK3C,aAAa,aAAa,aAAa,MAAM;;CAE7C,aAAa,aAAa,SAAS,QAAQ;AAC5C,EAAA,CAAG,iBAAiB,eAAe,CAAC,EAAE;AAGtC,SAAS,yBAAyB,UAAU,QAAQ;CACnD,IAAI,WAAW,aAAa,MAAM,WAAW,aAAa;MACrD,IAAI,WAAW,aAAa,KAAK,WAAW,aAAa;CAC9D,SAAS,UAAU,CAAC;CACpB,SAAS,YAAY,UAAU,UAAU;EACxC,IAAI,UAAU,OAAO;EACrB,IAAI,OAAO,YAAY,cAAc,YAAY,UAAU,OAAO,QAAQ,KAAK,MAAM;EACrF,OAAO,WAAW,CAAC;CACpB;CACA,OAAO;EACN,OAAO,YAAY,SAAS,aAAa,KAAK;EAC9C,MAAM,YAAY,QAAQ,aAAa,IAAI;EAC3C,MAAM,YAAY,QAAQ,aAAa,IAAI;EAC3C,OAAO,YAAY,SAAS,aAAa,KAAK;EAC9C,SAAS,YAAY,WAAW,aAAa,OAAO;CACrD;AACD;AAGA,IAAI,WAAW,SAAS,GAAG,GAAG;CAC7B,IAAI,IAAI,OAAO,WAAW,cAAc,EAAE,OAAO;CACjD,IAAI,CAAC,GAAG,OAAO;CACf,IAAI,IAAI,EAAE,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG;CAC/B,IAAI;EACH,QAAQ,MAAM,KAAK,KAAK,MAAM,MAAM,EAAE,IAAI,EAAE,KAAK,EAAA,CAAG,MAAM,GAAG,KAAK,EAAE,KAAK;CAC1E,SAAS,OAAO;EACf,IAAI,EAAE,MAAM;CACb,UAAU;EACT,IAAI;GACH,IAAI,KAAK,CAAC,EAAE,SAAS,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC;EAChD,UAAU;GACT,IAAI,GAAG,MAAM,EAAE;EAChB;CACD;CACA,OAAO;AACR;AACA,IAAI,kBAAkB,SAAS,IAAI,MAAM,MAAM;CAC9C,IAAI,QAAQ,UAAU,WAAW,GAC3B;OAAA,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,IAAI,GAAG,KAAK,IAAI,MAAM,EAAE,KAAK,OAAO;GACxE,IAAI,CAAC,IAAI,KAAK,MAAM,UAAU,MAAM,KAAK,MAAM,GAAG,CAAC;GACnD,GAAG,KAAK,KAAK;EACd;;CAED,OAAO,GAAG,OAAO,MAAM,MAAM,UAAU,MAAM,KAAK,IAAI,CAAC;AACxD;AACA,IAAI,aAAa;;;;;AAKjB,IAAI,UAAU,WAAW;;;;;CAKxB,SAAS,UAAU;EAClB,SAAS,UAAU,UAAU;GAC5B,OAAO,WAAW;IACjB,IAAI,OAAO,CAAC;IACZ,KAAK,IAAI,KAAK,GAAG,KAAK,UAAU,QAAQ,MAAM,KAAK,MAAM,UAAU;IACnE,IAAI,SAAS,UAAU,MAAM;IAC7B,IAAI,CAAC,QAAQ;IACb,OAAO,OAAO,SAAS,CAAC,MAAM,QAAQ,gBAAgB,CAAC,GAAG,SAAS,IAAI,GAAG,KAAK,CAAC;GACjF;EACD;EACA,IAAI,OAAO;EACX,IAAI,YAAY,SAAS,QAAQ,mBAAmB;GACnD,IAAI,IAAI,IAAI;GACZ,IAAI,sBAAsB,KAAK,GAAG,oBAAoB,EAAE,UAAU,aAAa,KAAK;GACpF,IAAI,WAAW,MAAM;IACpB,IAAI,sBAAsB,IAAI,MAAM,oIAAoI;IACxK,KAAK,OAAO,KAAK,IAAI,WAAW,QAAQ,OAAO,KAAK,IAAI,KAAK,IAAI,OAAO;IACxE,OAAO;GACR;GACA,IAAI,OAAO,sBAAsB,UAAU,oBAAoB,EAAE,UAAU,kBAAkB;GAC7F,IAAI,YAAY,UAAU,MAAM;GAChC,IAAI,YAAY,0BAA0B,KAAK,kBAAkB,cAAc,QAAQ,OAAO,KAAK,IAAI,KAAK,aAAa,MAAM,MAAM;GACrI,IAAI,aAAa,CAAC,kBAAkB,yBAAyB;IAC5D,IAAI,SAAS,sBAAsB,IAAI,MAAM,EAAA,CAAG,WAAW,QAAQ,OAAO,KAAK,IAAI,KAAK;IACxF,UAAU,KAAK,6CAA6C,KAAK;IACjE,UAAU,KAAK,+DAA+D,KAAK;GACpF;GACA,OAAO,eAAe,QAAQ,WAAW,MAAM,IAAI;EACpD;EACA,KAAK,YAAY;EACjB,KAAK,UAAU,WAAW;GACzB,iBAAiB,YAAY,IAAI;EAClC;EACA,KAAK,wBAAwB,SAAS,SAAS;GAC9C,OAAO,IAAI,oBAAoB,OAAO;EACvC;EACA,KAAK,UAAU,UAAU,SAAS;EAClC,KAAK,QAAQ,UAAU,OAAO;EAC9B,KAAK,OAAO,UAAU,MAAM;EAC5B,KAAK,OAAO,UAAU,MAAM;EAC5B,KAAK,QAAQ,UAAU,OAAO;CAC/B;;CAEA,QAAQ,WAAW,WAAW;EAC7B,IAAI,CAAC,KAAK,WAAW,KAAK,YAAY,IAAI,QAAQ;EAClD,OAAO,KAAK;CACb;CACA,OAAO;AACR,EAAE;;AAIF,SAAS,iBAAiB,aAAa;CACtC,OAAO,OAAO,IAAI,WAAW;AAC9B;;AAEA,IAAI,eAAe,KAAK,WAAW;;;;;;CAMlC,SAAS,YAAY,eAAe;EACnC,IAAI,OAAO;EACX,KAAK,kBAAkB,gBAAgB,IAAI,IAAI,aAAa,oBAAoB,IAAI,IAAI;EACxF,KAAK,WAAW,SAAS,KAAK;GAC7B,OAAO,KAAK,gBAAgB,IAAI,GAAG;EACpC;EACA,KAAK,WAAW,SAAS,KAAK,OAAO;GACpC,IAAI,UAAU,IAAI,YAAY,KAAK,eAAe;GAClD,QAAQ,gBAAgB,IAAI,KAAK,KAAK;GACtC,OAAO;EACR;EACA,KAAK,cAAc,SAAS,KAAK;GAChC,IAAI,UAAU,IAAI,YAAY,KAAK,eAAe;GAClD,QAAQ,gBAAgB,OAAO,GAAG;GAClC,OAAO;EACR;CACD;CACA,OAAO;AACR,EAAE,GAAG;AAGL,IAAI,WAAW,SAAS,GAAG,GAAG;CAC7B,IAAI,IAAI,OAAO,WAAW,cAAc,EAAE,OAAO;CACjD,IAAI,CAAC,GAAG,OAAO;CACf,IAAI,IAAI,EAAE,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG;CAC/B,IAAI;EACH,QAAQ,MAAM,KAAK,KAAK,MAAM,MAAM,EAAE,IAAI,EAAE,KAAK,EAAA,CAAG,MAAM,GAAG,KAAK,EAAE,KAAK;CAC1E,SAAS,OAAO;EACf,IAAI,EAAE,MAAM;CACb,UAAU;EACT,IAAI;GACH,IAAI,KAAK,CAAC,EAAE,SAAS,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC;EAChD,UAAU;GACT,IAAI,GAAG,MAAM,EAAE;EAChB;CACD;CACA,OAAO;AACR;AACA,IAAI,kBAAkB,SAAS,IAAI,MAAM,MAAM;CAC9C,IAAI,QAAQ,UAAU,WAAW,GAC3B;OAAA,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,IAAI,GAAG,KAAK,IAAI,MAAM,EAAE,KAAK,OAAO;GACxE,IAAI,CAAC,IAAI,KAAK,MAAM,UAAU,MAAM,KAAK,MAAM,GAAG,CAAC;GACnD,GAAG,KAAK,KAAK;EACd;;CAED,OAAO,GAAG,OAAO,MAAM,MAAM,UAAU,MAAM,KAAK,IAAI,CAAC;AACxD;AACA,IAAI,qBAAqB,WAAW;CACnC,SAAS,qBAAqB,CAAC;CAC/B,mBAAmB,UAAU,SAAS,WAAW;EAChD,OAAO;CACR;CACA,mBAAmB,UAAU,OAAO,SAAS,UAAU,IAAI,SAAS;EACnE,IAAI,OAAO,CAAC;EACZ,KAAK,IAAI,KAAK,GAAG,KAAK,UAAU,QAAQ,MAAM,KAAK,KAAK,KAAK,UAAU;EACvE,OAAO,GAAG,KAAK,MAAM,IAAI,gBAAgB,CAAC,OAAO,GAAG,SAAS,IAAI,GAAG,KAAK,CAAC;CAC3E;CACA,mBAAmB,UAAU,OAAO,SAAS,UAAU,QAAQ;EAC9D,OAAO;CACR;CACA,mBAAmB,UAAU,SAAS,WAAW;EAChD,OAAO;CACR;CACA,mBAAmB,UAAU,UAAU,WAAW;EACjD,OAAO;CACR;CACA,OAAO;AACR,EAAE;AAGF,IAAI,SAAS,SAAS,GAAG,GAAG;CAC3B,IAAI,IAAI,OAAO,WAAW,cAAc,EAAE,OAAO;CACjD,IAAI,CAAC,GAAG,OAAO;CACf,IAAI,IAAI,EAAE,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG;CAC/B,IAAI;EACH,QAAQ,MAAM,KAAK,KAAK,MAAM,MAAM,EAAE,IAAI,EAAE,KAAK,EAAA,CAAG,MAAM,GAAG,KAAK,EAAE,KAAK;CAC1E,SAAS,OAAO;EACf,IAAI,EAAE,MAAM;CACb,UAAU;EACT,IAAI;GACH,IAAI,KAAK,CAAC,EAAE,SAAS,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC;EAChD,UAAU;GACT,IAAI,GAAG,MAAM,EAAE;EAChB;CACD;CACA,OAAO;AACR;AACA,IAAI,gBAAgB,SAAS,IAAI,MAAM,MAAM;CAC5C,IAAI,QAAQ,UAAU,WAAW,GAC3B;OAAA,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,IAAI,GAAG,KAAK,IAAI,MAAM,EAAE,KAAK,OAAO;GACxE,IAAI,CAAC,IAAI,KAAK,MAAM,UAAU,MAAM,KAAK,MAAM,GAAG,CAAC;GACnD,GAAG,KAAK,KAAK;EACd;;CAED,OAAO,GAAG,OAAO,MAAM,MAAM,UAAU,MAAM,KAAK,IAAI,CAAC;AACxD;AACA,IAAI,aAAa;AACjB,IAAI,uBAAuB,IAAI,mBAAmB;;;;AAIlD,IAAI,aAAa,WAAW;;CAE3B,SAAS,aAAa,CAAC;;CAEvB,WAAW,cAAc,WAAW;EACnC,IAAI,CAAC,KAAK,WAAW,KAAK,YAAY,IAAI,WAAW;EACrD,OAAO,KAAK;CACb;;;;;;CAMA,WAAW,UAAU,0BAA0B,SAAS,gBAAgB;EACvE,OAAO,eAAe,YAAY,gBAAgB,QAAQ,SAAS,CAAC;CACrE;;;;CAIA,WAAW,UAAU,SAAS,WAAW;EACxC,OAAO,KAAK,mBAAmB,CAAC,CAAC,OAAO;CACzC;;;;;;;;;CASA,WAAW,UAAU,OAAO,SAAS,SAAS,IAAI,SAAS;EAC1D,IAAI;EACJ,IAAI,OAAO,CAAC;EACZ,KAAK,IAAI,KAAK,GAAG,KAAK,UAAU,QAAQ,MAAM,KAAK,KAAK,KAAK,UAAU;EACvE,QAAQ,KAAK,KAAK,mBAAmB,EAAA,CAAG,KAAK,MAAM,IAAI,cAAc;GACpE;GACA;GACA;EACD,GAAG,OAAO,IAAI,GAAG,KAAK,CAAC;CACxB;;;;;;;CAOA,WAAW,UAAU,OAAO,SAAS,SAAS,QAAQ;EACrD,OAAO,KAAK,mBAAmB,CAAC,CAAC,KAAK,SAAS,MAAM;CACtD;CACA,WAAW,UAAU,qBAAqB,WAAW;EACpD,OAAO,UAAU,UAAU,KAAK;CACjC;;CAEA,WAAW,UAAU,UAAU,WAAW;EACzC,KAAK,mBAAmB,CAAC,CAAC,QAAQ;EAClC,iBAAiB,YAAY,QAAQ,SAAS,CAAC;CAChD;CACA,OAAO;AACR,EAAE;AAGF,IAAI;CACH,SAAS,YAAY;;CAErB,WAAW,WAAW,UAAU,KAAK;;CAErC,WAAW,WAAW,aAAa,KAAK;AACzC,EAAA,CAAG,eAAe,aAAa,CAAC,EAAE;AAClC,IAAI,uBAAuB;CAC1B,SAAS;CACT,QAAQ;CACR,YAAY,WAAW;AACxB;;;;;;AAQA,IAAI,mBAAmB,WAAW;CACjC,SAAS,iBAAiB,cAAc;EACvC,IAAI,iBAAiB,KAAK,GAAG,eAAe;EAC5C,KAAK,eAAe;CACrB;CACA,iBAAiB,UAAU,cAAc,WAAW;EACnD,OAAO,KAAK;CACb;CACA,iBAAiB,UAAU,eAAe,SAAS,MAAM,QAAQ;EAChE,OAAO;CACR;CACA,iBAAiB,UAAU,gBAAgB,SAAS,aAAa;EAChE,OAAO;CACR;CACA,iBAAiB,UAAU,WAAW,SAAS,OAAO,aAAa;EAClE,OAAO;CACR;CACA,iBAAiB,UAAU,UAAU,SAAS,OAAO;EACpD,OAAO;CACR;CACA,iBAAiB,UAAU,WAAW,SAAS,QAAQ;EACtD,OAAO;CACR;CACA,iBAAiB,UAAU,YAAY,SAAS,SAAS;EACxD,OAAO;CACR;CACA,iBAAiB,UAAU,aAAa,SAAS,OAAO;EACvD,OAAO;CACR;CACA,iBAAiB,UAAU,MAAM,SAAS,UAAU,CAAC;CACrD,iBAAiB,UAAU,cAAc,WAAW;EACnD,OAAO;CACR;CACA,iBAAiB,UAAU,kBAAkB,SAAS,YAAY,OAAO,CAAC;CAC1E,OAAO;AACR,EAAE;;;;AAMF,IAAI,WAAW,iBAAiB,gCAAgC;;;;;;AAMhE,SAAS,QAAQ,SAAS;CACzB,OAAO,QAAQ,SAAS,QAAQ,KAAK,KAAK;AAC3C;;;;AAIA,SAAS,gBAAgB;CACxB,OAAO,QAAQ,WAAW,YAAY,CAAC,CAAC,OAAO,CAAC;AACjD;;;;;;;AAOA,SAAS,QAAQ,SAAS,MAAM;CAC/B,OAAO,QAAQ,SAAS,UAAU,IAAI;AACvC;;;;;;AAMA,SAAS,WAAW,SAAS;CAC5B,OAAO,QAAQ,YAAY,QAAQ;AACpC;;;;;;;;AAQA,SAAS,eAAe,SAAS,aAAa;CAC7C,OAAO,QAAQ,SAAS,IAAI,iBAAiB,WAAW,CAAC;AAC1D;;;;;;AAMA,SAAS,eAAe,SAAS;CAChC,IAAI;CACJ,QAAQ,KAAK,QAAQ,OAAO,OAAO,QAAQ,OAAO,KAAK,IAAI,KAAK,IAAI,GAAG,YAAY;AACpF;AAGA,IAAI,sBAAsB;AAC1B,IAAI,qBAAqB;AACzB,SAAS,eAAe,SAAS;CAChC,OAAO,oBAAoB,KAAK,OAAO,KAAK,YAAY;AACzD;AACA,SAAS,cAAc,QAAQ;CAC9B,OAAO,mBAAmB,KAAK,MAAM,KAAK,WAAW;AACtD;;;;;AAKA,SAAS,mBAAmB,aAAa;CACxC,OAAO,eAAe,YAAY,OAAO,KAAK,cAAc,YAAY,MAAM;AAC/E;;;;;;;AAOA,SAAS,gBAAgB,aAAa;CACrC,OAAO,IAAI,iBAAiB,WAAW;AACxC;AAGA,IAAI,aAAa,WAAW,YAAY;;;;AAIxC,IAAI,aAAa,WAAW;CAC3B,SAAS,aAAa,CAAC;CACvB,WAAW,UAAU,YAAY,SAAS,MAAM,SAAS,SAAS;EACjE,IAAI,YAAY,KAAK,GAAG,UAAU,WAAW,OAAO;EACpD,IAAI,QAAQ,YAAY,QAAQ,YAAY,KAAK,IAAI,KAAK,IAAI,QAAQ,IAAI,GAAG,OAAO,IAAI,iBAAiB;EACzG,IAAI,oBAAoB,WAAW,eAAe,OAAO;EACzD,IAAI,cAAc,iBAAiB,KAAK,mBAAmB,iBAAiB,GAAG,OAAO,IAAI,iBAAiB,iBAAiB;OACvH,OAAO,IAAI,iBAAiB;CAClC;CACA,WAAW,UAAU,kBAAkB,SAAS,MAAM,MAAM,MAAM,MAAM;EACvE,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI,UAAU,SAAS,GAAG;OACrB,IAAI,UAAU,WAAW,GAAG,KAAK;OACjC,IAAI,UAAU,WAAW,GAAG;GAChC,OAAO;GACP,KAAK;EACN,OAAO;GACN,OAAO;GACP,MAAM;GACN,KAAK;EACN;EACA,IAAI,gBAAgB,QAAQ,QAAQ,QAAQ,KAAK,IAAI,MAAM,WAAW,OAAO;EAC7E,IAAI,OAAO,KAAK,UAAU,MAAM,MAAM,aAAa;EACnD,IAAI,qBAAqB,QAAQ,eAAe,IAAI;EACpD,OAAO,WAAW,KAAK,oBAAoB,IAAI,KAAK,GAAG,IAAI;CAC5D;CACA,OAAO;AACR,EAAE;AACF,SAAS,cAAc,aAAa;CACnC,OAAO,OAAO,gBAAgB,YAAY,OAAO,YAAY,cAAc,YAAY,OAAO,YAAY,eAAe,YAAY,OAAO,YAAY,kBAAkB;AAC3K;AAGA,IAAI,cAAc,IAAI,WAAW;;;;AAIjC,IAAI,cAAc,WAAW;CAC5B,SAAS,YAAY,WAAW,MAAM,SAAS,SAAS;EACvD,KAAK,YAAY;EACjB,KAAK,OAAO;EACZ,KAAK,UAAU;EACf,KAAK,UAAU;CAChB;CACA,YAAY,UAAU,YAAY,SAAS,MAAM,SAAS,SAAS;EAClE,OAAO,KAAK,WAAW,CAAC,CAAC,UAAU,MAAM,SAAS,OAAO;CAC1D;CACA,YAAY,UAAU,kBAAkB,SAAS,OAAO,UAAU,UAAU,KAAK;EAChF,IAAI,SAAS,KAAK,WAAW;EAC7B,OAAO,QAAQ,MAAM,OAAO,iBAAiB,QAAQ,SAAS;CAC/D;;;;;CAKA,YAAY,UAAU,aAAa,WAAW;EAC7C,IAAI,KAAK,WAAW,OAAO,KAAK;EAChC,IAAI,SAAS,KAAK,UAAU,kBAAkB,KAAK,MAAM,KAAK,SAAS,KAAK,OAAO;EACnF,IAAI,CAAC,QAAQ,OAAO;EACpB,KAAK,YAAY;EACjB,OAAO,KAAK;CACb;CACA,OAAO;AACR,EAAE;AAGF,IAAI,uBAAuB,KAAK,WAAW;CAC1C,SAAS,qBAAqB,CAAC;CAC/B,mBAAmB,UAAU,YAAY,SAAS,OAAO,UAAU,UAAU;EAC5E,OAAO,IAAI,WAAW;CACvB;CACA,OAAO;AACR,EAAE,GAAG;;;;;;;;;AASL,IAAI,sBAAsB,WAAW;CACpC,SAAS,sBAAsB,CAAC;;;;CAIhC,oBAAoB,UAAU,YAAY,SAAS,MAAM,SAAS,SAAS;EAC1E,IAAI;EACJ,QAAQ,KAAK,KAAK,kBAAkB,MAAM,SAAS,OAAO,OAAO,QAAQ,OAAO,KAAK,IAAI,KAAK,IAAI,YAAY,MAAM,MAAM,SAAS,OAAO;CAC3I;CACA,oBAAoB,UAAU,cAAc,WAAW;EACtD,IAAI;EACJ,QAAQ,KAAK,KAAK,eAAe,QAAQ,OAAO,KAAK,IAAI,KAAK;CAC/D;;;;CAIA,oBAAoB,UAAU,cAAc,SAAS,UAAU;EAC9D,KAAK,YAAY;CAClB;CACA,oBAAoB,UAAU,oBAAoB,SAAS,MAAM,SAAS,SAAS;EAClF,IAAI;EACJ,QAAQ,KAAK,KAAK,eAAe,QAAQ,OAAO,KAAK,IAAI,KAAK,IAAI,GAAG,UAAU,MAAM,SAAS,OAAO;CACtG;CACA,OAAO;AACR,EAAE;;;;AAMF,IAAI;CACH,SAAS,gBAAgB;;;;CAIzB,eAAe,eAAe,WAAW,KAAK;;;;;CAK9C,eAAe,eAAe,QAAQ,KAAK;;;;CAI3C,eAAe,eAAe,WAAW,KAAK;AAC/C,EAAA,CAAG,mBAAmB,iBAAiB,CAAC,EAAE;AAG1C,IAAI,WAAW;CAIH,WAAW;;CAEtB,SAAS,WAAW;EACnB,KAAK,uBAAuB,IAAI,oBAAoB;EACpD,KAAK,kBAAkB;EACvB,KAAK,qBAAqB;EAC1B,KAAK,aAAa;EAClB,KAAK,UAAU;EACf,KAAK,gBAAgB;EACrB,KAAK,iBAAiB;EACtB,KAAK,UAAU;EACf,KAAK,iBAAiB;CACvB;;CAEA,SAAS,cAAc,WAAW;EACjC,IAAI,CAAC,KAAK,WAAW,KAAK,YAAY,IAAI,SAAS;EACnD,OAAO,KAAK;CACb;;;;;;CAMA,SAAS,UAAU,0BAA0B,SAAS,UAAU;EAC/D,IAAI,UAAU,eAAe,UAAU,KAAK,sBAAsB,QAAQ,SAAS,CAAC;EACpF,IAAI,SAAS,KAAK,qBAAqB,YAAY,QAAQ;EAC3D,OAAO;CACR;;;;CAIA,SAAS,UAAU,oBAAoB,WAAW;EACjD,OAAO,UAAU,QAAQ,KAAK,KAAK;CACpC;;;;CAIA,SAAS,UAAU,YAAY,SAAS,MAAM,SAAS;EACtD,OAAO,KAAK,kBAAkB,CAAC,CAAC,UAAU,MAAM,OAAO;CACxD;;CAEA,SAAS,UAAU,UAAU,WAAW;EACvC,iBAAiB,UAAU,QAAQ,SAAS,CAAC;EAC7C,KAAK,uBAAuB,IAAI,oBAAoB;CACrD;CACA,OAAO;AACR,EAAA,CAAE,CAAC,CAAC,YAAY;AAGhB,IAAI,YAAY,OAAO;AACvB,IAAI,YAAY,QAAQ,QAAQ;CAC/B,KAAK,IAAI,UAAU,KAAK,UAAU,QAAQ,QAAQ;EACjD,KAAK,IAAI;EACT,YAAY;CACb,CAAC;AACF;AAwDA,SAAS,uBAAuB,SAAS,EAAE,aAAa,qBAAqB;CAC5E,MAAM,kBAAkB,IAAI,QAAQ,WAAW,OAAO,UAAU,CAAC,CAAC;CAClE,IAAI,CAAC,gBAAgB,IAAI,cAAc,GAAG,gBAAgB,IAAI,gBAAgB,WAAW;CACzF,IAAI,sBAAsB,KAAK,GAAG,gBAAgB,IAAI,2BAA2B,iBAAiB;CAClG,OAAO;AACR;AAuxBA,IAAI,QAAQ;AACZ,IAAI,UAAU,mBAAmB;AACjC,IAAI,UAAU,OAAO,IAAI,OAAO;AAChC,IAAI;AACJ,IAAI,yBAAyB,cAAc,WAAW;CACrD,YAAY,EAAE,UAAU,wBAAwB,OAAO,MAAM,OAAO,UAAU,OAAO,gBAAgB;EACpG,MAAM;GACL,MAAM;GACN;GACA;EACD,CAAC;EACD,KAAK,OAAO;EACZ,KAAK,OAAO;EACZ,KAAK,WAAW;EAChB,KAAK,QAAQ;EACb,KAAK,eAAe;CACrB;CACA,OAAO,WAAW,OAAO;EACxB,OAAO,WAAW,UAAU,OAAO,OAAO;CAC3C;AACD;AACA,MAAM;AA+DN,IAAI,oBAAoBC,IAAAA,EAAE,MAAM;CAC/BA,IAAAA,EAAE,OAAO;CACTA,IAAAA,EAAE,WAAW,UAAU;CACvBA,IAAAA,EAAE,WAAW,WAAW;CACxBA,IAAAA,EAAE,QAAQ,UAAU;EACnB,IAAI,MAAM;EACV,QAAQ,MAAM,OAAO,WAAW,WAAW,OAAO,KAAK,IAAI,KAAK,SAAS,KAAK,MAAM,OAAO,KAAK;CACjG,GAAG,EAAE,SAAS,mBAAmB,CAAC;AACnC,CAAC;AAmjBD,IAAI,kBAAkBA,IAAAA,EAAE,WAAWA,IAAAA,EAAE,MAAM;CAC1CA,IAAAA,EAAE,KAAK;CACPA,IAAAA,EAAE,OAAO;CACTA,IAAAA,EAAE,OAAO;CACTA,IAAAA,EAAE,QAAQ;CACVA,IAAAA,EAAE,OAAOA,IAAAA,EAAE,OAAO,GAAG,eAAe;CACpCA,IAAAA,EAAE,MAAM,eAAe;AACxB,CAAC,CAAC;AACF,IAAI,yBAAyBA,IAAAA,EAAE,OAAOA,IAAAA,EAAE,OAAO,GAAGA,IAAAA,EAAE,OAAOA,IAAAA,EAAE,OAAO,GAAG,eAAe,CAAC;AACvF,IAAI,0BAA0BA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,MAAM,CAACA,IAAAA,EAAE,OAAO;CACvD,MAAMA,IAAAA,EAAE,QAAQ,MAAM;CACtB,MAAMA,IAAAA,EAAE,OAAO;AAChB,CAAC,GAAGA,IAAAA,EAAE,OAAO;CACZ,MAAMA,IAAAA,EAAE,QAAQ,OAAO;CACvB,MAAMA,IAAAA,EAAE,OAAO;CACf,UAAUA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;AAC/B,CAAC,CAAC,CAAC,CAAC;AACJ,IAAI,iBAAiBA,IAAAA,EAAE,OAAO;CAC7B,MAAMA,IAAAA,EAAE,QAAQ,MAAM;CACtB,MAAMA,IAAAA,EAAE,OAAO;CACf,iBAAiB,uBAAuB,SAAS;CACjD,+BAA+B,uBAAuB,SAAS;AAChE,CAAC;AACD,IAAI,kBAAkBA,IAAAA,EAAE,OAAO;CAC9B,MAAMA,IAAAA,EAAE,QAAQ,OAAO;CACvB,OAAOA,IAAAA,EAAE,MAAM,CAAC,mBAAmBA,IAAAA,EAAE,WAAW,GAAG,CAAC,CAAC;CACrD,UAAUA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;CAC9B,iBAAiB,uBAAuB,SAAS;CACjD,+BAA+B,uBAAuB,SAAS;AAChE,CAAC;AACD,IAAI,iBAAiBA,IAAAA,EAAE,OAAO;CAC7B,MAAMA,IAAAA,EAAE,QAAQ,MAAM;CACtB,MAAMA,IAAAA,EAAE,MAAM,CAAC,mBAAmBA,IAAAA,EAAE,WAAW,GAAG,CAAC,CAAC;CACpD,UAAUA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;CAC9B,UAAUA,IAAAA,EAAE,OAAO;CACnB,iBAAiB,uBAAuB,SAAS;CACjD,+BAA+B,uBAAuB,SAAS;AAChE,CAAC;AACD,IAAI,sBAAsBA,IAAAA,EAAE,OAAO;CAClC,MAAMA,IAAAA,EAAE,QAAQ,WAAW;CAC3B,MAAMA,IAAAA,EAAE,OAAO;CACf,iBAAiB,uBAAuB,SAAS;CACjD,+BAA+B,uBAAuB,SAAS;AAChE,CAAC;AACD,IAAI,8BAA8BA,IAAAA,EAAE,OAAO;CAC1C,MAAMA,IAAAA,EAAE,QAAQ,oBAAoB;CACpC,MAAMA,IAAAA,EAAE,OAAO;CACf,iBAAiB,uBAAuB,SAAS;CACjD,+BAA+B,uBAAuB,SAAS;AAChE,CAAC;AACD,IAAI,qBAAqBA,IAAAA,EAAE,OAAO;CACjC,MAAMA,IAAAA,EAAE,QAAQ,WAAW;CAC3B,YAAYA,IAAAA,EAAE,OAAO;CACrB,UAAUA,IAAAA,EAAE,OAAO;CACnB,MAAMA,IAAAA,EAAE,QAAQ;CAChB,iBAAiB,uBAAuB,SAAS;CACjD,+BAA+B,uBAAuB,SAAS;AAChE,CAAC;AACD,IAAI,uBAAuBA,IAAAA,EAAE,OAAO;CACnC,MAAMA,IAAAA,EAAE,QAAQ,aAAa;CAC7B,YAAYA,IAAAA,EAAE,OAAO;CACrB,UAAUA,IAAAA,EAAE,OAAO;CACnB,QAAQA,IAAAA,EAAE,QAAQ;CAClB,SAAS,wBAAwB,SAAS;CAC1C,SAASA,IAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS;CAC9B,iBAAiB,uBAAuB,SAAS;CACjD,+BAA+B,uBAAuB,SAAS;AAChE,CAAC;AACD,IAAI,0BAA0BA,IAAAA,EAAE,OAAO;CACtC,MAAMA,IAAAA,EAAE,QAAQ,QAAQ;CACxB,SAASA,IAAAA,EAAE,OAAO;CAClB,iBAAiB,uBAAuB,SAAS;CACjD,+BAA+B,uBAAuB,SAAS;AAChE,CAAC;AACD,IAAI,wBAAwBA,IAAAA,EAAE,OAAO;CACpC,MAAMA,IAAAA,EAAE,QAAQ,MAAM;CACtB,SAASA,IAAAA,EAAE,MAAM,CAACA,IAAAA,EAAE,OAAO,GAAGA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,MAAM;EAC7C;EACA;EACA;CACD,CAAC,CAAC,CAAC,CAAC;CACJ,iBAAiB,uBAAuB,SAAS;CACjD,+BAA+B,uBAAuB,SAAS;AAChE,CAAC;AACD,IAAI,6BAA6BA,IAAAA,EAAE,OAAO;CACzC,MAAMA,IAAAA,EAAE,QAAQ,WAAW;CAC3B,SAASA,IAAAA,EAAE,MAAM,CAACA,IAAAA,EAAE,OAAO,GAAGA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,MAAM;EAC7C;EACA;EACA;EACA;EACA;CACD,CAAC,CAAC,CAAC,CAAC;CACJ,iBAAiB,uBAAuB,SAAS;CACjD,+BAA+B,uBAAuB,SAAS;AAChE,CAAC;AACD,IAAI,wBAAwBA,IAAAA,EAAE,OAAO;CACpC,MAAMA,IAAAA,EAAE,QAAQ,MAAM;CACtB,SAASA,IAAAA,EAAE,MAAM,oBAAoB;CACrC,iBAAiB,uBAAuB,SAAS;CACjD,+BAA+B,uBAAuB,SAAS;AAChE,CAAC;AACuBA,IAAAA,EAAE,MAAM;CAC/B;CACA;CACA;CACA;AACD,CAAC;AAiGD,IAAI,wBAAwB;AAC5B,IAAI,wBAAwB;AAC5B,IAAI,yBAAyB;AAC7B,SAAS,sBAAsB,EAAE,QAAQ,QAAQ,eAAe,UAAU,OAAO,wBAAwB,KAAK,GAAG,eAAe,UAAU,OAAO,wBAAwB,0BAA0B;CAClM,OAAO;EACN,UAAU,QAAQ,OAAO,SAAS,IAAI,SAAS,KAAK;EACpD,UAAU,QAAQ,OAAO,SAAS,IAAI,KAAK,KAAK;EAChD;EACA,UAAU,OAAO,KAAK,UAAU,MAAM,IAAI,KAAK;EAC/C;CACD,CAAC,CAAC,QAAQ,SAAS,QAAQ,IAAI,CAAC,CAAC,KAAK,IAAI;AAC3C;AAsTyB,kBAAkB;CAC1C,QAAQ;CACR,MAAM;AACP,CAAC;AA6dyB,kBAAkB;CAC3C,QAAQ;CACR,MAAM;AACP,CAAC;AA6sByB,kBAAkB;CAC3C,QAAQ;CACR,MAAM;AACP,CAAC;AAC+B,kBAAkB;CACjD,QAAQ;CACR,MAAM;AACP,CAAC;AA0XD,SAAS,CAAA,GAAgB;CACxB,cAAc;CACd,YAAY;AACb,CAAC;AAoCD,IAAI,cAAc;CACjB,MAAM;CACN,uBAAuB,EAAE,MAAM,OAAO;CACtC,uBAAuB,EAAE,UAAU;EAClC,OAAO;CACR;CACA,aAAa,EAAE,MAAM,SAAS;EAC7B,OAAO,EAAE,SAAS,MAAM;CACzB;CACA,YAAY,EAAE,MAAM,SAAS;EAC5B,OAAO;CACR;AACD;AACA,IAAI,UAAU,EAAE,QAAQ,kBAAkB;CACzC,MAAM,SAAS,SAAS,WAAW;CACnC,OAAO;EACN,MAAM;EACN,iBAAiB,EAAE,aAAa;GAC/B,MAAM;GACN,QAAQ,MAAM,4BAA4B,OAAO,aAAa,KAAK;EACpE;EACA,uBAAuB,EAAE,QAAQ,SAAS;GACzC,OAAO,MAAM,4BAA4B,SAAS,sBAAsB;IACvE,QAAQ;IACR,QAAQ,OAAO;GAChB,CAAC;EACF;EACA,aAAa,EAAE,MAAM,SAAS;GAC7B,MAAM,SAAS,iBAAiB,KAAK;GACrC,QAAQ,OAAO,OAAf;IACC,KAAK;IACL,KAAK,mBAAmB;IACxB,KAAK;IACL,KAAK,oBAAoB,OAAO,EAAE,SAAS,OAAO,MAAM;IACxD,SAAS;KACR,MAAM,mBAAmB,OAAO;KAChC,MAAM,IAAI,MAAM,4BAA4B,kBAAkB;IAC/D;GACD;EACD;EACA,YAAY,EAAE,MAAM,SAAS,SAAS;GACrC,MAAM,cAAc,cAAc,EAAE,MAAM,MAAM,CAAC;GACjD,IAAI,CAAC,YAAY,SAAS,MAAM,IAAI,uBAAuB;IAC1D,SAAS;IACT,OAAO,YAAY;IACnB,MAAM;IACN,UAAU,QAAQ;IAClB,OAAO,QAAQ;IACf,cAAc,QAAQ;GACvB,CAAC;GACD,MAAM,mBAAmB,kBAAkB;IAC1C,OAAO,YAAY;IACnB;GACD,CAAC;GACD,IAAI,CAAC,iBAAiB,SAAS,MAAM,IAAI,uBAAuB;IAC/D,SAAS;IACT,OAAO,iBAAiB;IACxB,MAAM;IACN,UAAU,QAAQ;IAClB,OAAO,QAAQ;IACf,cAAc,QAAQ;GACvB,CAAC;GACD,OAAO,iBAAiB;EACzB;CACD;AACD;AAqEA,SAAS,aAAa,SAAS,SAAS;CACvC,MAAM,UAAU,QAAQ,UAAU;CAClC,MAAM,UAAU,QAAQ,UAAU;CAClC,IAAI,YAAY,KAAK;CACrB,IAAI,YAAY,KAAK;CACrB,IAAI,cAAc;CAClB,IAAI,cAAc;CAClB,eAAe,YAAY,YAAY;EACtC,IAAI;GACH,IAAI,aAAa,MAAM,YAAY,QAAQ,KAAK;GAChD,MAAM,SAAS,MAAM;GACrB,YAAY,KAAK;GACjB,IAAI,CAAC,OAAO,MAAM,WAAW,QAAQ,OAAO,KAAK;QAC5C,WAAW,MAAM;EACvB,SAAS,OAAO;GACf,WAAW,MAAM,KAAK;EACvB;CACD;CACA,eAAe,YAAY,YAAY;EACtC,IAAI;GACH,IAAI,aAAa,MAAM,YAAY,QAAQ,KAAK;GAChD,MAAM,SAAS,MAAM;GACrB,YAAY,KAAK;GACjB,IAAI,CAAC,OAAO,MAAM,WAAW,QAAQ,OAAO,KAAK;QAC5C,WAAW,MAAM;EACvB,SAAS,OAAO;GACf,WAAW,MAAM,KAAK;EACvB;CACD;CACA,OAAO,IAAI,eAAe;EACzB,MAAM,KAAK,YAAY;GACtB,IAAI;IACH,IAAI,aAAa;KAChB,MAAM,YAAY,UAAU;KAC5B;IACD;IACA,IAAI,aAAa;KAChB,MAAM,YAAY,UAAU;KAC5B;IACD;IACA,IAAI,aAAa,MAAM,YAAY,QAAQ,KAAK;IAChD,IAAI,aAAa,MAAM,YAAY,QAAQ,KAAK;IAChD,MAAM,EAAE,QAAQ,WAAW,MAAM,QAAQ,KAAK,CAAC,UAAU,MAAM,aAAa;KAC3E,QAAQ;KACR,QAAQ;IACT,EAAE,GAAG,UAAU,MAAM,aAAa;KACjC,QAAQ;KACR,QAAQ;IACT,EAAE,CAAC,CAAC;IACJ,IAAI,CAAC,OAAO,MAAM,WAAW,QAAQ,OAAO,KAAK;IACjD,IAAI,WAAW,SAAS;KACvB,YAAY,KAAK;KACjB,IAAI,OAAO,MAAM;MAChB,MAAM,YAAY,UAAU;MAC5B,cAAc;KACf;IACD,OAAO;KACN,YAAY,KAAK;KACjB,IAAI,OAAO,MAAM;MAChB,cAAc;MACd,MAAM,YAAY,UAAU;KAC7B;IACD;GACD,SAAS,OAAO;IACf,WAAW,MAAM,KAAK;GACvB;EACD;EACA,SAAS;GACR,QAAQ,OAAO;GACf,QAAQ,OAAO;EAChB;CACD,CAAC;AACF;AA4J0B,kBAAkB;CAC3C,QAAQ;CACR,MAAM;AACP,CAAC;AACgC,kBAAkB;CAClD,QAAQ;CACR,MAAM;AACP,CAAC;AA0gDD,IAAI,qCAAqCA,IAAAA,EAAE,OAAO;CACjD,MAAMA,IAAAA,EAAE,OAAO;CACf,SAASA,IAAAA,EAAE,OAAO;AACnB,CAAC,CAAC,CAAC,YAAY;AACf,IAAI,mBAAmBA,IAAAA,EAAE,OAAO,EAAE,OAAOA,IAAAA,EAAE,SAASA,IAAAA,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY;AAC/F,IAAI,eAAe;AACnB,IAAI,gBAAgBA,IAAAA,EAAE,OAAO;CAC5B,QAAQA,IAAAA,EAAE,OAAO;CACjB,QAAQA,IAAAA,EAAE,SAAS,gBAAgB;AACpC,CAAC;AACD,IAAI,2BAA2BA,IAAAA,EAAE,OAAO;CACvC,cAAcA,IAAAA,EAAE,SAASA,IAAAA,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;CACnD,SAASA,IAAAA,EAAE,SAASA,IAAAA,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;CAC9C,SAASA,IAAAA,EAAE,SAASA,IAAAA,EAAE,OAAO,EAAE,aAAaA,IAAAA,EAAE,SAASA,IAAAA,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;CACpF,WAAWA,IAAAA,EAAE,SAASA,IAAAA,EAAE,OAAO;EAC9B,WAAWA,IAAAA,EAAE,SAASA,IAAAA,EAAE,QAAQ,CAAC;EACjC,aAAaA,IAAAA,EAAE,SAASA,IAAAA,EAAE,QAAQ,CAAC;CACpC,CAAC,CAAC,CAAC,YAAY,CAAC;CAChB,OAAOA,IAAAA,EAAE,SAASA,IAAAA,EAAE,OAAO,EAAE,aAAaA,IAAAA,EAAE,SAASA,IAAAA,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;AACnF,CAAC,CAAC,CAAC,YAAY;AACc,aAAa,OAAO;CAChD,iBAAiBA,IAAAA,EAAE,OAAO;CAC1B,cAAc;CACd,YAAY;CACZ,cAAcA,IAAAA,EAAE,SAASA,IAAAA,EAAE,OAAO,CAAC;AACpC,CAAC;AACD,IAAI,wBAAwB,aAAa,OAAO,EAAE,YAAYA,IAAAA,EAAE,SAASA,IAAAA,EAAE,OAAO,CAAC,EAAE,CAAC;AACtF,IAAI,aAAaA,IAAAA,EAAE,OAAO;CACzB,MAAMA,IAAAA,EAAE,OAAO;CACf,aAAaA,IAAAA,EAAE,SAASA,IAAAA,EAAE,OAAO,CAAC;CAClC,aAAaA,IAAAA,EAAE,OAAO;EACrB,MAAMA,IAAAA,EAAE,QAAQ,QAAQ;EACxB,YAAYA,IAAAA,EAAE,SAASA,IAAAA,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;CAClD,CAAC,CAAC,CAAC,YAAY;AAChB,CAAC,CAAC,CAAC,YAAY;AACa,sBAAsB,OAAO,EAAE,OAAOA,IAAAA,EAAE,MAAM,UAAU,EAAE,CAAC;AACvF,IAAI,oBAAoBA,IAAAA,EAAE,OAAO;CAChC,MAAMA,IAAAA,EAAE,QAAQ,MAAM;CACtB,MAAMA,IAAAA,EAAE,OAAO;AAChB,CAAC,CAAC,CAAC,YAAY;AACf,IAAI,qBAAqBA,IAAAA,EAAE,OAAO;CACjC,MAAMA,IAAAA,EAAE,QAAQ,OAAO;CACvB,MAAMA,IAAAA,EAAE,OAAO,CAAC,CAAC,OAAO;CACxB,UAAUA,IAAAA,EAAE,OAAO;AACpB,CAAC,CAAC,CAAC,YAAY;AACf,IAAI,yBAAyBA,IAAAA,EAAE,OAAO;;;;CAIrC,KAAKA,IAAAA,EAAE,OAAO;;;;CAId,UAAUA,IAAAA,EAAE,SAASA,IAAAA,EAAE,OAAO,CAAC;AAChC,CAAC,CAAC,CAAC,YAAY;AACf,IAAI,6BAA6B,uBAAuB,OAAO,EAAE,MAAMA,IAAAA,EAAE,OAAO,EAAE,CAAC;AACnF,IAAI,6BAA6B,uBAAuB,OAAO,EAAE,MAAMA,IAAAA,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;AAC5F,IAAI,yBAAyBA,IAAAA,EAAE,OAAO;CACrC,MAAMA,IAAAA,EAAE,QAAQ,UAAU;CAC1B,UAAUA,IAAAA,EAAE,MAAM,CAAC,4BAA4B,0BAA0B,CAAC;AAC3E,CAAC,CAAC,CAAC,YAAY;AACY,aAAa,OAAO;CAC9C,SAASA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,MAAM;EACxB;EACA;EACA;CACD,CAAC,CAAC;CACF,SAASA,IAAAA,EAAE,QAAQ,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,SAAS;AAC9C,CAAC,CAAC,CAAC,GAAG,aAAa,OAAO,EAAE,YAAYA,IAAAA,EAAE,QAAQ,EAAE,CAAC,CAAC;AACtD,IAAI,kBAAkB;AACtB,IAAI,uBAAuBA,IAAAA,EAAE,OAAO;CACnC,SAASA,IAAAA,EAAE,QAAQ,eAAe;CAClC,IAAIA,IAAAA,EAAE,MAAM,CAACA,IAAAA,EAAE,OAAO,GAAGA,IAAAA,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,CAAC,OAAO;AAC/B,IAAI,wBAAwBA,IAAAA,EAAE,OAAO;CACpC,SAASA,IAAAA,EAAE,QAAQ,eAAe;CAClC,IAAIA,IAAAA,EAAE,MAAM,CAACA,IAAAA,EAAE,OAAO,GAAGA,IAAAA,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;CAC1C,QAAQ;AACT,CAAC,CAAC,CAAC,OAAO;AACV,IAAI,qBAAqBA,IAAAA,EAAE,OAAO;CACjC,SAASA,IAAAA,EAAE,QAAQ,eAAe;CAClC,IAAIA,IAAAA,EAAE,MAAM,CAACA,IAAAA,EAAE,OAAO,GAAGA,IAAAA,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;CAC1C,OAAOA,IAAAA,EAAE,OAAO;EACf,MAAMA,IAAAA,EAAE,OAAO,CAAC,CAAC,IAAI;EACrB,SAASA,IAAAA,EAAE,OAAO;EAClB,MAAMA,IAAAA,EAAE,SAASA,IAAAA,EAAE,QAAQ,CAAC;CAC7B,CAAC;AACF,CAAC,CAAC,CAAC,OAAO;AACV,IAAI,4BAA4BA,IAAAA,EAAE,OAAO,EAAE,SAASA,IAAAA,EAAE,QAAQ,eAAe,EAAE,CAAC,CAAC,CAAC,MAAMA,IAAAA,EAAE,OAAO;CAChG,QAAQA,IAAAA,EAAE,OAAO;CACjB,QAAQA,IAAAA,EAAE,SAAS,gBAAgB;AACpC,CAAC,CAAC,CAAC,CAAC,OAAO;AACgBA,IAAAA,EAAE,MAAM;CAClC;CACA;CACA;CACA;AACD,CAAC;AAkaD,SAAS,CAAA,GAA2B;CACnC,2BAA2B;CAC3B,oBAAoB;CACpB,4BAA4B;AAC7B,CAAC;AACD,SAAS,2BAA2B,YAAY,CAAC,GAAG;CACnD,MAAM,cAAc,IAAI,YAAY;CACpC,IAAI,qBAAqB;CACzB,OAAO,IAAI,gBAAgB;EAC1B,MAAM,QAAQ;GACb,IAAI,UAAU,SAAS,MAAM,UAAU,QAAQ;EAChD;EACA,MAAM,UAAU,SAAS,YAAY;GACpC,WAAW,QAAQ,YAAY,OAAO,OAAO,CAAC;GAC9C,sBAAsB;GACtB,IAAI,UAAU,SAAS,MAAM,UAAU,QAAQ,OAAO;GACtD,IAAI,UAAU,UAAU,OAAO,YAAY,UAAU,MAAM,UAAU,OAAO,OAAO;EACpF;EACA,MAAM,QAAQ;GACb,IAAI,UAAU,cAAc,MAAM,UAAU,aAAa,kBAAkB;GAC3E,IAAI,UAAU,SAAS,MAAM,UAAU,QAAQ,kBAAkB;EAClE;CACD,CAAC;AACF;AACA,SAAS,qBAAqB,QAAQ,WAAW;CAChD,OAAO,OAAO,YAAY,IAAI,gBAAgB,EAAE,WAAW,OAAO,OAAO,eAAe;EACvF,IAAI;EACJ,IAAI,OAAO,UAAU,UAAU;GAC9B,WAAW,QAAQ,KAAK;GACxB;EACD;EACA,IAAI,WAAW,OAAO;GACrB,IAAI,MAAM,UAAU,wBAAwB,uBAAuB,OAAO,MAAM,SAAS,OAAO,KAAK,IAAI,KAAK,OAAO,UAAU;GAC/H;EACD;EACA,sBAAsB,OAAO,UAAU;CACxC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,2BAA2B,SAAS,CAAC,CAAC,CAAC,YAAY,IAAI,kBAAkB,CAAC,CAAC,CAAC,YAAY,IAAI,gBAAgB,EAAE,WAAW,OAAO,OAAO,eAAe;EACvK,WAAW,QAAQ,qBAAqB,QAAQ,KAAK,CAAC;CACvD,EAAE,CAAC,CAAC;AACL;AACA,SAAS,aAAa,QAAQ,WAAW;CACxC,OAAO,qBAAqB,QAAQ,SAAS,CAAC,CAAC,YAAY,IAAI,kBAAkB,CAAC;AACnF;AACA,SAAS,qBAAqB,QAAQ,SAAS;CAC9C,IAAI;CACJ,MAAM,aAAa,qBAAqB,QAAQ,WAAW,OAAO,KAAK,IAAI,QAAQ,SAAS,CAAC,CAAC,YAAY,IAAI,kBAAkB,CAAC;CACjI,MAAM,OAAO,WAAW,OAAO,KAAK,IAAI,QAAQ;CAChD,MAAM,OAAO,WAAW,OAAO,KAAK,IAAI,QAAQ;CAChD,MAAM,iBAAiB,OAAO,aAAa,KAAK,QAAQ,UAAU,IAAI;CACtE,OAAO,IAAI,SAAS,gBAAgB;EACnC,SAAS,OAAO,QAAQ,OAAO,KAAK,IAAI,KAAK,WAAW,OAAO,OAAO;EACtE,YAAY,QAAQ,OAAO,KAAK,IAAI,KAAK;EACzC,SAAS,uBAAuB,QAAQ,OAAO,KAAK,IAAI,KAAK,SAAS;GACrE,aAAa;GACb,mBAAmB;EACpB,CAAC;CACF,CAAC;AACF;AACA,SAAS,oBAAoB,QAAQ,SAAS;CAC7C,QAAQ,WAAW,MAAM,qBAAqB,QAAQ,QAAQ,SAAS,CAAC;AACzE;AACA,SAAS,sBAAsB,OAAO,YAAY;CACjD,IAAI,OAAO,MAAM,YAAY,UAAU,WAAW,QAAQ,MAAM,OAAO;MAClE;EACJ,MAAM,UAAU,MAAM;EACtB,KAAK,MAAM,QAAQ,SAAS,IAAI,KAAK,SAAS,QAAQ,WAAW,QAAQ,KAAK,IAAI;CACnF;AACD;AAEA,SAAS,CAAA,GAA4B;CACpC,2BAA2B;CAC3B,oBAAoB;CACpB,4BAA4B;AAC7B,CAAC;AACD,SAAS,sBAAsB,QAAQ,WAAW;CACjD,MAAM,YAAY,kBAAkB;CACpC,OAAO,qCAAqC,OAAO,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,gBAAgB,EAAE,MAAM,UAAU,SAAS,YAAY;EAClJ,WAAW,QAAQ,UAAU,QAAQ,KAAK,CAAC;CAC5C,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,2BAA2B,SAAS,CAAC,CAAC,CAAC,YAAY,IAAI,kBAAkB,CAAC,CAAC,CAAC,YAAY,IAAI,gBAAgB,EAAE,WAAW,OAAO,OAAO,eAAe;EACvK,WAAW,QAAQ,qBAAqB,QAAQ,KAAK,CAAC;CACvD,EAAE,CAAC,CAAC;AACL;AACA,SAAS,cAAc,QAAQ,WAAW;CACzC,OAAO,sBAAsB,QAAQ,SAAS,CAAC,CAAC,YAAY,IAAI,kBAAkB,CAAC;AACpF;AACA,SAAS,sBAAsB,QAAQ,UAAU,CAAC,GAAG;CACpD,IAAI;CACJ,MAAM,EAAE,MAAM,MAAM,cAAc;CAClC,MAAM,aAAa,sBAAsB,QAAQ,SAAS,CAAC,CAAC,YAAY,IAAI,kBAAkB,CAAC;CAC/F,MAAM,iBAAiB,OAAO,aAAa,KAAK,QAAQ,UAAU,IAAI;CACtE,OAAO,IAAI,SAAS,gBAAgB;EACnC,SAAS,OAAO,QAAQ,OAAO,KAAK,IAAI,KAAK,WAAW,OAAO,OAAO;EACtE,YAAY,QAAQ,OAAO,KAAK,IAAI,KAAK;EACzC,SAAS,uBAAuB,QAAQ,OAAO,KAAK,IAAI,KAAK,SAAS;GACrE,aAAa;GACb,mBAAmB;EACpB,CAAC;CACF,CAAC;AACF;AACA,SAAS,qBAAqB,QAAQ,SAAS;CAC9C,QAAQ,WAAW,MAAM,sBAAsB,QAAQ,QAAQ,SAAS,CAAC;AAC1E;AACA,SAAS,oBAAoB;CAC5B,IAAI,gBAAgB;CACpB,QAAQ,UAAU;EACjB,IAAI,eAAe;GAClB,QAAQ,MAAM,UAAU;GACxB,IAAI,OAAO,gBAAgB;EAC5B;EACA,OAAO;CACR;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;ACpmRA,SAAgB,8BAA8B,WAAsB,SAAkB,eAA4B;CAGhH,OAAO,WAFiBC,oBAAAA,gBAAgB,WAAW,MAEnB,GAAG,EACjC,WAAU,UAAS;EACjB,MAAM,SAAS,UAAU,UAAU,KAAK;EACxC,OAAO,OAAO,UAAU;GAAE,SAAS;GAAM,OAAO,OAAO;EAAK,IAAI;GAAE,SAAS;GAAO,OAAO,OAAO;EAAM;CACxG,EACF,CAAC;AACH;;;;;;;;AASA,SAAgB,UAAU,OAAkC;CAG1D,OACE,OAAO,UAAU,YACjB,UAAU,SACT,UAAU,SAAS,UAAU,UAC9B,WAAW,SACX,OAAQ,MAAc,UAAU,cAChC,eAAe,SACf,OAAQ,MAAc,cAAc;AAExC;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,SAAgB,mBAAmB,QAAmD;CACpF,IAAI,UAAU,MAAM,GAClB,OAAO;MACF;EACL,MAAM,sBAAsB,gBAAgB,SAAS,OAAO,aAAa;EACzE,IAAI;GACF,IAAI,kBAAkBC,IAAAA,GAEpB,QAAA,GAAA,qBAAA,uBAAA,CAA8B,mBAAmB;QAGjD,QAAA,GAAA,wBAAA,uBAAA,CAAgC,mBAAmB;EAEvD,SAAS,GAAY;GACnB,MAAM,eAAe,iFAAiF,KAAK,UAAU,mBAAmB;GACxI,QAAQ,MAAM,cAAc,CAAC;GAC7B,MAAM,IAAI,MAAM,gBAAgB,aAAa,QAAQ,KAAK,EAAE,UAAU,yBAAyB;EACjG;CACF;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmEA,SAAgB,iBAAiB,EAC/B,QACA,cACA,QAKuB;CACvB,IAAI,SAAS,cAAc;EACzB,MAAM,iBAAiBC,eAAAA,iBAAiB,MAAM;EAE9C,KAAK,MAAM,UAAU,cACnB,IAAI,OAAO,YAAY,GAGrB,OAAOC,eAAAA,2BAFc,OAAO,sBAAsB,cAEL,CAAC;EAIlD,OAAOA,eAAAA,2BAA2B,cAAc;CAClD,OAAO;EACL,IAAI;EAEJ,IAAI,UAAU,MAAM,GAClB,YAAY;OACP;GACL,IAAIC,eAAAA,yBAAyB,MAAM,GACjC,MAAM,IAAI,MAAM,mFAAmF;GAMrG,YAAY,mBAAmB,MAA8B;EAC/D;EAEA,KAAK,MAAM,UAAU,cACnB,IAAI,OAAO,YAAY,GACrB,OAAO,OAAO,qBAAqB,SAAS;EAIhD,OAAO,8BAA8B,SAAS;CAChD;AACF;;;;;;;AC3MA,MAAa,oBAAoB;CAAC;CAAS;CAAS;CAAS;CAAO;CAAQ;CAAQ;CAAO;AAAK;;;;;AAMhG,MAAa,oBAAoB;CAC/B;CACA;CACA;AACF;;;;;AAMA,MAAa,mBAAmB;CAAC;CAAO;CAAO;AAAQ;AAEvD,MAAa,cAAc,MAAyC,aAAaC,OAAAA;AACjF,MAAa,SAAS,MAAiD,aAAaC,OAAAA;AAGpF,MAAa,SAAS,MAA2C,aAAaC,OAAAA;AAC9E,MAAa,WAAW,MAAgE,aAAaC,OAAAA;AACrG,MAAa,YAAY,MAAkC,aAAaC,OAAAA;AACxE,MAAa,YAAY,MAAkC,aAAaC,OAAAA;;;;;AASxE,MAAa,wBAAwB;CAAC;CAAmB;CAAY;CAAW;CAAY;AAAc;;;;;AAM1G,MAAa,sBAAsB;CACjC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;;;;;AAMA,MAAa,gBAAgB,CAAC,GAAG,qBAAqB,GAAG,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyF9E,IAAaC,sBAAb,MAA+B;CAC7B;CACA;;;;;;CAOA,YAAY,OAAyB,QAAiC;EACpE,KAAK,QAAQ;EACb,KAAK,SAAS;CAChB;;;;;;CAOA,WAA6B;EAC3B,OAAO,KAAK;CACd;CAEA,yBAA4C;EAC1C,OAAO;CACT;;;;CAKA,WAAW,GAAsC;EAC/C,OAAO,aAAaN,OAAAA;CACtB;;;;CAKA,MAAM,GAA8C;EAClD,OAAO,aAAaC,OAAAA;CACtB;;;;CAKA,OAAO,GAA6B;EAClC,OAAO,aAAaM,OAAAA;CACtB;;;;CAKA,WAAW,GAAsC;EAC/C,OAAO,aAAaC,OAAAA;CACtB;;;;CAKA,MAAM,GAAwC;EAC5C,OAAO,aAAaN,OAAAA;CACtB;;;;CAKA,QAAQ,GAA6D;EACnE,OAAO,aAAaC,OAAAA;CACtB;;;;CAKA,SAAS,GAA+B;EACtC,OAAO,aAAaC,OAAAA;CACtB;;;;CAKA,SAAS,GAA+B;EACtC,OAAO,aAAaC,OAAAA;CACtB;;;;CAKA,OAAO,GAA6B;EAClC,OAAO,aAAaI,OAAAA;CACtB;;;;CAKA,UAAU,GAAqC;EAC7C,OAAO,aAAaC,OAAAA;CACtB;;;;CAKA,eAAe,GAA+C;EAC5D,OAAO,aAAaC,OAAAA;CACtB;;;;;;;CAQA,cAAuB;EACrB,OAAO,KAAK,OAAO,YAAY;CACjC;;;;;;;CAQA,kBAAuC;EACrC,OAAO,KAAK,OAAO,gBAAgB;CACrC;;;;;;;;CASA,eAAe,OAA+B;EAC5C,OAAO,KAAK,OAAO,eAAe,KAAK;CACzC;;;;;;;CAQA,wBACE,OACA,UAAqC,EAAE,aAAa,KAAK,GAC/B;EAC1B,MAAM,iBAAiB,OAAO,QAAQ,MAAM,KAAK,CAAC,CAAC,QAAoC,KAAK,CAAC,KAAK,eAAe;GAC/G,IAAI,OAAO,KAAK,eAAe,SAAuB;GACtD,OAAO;EACT,GAAG,CAAC,CAAC;EAEL,IAAI,SAAmCC,OAAAA,EAAE,OAAO,cAAc;EAE9D,IAAI,MAAM,KAAK,gBAAgB,UAC7B,SAAS,OAAO,OAAO;EAEzB,IAAI,MAAM,KAAK,YAAY,EAAE,MAAM,KAAK,oBAAoBA,OAAAA,EAAE,WAC5D,SAAS,OAAO,SAAS,MAAM,KAAK,QAAQ;EAG9C,IAAI,MAAM,aACR,SAAS,OAAO,SAAS,MAAM,WAAW;EAG5C,IAAI,QAAQ,eAAe,MAAM,KAAK,gBAAgB,eACpD,SAAS,OAAO,YAAY;EAG9B,OAAO;CACT;;;;;;;;;;;CAYA,0BACE,aACA,aACoB;EACpB,IAAI,YAAY,SAAS,GACvB,QAAQ,cAAc,cAAc,OAAO,MAAM,gBAAgB,YAAY,KAAK,IAAI;OAEtF,OAAO;CAEX;;;;;;;;;CAUA,iCACE,OACA,eAA8C,uBAC/B;EACf,IAAI,aAAa,SAAS,MAAM,MAAM,QAA8B,GAClE,MAAM,IAAI,MAAM,GAAG,KAAK,MAAM,QAAQ,8BAA8B,MAAM,MAAM,UAAU;EAE5F,OAAO;CACT;;;;;;;;CASA,uBACE,OACA,eAA0C,kBACtB;EACpB,MAAM,cAAc,MAAM;EAC1B,MAAM,gBAAgB,KAAK,eAAe,YAAY,IAAI;EAE1D,IAAI,SAASA,OAAAA,EAAE,MAAM,aAAa;EAElC,MAAM,cAAoC,CAAC;EAE3C,IAAI,YAAY,WAAW,UAAU,KAAA,GACnC,IAAI,aAAa,SAAS,KAAK,GAC7B,YAAY,KAAK,kBAAkB,YAAY,UAAU,OAAO;OAEhE,SAAS,OAAO,IAAI,YAAY,UAAU,KAAK;EAInD,IAAI,YAAY,WAAW,UAAU,KAAA,GACnC,IAAI,aAAa,SAAS,KAAK,GAC7B,YAAY,KAAK,kBAAkB,YAAY,UAAU,OAAO;OAEhE,SAAS,OAAO,IAAI,YAAY,UAAU,KAAK;EAInD,IAAI,YAAY,aAAa,UAAU,KAAA,GACrC,IAAI,aAAa,SAAS,QAAQ,GAChC,YAAY,KAAK,gBAAgB,YAAY,YAAY,OAAO;OAEhE,SAAS,OAAO,OAAO,YAAY,YAAY,KAAK;EAIxD,MAAM,cAAc,KAAK,0BAA0B,MAAM,aAAa,WAAW;EACjF,IAAI,aACF,SAAS,OAAO,SAAS,WAAW;EAEtC,OAAO;CACT;;;;;;;;CASA,uBAA8B,OAA4D;EACxF,MAAM,mBAAmB,MAAM,KAAK,QAAQ,KAAK,WAAuB,KAAK,eAAe,MAAM,CAAC;EACnG,IAAI,iBAAiB,SAAS,GAAG,MAAM,IAAI,MAAM,oCAAoC;EACrF,IAAI,SAASA,OAAAA,EAAE,MAAM,gBAA6D;EAClF,IAAI,MAAM,aACR,SAAS,OAAO,SAAS,MAAM,WAAW;EAE5C,OAAO;CACT;;;;;;;;CASA,wBACE,OACA,eAA2C,mBAChC;EACX,MAAM,cAAoC,CAAC;EAC3C,MAAM,SAAS,MAAM,KAAK,UAAU,CAAC;EAErC,MAAM,YAA8B,CAAC;EACrC,KAAK,MAAM,SAAS,QAClB,IAAI,UAAU,OACZ,IAAI,aAAa,SAAS,MAAM,IAAuB,GACrD,QAAQ,MAAM,MAAd;GACE,KAAK;IACH,YAAY,KAAK,+BAA+B,MAAM,MAAM,QAAQ;IACpE;GAEF,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;IACH,YAAY,KAAK,WAAW,MAAM,MAAM;IACxC;GAEF,KAAK;GACL,KAAK;IACH,YAAY,KAAK,GAAG,MAAM,KAAK,cAAc,MAAM,OAAO;IAC1D;EAEJ;OAEA,UAAU,KAAK,KAAK;EAI1B,IAAI,SAASA,OAAAA,EAAE,OAAO;EACtB,KAAK,MAAM,SAAS,WAClB,SAAS,OAAO,UAAU,KAAK;EAEjC,MAAM,cAAc,KAAK,0BAA0B,MAAM,aAAa,WAAW;EACjF,IAAI,aACF,SAAS,OAAO,SAAS,WAAW;EAEtC,OAAO;CACT;;;;;;;;CASA,wBACE,OACA,eAA2C,mBAChC;EACX,MAAM,cAAoC,CAAC;EAC3C,MAAM,SAAS,MAAM,KAAK,UAAU,CAAC;EAErC,MAAM,YAA8B,CAAC;EACrC,KAAK,MAAM,SAAS,QAClB,IAAI,UAAU,OACZ,IAAI,aAAa,SAAS,MAAM,IAAuB,GACrD,QAAQ,MAAM,MAAd;GACE,KAAK;IACH,IAAI,MAAM,WACR,YAAY,KAAK,4BAA4B,MAAM,OAAO;SAE1D,YAAY,KAAK,gBAAgB,MAAM,OAAO;IAEhD;GACF,KAAK;IACH,IAAI,MAAM,WACR,YAAY,KAAK,0BAA0B,MAAM,OAAO;SAExD,YAAY,KAAK,cAAc,MAAM,OAAO;IAE9C;GACF,KAAK;IACH,YAAY,KAAK,eAAe,MAAM,OAAO;IAC7C;EAEJ;OAEA,UAAU,KAAK,KAAK;EAI1B,IAAI,SAASA,OAAAA,EAAE,OAAO;EACtB,KAAK,MAAM,SAAS,WAClB,QAAQ,MAAM,MAAd;GACE,KAAK;IACH,SAAS,OAAO,IAAI;IACpB;GACF,KAAK;IACH,SAAS,OAAO,OAAO;IACvB;GACF,SACE,SAAS,OAAO,UAAU,KAAK;EACnC;EAEF,MAAM,cAAc,KAAK,0BAA0B,MAAM,aAAa,WAAW;EACjF,IAAI,aACF,SAAS,OAAO,SAAS,WAAW;EAEtC,OAAO;CACT;;;;;;;CAQA,sBAA6B,OAA2B;EACtD,MAAM,cAAoC,CAAC;EAC3C,MAAM,SAAS,MAAM,KAAK,UAAU,CAAC;EAErC,MAAM,YAA4B,CAAC;EACnC,KAAK,MAAM,SAAS,QAClB,IAAI,UAAU,OACZ,QAAQ,MAAM,MAAd;GACE,KAAK;IACH,MAAM,UAAU,IAAI,KAAK,MAAM,KAAK;IACpC,IAAI,CAAC,MAAM,QAAQ,QAAQ,CAAC,GAC1B,YAAY,KAAK,2BAA2B,QAAQ,YAAY,EAAE,OAAO;IAE3E;GACF,KAAK;IACH,MAAM,UAAU,IAAI,KAAK,MAAM,KAAK;IACpC,IAAI,CAAC,MAAM,QAAQ,QAAQ,CAAC,GAC1B,YAAY,KAAK,2BAA2B,QAAQ,YAAY,EAAE,OAAO;IAE3E;GACF,SACE,UAAU,KAAK,KAAK;EACxB;EAGJ,YAAY,KAAK,0BAA0B;EAC3C,IAAI,SAASA,OAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,WAAW;EAC5C,MAAM,cAAc,KAAK,0BAA0B,MAAM,aAAa,WAAW;EACjF,IAAI,aACF,SAAS,OAAO,SAAS,WAAW;EAEtC,OAAO;CACT;;;;;;;;CASA,0BACE,OACA,cAAqC,qBACzB;EACZ,IAAI,YAAY,SAAS,MAAM,KAAK,UAAU,KAAK,QAAsB,GACvE,OAAO,KAAK,eAAe,MAAM,KAAK,SAAS,CAAC,CAAC,SAAS;OAE1D,OAAO;CAEX;;;;;;;;CASA,0BACE,OACA,cAAqC,qBACzB;EACZ,IAAI,YAAY,SAAS,MAAM,KAAK,UAAU,KAAK,QAAsB,GACvE,OAAO,KAAK,eAAe,MAAM,KAAK,SAAS,CAAC,CAAC,SAAS;OAE1D,OAAO;CAEX;;;;CAKA,0BAAkC,OAAiC;EACjE,IAAI,iBAAiBD,OAAAA,iBACnB,OAAO,CAAC,GAAG,KAAK,0BAA0B,MAAM,KAAK,IAAI,GAAG,GAAG,KAAK,0BAA0B,MAAM,KAAK,KAAK,CAAC;EAEjH,OAAO,CAAC,KAAK;CACf;;;;;;CAOA,8BAAqC,OAA8C;EAEjF,MAAM,YADS,KAAK,0BAA0B,KACvB,CAAC,CAAC,KAAI,SAAQ,KAAK,eAAe,IAAI,CAAC;EAE9D,IAAI,UAAU,OAAM,MAAK,aAAaV,OAAAA,SAAS,GAAG;GAChD,MAAM,cAA0C,CAAC;GACjD,KAAK,MAAM,OAAO,WAChB,OAAO,OAAO,aAAa,IAAI,KAAK;GAEtC,IAAI,SAAqBW,OAAAA,EAAE,OAAO,WAAW;GAC7C,IAAI,MAAM,aACR,SAAS,OAAO,SAAS,MAAM,WAAW;GAE5C,OAAO;EACT;EAEA,OAAOA,OAAAA,EAAE,IAAI,CAAC,CAAC,SAAS,MAAM,eAAe,mBAAmB;CAClE;;;;;;;CAQA,qBAA4B,WAAgC;EAG1D,OAAO,8BAFiB,KAAK,eAAe,SAEO,GAAG,KAAK,gBAAgB,CAAC;CAC9E;;;;;;;CAQA,oBAA2B,WAAqC;EAC9D,OAAO,KAAK,qBAAqB,SAAS,CAAC,CAAC;CAC9C;AACF;;;;;;;AC3pBA,MAAaC,sBAAoB;CAC/B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;;;;;AAMA,MAAaC,sBAAoB;CAAC;CAAgB;CAAa;AAAa;;;;;AAM5E,MAAaC,qBAAmB;CAAC;CAAO;CAAO;AAAQ;;;;;AAMvD,MAAaC,0BAAwB;CAAC;CAAmB;CAAY;CAAW;CAAY;AAAc;;;;;AAM1G,MAAaC,wBAAsB;CACjC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAM6B,CAAC,GAAGA,uBAAqB,GAAGD,uBAAqB;;;;;;;AAuD9E,SAAS,cAAc,OAAwB;CAC7C,MAAM,SAAU,OAA8D,MAAM,KAAK;CACzF,OAAO,SAAS,QAAQ,OAAO,OAAO,CAAC,CAAC,CAAC,YAAY,IAAI,OAAO,MAAM,CAAC,IAAI;AAC7E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCA,IAAaG,sBAAb,MAA+B;CAC7B;CACA;;;;;;CAOA,YAAY,OAAyB,QAAiC;EACpE,KAAK,QAAQ;EACb,KAAK,SAAS;CAChB;;;;;;CAOA,WAA6B;EAC3B,OAAO,KAAK;CACd;CAEA,yBAA4C;EAC1C,OAAOH;CACT;;;;CAKA,WAAW,GAAqD;EAC9D,OAAO,aAAaI,OAAAA;CACtB;;;;CAKA,MAAM,GAA2D;EAC/D,OAAO,aAAaC,OAAAA;CACtB;;;;CAKA,OAAO,GAAmC;EACxC,OAAO,aAAaC,OAAAA;CACtB;;;;CAKA,WAAW,GAAqD;EAC9D,OAAO,aAAaC,OAAAA;CACtB;;;;CAKA,MAAM,GAA+C;EACnD,OAAO,aAAaC,OAAAA;CACtB;;;;CAKA,QAAQ,GAAmF;EACzF,OAAO,aAAaC,OAAAA;CACtB;;;;CAKA,SAAS,GAAuC;EAC9C,OAAO,aAAaC,OAAAA;CACtB;;;;CAKA,SAAS,GAAuC;EAC9C,OAAO,aAAaC,OAAAA;CACtB;;;;CAKA,OAAO,GAAmC;EACxC,OAAO,aAAaC,OAAAA;CACtB;;;;CAKA,UAAU,GAAmD;EAC3D,OAAO,aAAaC,OAAAA;CACtB;;;;CAKA,eAAe,GAAuE;EACpF,OAAO,aAAaC,OAAAA;CACtB;;;;;;;CAQA,cAAuB;EACrB,OAAO,KAAK,OAAO,YAAY;CACjC;;;;;;;CAQA,kBAAuC;EACrC,OAAO,KAAK,OAAO,gBAAgB;CACrC;;;;;;;;CASA,eAAe,OAAyB;EACtC,OAAO,KAAK,OAAO,eAAe,KAAK;CACzC;;;;;;;CAQA,wBACE,OACA,UAAqC,EAAE,aAAa,KAAK,GACpC;EACrB,MAAM,iBAAiB,OAAO,QAAQ,MAAM,KAAK,CAAC,CAAC,QAAiC,KAAK,CAAC,KAAK,eAAe;GAC5G,IAAI,OAAO,KAAK,eAAe,SAAmB;GAClD,OAAO;EACT,GAAG,CAAC,CAAC;EAEL,IAAI,SAA8BC,OAAAA,EAAE,OAAO,cAAc;EAGzD,IAAI,MAAM,KAAK,IAAI,oBAAoBA,OAAAA,EAAE,UACvC,SAASA,OAAAA,EAAE,aAAa,cAAc;OAGnC,IAAI,MAAM,KAAK,IAAI,oBAAoBA,OAAAA,EAAE,YACxC;OAAA,QAAQ,aAEV,SAASA,OAAAA,EAAE,YAAY,cAAc;EAAA,OAKpC,IAAI,MAAM,KAAK,IAAI,UACtB,SAAS,OAAO,SAAS,MAAM,KAAK,IAAI,QAAQ;EAGlD,IAAI,MAAM,aACR,SAAS,OAAO,SAAS,MAAM,WAAW;EAG5C,OAAO;CACT;;;;;;;;;;;CAYA,0BACE,aACA,aACoB;EACpB,IAAI,YAAY,SAAS,GACvB,QAAQ,cAAc,cAAc,OAAO,MAAM,gBAAgB,YAAY,KAAK,IAAI;OAEtF,OAAO;CAEX;;;;;;;;;CAUA,iCACE,OACA,eAA8Cf,yBAC/B;EACf,IAAI,aAAa,SAAS,MAAM,YAAY,IAA0B,GACpE,MAAM,IAAI,MAAM,GAAG,KAAK,MAAM,QAAQ,8BAA8B,MAAM,YAAY,MAAM;EAE9F,OAAO;CACT;;;;;;;;CASA,uBACE,OACA,eAA0CD,oBAC3B;EACf,MAAM,cAAc,MAAM,KAAK;EAC/B,MAAM,gBAAgB,KAAK,eAAe,YAAY,OAAO;EAE7D,IAAI,SAASgB,OAAAA,EAAE,MAAM,aAAa;EAElC,MAAM,cAAoC,CAAC;EAC3C,IAAI,YAAY,QACd,KAAK,MAAM,SAAS,YAAY,QAAQ;GACtC,IAAI,MAAM,KAAK,IAAI,UAAU,cAC3B,IAAI,aAAa,SAAS,KAAK,GAE7B,YAAY,KAAK,kBAAkB,MAAM,KAAK,IAAI,SAAS;QAG3D,SAAS,OAAO,IAAI,MAAM,KAAK,IAAI,OAAO;GAG9C,IAAI,MAAM,KAAK,IAAI,UAAU,cAC3B,IAAI,aAAa,SAAS,KAAK,GAE7B,YAAY,KAAK,kBAAkB,MAAM,KAAK,IAAI,SAAS;QAG3D,SAAS,OAAO,IAAI,MAAM,KAAK,IAAI,OAAO;GAG9C,IAAI,MAAM,KAAK,IAAI,UAAU,iBAC3B,IAAI,aAAa,SAAS,QAAQ,GAEhC,YAAY,KAAK,gBAAgB,MAAM,KAAK,IAAI,QAAQ;QAGxD,SAAS,OAAO,OAAO,MAAM,KAAK,IAAI,MAAM;EAGlD;EAGF,MAAM,kBAAkB,MAAM,KAAK,CAAC,EAAE;EACtC,MAAM,oBAAoB,MAAM;EAEhC,MAAM,cAAc,KAAK,0BAA0B,mBAAmB,mBAAmB,WAAW;EACpG,IAAI,aACF,SAAS,OAAO,SAAS,WAAW;EAEtC,OAAO;CACT;;;;;;;;CASA,uBAA8B,OAAgD;EAC5E,MAAM,mBAAmB,MAAM,KAAK,IAAI,QAAQ,KAAK,WAAmB,KAAK,eAAe,MAAM,CAAC;EACnG,IAAI,iBAAiB,SAAS,GAAG,MAAM,IAAI,MAAM,oCAAoC;EACrF,IAAI,SAASA,OAAAA,EAAE,MAAM,gBAAiD;EACtE,IAAI,MAAM,aACR,SAAS,OAAO,SAAS,MAAM,WAAW;EAG5C,OAAO;CACT;;;;;;;;CASA,wBACE,OACA,eAA2ClB,qBAChC;EACX,MAAM,cAAoC,CAAC;EAC3C,MAAM,SAAS,MAAM,KAAK,IAAI,UAAU,CAAC;EAEzC,MAAM,YAA8B,CAAC;EAErC,IAAI,QACF,KAAK,MAAM,SAAS,QAClB,IAAI,aAAa,SAAS,MAAM,KAAK,IAAI,KAAwB,GAC/D,QAAQ,MAAM,KAAK,IAAI,OAAvB;GACE,KAAK;IAEH,YAAY,KAAK,kBAAkB,MAAM,KAAK,IAAI,SAAS;IAC3D;GACF,KAAK;IAEH,YAAY,KAAK,kBAAkB,MAAM,KAAK,IAAI,SAAS;IAC3D;GACF,KAAK;IAGD,QAAQ,MAAM,KAAK,IAAI,QAAvB;KACE,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;MAEH,YAAY,KAAK,WAAW,MAAM,KAAK,IAAI,QAAQ;MACnD;KACF,KAAK;MAEH,YAAY,KAAK,+BAA+B,MAAM,KAAK,IAAI,SAAS;MACxE;KACF;MAIE,UAAU,KAAK,KAAK;MACpB;IACJ;IAEF;EACJ;OAEA,UAAU,KAAK,KAAK;EAK1B,IAAI,SAASkB,OAAAA,EAAE,OAAO;EACtB,KAAK,MAAM,SAAS,WAClB,SAAS,OAAO,MAAM,KAAK;EAG7B,MAAM,kBAAkB,MAAM,KAAK,CAAC,EAAE;EACtC,MAAM,oBAAoB,MAAM;EAEhC,MAAM,cAAc,KAAK,0BAA0B,mBAAmB,mBAAmB,WAAW;EACpG,IAAI,aACF,SAAS,OAAO,SAAS,WAAW;EAEtC,OAAO;CACT;;;;;;;;CASA,wBACE,OACA,eAA2CjB,qBAChC;EACX,MAAM,cAAoC,CAAC;EAC3C,MAAM,SAAS,MAAM,KAAK,IAAI,UAAU,CAAC;EAEzC,MAAM,YAA8B,CAAC;EAErC,IAAI,QACF,KAAK,MAAM,SAAS,QAClB,IAAI,aAAa,SAAS,MAAM,KAAK,IAAI,KAAwB,GAC/D,QAAQ,MAAM,KAAK,IAAI,OAAvB;GACE,KAAK;IAEH,IAAI,MAAM,KAAK,IAAI,WAEjB,YAAY,KAAK,4BAA4B,MAAM,KAAK,IAAI,OAAO;SAGnE,YAAY,KAAK,gBAAgB,MAAM,KAAK,IAAI,OAAO;IAEzD;GACF,KAAK;IAEH,IAAI,MAAM,KAAK,IAAI,WAEjB,YAAY,KAAK,0BAA0B,MAAM,KAAK,IAAI,OAAO;SAGjE,YAAY,KAAK,cAAc,MAAM,KAAK,IAAI,OAAO;IAEvD;GACF,KAAK;IAEH,YAAY,KAAK,eAAe,MAAM,KAAK,IAAI,OAAO;IACtD;EAEJ;OAEA,UAAU,KAAK,KAAK;EAI1B,IAAI,SAASiB,OAAAA,EAAE,OAAO;EAEtB,KAAK,MAAM,SAAS,WAClB,QAAQ,MAAM,KAAK,IAAI,OAAvB;GACE,KAAK;IAEH,QAAQ,MAAM,KAAK,IAAI,QAAvB;KACE,KAAK;MACH,SAAS,OAAO,IAAI;MACpB;IACJ;IACA;GAEF,SAEE,SAAS,OAAO,MAAM,KAAK;EAC/B;EAEF,MAAM,cAAc,KAAK,0BAA0B,MAAM,aAAa,WAAW;EACjF,IAAI,aACF,SAAS,OAAO,SAAS,WAAW;EAEtC,OAAO;CACT;;;;;;;CAQA,sBAA6B,OAA2B;EACtD,MAAM,cAAoC,CAAC;EAC3C,MAAM,SAAS,MAAM,KAAK,IAAI,UAAU,CAAC;EAEzC,MAAM,YAA4B,CAAC;EACnC,IAAI,QACF,KAAK,MAAM,SAAS,QAClB,QAAQ,MAAM,KAAK,IAAI,OAAvB;GAEE,KAAK;IAEH,MAAM,UAAU,IAAI,KAAK,MAAM,KAAK,IAAI,KAAK;IAC7C,IAAI,CAAC,MAAM,QAAQ,QAAQ,CAAC,GAC1B,YAAY,KAAK,2BAA2B,QAAQ,YAAY,EAAE,OAAO;IAE3E;GAEF,KAAK;IAEH,MAAM,UAAU,IAAI,KAAK,MAAM,KAAK,IAAI,KAAK;IAC7C,IAAI,CAAC,MAAM,QAAQ,QAAQ,CAAC,GAC1B,YAAY,KAAK,2BAA2B,QAAQ,YAAY,EAAE,OAAO;IAE3E;GACF,SACE,UAAU,KAAK,KAAK;EACxB;EAGJ,YAAY,KAAK,0BAA0B;EAC3C,IAAI,SAASA,OAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,WAAW;EAC5C,MAAM,cAAc,KAAK,0BAA0B,MAAM,aAAa,WAAW;EACjF,IAAI,aACF,SAAS,OAAO,SAAS,WAAW;EAEtC,OAAO;CACT;;;;;;;;CASA,0BACE,OACA,cAAqCd,uBAC5B;EACT,MAAM,YAAY,MAAM,MAAM,KAAK;EAGnC,IAAI,aAAa,YAAY,SAAS,cAAc,SAAS,CAAe,GAC1E,OAAO,KAAK,eAAe,SAAS,CAAC,CAAC,SAAS;OAE/C,OAAO;CAEX;;;;;;;;CASA,0BACE,OACA,cAAqCA,uBAC5B;EACT,MAAM,YAAY,MAAM,MAAM,KAAK;EAGnC,IAAI,aAAa,YAAY,SAAS,cAAc,SAAS,CAAe,GAC1E,OAAO,KAAK,eAAe,SAAS,CAAC,CAAC,SAAS;OAE/C,OAAO;CAEX;;;;CAKA,0BAAkC,OAA2B;EAC3D,IAAI,iBAAiBa,OAAAA,iBACnB,OAAO,CACL,GAAG,KAAK,0BAA0B,MAAM,KAAK,IAAI,IAAe,GAChE,GAAG,KAAK,0BAA0B,MAAM,KAAK,IAAI,KAAgB,CACnE;EAEF,OAAO,CAAC,KAAK;CACf;;;;;;CAOA,8BAAqC,OAA2C;EAE9E,MAAM,YADS,KAAK,0BAA0B,KACvB,CAAC,CAAC,KAAI,SAAQ,KAAK,eAAe,IAAI,CAAC;EAE9D,IAAI,UAAU,OAAM,MAAK,aAAaT,OAAAA,SAAS,GAAG;GAChD,MAAM,cAAuC,CAAC;GAC9C,KAAK,MAAM,OAAO,WAChB,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,IAAI,KAAK,GAAG;IACpD,IAAI,OAAO,aACT,MAAM,IAAI,MAAM,oDAAoD;IAEtE,YAAY,OAAO;GACrB;GAEF,IAAI,SAAkBU,OAAAA,EAAE,OAAO,WAAW;GAC1C,IAAI,MAAM,aACR,SAAS,OAAO,SAAS,MAAM,WAAW;GAE5C,OAAO;EACT;EAEA,OAAOA,OAAAA,EAAE,IAAI,CAAC,CAAC,SAAS,MAAM,eAAe,mBAAmB;CAClE;;;;;;;CAQA,qBAA4B,WAA4B;EAGtD,OAAO,8BAFiB,KAAK,eAAe,SAEO,GAAG,KAAK,gBAAgB,CAAC;CAC9E;;;;;;;CAQA,oBAA2B,WAAiC;EAC1D,OAAO,KAAK,qBAAqB,SAAS,CAAC,CAAC;CAC9C;AACF;;;;;;;ACxvBA,SAAS,QAAQ,QAAqB,MAAoC;CACxE,IAAI,OAAO,SAAS,MAAM,OAAO;CACjC,IAAI,MAAM,QAAQ,OAAO,IAAI,KAAK,OAAO,KAAK,SAAS,IAAI,GAAG,OAAO;CACrE,OAAO;AACT;;;;AAKA,SAAgB,eAAe,QAA8B;CAC3D,OAAO,QAAQ,QAAQ,QAAQ,KAAK,OAAO,eAAe,KAAA;AAC5D;;;;AAKA,SAAgB,cAAc,QAA8B;CAC1D,OAAO,QAAQ,QAAQ,OAAO,KAAK,OAAO,UAAU,KAAA;AACtD;;;;AAKA,SAAgB,eAAe,QAA8B;CAC3D,OAAO,QAAQ,QAAQ,QAAQ;AACjC;;;;AAKA,SAAgB,eAAe,QAA8B;CAC3D,OAAO,QAAQ,QAAQ,QAAQ,KAAK,QAAQ,QAAQ,SAAS;AAC/D;;;;AAKA,SAAgB,cAAc,QAAuE;CACnG,OAAO,MAAM,QAAQ,OAAO,KAAK,KAAK,OAAO,MAAM,SAAS;AAC9D;;;;AAKA,SAAgB,cAAc,QAAuE;CACnG,OAAO,MAAM,QAAQ,OAAO,KAAK,KAAK,OAAO,MAAM,SAAS;AAC9D;;;;AAKA,SAAgB,cAAc,QAA8B;CAC1D,OAAO,cAAc,MAAM,KAAK,cAAc,MAAM,KAAK,MAAM,QAAQ,OAAO,IAAI;AACpF;;;;AAmBA,SAAgB,cAAc,QAAuE;CACnG,OAAO,MAAM,QAAQ,OAAO,KAAK,KAAK,OAAO,MAAM,SAAS;AAC9D;;;;;;;AAwCA,SAAgB,iBAAiB,cAAsB,cAAoC;CACzF,IAAI,CAAC,aAAa,YAAY,CAAC,MAAM,QAAQ,aAAa,QAAQ,GAChE,OAAO;CAET,OAAO,CAAC,aAAa,SAAS,SAAS,YAAY;AACrD;;;AC/EA,IAAsB,oBAAtB,MAAwC;CACtC;CACA;CACA;;;;;;CAOA,YAAY,OAAyB;EACnC,KAAK,QAAQ;EACb,KAAK,UAAU,IAAIC,oBAAoB,OAAO,IAAI;EAClD,KAAK,UAAU,IAAIC,oBAAoB,OAAO,IAAI;CACpD;CAEA,mBAA0B,SAAsB,eAAmC,CAAC;CACpF,oBAA2B,SAAsB,eAAmC,CAAC;;;;;;CAOrF,WAA6B;EAC3B,OAAO,KAAK;CACd;CAEA,uBAAuB,OAAmC;EACxD,IAAI,UAAU,OACZ,OAAO,KAAK,QAAQ,uBAAuB;OAE3C,OAAO,KAAK,QAAQ,uBAAuB;CAE/C;CAEA,WAAW,GAAgF;EACzF,IAAI,UAAU,GACZ,OAAO,KAAK,QAAQ,WAAW,CAAQ;OAEvC,OAAO,KAAK,QAAQ,WAAW,CAAQ;CAE3C;CAEA,MAAM,GAAqG;EACzG,IAAI,UAAU,GACZ,OAAO,KAAK,QAAQ,MAAM,CAAQ;OAElC,OAAO,KAAK,QAAQ,MAAM,CAAQ;CAEtC;CAEA,OAAO,GAA8D;EACnE,IAAI,UAAU,GACZ,OAAO,KAAK,QAAQ,OAAO,CAAQ;OAEnC,OAAO,KAAK,QAAQ,OAAO,CAAQ;CAEvC;CAEA,WAAW,GAAgF;EACzF,IAAI,UAAU,GACZ,OAAO,KAAK,QAAQ,WAAW,CAAQ;OAEvC,OAAO,KAAK,QAAQ,WAAW,CAAQ;CAE3C;CAEA,MAAM,GAA+E;EACnF,IAAI,UAAU,GACZ,OAAO,KAAK,QAAQ,MAAM,CAAQ;OAElC,OAAO,KAAK,QAAQ,MAAM,CAAQ;CAEtC;CAEA,QACE,GACoG;EACpG,IAAI,UAAU,GACZ,OAAO,KAAK,QAAQ,QAAQ,CAAQ;OAEpC,OAAO,KAAK,QAAQ,QAAQ,CAAQ;CAExC;CAEA,SAAS,GAAkE;EACzE,IAAI,UAAU,GACZ,OAAO,KAAK,QAAQ,SAAS,CAAQ;OAErC,OAAO,KAAK,QAAQ,SAAS,CAAQ;CAEzC;CAEA,SAAS,GAAkE;EACzE,IAAI,UAAU,GACZ,OAAO,KAAK,QAAQ,SAAS,CAAQ;OAErC,OAAO,KAAK,QAAQ,SAAS,CAAQ;CAEzC;CAEA,OAAO,GAA8D;EACnE,IAAI,UAAU,GACZ,OAAO,KAAK,QAAQ,OAAO,CAAQ;OAEnC,OAAO,KAAK,QAAQ,OAAO,CAAQ;CAEvC;CAEA,UAAU,GAA8E;EACtF,IAAI,UAAU,GACZ,OAAO,KAAK,QAAQ,UAAU,CAAQ;OAEtC,OAAO,KAAK,QAAQ,UAAU,CAAQ;CAE1C;CAEA,eAAe,GAAkG;EAC/G,IAAI,UAAU,GACZ,OAAO,KAAK,QAAQ,eAAe,CAAQ;OAE3C,OAAO,KAAK,QAAQ,eAAe,CAAQ;CAE/C;CAMA,wBACE,OACA,UAAqC,EAAE,aAAa,KAAK,GACS;EAClE,IAAI,UAAU,OACZ,OAAO,KAAK,QAAQ,wBAAwB,OAAO,OAAO;OAE1D,OAAO,KAAK,QAAQ,wBAAwB,OAAO,OAAO;CAE9D;CAEA,0BACE,aACA,aACoB;EACpB,OAAO,KAAK,QAAQ,0BAA0B,aAAa,WAAW;CACxE;CAEA,iCACE,OACA,cAC2B;EAC3B,IAAI,UAAU,OACZ,OAAO,KAAK,QAAQ,iCAClB,OACC,gBAAgBC,uBACnB;OAEA,OAAO,KAAK,QAAQ,iCAClB,OACC,gBAAgBC,qBACnB;CAEJ;CAEA,uBACE,OACA,eAA6CC,kBACD;EAC5C,IAAI,UAAU,OACZ,OAAO,KAAK,QAAQ,uBAAuB,OAAO,YAAY;OAE9D,OAAO,KAAK,QAAQ,uBAAuB,OAAO,YAAY;CAElE;CAEA,uBAA8B,OAA4C;EACxE,IAAI,UAAU,OACZ,OAAO,KAAK,QAAQ,uBAAuB,KAAY;OAEvD,OAAO,KAAK,QAAQ,uBAAuB,KAAY;CAE3D;CAEA,wBACE,OACA,eAA8CC,mBACf;EAC/B,IAAI,UAAU,OACZ,OAAO,KAAK,QAAQ,wBAAwB,KAAK;OAEjD,OAAO,KAAK,QAAQ,wBAAwB,OAAO,YAAY;CAEnE;CAEA,wBACE,OACA,eAA8CC,mBACf;EAC/B,IAAI,UAAU,OACZ,OAAO,KAAK,QAAQ,wBAAwB,KAAK;OAEjD,OAAO,KAAK,QAAQ,wBAAwB,OAAO,YAAY;CAEnE;CAEA,sBAA6B,OAAiE;EAC5F,IAAI,UAAU,OACZ,OAAO,KAAK,QAAQ,sBAAsB,KAAK;OAE/C,OAAO,KAAK,QAAQ,sBAAsB,KAAK;CAEnD;CAEA,0BACE,OACA,aAC2B;EAC3B,IAAI,CAAC,aACH,cAAc;GAAC;GAAa;GAAY;GAAY;GAAa;EAAW;EAK9E,IAAI;EACJ,IAAI,UAAU,OAAO;GAInB,MAAM,UADY,MAAM,MAAM,KAAK,UAAA,EACT,MAAM,KAAK;GACrC,IAAI,CAAC,QAEH,OAAO;GAGT,gBAAgB,QAAQ,OAAO,OAAO,CAAC,CAAC,CAAC,YAAY,IAAI,OAAO,MAAM,CAAC;EACzE,OACE,gBAAgB,MAAM,KAAK,UAAU,KAAK;EAG5C,IAAI,YAAY,SAAS,aAAa,GACpC,IAAI,UAAU,OAAO;GACnB,MAAM,YAAY,MAAM,MAAM,KAAK;GACnC,IAAI,CAAC,WACH,OAAO;GAET,OAAO,KAAK,eAAe,SAAS,CAAC,CAAC,SAAS;EACjD,OACE,OAAO,KAAK,eAAe,MAAM,KAAK,SAAS,CAAC,CAAC,SAAS;OAG5D,OAAO;CAEX;CAEA,0BACE,OACA,aAC2B;EAC3B,IAAI,UAAU,OACZ,OAAO,KAAK,QAAQ,0BAClB,OACC,eAAeC,qBAClB;OAEA,OAAO,KAAK,QAAQ,0BAClB,OACC,eAAeC,mBAClB;CAEJ;CAEA,8BACE,OAC2B;EAC3B,IAAI,UAAU,OACZ,OAAO,KAAK,QAAQ,8BAA8B,KAAY;OAE9D,OAAO,KAAK,QAAQ,8BAA8B,KAAY;CAElE;;;;;;CAOA,qBAA4B,WAAgD;EAG1E,OAAO,8BAFiB,KAAK,eAAe,SAEO,GAAG,KAAK,gBAAgB,CAAC;CAC9E;;;;;CAMA,oBAA2B,QAA2B,KAAyB,SAAsB;EAGnG,MAAM,aAAaC,eAAAA,2BAFIC,eAAAA,iBAAiB,MAEmB,GAAG;GAC5D,QAAQ;GACR;EACF,CAAC;EAED,CAAA,GAAA,4BAAA,QAAA,CAAS,YAAY,EACnB,IAAI;GACF,MAAK,WAAU;IACb,KAAK,mBAAmB,MAAM;GAChC;GACA,OAAM,WAAU;IACd,KAAK,oBAAoB,MAAM;GACjC;EACF,EACF,CAAC;EAED,OAAO;CACT;CAEA,sBAAgC,QAAoD;EAClF,OAAO,EACL,aAAa;GACX,SAAS;GACT,QAAQ;GACR,WAAW,UAAmBA,eAAAA,iBAAiB,MAAM,CAAC,CAAC,YAAY,CAAC,SAAS,KAAK;GAClF,YAAY;IACV,aAAa;KACX,OAAO,KAAK,oBAAoB,QAAQ,OAAO;IACjD;IACA,cAAc;KACZ,OAAO,KAAK,oBAAoB,QAAQ,QAAQ;IAClD;GACF;EACF,EACF;CACF;;;;;CAUA,qBAA+B,QAAkC;EAE/D,IAAI,OAAO,cAAc,OAAO,yBAAyB,KAAA,GACvD,OAAO,uBAAuB;EAGhC,IAAI,CAAC,OAAO,KAAK,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,QACxC,OAAO,WAAW,CAAC;EAGrB,OAAO;CACT;;;;;CAMA,oBAA8B,QAAkC;EAC9D,IAAI,cAAwB,CAAC;EAE7B,MAAM,WAAW,OAAO;EACxB,MAAM,WAAW,OAAO;EAExB,IAAI,aAAa,KAAA,KAAa,aAAa,KAAA,KAAa,aAAa,UAAU;GAC7E,cAAc,CAAC,gBAAgB,UAAU;GACzC,OAAO,OAAO;GACd,OAAO,OAAO;EAChB,OAAO;GACL,IAAI,aAAa,KAAA,GAAW;IAC1B,YAAY,KAAK,kBAAkB,UAAU;IAC7C,OAAO,OAAO;GAChB;GACA,IAAI,aAAa,KAAA,GAAW;IAC1B,YAAY,KAAK,kBAAkB,UAAU;IAC7C,OAAO,OAAO;GAChB;EACF;EAEA,IAAI,YAAY,QACd,OAAO,cAAc,KAAK,0BAA0B,OAAO,aAAa,WAAW;EAGrF,OAAO;CACT;;;;;CAMA,qBAA+B,QAAkC;EAC/D,MAAM,cAAwB,CAAC;EAE/B,IAAI,OAAO,cAAc,KAAA,GAAW;GAClC,YAAY,KAAK,kBAAkB,OAAO,WAAW;GACrD,OAAO,OAAO;EAChB;EACA,IAAI,OAAO,cAAc,KAAA,GAAW;GAClC,YAAY,KAAK,kBAAkB,OAAO,WAAW;GACrD,OAAO,OAAO;EAChB;EAEA,QAAQ,OAAO,QAAf;GACE,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;IACH,YAAY,KAAK,WAAW,OAAO,QAAQ;IAE3C,OAAO,OAAO;IACd,OAAO,OAAO;IACd;EAEJ;EAEA,IAAI,YAAY,WAAW,KAAK,OAAO,YAAY,KAAA,GAAW;GAC5D,YAAY,KAAK,+BAA+B,OAAO,SAAS;GAChE,OAAO,OAAO;EAChB;EAEA,IAAI,YAAY,QACd,OAAO,cAAc,KAAK,0BAA0B,OAAO,aAAa,WAAW;EAGrF,OAAO;CACT;;;;;CAMA,qBAA+B,QAAkC;EAC/D,MAAM,cAAwB,CAAC;EAC/B,IAAI,OAAO,YAAY,KAAA,GAAW;GAChC,IAAI,OAAO,YAAY,OAAO,kBAC5B,YAAY,KAAK,4BAA4B,OAAO,SAAS;GAG/D,OAAO,OAAO;EAChB;EACA,IAAI,OAAO,YAAY,KAAA,GAAW;GAChC,IAAI,OAAO,YAAY,OAAO,kBAC5B,YAAY,KAAK,0BAA0B,OAAO,SAAS;GAG7D,OAAO,OAAO;EAChB;EACA,IAAI,OAAO,qBAAqB,KAAA,GAAW;GACzC,YAAY,KAAK,gBAAgB,OAAO,kBAAkB;GAC1D,OAAO,OAAO;EAChB;EACA,IAAI,OAAO,qBAAqB,KAAA,GAAW;GACzC,YAAY,KAAK,cAAc,OAAO,kBAAkB;GACxD,OAAO,OAAO;EAChB;EACA,IAAI,OAAO,eAAe,KAAA,GAAW;GACnC,YAAY,KAAK,eAAe,OAAO,YAAY;GACnD,OAAO,OAAO;EAChB;EAEA,IAAI,YAAY,QACd,OAAO,cAAc,KAAK,0BAA0B,OAAO,aAAa,WAAW;EAGrF,OAAO;CACT;;;;;CAMA,oBAA8B,QAAkC;EAW9D,IAAI,MAAM,QAAQ,OAAO,KAAK,GAAG;GAI/B,OAAO,QAAQ,OAAO,MACnB,KAAI,cAAa;IAChB,IAAI,OAAO,cAAc,YAAY,cAAc,MACjD,OAAO;IAYT,KAAK,mBAAmB,SAAS;IACjC,KAAK,oBAAoB,SAAS;IAMlC,OAAO;GACT,CAAC,CAAC,CACD,OAAO,OAAO;GAEjB,IAAI,OAAO,MAAM,WAAW,GAC1B,SAAS,OAAO,MAAM;EAE1B;EAEA,OAAO;CACT;;;;;CAMA,oBAA8B,QAAkC;EAC9D,IAAI,CAAC,OAAO,SAAS,CAAC,MAAM,QAAQ,OAAO,KAAK,GAAG,OAAO;EAE1D,MAAM,mBAAgD,CAAC;EACvD,MAAM,iBAA2B,CAAC;EAElC,KAAK,MAAM,aAAa,OAAO,OAAwB;GACrD,IAAI,UAAU,YACZ,OAAO,OAAO,kBAAkB,UAAU,UAAU;GAEtD,IAAI,MAAM,QAAQ,UAAU,QAAQ,GAClC,eAAe,KAAK,GAAG,UAAU,QAAQ;EAE7C;EAEA,OAAO,OAAO;EACd,OAAO,OAAO;EACd,OAAO,aAAa;EACpB,IAAI,eAAe,SAAS,GAC1B,OAAO,WAAW,CAAC,GAAG,IAAI,IAAI,cAAc,CAAC;EAE/C,OAAO,uBAAuB;EAE9B,OAAO;CACT;;;;;CAMA,uBAAiC,QAAkC;EACjE,OAAO,KAAK,oBAAoB,MAAM;CACxC;;;;;CAMA,mBAA6B,QAAkC;EAC7D,IAAI,OAAO,WAAW,UAAU,OAAO,WAAW,aAAa;GAC7D,MAAM,SAAS,OAAO;GACtB,OAAO,OAAO;GACd,OAAO,cAAc,KAAK,0BAA0B,OAAO,aAAa,CAAC,WAAW,QAAQ,CAAC;EAC/F;EACA,OAAO;CACT;;;;;CAMA,0BAAoC,QAAkC;EACpE,IAAI,OAAO,KAAK,MAAM,CAAC,CAAC,WAAW,GACjC,OAAO,OAAO;GAAC;GAAU;GAAU;GAAW;EAAM;EAEtD,OAAO;CACT;;;;;CAMA,0BAAoC,QAAqB,sBAAgC,CAAC,GAAgB;EACxG,KAAK,MAAM,WAAW,qBACpB,IAAI,WAAW,QACb,OAAQ,OAAmC;EAG/C,OAAO;CACT;CAMA,eAAyB,QAA8B;EACrD,OAAOC,eAA+B,MAAM;CAC9C;CAEA,cAAwB,QAA8B;EACpD,OAAOC,cAA8B,MAAM;CAC7C;CAEA,eAAyB,QAA8B;EACrD,OAAOC,eAA+B,MAAM;CAC9C;CAEA,eAAyB,QAA8B;EACrD,OAAOC,eAA+B,MAAM;CAC9C;CAEA,cAAwB,QAA8B;EACpD,OAAOC,cAA8B,MAAM;CAC7C;CAEA,cAAwB,QAAuE;EAC7F,OAAOC,cAA8B,MAAM;CAC7C;;;;;;;CAQA,mBAA6B,cAAsB,cAAoC;EACrF,OAAOC,iBAAiC,cAAc,YAAY;CACpE;;;;;;;;CASA,aAAoB,WAAiC;EACnD,MAAM,4BAAyE;GAC7E,aAAa;GACb,qBAAqB;GACrB,UAAU;EACZ;EACA,MAAM,eAAe,KAAK,gBAAgB;EAC1C,MAAM,UAAU,gBAAgB,0BAA0B,kBAAkB;EAE5E,MAAM,aAAaR,eAAAA,2BADIC,eAAAA,iBAAiB,SACmB,GAAG;GAC5D;GACA,IAAI;EACN,CAAC;EAED,CAAA,GAAA,4BAAA,QAAA,CAAS,YAAY,EACnB,IAAI;GACF,MAAK,WAAU;IACb,KAAK,mBAAmB,MAAM;GAChC;GACA,OAAM,WAAU;IACd,KAAK,oBAAoB,MAAM;GACjC;EACF,EACF,CAAC;EAED,OAAO;CACT;AACF;;;;;;;;;;;;ACnsBA,SAAgB,yBAAyB,OAAgB,YAA8C;CACrG,IAAI,UAAU,QAAQ,UAAU,KAAA,GAC9B,OAAO;CAGT,IAAI,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,GAAG;EACrD,IAAI,MAAM,QAAQ,KAAK,KAAK,WAAW,SAAS,OAAO,WAAW,UAAU,UAC1E,OAAO,MAAM,KAAI,SAAQ,yBAAyB,MAAM,WAAW,KAAgC,CAAC;EAEtG,OAAO;CACT;CAEA,MAAM,aAAa,WAAW;CAC9B,IAAI,CAAC,YACH,OAAO;CAGT,MAAM,WAAY,WAAW,YAAyB,CAAC;CACvD,MAAM,SAAkC,CAAC;CAEzC,KAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,KAAgC,GACtE,IAAI,QAAQ,QAAQ,CAAC,SAAS,SAAS,GAAG,GAExC,OAAO,OAAO,KAAA;MACT,IAAI,QAAQ,QAAQ,OAAO,QAAQ,YAAY,WAAW,MAE/D,OAAO,OAAO,yBAAyB,KAAK,WAAW,IAAI;MAE3D,OAAO,OAAO;CAIlB,OAAO;AACT;;;;;;;;;;;;AAaA,SAAgB,4BACd,QACuC;CAEvC,IAAI;CACJ,IAAI;EACF,aAAa,OAAO,YAAY,CAAC,WAAW,MAAM,EAAE,QAAQ,WAAW,CAAC;CAC1E,QAAQ,CAER;CAEA,IAAI,CAAC,YACH,OAAO;CAGT,MAAM,aAAa,OAAO;CAE1B,OAAO,EACL,aAAa;EACX,SAAS,WAAW;EACpB,QAAQ,WAAW;EACnB,OAAO,WAAW;EAClB,WACE,OACA,YAC+E;GAC/E,MAAM,cAAc,yBAAyB,OAAO,UAAU;GAC9D,OAAO,WAAW,SAAS,aAAa,OAAO;EACjD;EACA,YAAY,WAAW;CACzB,EACF;AACF;ACUA,SAAgBW,aAA8C,GAAM;CAClE,QAAQ,MAAkC,aAAa,EAAE;AAC3D;AAIA,SAAgBC,QAAyC,GAAM;CAC7D,QAAQ,MAAgC,aAAa,EAAE;AACzD;AAIA,SAAgB,OAA0C,GAAM;CAC9D,QAAQ,MAA8B,aAAa,EAAE;AACvD;AAIA,SAAgBC,QAAyC,GAAM;CAC7D,QAAQ,MAA+B,aAAa,EAAE;AACxD;AAIA,SAAgBC,UAA2C,GAAM;CAC/D,QAAQ,MAA+B,aAAa,EAAE;AACxD;AAIA,SAAgBC,WAA4C,GAAM;CAChE,QAAQ,MAAgC,aAAa,EAAE;AACzD;AAIA,SAAgBC,WAA4C,GAAM;CAChE,QAAQ,MAAgC,aAAa,EAAE;AACzD;AAIA,SAAgB,OAA0C,GAAM;CAC9D,QAAQ,MAA8B,aAAa,EAAE;AACvD;AAIA,SAAgB,UAA6C,GAAM;CACjE,QAAQ,MAAiC,aAAa,EAAE;AAC1D;AAIA,SAAgB,WAA8C,GAAM;CAClE,QAAQ,MAAkC,aAAa,EAAE;AAC3D;AAIA,SAAgB,eAAkD,GAAM;CACtE,QAAQ,MAAsC,aAAa,EAAE;AAC/D;;;AC5IA,MAAM,uBAAuB;CAC3B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAEA,IAAa,0BAAb,cAA6C,kBAAkB;CAC7D,kBAAuC;EACrC,OAAO;CACT;CAEA,mBAA4B;EAG1B,MAAM,UAAU,KAAK,SAAS,CAAC,CAAC;EAChC,IAAI,CAAC,SAAS,OAAO;EACrB,OAAO,QAAQ,SAAS,IAAI,KAAK,QAAQ,SAAS,IAAI,KAAK,QAAQ,SAAS,IAAI;CAClF;CAEA,cAAuB;EACrB,MAAM,QAAQ,KAAK,SAAS;EAC5B,IACE,CAAC,KAAK,iBAAiB,MACtB,MAAM,SAAS,SAAS,QAAQ,KAAK,MAAM,SAAS,SAAS,QAAQ,KAAK,MAAM,SAAS,SAAS,MAAM,IAEzG,OAAO;EAGT,OAAO;CACT;CAEA,eAAe,OAAyB;EACtC,IAAIC,aAAWC,IAAAA,CAAC,CAAC,CAAC,KAAK,GAAG;GAIxB,MAAM,YAAY,UAAU,QAAQ,MAAM,KAAK,YAAa,MAAc,MAAM,KAAK;GAErF,IAAI,WAAW;IAGb,IAAI,WAAWA,IAAAA,CAAC,CAAC,CAAC,SAAS,GAEzB,OADkB,KAAK,eAAe,SACvB,CAAC,CAAC,WAAW,QAAc,QAAQ,OAAO,KAAA,IAAY,GAAI;IAM3E,OADuB,KAAK,eAAe,SACvB,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,QAAc,QAAQ,OAAO,KAAA,IAAY,GAAI;GAC3F;GAEA,OAAO;EACT,OAAO,IAAI,WAAWA,IAAAA,CAAC,CAAC,CAAC,KAAK,GAAG;GAE/B,MAAM,YAAY,UAAU,QAAQ,MAAM,KAAK,YAAa,MAAc,MAAM,KAAK;GACrF,IAAI,WAAW;IAGb,IAAID,aAAWC,IAAAA,CAAC,CAAC,CAAC,SAAS,GAAG;KAC5B,MAAM,iBACJ,UAAU,YAAY,UAAU,KAAK,YAAa,UAAkB,MAAM,KAAK;KACjF,IAAI,gBAEF,OAD4B,KAAK,eAAe,cACvB,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,QAAc,QAAQ,OAAO,KAAA,IAAY,GAAI;IAElG;IAGA,OADuB,KAAK,eAAe,SACvB,CAAC,CAAC,SAAS;GACjC;GACA,OAAO;EACT,OAAO,IAAI,UAAUA,IAAAA,CAAC,CAAC,CAAC,KAAK,GAAG;GAI9B,MAAM,YAAY,UAAU,QAAQ,MAAM,KAAK,YAAa,MAAc,MAAM,KAAK;GACrF,MAAM,eAAe,UAAU,QAAQ,MAAM,KAAK,eAAgB,MAAc,MAAM,KAAK;GAE3F,IAAI,WAGF,OAFuB,KAAK,eAAe,SAEvB,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,QAAa;IACvD,IAAI,QAAQ,MACV,OAAO,OAAO,iBAAiB,aAAa,aAAa,IAAI;IAE/D,OAAO;GACT,CAAC;GAGH,OAAO;EACT,OAAO,IAAIC,QAAMD,IAAAA,CAAC,CAAC,CAAC,KAAK,GACvB,OAAO,KAAK,wBAAwB,KAAK;OACpC,IAAIE,UAAQF,IAAAA,CAAC,CAAC,CAAC,KAAK,GACzB,OAAO,KAAK,uBAAuB,KAAK;OACnC,IAAIG,QAAMH,IAAAA,CAAC,CAAC,CAAC,KAAK,GACvB,OAAO,KAAK,uBAAuB,KAAK;OACnC,IAAII,WAASJ,IAAAA,CAAC,CAAC,CAAC,KAAK,GAAG;GAC7B,MAAM,QAAQ,KAAK,SAAS;GAC5B,MAAM,SAAS,CAAC,OAAO;GAEvB,IAAI,MAAM,SAAS,SAAS,aAAa,GACvC,OAAO,KAAK,wBAAwB,OAAO,CAAC,SAAS,OAAO,CAAC;GAG/D,OAAO,KAAK,wBAAwB,OAAO,MAAM;EACnD;EAEA,IAAI,eAAeA,IAAAA,CAAC,CAAC,CAAC,KAAK,GACzB,OAAO,KAAK,8BAA8B,KAAK;EAGjD,OAAO,KAAK,iCAAiC,OAA8C;GACzF;GACA;GACA;EACF,CAAC;CACH;;;;;;CAOA,qBAAqB,WAA0C;EAI7D,MAAM,wBAAwBK,eAAAA,2BAHf,KAAK,sBAAsB,SAGoB,CAAC;EAI/D,OAAO,WAAW,uBAAuB,EACvC,WAAW,UAAmB;GAC5B,MAAM,cAAc,KAAKC,UAAU,OAAO,qBAAgD;GAC1F,MAAM,SAAS,UAAU,UAAU,WAAW;GAC9C,OAAO,OAAO,UAAU;IAAE,SAAS;IAAM,OAAO,OAAO;GAAK,IAAI;IAAE,SAAS;IAAO,OAAO,OAAO;GAAM;EACxG,EACF,CAAC;CACH;CAEA,sBAAgC,QAAoD;EAClF,MAAM,yBAAyBC,eAAAA,iBAAiB,MAAM;EAEtD,OAAO,EACL,aAAa;GACX,SAAS;GACT,QAAQ;GACR,WAAW,UAAmB;IAC5B,MAAM,wBAAwB,KAAK,oBAAoB,QAAQ,OAAO;IAEtE,MAAM,cAAc,KAAKD,UAAU,OAAO,qBAAgD;IAG1F,OAAO,uBAAuB,YAAY,CAAC,SAAS,WAAW;GACjE;GACA,YAAY;IACV,aAAa;KACX,OAAO,KAAK,oBAAoB,QAAQ,OAAO;IACjD;IACA,cAAc;KACZ,OAAO,KAAK,oBAAoB,QAAQ,QAAQ;IAClD;GACF;EACF,EACF;CACF;CAEA,mBAAmB,QAAqB,eAAmC;EACzE,IAAI,cAAc,MAAM,GACtB,KAAK,oBAAoB,MAAM;EAGjC,IAAI,eAAe,MAAM,GACvB,KAAK,qBAAqB,MAAM;OAC3B,IAAI,cAAc,MAAM,GAC7B,KAAK,oBAAoB,MAAM;OAC1B,IAAI,eAAe,MAAM,GAC9B,KAAK,qBAAqB,MAAM;OAC3B,IAAI,eAAe,MAAM,GAAG;GACjC,IAAI,OAAO,QACL;QAAA,CAAE,qBAA2C,SAAS,OAAO,MAAgB,GAAG;KAClF,OAAO,OAAO;KACd,OAAO,OAAO;IAChB;;GAGF,KAAK,qBAAqB,MAAM;EAClC;CACF;CAEA,oBAAoB,QAA2B;EAE7C,IAAI,cAAc,MAAM,GACtB,KAAK,oBAAoB,MAAM;EAGjC,IAAI,OAAO,SAAS,KAAA,KAAa,CAAC,OAAO,OAAO;GAC9C,IAAI,YAA2B,CAAC;GAChC,KAAK,MAAM,OAAO,OAAO,KAAK,MAAM,GAAG;IAErC,UAAU,OAAO,OAAO;IAExB,OAAO,OAAO;GAChB;GAEA,OAAO,QAAQ,CACb,WACA,EACE,MAAM,OACR,CACF;EACF;EAIA,IAAI,eAAe,MAAM,GAAG;GAC1B,OAAO,uBAAuB;GAE9B,IAAI,OAAO,YACT,KAAK,MAAM,OAAO,OAAO,KAAK,OAAO,UAAU,GAAG;IAChD,MAAM,OAAO,OAAO,WAAW;IAE/B,IAAI,CAAC,OAAO,UACV,OAAO,WAAW,CAAC;IAGrB,IAAI,CAAC,OAAO,UAAU,SAAS,GAAG,GAAG;KAEnC,OAAO,gBAAgB,CAAC,GAAI,OAAO,iBAAiB,CAAC,GAAI,GAAG;KAC5D,OAAO,UAAU,KAAK,GAAG;KACzB,IAAI,KAAK,MACH;UAAA,MAAM,QAAQ,KAAK,IAAI,GAAG;OAC5B,MAAM,QAAQ,CAAC,GAAG,KAAK,IAAI;OAC3B,IAAI,CAAC,MAAM,SAAS,MAAM,GACxB,MAAM,KAAK,MAAM;OAGnB,MAAM,aAAa,EAAE,GAAG,KAAK;OAC7B,OAAO,WAAW;OAClB,OAAO,WAAW;OAClB,OAAO,KAAK;OAEZ,KAAK,QAAQ,MAAM,KAAI,SACrB,SAAS,SACL,EAAE,MAAM,OAAO,IACf;QACE,GAAG;QACH;OACF,CACN;MACF,OAAO,IAAI,KAAK,SAAS,QAAQ;OAC/B,MAAM,eAAe,KAAK;OAC1B,MAAM,aAAa,EAAE,GAAG,KAAK;OAC7B,OAAO,WAAW;OAClB,OAAO,WAAW;OAClB,OAAO,KAAK;OACZ,KAAK,QAAQ,CACX;QACE,GAAG;QACH,MAAM;OACR,GACA,EAAE,MAAM,OAAO,CACjB;MACF;;IAEJ;GACF;EAEJ;CACF;CAEA,UAAU,OAAgB,QAA0C;EAElE,MAAM,WAAW,KAAKE,cAAc,MAAM;EAE1C,KAAK,aAAa,QAAQ,KAAK,SAAS,cAAc,SAAS,OAAO,UAAU,UAC9E,OAAO,IAAI,KAAK,KAAK;EAKvB,IADE,SAAS,SAAS,WAAY,MAAM,QAAQ,SAAS,IAAI,KAAM,SAAS,KAAkB,SAAS,OAAO,GAC3F;GACf,IAAI,CAAC,MAAM,QAAQ,KAAK,GACtB,OAAO;GAET,OAAO,MAAM,KAAI,SAAQ,KAAKF,UAAU,MAAM,SAAS,KAAgC,CAAC;EAC1F;EAIA,IAAI,EADF,SAAS,SAAS,YAAa,MAAM,QAAQ,SAAS,IAAI,KAAM,SAAS,KAAkB,SAAS,QAAQ,IAE5G,OAAO;EAGT,MAAM,aAAa,SAAS;EAC5B,IAAI,CAAC,cAAc,CAAC,OAClB,OAAO;EAGT,MAAM,MAAM;EACZ,MAAM,qBAAsB,SAAS,iBAAiB,CAAC;EACvD,KAAK,MAAM,OAAO,KAChB,IAAI,mBAAmB,SAAS,GAAG,KAAK,IAAI,SAAS,MACnD,IAAI,OAAO,KAAA;OACN,IAAI,WAAW,MACpB,IAAI,OAAO,KAAKA,UAAU,IAAI,MAAM,WAAW,IAAI;EAIvD,OAAO;CACT;;;;;CAMA,cAAc,QAA0D;EACtE,IAAI,MAAM,QAAQ,OAAO,KAAK,GAAG;GAC/B,MAAM,UAAW,OAAO,MAAoC,MAAK,MAAK,EAAE,SAAS,MAAM;GACvF,IAAI,SACF,OAAO;EAEX;EAEA,OAAO;CACT;AACF;AAEA,SAAS,aAAa,QAA0C;CAC9D,OAAO,OAAO,WAAW,eAAe,OAAO,WAAW;AAC5D;;;ACnVA,IAAa,mCAAb,cAAsD,wBAAwB;CAC5E,kBAAuC;EACrC,OAAO;CACT;CAEA,mBAA4B;EAG1B,MAAM,UAAU,KAAK,SAAS,CAAC,CAAC;EAChC,IAAI,CAAC,SAAS,OAAO;EACrB,OAAO,QAAQ,SAAS,IAAI,KAAK,QAAQ,SAAS,IAAI,KAAK,QAAQ,SAAS,IAAI;CAClF;CAEA,cAAuB;EACrB,MAAM,QAAQ,KAAK,SAAS;EAC5B,IAAI,KAAK,iBAAiB,MAAM,MAAM,SAAS,SAAS,QAAQ,KAAK,MAAM,SAAS,SAAS,QAAQ,IACnG,OAAO;EAGT,OAAO;CACT;CAEA,eAAe,OAAyB;EACtC,IAAIG,aAAWC,IAAAA,CAAC,CAAC,CAAC,KAAK,GAAG;GAGxB,MAAM,YAAY,UAAU,QAAQ,MAAM,KAAK,YAAa,MAAc,MAAM,KAAK;GAErF,IAAI,WAAW;IAEb,IAAI,WAAWA,IAAAA,CAAC,CAAC,CAAC,SAAS,GAEzB,OADkB,KAAK,eAAe,SACvB,CAAC,CAAC,WAAW,QAAc,QAAQ,OAAO,KAAA,IAAY,GAAI;IAK3E,OADuB,KAAK,eAAe,SACvB,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,QAAc,QAAQ,OAAO,KAAA,IAAY,GAAI;GAC3F;GAEA,OAAO;EACT,OAAO,IAAI,WAAWA,IAAAA,CAAC,CAAC,CAAC,KAAK,GAAG;GAG/B,MAAM,YAAY,UAAU,QAAQ,MAAM,KAAK,YAAa,MAAc,MAAM,KAAK;GACrF,IAAI,aAAaD,aAAWC,IAAAA,CAAC,CAAC,CAAC,SAAS,GAAG;IACzC,MAAM,iBAAiB,UAAU,YAAY,UAAU,KAAK,YAAa,UAAkB,MAAM,KAAK;IACtG,IAAI,gBAEF,OAD4B,KAAK,eAAe,cACvB,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,QAAc,QAAQ,OAAO,KAAA,IAAY,GAAI;GAElG;GAEA,IAAI,WAEF,OADuB,KAAK,eAAe,SACvB,CAAC,CAAC,SAAS;GAEjC,OAAO;EACT,OAAO,IAAIC,QAAMD,IAAAA,CAAC,CAAC,CAAC,KAAK,GACvB,OAAO,KAAK,wBAAwB,OAAO,EAAE,aAAa,MAAM,CAAC;OAC5D,IAAIE,QAAMF,IAAAA,CAAC,CAAC,CAAC,KAAK,GACvB,OAAO,KAAK,uBAAuB,KAAK;OACnC,IAAIG,UAAQH,IAAAA,CAAC,CAAC,CAAC,KAAK,GACzB,OAAO,KAAK,uBAAuB,KAAK;OACnC,IAAI,UAAUA,IAAAA,CAAC,CAAC,CAAC,KAAK,GAAG;GAC9B,MAAM,aAAa,MAAM;GACzB,MAAM,YAAY,WAAW;GAE7B,MAAM,eACJ,OAAO,WAAW,iBAAiB,aAAa,WAAW,aAAa,IAAI,WAAW;GACzF,MAAM,cAAwB,CAAC;GAC/B,IAAI,iBAAiB,KAAA,GACnB,YAAY,KAAK,wBAAwB,cAAc;GAGzD,MAAM,cAAc,KAAK,0BAA0B,MAAM,aAAa,WAAW;GACjF,IAAI,SAAS,KAAK,eAAe,SAAkC;GACnE,IAAI,aACF,SAAS,OAAO,SAAS,WAAW;GAEtC,OAAO;EACT,OAAO,IAAII,WAASJ,IAAAA,CAAC,CAAC,CAAC,KAAK,GAC1B,OAAO,KAAK,wBAAwB,KAAK;OACpC,IAAIK,WAASL,IAAAA,CAAC,CAAC,CAAC,KAAK,GAC1B,OAAO,KAAK,wBAAwB,KAAK;OACpC,IAAI,OAAOA,IAAAA,CAAC,CAAC,CAAC,KAAK,GACxB,OAAO,KAAK,sBAAsB,KAAK;OAClC,IAAI,OAAOA,IAAAA,CAAC,CAAC,CAAC,KAAK,GACxB,OAAOA,IAAAA,EACJ,IAAI,CAAC,CACL,QAAO,MAAK,MAAM,MAAM,EAAE,SAAS,eAAe,CAAC,CAAC,CACpD,SAAS,MAAM,eAAe,cAAc;OAC1C,IAAI,MAAM,YAAY,SAAS,UAGpC,OAAOA,IAAAA,EACJ,OAAO,CAAC,CACR,UACE,MAAM,eAAe,MACpB,yGACJ;EAGJ,IAAI,eAAeA,IAAAA,CAAC,CAAC,CAAC,KAAK,GACzB,OAAO,KAAK,8BAA8B,KAAK;EAGjD,OAAO,KAAK,iCAAiC,KAA4C;CAC3F;AACF;;;;;;;;;;;;;;;;;;;ACzGA,SAAgB,iBAAiB,QAA0B;CACzD,IAAI,CAAC,UAAU,MAAM,GACnB,OAAO;CAKT,OAAO;AACT;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,SAAgB,4BAA+B,QAAW,WAAyD;CAIjH,IAAI,EAFa,UAAU,UAAU,SAAS,QAAQ,KAAK,UAAU,SAAS,SAAS,QAAQ,IAG7F,OAAO;CAIT,MAAM,YAAY,iBAAiB,MAAM;CACzC,IAAI,CAAC,WAEH,OAAO;CAKT,MAAM,cADmB,UAAU,KAAK,UAAU,OACf,IAC/B,IAAI,iCAAiC,SAAS,IAC9C,IAAI,wBAAwB,SAAS;CAEzC,IAAI,CAAC,YAAY,YAAY,GAE3B,OAAO;CAST,OAAOM,eAAAA,iBAJoB,YAAY,eAAe,SAIb,CAAC;AAC5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,SAAgB,yBACd,OACA,WACe;CACf,IAAI,CAAC,OACH,OAAO;CAGT,MAAM,mBAAwC,CAAC;CAE/C,KAAK,MAAM,CAAC,MAAM,SAAS,OAAO,QAAQ,KAAK,GAC7C,IAAI,KAAK,aAAa;EAEpB,MAAM,kBAAkB,4BAA4B,KAAK,aAAa,SAAS;EAE/E,iBAAiB,QAAQ;GACvB,GAAG;GACH,aAAa;EACf;CACF,OAEE,iBAAiB,QAAQ;CAI7B,OAAO;AACT;;;AC7HA,IAAa,6BAAb,cAAgD,kBAAkB;CAChE,YAAY,OAAyB;EACnC,MAAM,KAAK;CACb;CAEA,kBAAuC;EACrC,OAAO;CACT;CAEA,oBAA6B,QAA2B,KAAyB,SAAsB;EACrG,MAAM,aAAa,MAAM,oBAAoB,QAAQ,EAAE;EACvD,MAAM,QAAQ,WAAW,SAAS,WAAW;EAE7C,IAAI,OAAO,WAAW,CAAC,MAAM,QAAQ,KAAK,GACxC,OAAO;EAGT,MAAM,gBAAgB,MAAM,QACzB,cACC,OAAO,cAAc,YAAY,cAAc,QAAQ,UAAU,SAAS,QAC9E;EAEA,IAAI,cAAc,WAAW,KAAK,cAAc,WAAW,MAAM,QAC/D,OAAO;EAGT,OAAO,WAAW;EAClB,OAAO,WAAW;EAClB,WAAW,OAAO;EAKlB,MAAM,mBAA4D,CAAC;EACnE,KAAK,MAAM,aAAa,eACtB,KAAK,MAAM,CAAC,KAAK,eAAe,OAAO,QAAQ,UAAU,cAAc,CAAC,CAAC,GAAG;GAC1E,MAAM,WAAY,iBAAiB,SAAS,CAAC;GAC7C,IAAI,CAAC,SAAS,MAAK,aAAY,KAAK,UAAU,QAAQ,MAAM,KAAK,UAAU,UAAU,CAAC,GACpF,SAAS,KAAK,UAAU;EAE5B;EAEF,WAAW,aAAa,OAAO,YAC7B,OAAO,QAAQ,gBAAgB,CAAC,CAAC,KAAK,CAAC,KAAK,cAAc,CACxD,KACA,SAAS,WAAW,IAAI,SAAS,KAAM,EAAE,OAAO,SAAS,CAC3D,CAAC,CACH;EAEA,WAAW,WAAW,cACnB,KAAI,cAAa,UAAU,YAAY,CAAC,CAAC,CAAC,CAC1C,QAAQ,UAAU,mBAAmB,SAAS,QAAO,QAAO,eAAe,SAAS,GAAG,CAAC,CAAC;EAC5F,WAAW,uBAAuB;EAElC,OAAO;CACT;CAEA,cAAuB;EACrB,OAAO,KAAK,SAAS,CAAC,CAAC,QAAQ,SAAS,QAAQ;CAClD;CAEA,eAAe,OAAyB;EACtC,IAAI,KAAK,WAAW,KAAK,GAAG;GAC1B,MAAM,cAAwB;IAAC;IAAa;IAAY;IAAY;IAAY;IAAgB;GAAU;GAC1G,IAAI,KAAK,SAAS,CAAC,CAAC,QAAQ,SAAS,kBAAkB,GAAG,YAAY,KAAK,WAAW;GACtF,OAAO,KAAK,0BAA0B,OAAO,WAAW;EAC1D,OAAO,IAAI,KAAK,MAAM,KAAK,GACzB,OAAO,KAAK,wBAAwB,KAAK;OACpC,IAAI,KAAK,MAAM,KAAK,GACzB,OAAO,KAAK,uBAAuB,OAAO,CAAC,CAAC;OACvC,IAAI,KAAK,QAAQ,KAAK,GAC3B,OAAO,KAAK,uBAAuB,KAAK;OACnC,IAAI,KAAK,SAAS,KAAK,GAI5B,IAAI,KAAK,SAAS,CAAC,CAAC,QAAQ,SAAS,kBAAkB,GACrD,OAAO,KAAK,wBAAwB,OAAO,CAAC,OAAO,KAAK,CAAC;OAEzD,OAAO;OAEJ,IAAI,OAAOC,IAAAA,CAAC,CAAC,CAAC,KAAK,GACxB,OAAOA,IAAAA,EACJ,IAAI,CAAC,CACL,QAAO,MAAK,MAAM,MAAM,EAAE,SAAS,eAAe,CAAC,CAAC,CACpD,SAAS,MAAM,eAAe,cAAc;OAC1C,IAAI,eAAeA,IAAAA,CAAC,CAAC,CAAC,KAAK,GAChC,OAAO,KAAK,8BAA8B,KAAK;EAGjD,OAAO,KAAK,iCAAiC,KAAK;CACpD;CAEA,qBAAqB,WAAkC;EAErD,MAAM,wBAAwBC,eAAAA,2BADf,KAAK,sBAAsB,SACoB,CAAC;EAE/D,OAAO,WAAW,uBAAuB,EACvC,WAAW,UAAmB;GAC5B,MAAM,cAAc,KAAKC,UAAU,OAAO,qBAAgD;GAC1F,MAAM,SAAS,UAAU,UAAU,WAAW;GAC9C,OAAO,OAAO,UAAU;IAAE,SAAS;IAAM,OAAO,OAAO;GAAK,IAAI;IAAE,SAAS;IAAO,OAAO,OAAO;GAAM;EACxG,EACF,CAAC;CACH;CAEA,sBAAgC,QAAoD;EAClF,MAAM,yBAAyBC,eAAAA,iBAAiB,MAAM;EAEtD,OAAO,EACL,aAAa;GACX,SAAS;GACT,QAAQ;GACR,WAAW,UAAmB;IAC5B,MAAM,wBAAwB,KAAK,oBAAoB,QAAQ,OAAO;IACtE,MAAM,cAAc,KAAKD,UAAU,OAAO,qBAAqB;IAC/D,OAAO,uBAAuB,YAAY,CAAC,SAAS,WAAW;GACjE;GACA,YAAY;IACV,aAAa;KACX,OAAO,KAAK,oBAAoB,QAAQ,OAAO;IACjD;IACA,cAAc;KACZ,OAAO,KAAK,oBAAoB,QAAQ,QAAQ;IAClD;GACF;EACF,EACF;CACF;CAEA,mBAAmB,QAA2B;EAC5C,IAAI,cAAc,MAAM,GACtB,KAAK,oBAAoB,MAAM;EAGjC,IAAI,eAAe,MAAM,GACvB,KAAK,qBAAqB,MAAM;OAC3B,IAAI,cAAc,MAAM,GAC7B,KAAK,oBAAoB,MAAM;OAC1B,IAAI,eAAe,MAAM,GAC9B,KAAK,qBAAqB,MAAM;OAC3B,IAAI,eAAe,MAAM,GAC9B,KAAK,qBAAqB,MAAM;CAEpC;CAEA,oBAAoB,QAA2B;EAE7C,IAAI,cAAc,MAAM,GACtB,KAAK,oBAAoB,MAAM;CAEnC;CAEA,UAAU,OAAgB,QAA0C;EAClE,MAAM,WAAW,KAAKE,uBAAuB,QAAQ,KAAK;EAE1D,IAAI,SAAS,cAAc,QAAQ,OAAO,UAAU,UAClD,OAAO,IAAI,KAAK,KAAK;EAKvB,IADE,SAAS,SAAS,WAAY,MAAM,QAAQ,SAAS,IAAI,KAAM,SAAS,KAAkB,SAAS,OAAO,GAC3F;GACf,IAAI,CAAC,MAAM,QAAQ,KAAK,GACtB,OAAO;GAET,OAAO,MAAM,KAAI,SAAQ,KAAKF,UAAU,MAAM,SAAS,KAAgC,CAAC;EAC1F;EAIA,IAAI,EADF,SAAS,SAAS,YAAa,MAAM,QAAQ,SAAS,IAAI,KAAM,SAAS,KAAkB,SAAS,QAAQ,IAE5G,OAAO;EAGT,MAAM,aAAa,SAAS;EAC5B,IAAI,CAAC,cAAc,CAAC,OAClB,OAAO;EAGT,MAAM,MAAM;EACZ,KAAK,MAAM,OAAO,KAChB,IAAI,WAAW,MACb,IAAI,OAAO,KAAKA,UAAU,IAAI,MAAM,WAAW,IAAI;EAIvD,OAAO;CACT;CAaA,uBAAuB,QAAiC,OAAyC;EAC/F,IAAI,CAAC,MAAM,QAAQ,OAAO,KAAK,GAC7B,OAAO;EAGT,MAAM,WAAW,OAAO;EACxB,MAAM,kBAAkB,SAAS,QAAO,YAAW,QAAQ,SAAS,MAAM;EAE1E,IAAI,SAAS,WAAW,KAAK,gBAAgB,WAAW,GACtD,OAAO,gBAAgB;EAGzB,MAAM,OAAO,SAAS,OAAO,UAAU,WAAW,OAAO,KAAK,KAAgC,IAAI,CAAC;EACnG,OACE,gBAAgB,MAAK,YAAW;GAC9B,MAAM,aAAa,QAAQ;GAC3B,OAAO,CAAC,CAAC,cAAc,KAAK,MAAK,QAAO,OAAO,UAAU;EAC3D,CAAC,KAAK;CAEV;AACF;;;AC9NA,IAAa,4BAAb,cAA+C,kBAAkB;CAC/D,YAAY,OAAyB;EACnC,MAAM,KAAK;CACb;CAEA,kBAAuC;EACrC,OAAO;CACT;CAEA,cAAuB;EAErB,OAAO,KAAK,SAAS,CAAC,CAAC,QAAQ,SAAS,UAAU,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC,QAAQ,SAAS,IAAI;CAC/F;CAIA,eAAe,OAAqD;EAClE,IAAIG,aAAWC,IAAAA,CAAC,CAAC,CAAC,KAAK,GACrB,OAAO,KAAK,0BAA0B,OAAO;GAAC;GAAa;GAAY;GAAY;GAAa;EAAW,CAAC;OACvG,IAAIC,QAAMD,IAAAA,CAAC,CAAC,CAAC,KAAK,GACvB,OAAO,KAAK,wBAAwB,KAAK;OACpC,IAAIE,QAAMF,IAAAA,CAAC,CAAC,CAAC,KAAK,GACvB,OAAO,KAAK,uBAAuB,OAAO,CAAC,OAAO,KAAK,CAAC;OACnD,IAAIG,UAAQH,IAAAA,CAAC,CAAC,CAAC,KAAK,GACzB,OAAO,KAAK,uBAAuB,KAAK;OACnC,IAAII,WAASJ,IAAAA,CAAC,CAAC,CAAC,KAAK,GAC1B,OAAO,KAAK,wBAAwB,KAAK;OACpC,IAAI,eAAeA,IAAAA,CAAC,CAAC,CAAC,KAAK,GAChC,OAAO,KAAK,8BAA8B,KAAK;EAGjD,OAAO;CACT;CAEA,qBAAqB,WAAkC;EAErD,MAAM,wBAAwBK,eAAAA,2BADf,KAAK,sBAAsB,SACoB,CAAC;EAE/D,OAAO,WAAW,uBAAuB,EACvC,WAAW,UAAmB;GAC5B,MAAM,cAAc,KAAKC,UAAU,OAAO,qBAAgD;GAC1F,MAAM,SAAS,UAAU,UAAU,WAAW;GAC9C,OAAO,OAAO,UAAU;IAAE,SAAS;IAAM,OAAO,OAAO;GAAK,IAAI;IAAE,SAAS;IAAO,OAAO,OAAO;GAAM;EACxG,EACF,CAAC;CACH;CAEA,sBAAgC,QAAoD;EAClF,MAAM,yBAAyBC,eAAAA,iBAAiB,MAAM;EAEtD,OAAO,EACL,aAAa;GACX,SAAS;GACT,QAAQ;GACR,WAAW,UAAmB;IAC5B,MAAM,wBAAwB,KAAK,oBAAoB,QAAQ,OAAO;IACtE,MAAM,cAAc,KAAKD,UAAU,OAAO,qBAAqB;IAC/D,OAAO,uBAAuB,YAAY,CAAC,SAAS,WAAW;GACjE;GACA,YAAY;IACV,aAAa;KACX,OAAO,KAAK,oBAAoB,QAAQ,OAAO;IACjD;IACA,cAAc;KACZ,OAAO,KAAK,oBAAoB,QAAQ,QAAQ;IAClD;GACF;EACF,EACF;CACF;CAEA,mBAAmB,QAA2B;EAC5C,IAAI,cAAc,MAAM,GACtB,KAAK,oBAAoB,MAAM;EAGjC,IAAI,eAAe,MAAM,GACvB,KAAK,qBAAqB,MAAM;OAC3B,IAAI,cAAc,MAAM,GAC7B,KAAK,oBAAoB,MAAM;OAC1B,IAAI,eAAe,MAAM,GAC9B,KAAK,qBAAqB,MAAM;OAC3B,IAAI,eAAe,MAAM,GAC9B,KAAK,qBAAqB,MAAM;CAEpC;CAEA,oBAAoB,QAA2B;EAE7C,IAAI,cAAc,MAAM,GACtB,KAAK,oBAAoB,MAAM;CAEnC;CAEA,UAAU,OAAgB,QAA0C;EAClE,MAAM,WAAW,KAAKE,cAAc,MAAM;EAE1C,IAAI,SAAS,cAAc,QAAQ,OAAO,UAAU,UAClD,OAAO,IAAI,KAAK,KAAK;EAKvB,IADE,SAAS,SAAS,WAAY,MAAM,QAAQ,SAAS,IAAI,KAAM,SAAS,KAAkB,SAAS,OAAO,GAC3F;GACf,IAAI,CAAC,MAAM,QAAQ,KAAK,GACtB,OAAO;GAET,OAAO,MAAM,KAAI,SAAQ,KAAKF,UAAU,MAAM,SAAS,KAAgC,CAAC;EAC1F;EAIA,IAAI,EADF,SAAS,SAAS,YAAa,MAAM,QAAQ,SAAS,IAAI,KAAM,SAAS,KAAkB,SAAS,QAAQ,IAE5G,OAAO;EAGT,MAAM,aAAa,SAAS;EAC5B,IAAI,CAAC,cAAc,CAAC,OAClB,OAAO;EAGT,MAAM,MAAM;EACZ,KAAK,MAAM,OAAO,KAChB,IAAI,WAAW,MACb,IAAI,OAAO,KAAKA,UAAU,IAAI,MAAM,WAAW,IAAI;EAIvD,OAAO;CACT;CAEA,cAAc,QAA0D;EACtE,IAAI,MAAM,QAAQ,OAAO,KAAK,GAAG;GAC/B,MAAM,UAAW,OAAO,MAAoC,MAAK,MAAK,EAAE,SAAS,MAAM;GACvF,IAAI,SACF,OAAO;EAEX;EAEA,OAAO;CACT;AACF;;;AC5IA,SAAS,2BAA2B,QAAkD;CACpF,IAAI,OAAO,WAAW,YAAY,WAAW,MAC3C,OAAO;CAGT,MAAM,SAAS,EAAE,GAAG,OAAO;CAE3B,IAAI,MAAM,QAAQ,OAAO,IAAI,GAAG;EAC9B,MAAM,eAAe,OAAO,KAAK,QAAQ,MAAc,MAAM,MAAM;EACnE,IAAI,aAAa,WAAW,GAAG;GAC7B,OAAO,OAAO,aAAa;GAC3B,OAAO,WAAW;EACpB,OAAO;GACL,OAAO,OAAO;GACd,OAAO,OAAO;EAChB;CACF;CAEA,IAAI,MAAM,QAAQ,OAAO,IAAI,KAAK,OAAO,KAAK,MAAM,UAAmB,OAAO,UAAU,QAAQ,GAC9F,OAAO,OAAO;CAGhB,IAAI,WAAW,UAAU,OAAO,OAAO,UAAU,UAC/C,OAAO,OAAO;CAGhB,IAAI,OAAO,SAAS,MAAM,QAAQ,OAAO,KAAK,GAAG;EAC/C,MAAM,aAAa,OAAO,MAAM,MAAM,MAAW,OAAO,MAAM,YAAY,MAAM,QAAQ,EAAE,SAAS,MAAM;EACzG,MAAM,iBAAiB,OAAO,MAAM,QAAQ,MAAW,EAAE,OAAO,MAAM,YAAY,MAAM,QAAQ,EAAE,SAAS,OAAO;EAElH,IAAI,YAAY;GACd,MAAM,EAAE,OAAO,GAAG,GAAG,SAAS;GAC9B,IAAI,eAAe,WAAW,KAAK,OAAO,eAAe,OAAO,YAAY,eAAe,OAAO,MAAM;IACtG,MAAM,aAAa,2BAA2B,eAAe,EAAE;IAC/D,OAAO,WAAW,OAAO;KAAE,GAAG;KAAM,GAAG;KAAY,UAAU;IAAK,IAAI;KAAE,GAAG;KAAM,GAAG;IAAW;GACjG;GACA,OAAO;EACT;CACF;CAEA,IAAI,OAAO,cAAc,OAAO,OAAO,eAAe,UACpD,OAAO,aAAa,OAAO,YACzB,OAAO,QAAQ,OAAO,UAAU,CAAC,CAAC,KAAK,CAAC,KAAK,WAAW,CAAC,KAAK,2BAA2B,KAAY,CAAC,CAAC,CACzG;CAGF,IAAI,OAAO,OACT,IAAI,MAAM,QAAQ,OAAO,KAAK,GAC5B,OAAO,QAAQ,OAAO,MAAM,KAAK,SAAc,2BAA2B,IAAI,CAAC;MAE/E,OAAO,QAAQ,2BAA2B,OAAO,KAAK;CAI1D,IAAI,OAAO,wBAAwB,OAAO,OAAO,yBAAyB,UACxE,OAAO,uBAAuB,2BAA2B,OAAO,oBAAoB;CAGtF,IAAI,OAAO,SAAS,MAAM,QAAQ,OAAO,KAAK,GAC5C,OAAO,QAAQ,OAAO,MAAM,KAAK,MAAW,2BAA2B,CAAC,CAAC;CAE3E,IAAI,OAAO,SAAS,MAAM,QAAQ,OAAO,KAAK,GAC5C,OAAO,QAAQ,OAAO,MAAM,KAAK,MAAW,2BAA2B,CAAC,CAAC;CAE3E,IAAI,OAAO,SAAS,MAAM,QAAQ,OAAO,KAAK,GAC5C,OAAO,QAAQ,OAAO,MAAM,KAAK,MAAW,2BAA2B,CAAC,CAAC;CAG3E,IAAI,OAAO,SAAS,MAAM,QAAQ,OAAO,KAAK,GAAG;EAC/C,IAAI,OAAO,aACJ;QAAA,MAAM,QAAQ,OAAO,OACxB,IAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,CAAC,KAAK,aACrD,KAAK,cAAc,OAAO;EAAA;EAIhC,OAAO,EAAE,OAAO,OAAO,MAAM;CAC/B;CAEA,OAAO;AACT;;;;;;;AAQA,SAAS,6BAA6B,QAAuC;CAE3E,MAAM,OAAO,KAAK,UAAU,MAAM;CAClC,IAAI,CAAC,KAAK,SAAS,UAAQ,GAAG;CAE9B,MAAM,OACH,OAAO,kBACP,OAAO;CAGV,MAAM,WAAW,KAAK,MAAM,IAAI;CAIhC,YAAY,QAAQ,UAFjB,SAAS,kBACT,SAAS,YACkC,QAAQ,CAAC,mBAAG,IAAI,IAAI,CAAC;CAEnE,OAAO,OAAO;CACd,OAAO,OAAO;AAChB;AAEA,SAAS,YACP,MACA,cACA,MACA,UACM;CACN,IAAI,OAAO,SAAS,YAAY,SAAS,MAAM;CAE/C,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,IAAI,GAC5C,IAAI,QAAQ,UAAU,OAAO,UAAU,UAAU;EAC/C,MAAM,WAAW,WAAW,OAAO,cAAc,IAAI;EACrD,IAAI,CAAC,YAAY,SAAS,IAAI,KAAK,GAAG;GAEpC,OAAO,KAAK;GACZ,KAAK,UAAU;EACjB,OAAO;GACL,OAAO,KAAK;GACZ,SAAS,IAAI,KAAK;GAElB,MAAM,QAAQ,KAAK,MAAM,KAAK,UAAU,QAAQ,CAAC;GACjD,YAAY,OAAO,cAAc,MAAM,QAAQ;GAC/C,SAAS,OAAO,KAAK;GACrB,OAAO,OAAO,MAAM,KAAK;EAC3B;CACF,OAAO,IAAI,MAAM,QAAQ,KAAK,GACvB;OAAA,MAAM,QAAQ,OACjB,IAAI,OAAO,SAAS,YAAY,SAAS,MACvC,YAAY,MAAiC,cAAc,MAAM,QAAQ;CAAA,OAGxE,IAAI,OAAO,UAAU,YAAY,UAAU,MAChD,YAAY,OAAkC,cAAc,MAAM,QAAQ;AAGhF;AAEA,SAAS,WACP,KACA,cACA,MACqC;CACrC,IAAI,QAAQ,KAAK,OAAO;CAGxB,MAAM,QAAQ,IAAI,MAAM,mCAAmC;CAC3D,IAAI,OACF,OAAO,KAAK,MAAM;AAItB;AAEA,IAAa,0BAAb,cAA6C,kBAAkB;CAC7D,YAAY,OAAyB;EACnC,MAAM,KAAK;CACb;CAEA,kBAAuC;EACrC,OAAO;CACT;CAEA,cAAuB;EACrB,OACE,KAAK,SAAS,CAAC,CAAC,SAAS,SAAS,QAAQ,KAC1C,KAAK,SAAS,CAAC,CAAC,QAAQ,SAAS,SAAS,KAC1C,KAAK,SAAS,CAAC,CAAC,QAAQ,SAAS,QAAQ;CAE7C;CAGA,eAAe,OAAqD;EAClE,IAAIG,aAAWC,IAAAA,CAAC,CAAC,CAAC,KAAK,GACrB,OAAO,KAAK,0BAA0B,OAAO;GAC3C;GACA;GACA;GACA;GACA;GACA;EACF,CAAC;OACI,IAAI,WAAWA,IAAAA,CAAC,CAAC,CAAC,KAAK,GAC5B,OAAO,KAAK,0BAA0B,KAAK;OACtC,IAAI,OAAOA,IAAAA,CAAC,CAAC,CAAC,KAAK,GAExB,OAAOA,IAAAA,EACJ,IAAI,CAAC,CACL,QAAO,MAAK,MAAM,MAAM,EAAE,SAAS,eAAe,CAAC,CAAC,CACpD,SAAS,MAAM,eAAe,cAAc;OAC1C,IAAIC,QAAMD,IAAAA,CAAC,CAAC,CAAC,KAAK,GACvB,OAAO,KAAK,wBAAwB,KAAK;OACpC,IAAIE,QAAMF,IAAAA,CAAC,CAAC,CAAC,KAAK,GACvB,OAAO,KAAK,uBAAuB,OAAO,CAAC,CAAC;OACvC,IAAIG,UAAQH,IAAAA,CAAC,CAAC,CAAC,KAAK,GACzB,OAAO,KAAK,uBAAuB,KAAK;OACnC,IAAII,WAASJ,IAAAA,CAAC,CAAC,CAAC,KAAK,GAG1B,OAAO,KAAK,wBAAwB,KAAK;OACpC,IAAIK,WAASL,IAAAA,CAAC,CAAC,CAAC,KAAK,GAG1B,OAAO,KAAK,wBAAwB,KAAK;OACpC,IAAI,eAAeA,IAAAA,CAAC,CAAC,CAAC,KAAK,GAChC,OAAO,KAAK,8BAA8B,KAAK;EAEjD,OAAO,KAAK,iCAAiC,KAA4C;CAC3F;CAEA,oBAA2B,QAA2B,IAAsC;EAC1F,MAAM,SAAS,MAAM,oBAAoB,QAAQ,EAAE;EACnD,6BAA6B,MAAiC;EAC9D,OAAO;CACT;CAEA,qBAAqB,WAA0C;EAG7D,MAAM,kBAAkB,2BADMM,eAAAA,2BADf,KAAK,sBAAsB,SACoB,CACS,CAAwB;EAE/F,OAAO,WAAW,iBAAiB,EACjC,WAAW,UAAmB;GAC5B,MAAM,cAAc,KAAKC,UAAU,OAAO,eAA0C;GACpF,MAAM,SAAS,UAAU,UAAU,WAAW;GAC9C,OAAO,OAAO,UAAU;IAAE,SAAS;IAAM,OAAO,OAAO;GAAK,IAAI;IAAE,SAAS;IAAO,OAAO,OAAO;GAAM;EACxG,EACF,CAAC;CACH;CAEA,sBAAgC,QAAoD;EAClF,MAAM,yBAAyBC,eAAAA,iBAAiB,MAAM;EAEtD,OAAO,EACL,aAAa;GACX,SAAS;GACT,QAAQ;GACR,WAAW,UAAmB;IAC5B,MAAM,wBAAwB,KAAK,oBAAoB,QAAQ,OAAO;IACtE,MAAM,cAAc,KAAKD,UAAU,OAAO,qBAAqB;IAC/D,OAAO,uBAAuB,YAAY,CAAC,SAAS,WAAW;GACjE;GACA,YAAY;IACV,aAAa;KACX,OAAO,KAAK,oBAAoB,QAAQ,OAAO;IACjD;IACA,cAAc;KACZ,OAAO,KAAK,oBAAoB,QAAQ,QAAQ;IAClD;GACF;EACF,EACF;CACF;CAEA,mBAAmB,QAA2B;EAC5C,IAAI,cAAc,MAAM,GACtB,KAAK,oBAAoB,MAAM;EAGjC,IAAI,eAAe,MAAM,GACvB,KAAK,qBAAqB,MAAM;OAC3B,IAAI,eAAe,MAAM,GAC9B,KAAK,qBAAqB,MAAM;OAC3B,IAAI,cAAc,MAAM,GAC7B,KAAK,oBAAoB,MAAM;OAC1B,IAAI,eAAe,MAAM,GAC9B,KAAK,qBAAqB,MAAM;CAEpC;CAEA,oBAAoB,QAA2B;EAE7C,IAAI,cAAc,MAAM,GACtB,KAAK,oBAAoB,MAAM;EAGjC,MAAM,IAAI;EAGV,OAAO,EAAE;EACT,OAAO,EAAE;EACT,OAAO,EAAE;EAGT,IAAI,MAAM,QAAQ,EAAE,OAAO,GAAG;GAC5B,MAAM,QAAQ,EAAE;GAChB,MAAM,UAAU,MAAM,QAAO,MAAK,MAAM,MAAM;GAC9C,MAAM,UAAU,MAAM,SAAS,MAAM;GACrC,IAAI,QAAQ,WAAW,GAAG;IACxB,EAAE,UAAU,QAAQ;IACpB,IAAI,SAAS,EAAE,cAAc;GAC/B,OAAO,IAAI,QAAQ,WAAW,KAAK,SAAS;IAC1C,EAAE,UAAU;IACZ,EAAE,cAAc;GAClB,OAAO;IAIL,OAAO,EAAE;IACT,OAAO,EAAE;GACX;EACF;EAGA,IAAI,MAAM,QAAQ,EAAE,QAAQ,GAAG;GAC7B,EAAE,WAAW,EAAE;GACf,OAAO,EAAE;EACX;EAGA,IAAI,WAAW,GAAG;GAChB,EAAE,UAAU,CAAC,EAAE,QAAQ;GACvB,OAAO,EAAE;EACX;EAGA,IAAI,MAAM,QAAQ,EAAE,QAAQ,GAAG;GAC7B,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS;GAEjC,OAAO,EAAE;GACT,OAAO,EAAE;EACX;EAGA,IAAI,MAAM,QAAQ,EAAE,QAAQ,GAAG;GAC7B,MAAM,WAAW,EAAE;GACnB,MAAM,UAAU,SAAS,QAAO,MAAK,KAAK,OAAO,MAAM,YAAY,EAAE,YAAY,MAAM;GACvF,MAAM,UAAU,SAAS,MAAK,MAAK,KAAK,OAAO,MAAM,YAAY,EAAE,YAAY,MAAM;GAErF,IAAI,WAAW,QAAQ,WAAW,GAAG;IACnC,MAAM,OAAO,QAAQ;IACrB,OAAO,EAAE;IACT,OAAO,OAAO,GAAG,IAAI;IACrB,EAAE,cAAc;GAClB,OAAO,IAAI,WAAW,QAAQ,SAAS,GAAG;IACxC,EAAE,WAAW;IACb,EAAE,cAAc;GAClB;EACF;CACF;CAEA,UAAU,OAAgB,QAA0C;EAClE,MAAM,WAAW,KAAKE,cAAc,MAAM;EAE1C,IAAI,SAAS,cAAc,QAAQ,OAAO,UAAU,UAClD,OAAO,IAAI,KAAK,KAAK;EAKvB,IADE,SAAS,SAAS,WAAY,MAAM,QAAQ,SAAS,IAAI,KAAM,SAAS,KAAkB,SAAS,OAAO,GAC3F;GACf,IAAI,CAAC,MAAM,QAAQ,KAAK,GACtB,OAAO;GAET,OAAO,MAAM,KAAI,SAAQ,KAAKF,UAAU,MAAM,SAAS,KAAgC,CAAC;EAC1F;EAIA,IAAI,EADF,SAAS,SAAS,YAAa,MAAM,QAAQ,SAAS,IAAI,KAAM,SAAS,KAAkB,SAAS,QAAQ,IAE5G,OAAO;EAGT,MAAM,aAAa,SAAS;EAC5B,IAAI,CAAC,cAAc,CAAC,OAClB,OAAO;EAGT,MAAM,MAAM;EACZ,KAAK,MAAM,OAAO,KAChB,IAAI,WAAW,MACb,IAAI,OAAO,KAAKA,UAAU,IAAI,MAAM,WAAW,IAAI;EAIvD,OAAO;CACT;CAEA,cAAc,QAA0D;EACtE,IAAI,MAAM,QAAQ,OAAO,KAAK,GAAG;GAC/B,MAAM,UAAW,OAAO,MAAoC,MAAK,MAAK,EAAE,SAAS,MAAM;GACvF,IAAI,SACF,OAAO;EAEX;EAEA,OAAO;CACT;AACF;;;AC3YA,IAAa,wBAAb,cAA2C,kBAAkB;CAC3D,YAAY,OAAyB;EACnC,MAAM,KAAK;CACb;CAEA,kBAAuC;EACrC,OAAO;CACT;CAEA,cAAuB;EACrB,OAAO,KAAK,SAAS,CAAC,CAAC,QAAQ,SAAS,MAAM;CAChD;CAIA,eAAe,OAAqD;EAClE,IAAIG,aAAWC,IAAAA,CAAC,CAAC,CAAC,KAAK,GACrB,OAAO,KAAK,0BAA0B,OAAO;GAAC;GAAa;GAAY;GAAY;GAAa;EAAW,CAAC;OACvG,IAAIC,QAAMD,IAAAA,CAAC,CAAC,CAAC,KAAK,GACvB,OAAO,KAAK,wBAAwB,KAAK;OACpC,IAAIE,QAAMF,IAAAA,CAAC,CAAC,CAAC,KAAK,GACvB,OAAO,KAAK,uBAAuB,OAAO,CAAC,OAAO,KAAK,CAAC;OACnD,IAAIG,UAAQH,IAAAA,CAAC,CAAC,CAAC,KAAK,GACzB,OAAO,KAAK,uBAAuB,KAAK;OACnC,IAAII,WAASJ,IAAAA,CAAC,CAAC,CAAC,KAAK,GAC1B,OAAO,KAAK,wBAAwB,KAAK;OACpC,IAAIK,WAASL,IAAAA,CAAC,CAAC,CAAC,KAAK,GAC1B,OAAO,KAAK,wBAAwB,KAAK;OACpC,IAAI,eAAeA,IAAAA,CAAC,CAAC,CAAC,KAAK,GAChC,OAAO,KAAK,8BAA8B,KAAK;EAGjD,OAAO;CACT;CAEA,qBAAqB,WAAkC;EAErD,MAAM,wBAAwBM,eAAAA,2BADf,KAAK,sBAAsB,SACoB,CAAC;EAE/D,OAAO,WAAW,uBAAuB,EACvC,WAAW,UAAmB;GAC5B,MAAM,cAAc,KAAKC,UAAU,OAAO,qBAAgD;GAC1F,MAAM,SAAS,UAAU,UAAU,WAAW;GAC9C,OAAO,OAAO,UAAU;IAAE,SAAS;IAAM,OAAO,OAAO;GAAK,IAAI;IAAE,SAAS;IAAO,OAAO,OAAO;GAAM;EACxG,EACF,CAAC;CACH;CAEA,sBAAgC,QAAoD;EAClF,MAAM,yBAAyBC,eAAAA,iBAAiB,MAAM;EAEtD,OAAO,EACL,aAAa;GACX,SAAS;GACT,QAAQ;GACR,WAAW,UAAmB;IAC5B,MAAM,wBAAwB,KAAK,oBAAoB,QAAQ,OAAO;IACtE,MAAM,cAAc,KAAKD,UAAU,OAAO,qBAAqB;IAC/D,OAAO,uBAAuB,YAAY,CAAC,SAAS,WAAW;GACjE;GACA,YAAY;IACV,aAAa;KACX,OAAO,KAAK,oBAAoB,QAAQ,OAAO;IACjD;IACA,cAAc;KACZ,OAAO,KAAK,oBAAoB,QAAQ,QAAQ;IAClD;GACF;EACF,EACF;CACF;CAEA,mBAAmB,QAA2B;EAC5C,IAAI,cAAc,MAAM,GACtB,KAAK,oBAAoB,MAAM;EAGjC,IAAI,eAAe,MAAM,GACvB,KAAK,qBAAqB,MAAM;OAC3B,IAAI,cAAc,MAAM,GAC7B,KAAK,oBAAoB,MAAM;OAC1B,IAAI,eAAe,MAAM,GAC9B,KAAK,qBAAqB,MAAM;OAC3B,IAAI,eAAe,MAAM,GAC9B,KAAK,qBAAqB,MAAM;CAEpC;CAEA,oBAAoB,QAA2B;EAE7C,IAAI,cAAc,MAAM,GACtB,KAAK,oBAAoB,MAAM;CAEnC;CAEA,UAAU,OAAgB,QAA0C;EAClE,MAAM,WAAW,KAAKE,cAAc,MAAM;EAE1C,IAAI,SAAS,cAAc,QAAQ,OAAO,UAAU,UAClD,OAAO,IAAI,KAAK,KAAK;EAKvB,IADE,SAAS,SAAS,WAAY,MAAM,QAAQ,SAAS,IAAI,KAAM,SAAS,KAAkB,SAAS,OAAO,GAC3F;GACf,IAAI,CAAC,MAAM,QAAQ,KAAK,GACtB,OAAO;GAET,OAAO,MAAM,KAAI,SAAQ,KAAKF,UAAU,MAAM,SAAS,KAAgC,CAAC;EAC1F;EAIA,IAAI,EADF,SAAS,SAAS,YAAa,MAAM,QAAQ,SAAS,IAAI,KAAM,SAAS,KAAkB,SAAS,QAAQ,IAE5G,OAAO;EAGT,MAAM,aAAa,SAAS;EAC5B,IAAI,CAAC,cAAc,CAAC,OAClB,OAAO;EAGT,MAAM,MAAM;EACZ,KAAK,MAAM,OAAO,KAChB,IAAI,WAAW,MACb,IAAI,OAAO,KAAKA,UAAU,IAAI,MAAM,WAAW,IAAI;EAIvD,OAAO;CACT;CAEA,cAAc,QAA0D;EACtE,IAAI,MAAM,QAAQ,OAAO,KAAK,GAAG;GAC/B,MAAM,UAAW,OAAO,MAAoC,MAAK,MAAK,EAAE,SAAS,MAAM;GACvF,IAAI,SACF,OAAO;EAEX;EAEA,OAAO;CACT;AACF"}