@mastra/schema-compat 1.1.3 → 1.2.0-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 (81) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/LICENSE.md +15 -0
  3. package/dist/_types/@internal_ai-sdk-v4/dist/index.d.ts +7562 -0
  4. package/dist/_types/@internal_ai-v6/dist/index.d.ts +449 -343
  5. package/dist/chunk-23HDOZLF.js +105 -0
  6. package/dist/chunk-23HDOZLF.js.map +1 -0
  7. package/dist/chunk-3MLZICLP.cjs +94 -0
  8. package/dist/chunk-3MLZICLP.cjs.map +1 -0
  9. package/dist/chunk-3QMIGINL.cjs +123 -0
  10. package/dist/chunk-3QMIGINL.cjs.map +1 -0
  11. package/dist/{chunk-4EY4LZB2.js → chunk-7ZCSAPV3.js} +76 -3
  12. package/dist/chunk-7ZCSAPV3.js.map +1 -0
  13. package/dist/chunk-FKB2Z36H.cjs +68 -0
  14. package/dist/chunk-FKB2Z36H.cjs.map +1 -0
  15. package/dist/chunk-FS3P4V5M.cjs +108 -0
  16. package/dist/chunk-FS3P4V5M.cjs.map +1 -0
  17. package/dist/chunk-I2YUBGXM.js +112 -0
  18. package/dist/chunk-I2YUBGXM.js.map +1 -0
  19. package/dist/chunk-IKQO7EW7.js +62 -0
  20. package/dist/chunk-IKQO7EW7.js.map +1 -0
  21. package/dist/chunk-K7I3YXWP.js +92 -0
  22. package/dist/chunk-K7I3YXWP.js.map +1 -0
  23. package/dist/{chunk-DGOXVQNP.js → chunk-QDRBTCDV.js} +158 -479
  24. package/dist/chunk-QDRBTCDV.js.map +1 -0
  25. package/dist/{chunk-DAVEUCUM.cjs → chunk-ROFMEFEF.cjs} +160 -488
  26. package/dist/chunk-ROFMEFEF.cjs.map +1 -0
  27. package/dist/{chunk-BOGGUXB5.cjs → chunk-UFJG5KPA.cjs} +77 -2
  28. package/dist/chunk-UFJG5KPA.cjs.map +1 -0
  29. package/dist/index.cjs +626 -337
  30. package/dist/index.cjs.map +1 -1
  31. package/dist/index.d.ts +6 -0
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +580 -325
  34. package/dist/index.js.map +1 -1
  35. package/dist/json-schema/utils.d.ts +8 -0
  36. package/dist/json-schema/utils.d.ts.map +1 -1
  37. package/dist/null-to-undefined.d.ts +24 -0
  38. package/dist/null-to-undefined.d.ts.map +1 -0
  39. package/dist/provider-compats/google.d.ts +3 -0
  40. package/dist/provider-compats/google.d.ts.map +1 -1
  41. package/dist/provider-compats/openai-reasoning.d.ts +5 -5
  42. package/dist/provider-compats/openai-reasoning.d.ts.map +1 -1
  43. package/dist/provider-compats/openai.d.ts +8 -0
  44. package/dist/provider-compats/openai.d.ts.map +1 -1
  45. package/dist/schema-compatibility-v3.d.ts +2 -2
  46. package/dist/schema-compatibility-v3.d.ts.map +1 -1
  47. package/dist/schema-compatibility.d.ts +2 -1
  48. package/dist/schema-compatibility.d.ts.map +1 -1
  49. package/dist/schema.cjs +16 -4
  50. package/dist/schema.d.ts +1 -1
  51. package/dist/schema.d.ts.map +1 -1
  52. package/dist/schema.js +1 -1
  53. package/dist/schema.types.d.ts +4 -2
  54. package/dist/schema.types.d.ts.map +1 -1
  55. package/dist/standard-schema/adapters/ai-sdk.cjs +16 -0
  56. package/dist/standard-schema/adapters/ai-sdk.cjs.map +1 -0
  57. package/dist/standard-schema/adapters/ai-sdk.js +3 -0
  58. package/dist/standard-schema/adapters/ai-sdk.js.map +1 -0
  59. package/dist/standard-schema/adapters/json-schema.cjs +16 -0
  60. package/dist/standard-schema/adapters/json-schema.cjs.map +1 -0
  61. package/dist/standard-schema/adapters/json-schema.d.ts.map +1 -1
  62. package/dist/standard-schema/adapters/json-schema.js +3 -0
  63. package/dist/standard-schema/adapters/json-schema.js.map +1 -0
  64. package/dist/standard-schema/adapters/zod-v3.cjs +12 -0
  65. package/dist/standard-schema/adapters/zod-v3.cjs.map +1 -0
  66. package/dist/standard-schema/adapters/zod-v3.js +3 -0
  67. package/dist/standard-schema/adapters/zod-v3.js.map +1 -0
  68. package/dist/standard-schema/standard-schema.d.ts.map +1 -1
  69. package/dist/standard-schema-compat.d.ts +74 -0
  70. package/dist/standard-schema-compat.d.ts.map +1 -0
  71. package/dist/utils.d.ts +3 -2
  72. package/dist/utils.d.ts.map +1 -1
  73. package/dist/zod-to-json.cjs +10 -2
  74. package/dist/zod-to-json.d.ts +13 -0
  75. package/dist/zod-to-json.d.ts.map +1 -1
  76. package/dist/zod-to-json.js +1 -1
  77. package/package.json +41 -10
  78. package/dist/chunk-4EY4LZB2.js.map +0 -1
  79. package/dist/chunk-BOGGUXB5.cjs.map +0 -1
  80. package/dist/chunk-DAVEUCUM.cjs.map +0 -1
  81. package/dist/chunk-DGOXVQNP.js.map +0 -1
@@ -104,6 +104,76 @@ function fixAnyOfNullable(schema) {
104
104
  }
105
105
  return result;
106
106
  }
107
+ function ensureAllPropertiesRequired(schema) {
108
+ if (typeof schema !== "object" || schema === null) {
109
+ return schema;
110
+ }
111
+ const result = { ...schema };
112
+ if (result.type === "object" && result.properties) {
113
+ result.required = Object.keys(result.properties);
114
+ result.properties = Object.fromEntries(
115
+ Object.entries(result.properties).map(([key, value]) => [key, ensureAllPropertiesRequired(value)])
116
+ );
117
+ }
118
+ if (result.items) {
119
+ if (Array.isArray(result.items)) {
120
+ result.items = result.items.map((item) => ensureAllPropertiesRequired(item));
121
+ } else if (typeof result.items === "object") {
122
+ result.items = ensureAllPropertiesRequired(result.items);
123
+ }
124
+ }
125
+ if (result.additionalProperties && typeof result.additionalProperties === "object") {
126
+ result.additionalProperties = ensureAllPropertiesRequired(result.additionalProperties);
127
+ }
128
+ if (result.anyOf && Array.isArray(result.anyOf)) {
129
+ result.anyOf = result.anyOf.map((s) => ensureAllPropertiesRequired(s));
130
+ }
131
+ if (result.oneOf && Array.isArray(result.oneOf)) {
132
+ result.oneOf = result.oneOf.map((s) => ensureAllPropertiesRequired(s));
133
+ }
134
+ if (result.allOf && Array.isArray(result.allOf)) {
135
+ result.allOf = result.allOf.map((s) => ensureAllPropertiesRequired(s));
136
+ }
137
+ return result;
138
+ }
139
+ function prepareJsonSchemaForOpenAIStrictMode(schema) {
140
+ const withRequired = ensureAllPropertiesRequired(schema);
141
+ return ensureAdditionalPropertiesFalse(withRequired);
142
+ }
143
+ function ensureAdditionalPropertiesFalse(schema) {
144
+ if (typeof schema !== "object" || schema === null) {
145
+ return schema;
146
+ }
147
+ const result = { ...schema };
148
+ if (result.type === "object" || result.properties) {
149
+ result.additionalProperties = false;
150
+ }
151
+ if (result.properties) {
152
+ result.properties = Object.fromEntries(
153
+ Object.entries(result.properties).map(([key, value]) => [
154
+ key,
155
+ ensureAdditionalPropertiesFalse(value)
156
+ ])
157
+ );
158
+ }
159
+ if (result.items) {
160
+ if (Array.isArray(result.items)) {
161
+ result.items = result.items.map((item) => ensureAdditionalPropertiesFalse(item));
162
+ } else if (typeof result.items === "object") {
163
+ result.items = ensureAdditionalPropertiesFalse(result.items);
164
+ }
165
+ }
166
+ if (result.anyOf && Array.isArray(result.anyOf)) {
167
+ result.anyOf = result.anyOf.map((s) => ensureAdditionalPropertiesFalse(s));
168
+ }
169
+ if (result.oneOf && Array.isArray(result.oneOf)) {
170
+ result.oneOf = result.oneOf.map((s) => ensureAdditionalPropertiesFalse(s));
171
+ }
172
+ if (result.allOf && Array.isArray(result.allOf)) {
173
+ result.allOf = result.allOf.map((s) => ensureAdditionalPropertiesFalse(s));
174
+ }
175
+ return result;
176
+ }
107
177
  function zodToJsonSchema(zodSchema, target = "jsonSchema7", strategy = "relative") {
108
178
  if (zodSchema?._zod) {
109
179
  patchRecordSchemas(zodSchema);
@@ -115,6 +185,9 @@ function zodToJsonSchema(zodSchema, target = "jsonSchema7", strategy = "relative
115
185
  ctx.jsonSchema.type = "string";
116
186
  ctx.jsonSchema.format = "date-time";
117
187
  }
188
+ if (def && (def.typeName === "ZodObject" || def.type === "object")) {
189
+ ctx.jsonSchema.additionalProperties = false;
190
+ }
118
191
  }
119
192
  });
120
193
  return fixAnyOfNullable(jsonSchema);
@@ -126,6 +199,8 @@ function zodToJsonSchema(zodSchema, target = "jsonSchema7", strategy = "relative
126
199
  }
127
200
  }
128
201
 
202
+ exports.ensureAllPropertiesRequired = ensureAllPropertiesRequired;
203
+ exports.prepareJsonSchemaForOpenAIStrictMode = prepareJsonSchemaForOpenAIStrictMode;
129
204
  exports.zodToJsonSchema = zodToJsonSchema;
130
- //# sourceMappingURL=chunk-BOGGUXB5.cjs.map
131
- //# sourceMappingURL=chunk-BOGGUXB5.cjs.map
205
+ //# sourceMappingURL=chunk-UFJG5KPA.cjs.map
206
+ //# sourceMappingURL=chunk-UFJG5KPA.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/zod-to-json.ts"],"names":["zV4","zodToJsonSchemaOriginal"],"mappings":"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","file":"chunk-UFJG5KPA.cjs","sourcesContent":["import type { JSONSchema7 } from 'json-schema';\nimport type { ZodSchema as ZodSchemaV3 } from 'zod/v3';\nimport { z as zV4 } from 'zod/v4';\nimport type { Targets } from 'zod-to-json-schema';\nimport zodToJsonSchemaOriginal from 'zod-to-json-schema';\n\n// Symbol to mark schemas as already patched (for idempotency)\nconst PATCHED = Symbol('__mastra_patched__');\n\n/**\n * Recursively patch Zod v4 record schemas that are missing valueType.\n * This fixes a bug in Zod v4 where z.record(valueSchema) doesn't set def.valueType.\n * The single-arg form should set valueType but instead only sets keyType.\n */\nfunction patchRecordSchemas(schema: any): any {\n if (!schema || typeof schema !== 'object') return schema;\n\n // Skip if already patched (idempotency check)\n if ((schema as any)[PATCHED]) return schema;\n (schema as any)[PATCHED] = true;\n\n // Check the _zod.def location (v4 structure)\n const def = schema._zod?.def;\n\n // Fix record schemas with missing valueType\n if (def?.type === 'record' && def.keyType && !def.valueType) {\n // The bug: z.record(valueSchema) puts the value in keyType instead of valueType\n // Fix: move it to valueType and set keyType to string (the default)\n def.valueType = def.keyType;\n def.keyType = zV4.string();\n }\n\n // Recursively patch nested schemas\n if (!def) return schema;\n\n if (def.type === 'object' && def.shape) {\n const shape = typeof def.shape === 'function' ? def.shape() : def.shape;\n for (const key of Object.keys(shape)) {\n patchRecordSchemas(shape[key]);\n }\n }\n\n if (def.type === 'array' && def.element) {\n patchRecordSchemas(def.element);\n }\n\n if (def.type === 'union' && def.options) {\n def.options.forEach(patchRecordSchemas);\n }\n\n if (def.type === 'record') {\n if (def.keyType) patchRecordSchemas(def.keyType);\n if (def.valueType) patchRecordSchemas(def.valueType);\n }\n\n // Handle intersection types\n if (def.type === 'intersection') {\n if (def.left) patchRecordSchemas(def.left);\n if (def.right) patchRecordSchemas(def.right);\n }\n\n // Handle lazy types - patch the schema returned by the getter\n if (def.type === 'lazy') {\n // For lazy schemas, we need to patch the schema when it's accessed\n // Store the original getter and wrap it\n if (def.getter && typeof def.getter === 'function') {\n const originalGetter = def.getter;\n def.getter = function () {\n const innerSchema = originalGetter();\n if (innerSchema) {\n patchRecordSchemas(innerSchema);\n }\n return innerSchema;\n };\n }\n }\n\n // Handle wrapper types that have innerType\n // This covers: optional, nullable, default, catch, nullish, and any other wrappers\n if (def.innerType) {\n patchRecordSchemas(def.innerType);\n }\n\n return schema;\n}\n\n/**\n * Recursively fixes anyOf patterns that some providers (like OpenAI) don't accept.\n * Converts anyOf: [{type: X}, {type: \"null\"}] to type: [X, \"null\"]\n * Also fixes empty {} property schemas by converting to a union of primitive types.\n */\nfunction fixAnyOfNullable(schema: JSONSchema7): JSONSchema7 {\n if (typeof schema !== 'object' || schema === null) {\n return schema;\n }\n\n const result = { ...schema };\n\n // Fix anyOf pattern: [{type: X}, {type: \"null\"}] or [{type: \"null\"}, {type: X}]\n if (result.anyOf && Array.isArray(result.anyOf) && result.anyOf.length === 2) {\n const nullSchema = result.anyOf.find((s: any) => typeof s === 'object' && s !== null && s.type === 'null');\n const otherSchema = result.anyOf.find((s: any) => typeof s === 'object' && s !== null && s.type !== 'null');\n\n if (nullSchema && otherSchema && typeof otherSchema === 'object' && otherSchema.type) {\n // Convert anyOf to type array format\n // Normalize sibling fields (like properties/items) before returning\n const { anyOf, ...rest } = result;\n const fixedRest = fixAnyOfNullable(rest as JSONSchema7);\n const fixedOther = fixAnyOfNullable(otherSchema as JSONSchema7);\n return {\n ...fixedRest,\n ...fixedOther,\n type: (Array.isArray(fixedOther.type)\n ? [...fixedOther.type, 'null']\n : [fixedOther.type, 'null']) as JSONSchema7['type'],\n };\n }\n }\n\n // Fix empty property schemas {} - OpenAI requires a type key\n if (result.properties && typeof result.properties === 'object' && !Array.isArray(result.properties)) {\n result.properties = Object.fromEntries(\n Object.entries(result.properties).map(([key, value]) => {\n const propSchema = value as JSONSchema7;\n\n // If property is an empty object {}, convert to allow primitive types\n // Note: We exclude 'object' (requires additionalProperties) and 'array' (requires items) for OpenAI\n if (\n typeof propSchema === 'object' &&\n propSchema !== null &&\n !Array.isArray(propSchema) &&\n Object.keys(propSchema).length === 0\n ) {\n return [key, { type: ['string', 'number', 'boolean', 'null'] as JSONSchema7['type'] }];\n }\n\n // Recursively fix nested schemas\n return [key, fixAnyOfNullable(propSchema)];\n }),\n );\n }\n\n // Recursively fix items in arrays\n if (result.items) {\n if (Array.isArray(result.items)) {\n result.items = result.items.map(item => fixAnyOfNullable(item as JSONSchema7));\n } else {\n result.items = fixAnyOfNullable(result.items as JSONSchema7);\n }\n }\n\n // Recursively fix anyOf/oneOf/allOf schemas\n if (result.anyOf && Array.isArray(result.anyOf)) {\n result.anyOf = result.anyOf.map(s => fixAnyOfNullable(s as JSONSchema7));\n }\n if (result.oneOf && Array.isArray(result.oneOf)) {\n result.oneOf = result.oneOf.map(s => fixAnyOfNullable(s as JSONSchema7));\n }\n if (result.allOf && Array.isArray(result.allOf)) {\n result.allOf = result.allOf.map(s => fixAnyOfNullable(s as JSONSchema7));\n }\n\n return result;\n}\n\n/**\n * Recursively ensures all properties in an object schema are included in the `required` array.\n * OpenAI's strict structured output mode requires every key in `properties` to also appear in `required`.\n *\n * @param schema - The JSON Schema to process\n * @returns A new schema with all properties marked as required\n */\nexport function ensureAllPropertiesRequired(schema: JSONSchema7): JSONSchema7 {\n if (typeof schema !== 'object' || schema === null) {\n return schema;\n }\n\n const result = { ...schema };\n\n if (result.type === 'object' && result.properties) {\n result.required = Object.keys(result.properties);\n result.properties = Object.fromEntries(\n Object.entries(result.properties).map(([key, value]) => [key, ensureAllPropertiesRequired(value as JSONSchema7)]),\n );\n }\n\n if (result.items) {\n if (Array.isArray(result.items)) {\n result.items = result.items.map(item => ensureAllPropertiesRequired(item as JSONSchema7));\n } else if (typeof result.items === 'object') {\n result.items = ensureAllPropertiesRequired(result.items as JSONSchema7);\n }\n }\n\n if (result.additionalProperties && typeof result.additionalProperties === 'object') {\n result.additionalProperties = ensureAllPropertiesRequired(result.additionalProperties as JSONSchema7);\n }\n\n if (result.anyOf && Array.isArray(result.anyOf)) {\n result.anyOf = result.anyOf.map(s => ensureAllPropertiesRequired(s as JSONSchema7));\n }\n if (result.oneOf && Array.isArray(result.oneOf)) {\n result.oneOf = result.oneOf.map(s => ensureAllPropertiesRequired(s as JSONSchema7));\n }\n if (result.allOf && Array.isArray(result.allOf)) {\n result.allOf = result.allOf.map(s => ensureAllPropertiesRequired(s as JSONSchema7));\n }\n\n return result;\n}\n\n/**\n * Prepare a JSON Schema for OpenAI strict mode by ensuring all object properties\n * are required and all objects have additionalProperties: false.\n */\nexport function prepareJsonSchemaForOpenAIStrictMode(schema: JSONSchema7): JSONSchema7 {\n const withRequired = ensureAllPropertiesRequired(schema);\n return ensureAdditionalPropertiesFalse(withRequired);\n}\n\nfunction ensureAdditionalPropertiesFalse(schema: JSONSchema7): JSONSchema7 {\n if (typeof schema !== 'object' || schema === null) {\n return schema;\n }\n\n const result = { ...schema };\n\n if (result.type === 'object' || result.properties) {\n result.additionalProperties = false;\n }\n\n if (result.properties) {\n result.properties = Object.fromEntries(\n Object.entries(result.properties).map(([key, value]) => [\n key,\n ensureAdditionalPropertiesFalse(value as JSONSchema7),\n ]),\n );\n }\n\n if (result.items) {\n if (Array.isArray(result.items)) {\n result.items = result.items.map(item => ensureAdditionalPropertiesFalse(item as JSONSchema7));\n } else if (typeof result.items === 'object') {\n result.items = ensureAdditionalPropertiesFalse(result.items as JSONSchema7);\n }\n }\n\n if (result.anyOf && Array.isArray(result.anyOf)) {\n result.anyOf = result.anyOf.map(s => ensureAdditionalPropertiesFalse(s as JSONSchema7));\n }\n if (result.oneOf && Array.isArray(result.oneOf)) {\n result.oneOf = result.oneOf.map(s => ensureAdditionalPropertiesFalse(s as JSONSchema7));\n }\n if (result.allOf && Array.isArray(result.allOf)) {\n result.allOf = result.allOf.map(s => ensureAdditionalPropertiesFalse(s as JSONSchema7));\n }\n\n return result;\n}\n\n// export function zotToJsonSchema(zodSchema: ZodSchemaV3 | ZodSchemaV4, target: Targets = 'jsonSchema7', strategy: 'none' | 'seen' | 'root' | 'relative' = 'relative'): JSONSchema7 {\n// const target = 'draft-07' as StandardJSONSchemaV1.Target;\n// const standardSchema = toStandardSchema(zodSchema);\n// const jsonSchema = standardSchemaToJSONSchema(standardSchema, {\n// target,\n// });\n\n// traverse(jsonSchema, {\n// cb: {\n// pre: (schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema) => {\n// this.preProcessJSONNode(schema, parentSchema);\n// },\n// post: (schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema) => {\n// this.postProcessJSONNode(schema, parentSchema);\n// },\n// },\n// });\n\n// }\n\nexport function zodToJsonSchema(\n zodSchema: any,\n target: Targets = 'jsonSchema7',\n strategy: 'none' | 'seen' | 'root' | 'relative' = 'relative',\n): JSONSchema7 {\n // Route based on whether the schema is v4 (has _zod) or v3 (only has _def).\n // We use zV4.toJSONSchema (imported from 'zod/v4') for v4 schemas, since the\n // default 'zod' import may resolve to v3 depending on the environment.\n // Without this check, v3 schemas passed to v4's toJSONSchema would throw\n // \"Cannot read properties of undefined (reading 'def')\".\n if (zodSchema?._zod) {\n // Zod v4 path - patch record schemas before converting\n patchRecordSchemas(zodSchema);\n\n const jsonSchema = zV4.toJSONSchema(zodSchema, {\n unrepresentable: 'any',\n override: (ctx: any) => {\n // Handle both Zod v4 structures: _def directly or nested in _zod\n const def = ctx.zodSchema?._def || ctx.zodSchema?._zod?.def;\n // Check for date type using both possible property names\n if (def && (def.typeName === 'ZodDate' || def.type === 'date')) {\n ctx.jsonSchema.type = 'string';\n ctx.jsonSchema.format = 'date-time';\n }\n // Add additionalProperties: false for object types to match Zod v3 behavior\n // This is required for OpenAI strict mode function calling\n if (def && (def.typeName === 'ZodObject' || def.type === 'object')) {\n ctx.jsonSchema.additionalProperties = false;\n }\n },\n }) as JSONSchema7;\n\n // Fix anyOf patterns for nullable fields - required for OpenAI compatibility\n return fixAnyOfNullable(jsonSchema);\n } else {\n // Zod v3 path - use the original converter\n return zodToJsonSchemaOriginal(zodSchema as ZodSchemaV3, {\n $refStrategy: strategy,\n target,\n }) as JSONSchema7;\n }\n}\n"]}