@mastra/schema-compat 1.2.9-alpha.0 → 1.2.9

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.
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkFS3P4V5M_cjs = require('./chunk-FS3P4V5M.cjs');
4
- var chunkROFMEFEF_cjs = require('./chunk-ROFMEFEF.cjs');
4
+ var chunkMARLM5PM_cjs = require('./chunk-MARLM5PM.cjs');
5
5
  var chunkJO4RRSYO_cjs = require('./chunk-JO4RRSYO.cjs');
6
6
  var z3 = require('zod/v3');
7
7
  var v4 = require('zod/v4');
@@ -118,7 +118,7 @@ function toStandardSchema5(schema) {
118
118
  if (typeof schema === "function") {
119
119
  throw new Error(`Unsupported schema type: function (schema libraries should implement StandardSchemaWithJSON)`);
120
120
  }
121
- return chunkROFMEFEF_cjs.toStandardSchema(schema);
121
+ return chunkMARLM5PM_cjs.toStandardSchema(schema);
122
122
  }
123
123
  function isStandardSchema(value) {
124
124
  if (value === null || typeof value !== "object" && typeof value !== "function") {
@@ -172,5 +172,5 @@ exports.isStandardSchema = isStandardSchema;
172
172
  exports.isStandardSchemaWithJSON = isStandardSchemaWithJSON;
173
173
  exports.standardSchemaToJSONSchema = standardSchemaToJSONSchema;
174
174
  exports.toStandardSchema = toStandardSchema5;
175
- //# sourceMappingURL=chunk-AR3LTBIK.cjs.map
176
- //# sourceMappingURL=chunk-AR3LTBIK.cjs.map
175
+ //# sourceMappingURL=chunk-Q6XZFGLX.cjs.map
176
+ //# sourceMappingURL=chunk-Q6XZFGLX.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/standard-schema/adapters/zod-v4.ts","../src/standard-schema/standard-schema.ts"],"names":["toJSONSchema","toStandardSchema","z3"],"mappings":"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","file":"chunk-AR3LTBIK.cjs","sourcesContent":["import type { StandardSchemaV1, StandardJSONSchemaV1 } from '@standard-schema/spec';\nimport { toJSONSchema } from 'zod/v4';\nimport type { StandardSchemaWithJSON, StandardSchemaWithJSONProps } from '../standard-schema.types';\n\n/**\n * Supported JSON Schema targets for z.toJSONSchema().\n * Works with both real Zod v4 and Zod 3.25's v4 compat layer.\n */\nconst SUPPORTED_TARGETS = new Set(['draft-07', 'draft-04', 'draft-2020-12']);\n\n/**\n * Maps Mastra's target names to Zod v4's expected format.\n * Zod v4's z.toJSONSchema() expects \"draft-7\" instead of \"draft-07\",\n * and \"draft-4\" instead of \"draft-04\".\n */\nconst ZOD_V4_TARGET_MAP: Record<string, string> = {\n 'draft-07': 'draft-7',\n 'draft-04': 'draft-4',\n};\n\n/**\n * Options for the Zod v4 adapter's JSON Schema conversion.\n */\nexport interface ZodV4AdapterOptions {\n unrepresentable?: 'any' | 'error';\n override?: (ctx: { zodSchema: unknown; jsonSchema: Record<string, unknown> }) => undefined;\n}\n\n/**\n * Converts a Zod v4 schema to JSON Schema using z.toJSONSchema().\n *\n * Works with both real Zod v4 and Zod 3.25's v4 compat layer.\n *\n * @internal\n */\nfunction convertToJsonSchema(\n zodSchema: unknown,\n options: StandardJSONSchemaV1.Options,\n adapterOptions: ZodV4AdapterOptions,\n): Record<string, unknown> {\n const target = SUPPORTED_TARGETS.has(options.target) ? options.target : 'draft-07';\n\n const jsonSchemaOptions: Record<string, unknown> = {\n target: ZOD_V4_TARGET_MAP[target] ?? target,\n };\n\n if (adapterOptions.unrepresentable) {\n jsonSchemaOptions.unrepresentable = adapterOptions.unrepresentable;\n }\n\n // The override option works in real Zod v4 but is a no-op in 3.25 compat.\n if (adapterOptions.override) {\n jsonSchemaOptions.override = adapterOptions.override;\n }\n\n return toJSONSchema(zodSchema as Parameters<typeof toJSONSchema>[0], jsonSchemaOptions) as Record<string, unknown>;\n}\n\n/**\n * Wraps a Zod v4 schema to implement the full @standard-schema/spec interface.\n *\n * Zod v4 schemas (and Zod 3.25's v4 compat layer) implement `StandardSchemaV1`\n * (validation) but may not implement `StandardJSONSchemaV1` (JSON Schema conversion)\n * on the `~standard` property. This adapter adds the `jsonSchema` property using\n * `z.toJSONSchema()` to provide JSON Schema conversion capabilities.\n *\n * @param zodSchema - A Zod v4 schema (has `_zod` property)\n * @param adapterOptions - Options passed to z.toJSONSchema()\n * @returns The schema wrapped with StandardSchemaWithJSON support\n */\nexport function toStandardSchema<T>(\n zodSchema: T & { _zod: unknown; '~standard': StandardSchemaV1.Props },\n adapterOptions: ZodV4AdapterOptions = {},\n): T & StandardSchemaWithJSON {\n // Create a wrapper object that preserves the original schema's prototype chain\n const wrapper = Object.create(zodSchema) as T & StandardSchemaWithJSON;\n\n // Get the existing ~standard property from Zod\n const existingStandard = (zodSchema as any)['~standard'] as StandardSchemaV1.Props;\n\n // Create the JSON Schema converter using z.toJSONSchema()\n const jsonSchemaConverter: StandardJSONSchemaV1.Converter = {\n input: (options: StandardJSONSchemaV1.Options): Record<string, unknown> => {\n return convertToJsonSchema(zodSchema, options, adapterOptions);\n },\n output: (options: StandardJSONSchemaV1.Options): Record<string, unknown> => {\n return convertToJsonSchema(zodSchema, options, adapterOptions);\n },\n };\n\n // Define the enhanced ~standard property\n Object.defineProperty(wrapper, '~standard', {\n value: {\n ...existingStandard,\n jsonSchema: jsonSchemaConverter,\n } satisfies StandardSchemaWithJSONProps,\n writable: false,\n enumerable: true,\n configurable: false,\n });\n\n return wrapper;\n}\n","import type { Schema } from '@internal/ai-v6';\nimport type { StandardJSONSchemaV1, StandardSchemaV1 } from '@standard-schema/spec';\nimport type { JSONSchema7 } from 'json-schema';\nimport z3 from 'zod/v3';\nimport type { ZodType } from 'zod/v3';\nimport type { PublicSchema } from '../schema.types';\nimport { toStandardSchema as toStandardSchemaAiSdk } from './adapters/ai-sdk';\nimport { toStandardSchema as toStandardSchemaJsonSchema } from './adapters/json-schema';\nimport { toStandardSchema as toStandardSchemaZodV3 } from './adapters/zod-v3';\nimport { toStandardSchema as toStandardSchemaZodV4 } from './adapters/zod-v4';\nimport type { StandardSchemaWithJSON } from './standard-schema.types';\n\n/**\n * Override function for JSON Schema conversion.\n * Handles types that Zod v4 cannot natively represent in JSON Schema:\n * - z.date() -> { type: 'string', format: 'date-time' }\n */\nfunction jsonSchemaOverride(ctx: { zodSchema: unknown; jsonSchema: Record<string, unknown> }): undefined {\n const zodSchema = ctx.zodSchema as {\n type?: string;\n _def?: { typeName?: string };\n _zod?: { def?: { type?: string; coerce?: boolean } };\n optional?: () => unknown;\n };\n\n if (\n ctx.jsonSchema.type === 'object' &&\n ctx.jsonSchema.properties !== undefined &&\n !ctx.jsonSchema.additionalProperties\n ) {\n ctx.jsonSchema.additionalProperties = false;\n }\n\n if (zodSchema) {\n // Zod v4: zodSchema.type === 'date'\n // Zod v3: zodSchema._def.typeName === 'ZodDate'\n const isDateType = zodSchema?.type === 'date' || zodSchema?._def?.typeName === 'ZodDate';\n\n if (isDateType) {\n // Zod v4 dates need explicit JSON schema conversion (zod-to-json-schema doesn't handle them)\n if (zodSchema?.type === 'date') {\n ctx.jsonSchema.type = 'string';\n ctx.jsonSchema.format = 'date-time';\n }\n // Mark dates for #traverse: x-date=true means string→Date conversion needed.\n // z.coerce.date() handles its own coercion, so mark as false to prevent conversion.\n // Zod v3 has no coerce, so all v3 dates are strict (handled by preProcessJSONNode fallback).\n ctx.jsonSchema['x-date'] = !zodSchema._zod?.def?.coerce;\n // @ts-expect-error - catchall is a valid property for zod\n } else if (zodSchema?.type === 'object' && zodSchema._zod?.def?.catchall?.type === 'unknown') {\n ctx.jsonSchema.additionalProperties = true;\n }\n }\n\n return undefined;\n}\n/**\n * Library options for JSON Schema conversion.\n * - unrepresentable: 'any' allows z.custom() and other unrepresentable types to be converted to {}\n * instead of throwing \"Custom types cannot be represented in JSON Schema\"\n * - override: converts z.date() to { type: 'string', format: 'date-time' }\n */\nexport const JSON_SCHEMA_LIBRARY_OPTIONS = {\n unrepresentable: 'any' as const,\n override: jsonSchemaOverride,\n};\n\nexport type {\n StandardSchemaWithJSON,\n StandardSchemaWithJSONProps,\n InferInput,\n InferOutput,\n StandardSchemaIssue,\n} from './standard-schema.types';\n\nfunction isVercelSchema(schema: unknown): schema is Schema {\n return (\n typeof schema === 'object' &&\n schema !== null &&\n '_type' in schema &&\n 'jsonSchema' in schema &&\n typeof (schema as Schema).jsonSchema === 'object'\n );\n}\n\n/**\n * Check if a schema is Zod v4 (has _zod property which is v4-only)\n */\nfunction isZodV4(schema: unknown): boolean {\n return typeof schema === 'object' && schema !== null && '_zod' in schema;\n}\n\n/**\n * Check if a schema is Zod v3.\n *\n * Zod v3 can come from:\n * 1. The old standalone 'zod-v3' package\n * 2. The 'zod/v3' compat export from modern zod\n *\n * We detect Zod v3 by checking:\n * - Has ~standard.vendor === 'zod' (both v3 and v4 have this)\n * - Does NOT have ~standard.jsonSchema (only Zod v4 has native JSON Schema support)\n * - Does NOT have _zod property (only Zod v4 has this)\n *\n * Note: We can't use instanceof z3.ZodType because the old 'zod-v3' package\n * has a different prototype chain than 'zod/v3'.\n */\nfunction isZodV3(schema: unknown): schema is ZodType {\n if (schema === null || typeof schema !== 'object') {\n return false;\n }\n\n // Must not be Zod v4\n if (isZodV4(schema)) {\n return false;\n }\n\n // Check for ~standard with vendor 'zod' but no jsonSchema\n if ('~standard' in schema) {\n const std = (schema as any)['~standard'];\n if (typeof std === 'object' && std !== null && std.vendor === 'zod' && !('jsonSchema' in std)) {\n return true;\n }\n }\n\n // Fallback: check instanceof for zod/v3 compat export\n return schema instanceof z3.ZodType;\n}\n\nexport function toStandardSchema<T = unknown>(schema: PublicSchema<T>): StandardSchemaWithJSON<T> {\n // First check: if already StandardSchemaWithJSON, return as-is\n // This handles ArkType, Zod v4 (when it has jsonSchema), and pre-wrapped schemas\n if (isStandardSchemaWithJSON(schema)) {\n return schema;\n }\n\n // Check for Zod v4 schemas without ~standard.jsonSchema\n // This handles both real Zod v4 and Zod 3.25's v4 compat layer where\n // ~standard.jsonSchema is not present on the schema object\n if (isZodV4(schema)) {\n return toStandardSchemaZodV4(schema as any, {\n unrepresentable: JSON_SCHEMA_LIBRARY_OPTIONS.unrepresentable,\n override: JSON_SCHEMA_LIBRARY_OPTIONS.override,\n });\n }\n\n // Check for Zod v3 schemas (need wrapping to add JSON Schema support)\n // Important: Must use isZodV3() not instanceof z3.ZodType because\n // Zod v4 schemas are also instanceof z3.ZodType due to prototype compatibility\n if (isZodV3(schema)) {\n return toStandardSchemaZodV3(schema as ZodType);\n }\n\n // Check for AI SDK Schema objects (Vercel's jsonSchema wrapper)\n if (isVercelSchema(schema)) {\n return toStandardSchemaAiSdk(schema as Schema<T>);\n }\n\n // At this point, assume it's a plain JSON Schema object\n // JSON Schema objects are plain objects with properties like 'type', 'properties', etc.\n if (schema === null || (typeof schema !== 'object' && typeof schema !== 'function')) {\n throw new Error(`Unsupported schema type: ${typeof schema}`);\n }\n\n // If it's a function that's not StandardSchemaWithJSON, it's not supported\n if (typeof schema === 'function') {\n throw new Error(`Unsupported schema type: function (schema libraries should implement StandardSchemaWithJSON)`);\n }\n\n return toStandardSchemaJsonSchema(schema as JSONSchema7);\n}\n\n/**\n * Type guard to check if a value implements the StandardSchemaV1 interface.\n *\n * @param value - The value to check\n * @returns True if the value implements StandardSchemaV1\n *\n * @example\n * ```typescript\n * import { isStandardSchema } from '@mastra/schema-compat';\n *\n * if (isStandardSchema(someValue)) {\n * const result = someValue['~standard'].validate(input);\n * }\n * ```\n */\nexport function isStandardSchema(value: unknown): value is StandardSchemaV1 {\n // Check for object or function (some libraries like ArkType use callable schemas)\n if (value === null || (typeof value !== 'object' && typeof value !== 'function')) {\n return false;\n }\n if (!('~standard' in value)) {\n return false;\n }\n const std = (value as any)['~standard'];\n return (\n typeof std === 'object' &&\n std !== null &&\n 'version' in std &&\n std.version === 1 &&\n 'vendor' in std &&\n 'validate' in std &&\n typeof std.validate === 'function'\n );\n}\n\n/**\n * Type guard to check if a value implements the StandardJSONSchemaV1 interface.\n *\n * @param value - The value to check\n * @returns True if the value implements StandardJSONSchemaV1\n *\n * @example\n * ```typescript\n * import { isStandardJSONSchema } from '@mastra/schema-compat';\n *\n * if (isStandardJSONSchema(someValue)) {\n * const jsonSchema = someValue['~standard'].jsonSchema.output({ target: 'draft-07' });\n * }\n * ```\n */\nexport function isStandardJSONSchema(value: unknown): value is StandardJSONSchemaV1 {\n // Check for object or function (some libraries like ArkType use callable schemas)\n if (value === null || (typeof value !== 'object' && typeof value !== 'function')) {\n return false;\n }\n if (!('~standard' in value)) {\n return false;\n }\n const std = (value as any)['~standard'];\n if (typeof std !== 'object' || std === null) {\n return false;\n }\n if (!('version' in std) || std.version !== 1 || !('vendor' in std)) {\n return false;\n }\n if (!('jsonSchema' in std) || typeof std.jsonSchema !== 'object') {\n return false;\n }\n return typeof std.jsonSchema.input === 'function' && typeof std.jsonSchema.output === 'function';\n}\n\n/**\n * Type guard to check if a value implements both StandardSchemaV1 and StandardJSONSchemaV1.\n *\n * @param value - The value to check\n * @returns True if the value implements both interfaces\n *\n * @example\n * ```typescript\n * import { isStandardSchemaWithJSON } from '@mastra/schema-compat';\n *\n * if (isStandardSchemaWithJSON(someValue)) {\n * // Can use both validation and JSON Schema conversion\n * const result = someValue['~standard'].validate(input);\n * const jsonSchema = someValue['~standard'].jsonSchema.output({ target: 'draft-07' });\n * }\n * ```\n */\nexport function isStandardSchemaWithJSON(value: unknown): value is StandardSchemaWithJSON {\n return isStandardSchema(value) && isStandardJSONSchema(value);\n}\n\n/**\n * Converts a StandardSchemaWithJSON to a JSON Schema.\n *\n * @param schema - The StandardSchemaWithJSON schema to convert\n * @param options - Conversion options\n * @param options.target - The JSON Schema target version (default: 'draft-07')\n * @param options.io - Whether to use input or output schema (default: 'output')\n * - 'input': Use for tool parameters, function arguments, request bodies\n * - 'output': Use for return types, response bodies\n * @returns The JSON Schema representation\n *\n * @example\n * ```typescript\n * import { standardSchemaToJSONSchema, toStandardSchema } from '@mastra/schema-compat';\n * import { z } from 'zod';\n *\n * const zodSchema = z.object({ name: z.string() });\n * const standardSchema = toStandardSchema(zodSchema);\n *\n * // For output types (default)\n * const outputSchema = standardSchemaToJSONSchema(standardSchema);\n *\n * // For input types (tool parameters)\n * const inputSchema = standardSchemaToJSONSchema(standardSchema, { io: 'input' });\n * ```\n */\nexport function standardSchemaToJSONSchema(\n schema: StandardSchemaWithJSON,\n options: {\n target?: StandardJSONSchemaV1.Target;\n io?: 'input' | 'output';\n override?: (typeof JSON_SCHEMA_LIBRARY_OPTIONS)['override'];\n } = {},\n): JSONSchema7 {\n const { target = 'draft-07', io = 'output', override = JSON_SCHEMA_LIBRARY_OPTIONS.override } = options;\n const jsonSchemaFn = schema['~standard'].jsonSchema[io];\n let jsonSchema = jsonSchemaFn({\n target,\n libraryOptions: {\n ...JSON_SCHEMA_LIBRARY_OPTIONS,\n override,\n },\n }) as JSONSchema7;\n\n // make sure only jsonSchema is left, no standard schema metadata\n jsonSchema = JSON.parse(JSON.stringify(jsonSchema));\n\n return jsonSchema;\n}\n"]}
1
+ {"version":3,"sources":["../src/standard-schema/adapters/zod-v4.ts","../src/standard-schema/standard-schema.ts"],"names":["toJSONSchema","toStandardSchema","z3"],"mappings":"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","file":"chunk-Q6XZFGLX.cjs","sourcesContent":["import type { StandardSchemaV1, StandardJSONSchemaV1 } from '@standard-schema/spec';\nimport { toJSONSchema } from 'zod/v4';\nimport type { StandardSchemaWithJSON, StandardSchemaWithJSONProps } from '../standard-schema.types';\n\n/**\n * Supported JSON Schema targets for z.toJSONSchema().\n * Works with both real Zod v4 and Zod 3.25's v4 compat layer.\n */\nconst SUPPORTED_TARGETS = new Set(['draft-07', 'draft-04', 'draft-2020-12']);\n\n/**\n * Maps Mastra's target names to Zod v4's expected format.\n * Zod v4's z.toJSONSchema() expects \"draft-7\" instead of \"draft-07\",\n * and \"draft-4\" instead of \"draft-04\".\n */\nconst ZOD_V4_TARGET_MAP: Record<string, string> = {\n 'draft-07': 'draft-7',\n 'draft-04': 'draft-4',\n};\n\n/**\n * Options for the Zod v4 adapter's JSON Schema conversion.\n */\nexport interface ZodV4AdapterOptions {\n unrepresentable?: 'any' | 'error';\n override?: (ctx: { zodSchema: unknown; jsonSchema: Record<string, unknown> }) => undefined;\n}\n\n/**\n * Converts a Zod v4 schema to JSON Schema using z.toJSONSchema().\n *\n * Works with both real Zod v4 and Zod 3.25's v4 compat layer.\n *\n * @internal\n */\nfunction convertToJsonSchema(\n zodSchema: unknown,\n options: StandardJSONSchemaV1.Options,\n adapterOptions: ZodV4AdapterOptions,\n): Record<string, unknown> {\n const target = SUPPORTED_TARGETS.has(options.target) ? options.target : 'draft-07';\n\n const jsonSchemaOptions: Record<string, unknown> = {\n target: ZOD_V4_TARGET_MAP[target] ?? target,\n };\n\n if (adapterOptions.unrepresentable) {\n jsonSchemaOptions.unrepresentable = adapterOptions.unrepresentable;\n }\n\n // The override option works in real Zod v4 but is a no-op in 3.25 compat.\n if (adapterOptions.override) {\n jsonSchemaOptions.override = adapterOptions.override;\n }\n\n return toJSONSchema(zodSchema as Parameters<typeof toJSONSchema>[0], jsonSchemaOptions) as Record<string, unknown>;\n}\n\n/**\n * Wraps a Zod v4 schema to implement the full @standard-schema/spec interface.\n *\n * Zod v4 schemas (and Zod 3.25's v4 compat layer) implement `StandardSchemaV1`\n * (validation) but may not implement `StandardJSONSchemaV1` (JSON Schema conversion)\n * on the `~standard` property. This adapter adds the `jsonSchema` property using\n * `z.toJSONSchema()` to provide JSON Schema conversion capabilities.\n *\n * @param zodSchema - A Zod v4 schema (has `_zod` property)\n * @param adapterOptions - Options passed to z.toJSONSchema()\n * @returns The schema wrapped with StandardSchemaWithJSON support\n */\nexport function toStandardSchema<T>(\n zodSchema: T & { _zod: unknown; '~standard': StandardSchemaV1.Props },\n adapterOptions: ZodV4AdapterOptions = {},\n): T & StandardSchemaWithJSON {\n // Create a wrapper object that preserves the original schema's prototype chain\n const wrapper = Object.create(zodSchema) as T & StandardSchemaWithJSON;\n\n // Get the existing ~standard property from Zod\n const existingStandard = (zodSchema as any)['~standard'] as StandardSchemaV1.Props;\n\n // Create the JSON Schema converter using z.toJSONSchema()\n const jsonSchemaConverter: StandardJSONSchemaV1.Converter = {\n input: (options: StandardJSONSchemaV1.Options): Record<string, unknown> => {\n return convertToJsonSchema(zodSchema, options, adapterOptions);\n },\n output: (options: StandardJSONSchemaV1.Options): Record<string, unknown> => {\n return convertToJsonSchema(zodSchema, options, adapterOptions);\n },\n };\n\n // Define the enhanced ~standard property\n Object.defineProperty(wrapper, '~standard', {\n value: {\n ...existingStandard,\n jsonSchema: jsonSchemaConverter,\n } satisfies StandardSchemaWithJSONProps,\n writable: false,\n enumerable: true,\n configurable: false,\n });\n\n return wrapper;\n}\n","import type { Schema } from '@internal/ai-v6';\nimport type { StandardJSONSchemaV1, StandardSchemaV1 } from '@standard-schema/spec';\nimport type { JSONSchema7 } from 'json-schema';\nimport z3 from 'zod/v3';\nimport type { ZodType } from 'zod/v3';\nimport type { PublicSchema } from '../schema.types';\nimport { toStandardSchema as toStandardSchemaAiSdk } from './adapters/ai-sdk';\nimport { toStandardSchema as toStandardSchemaJsonSchema } from './adapters/json-schema';\nimport { toStandardSchema as toStandardSchemaZodV3 } from './adapters/zod-v3';\nimport { toStandardSchema as toStandardSchemaZodV4 } from './adapters/zod-v4';\nimport type { StandardSchemaWithJSON } from './standard-schema.types';\n\n/**\n * Override function for JSON Schema conversion.\n * Handles types that Zod v4 cannot natively represent in JSON Schema:\n * - z.date() -> { type: 'string', format: 'date-time' }\n */\nfunction jsonSchemaOverride(ctx: { zodSchema: unknown; jsonSchema: Record<string, unknown> }): undefined {\n const zodSchema = ctx.zodSchema as {\n type?: string;\n _def?: { typeName?: string };\n _zod?: { def?: { type?: string; coerce?: boolean } };\n optional?: () => unknown;\n };\n\n if (\n ctx.jsonSchema.type === 'object' &&\n ctx.jsonSchema.properties !== undefined &&\n !ctx.jsonSchema.additionalProperties\n ) {\n ctx.jsonSchema.additionalProperties = false;\n }\n\n if (zodSchema) {\n // Zod v4: zodSchema.type === 'date'\n // Zod v3: zodSchema._def.typeName === 'ZodDate'\n const isDateType = zodSchema?.type === 'date' || zodSchema?._def?.typeName === 'ZodDate';\n\n if (isDateType) {\n // Zod v4 dates need explicit JSON schema conversion (zod-to-json-schema doesn't handle them)\n if (zodSchema?.type === 'date') {\n ctx.jsonSchema.type = 'string';\n ctx.jsonSchema.format = 'date-time';\n }\n // Mark dates for #traverse: x-date=true means string→Date conversion needed.\n // z.coerce.date() handles its own coercion, so mark as false to prevent conversion.\n // Zod v3 has no coerce, so all v3 dates are strict (handled by preProcessJSONNode fallback).\n ctx.jsonSchema['x-date'] = !zodSchema._zod?.def?.coerce;\n // @ts-expect-error - catchall is a valid property for zod\n } else if (zodSchema?.type === 'object' && zodSchema._zod?.def?.catchall?.type === 'unknown') {\n ctx.jsonSchema.additionalProperties = true;\n }\n }\n\n return undefined;\n}\n/**\n * Library options for JSON Schema conversion.\n * - unrepresentable: 'any' allows z.custom() and other unrepresentable types to be converted to {}\n * instead of throwing \"Custom types cannot be represented in JSON Schema\"\n * - override: converts z.date() to { type: 'string', format: 'date-time' }\n */\nexport const JSON_SCHEMA_LIBRARY_OPTIONS = {\n unrepresentable: 'any' as const,\n override: jsonSchemaOverride,\n};\n\nexport type {\n StandardSchemaWithJSON,\n StandardSchemaWithJSONProps,\n InferInput,\n InferOutput,\n StandardSchemaIssue,\n} from './standard-schema.types';\n\nfunction isVercelSchema(schema: unknown): schema is Schema {\n return (\n typeof schema === 'object' &&\n schema !== null &&\n '_type' in schema &&\n 'jsonSchema' in schema &&\n typeof (schema as Schema).jsonSchema === 'object'\n );\n}\n\n/**\n * Check if a schema is Zod v4 (has _zod property which is v4-only)\n */\nfunction isZodV4(schema: unknown): boolean {\n return typeof schema === 'object' && schema !== null && '_zod' in schema;\n}\n\n/**\n * Check if a schema is Zod v3.\n *\n * Zod v3 can come from:\n * 1. The old standalone 'zod-v3' package\n * 2. The 'zod/v3' compat export from modern zod\n *\n * We detect Zod v3 by checking:\n * - Has ~standard.vendor === 'zod' (both v3 and v4 have this)\n * - Does NOT have ~standard.jsonSchema (only Zod v4 has native JSON Schema support)\n * - Does NOT have _zod property (only Zod v4 has this)\n *\n * Note: We can't use instanceof z3.ZodType because the old 'zod-v3' package\n * has a different prototype chain than 'zod/v3'.\n */\nfunction isZodV3(schema: unknown): schema is ZodType {\n if (schema === null || typeof schema !== 'object') {\n return false;\n }\n\n // Must not be Zod v4\n if (isZodV4(schema)) {\n return false;\n }\n\n // Check for ~standard with vendor 'zod' but no jsonSchema\n if ('~standard' in schema) {\n const std = (schema as any)['~standard'];\n if (typeof std === 'object' && std !== null && std.vendor === 'zod' && !('jsonSchema' in std)) {\n return true;\n }\n }\n\n // Fallback: check instanceof for zod/v3 compat export\n return schema instanceof z3.ZodType;\n}\n\nexport function toStandardSchema<T = unknown>(schema: PublicSchema<T>): StandardSchemaWithJSON<T> {\n // First check: if already StandardSchemaWithJSON, return as-is\n // This handles ArkType, Zod v4 (when it has jsonSchema), and pre-wrapped schemas\n if (isStandardSchemaWithJSON(schema)) {\n return schema;\n }\n\n // Check for Zod v4 schemas without ~standard.jsonSchema\n // This handles both real Zod v4 and Zod 3.25's v4 compat layer where\n // ~standard.jsonSchema is not present on the schema object\n if (isZodV4(schema)) {\n return toStandardSchemaZodV4(schema as any, {\n unrepresentable: JSON_SCHEMA_LIBRARY_OPTIONS.unrepresentable,\n override: JSON_SCHEMA_LIBRARY_OPTIONS.override,\n });\n }\n\n // Check for Zod v3 schemas (need wrapping to add JSON Schema support)\n // Important: Must use isZodV3() not instanceof z3.ZodType because\n // Zod v4 schemas are also instanceof z3.ZodType due to prototype compatibility\n if (isZodV3(schema)) {\n return toStandardSchemaZodV3(schema as ZodType);\n }\n\n // Check for AI SDK Schema objects (Vercel's jsonSchema wrapper)\n if (isVercelSchema(schema)) {\n return toStandardSchemaAiSdk(schema as Schema<T>);\n }\n\n // At this point, assume it's a plain JSON Schema object\n // JSON Schema objects are plain objects with properties like 'type', 'properties', etc.\n if (schema === null || (typeof schema !== 'object' && typeof schema !== 'function')) {\n throw new Error(`Unsupported schema type: ${typeof schema}`);\n }\n\n // If it's a function that's not StandardSchemaWithJSON, it's not supported\n if (typeof schema === 'function') {\n throw new Error(`Unsupported schema type: function (schema libraries should implement StandardSchemaWithJSON)`);\n }\n\n return toStandardSchemaJsonSchema(schema as JSONSchema7);\n}\n\n/**\n * Type guard to check if a value implements the StandardSchemaV1 interface.\n *\n * @param value - The value to check\n * @returns True if the value implements StandardSchemaV1\n *\n * @example\n * ```typescript\n * import { isStandardSchema } from '@mastra/schema-compat';\n *\n * if (isStandardSchema(someValue)) {\n * const result = someValue['~standard'].validate(input);\n * }\n * ```\n */\nexport function isStandardSchema(value: unknown): value is StandardSchemaV1 {\n // Check for object or function (some libraries like ArkType use callable schemas)\n if (value === null || (typeof value !== 'object' && typeof value !== 'function')) {\n return false;\n }\n if (!('~standard' in value)) {\n return false;\n }\n const std = (value as any)['~standard'];\n return (\n typeof std === 'object' &&\n std !== null &&\n 'version' in std &&\n std.version === 1 &&\n 'vendor' in std &&\n 'validate' in std &&\n typeof std.validate === 'function'\n );\n}\n\n/**\n * Type guard to check if a value implements the StandardJSONSchemaV1 interface.\n *\n * @param value - The value to check\n * @returns True if the value implements StandardJSONSchemaV1\n *\n * @example\n * ```typescript\n * import { isStandardJSONSchema } from '@mastra/schema-compat';\n *\n * if (isStandardJSONSchema(someValue)) {\n * const jsonSchema = someValue['~standard'].jsonSchema.output({ target: 'draft-07' });\n * }\n * ```\n */\nexport function isStandardJSONSchema(value: unknown): value is StandardJSONSchemaV1 {\n // Check for object or function (some libraries like ArkType use callable schemas)\n if (value === null || (typeof value !== 'object' && typeof value !== 'function')) {\n return false;\n }\n if (!('~standard' in value)) {\n return false;\n }\n const std = (value as any)['~standard'];\n if (typeof std !== 'object' || std === null) {\n return false;\n }\n if (!('version' in std) || std.version !== 1 || !('vendor' in std)) {\n return false;\n }\n if (!('jsonSchema' in std) || typeof std.jsonSchema !== 'object') {\n return false;\n }\n return typeof std.jsonSchema.input === 'function' && typeof std.jsonSchema.output === 'function';\n}\n\n/**\n * Type guard to check if a value implements both StandardSchemaV1 and StandardJSONSchemaV1.\n *\n * @param value - The value to check\n * @returns True if the value implements both interfaces\n *\n * @example\n * ```typescript\n * import { isStandardSchemaWithJSON } from '@mastra/schema-compat';\n *\n * if (isStandardSchemaWithJSON(someValue)) {\n * // Can use both validation and JSON Schema conversion\n * const result = someValue['~standard'].validate(input);\n * const jsonSchema = someValue['~standard'].jsonSchema.output({ target: 'draft-07' });\n * }\n * ```\n */\nexport function isStandardSchemaWithJSON(value: unknown): value is StandardSchemaWithJSON {\n return isStandardSchema(value) && isStandardJSONSchema(value);\n}\n\n/**\n * Converts a StandardSchemaWithJSON to a JSON Schema.\n *\n * @param schema - The StandardSchemaWithJSON schema to convert\n * @param options - Conversion options\n * @param options.target - The JSON Schema target version (default: 'draft-07')\n * @param options.io - Whether to use input or output schema (default: 'output')\n * - 'input': Use for tool parameters, function arguments, request bodies\n * - 'output': Use for return types, response bodies\n * @returns The JSON Schema representation\n *\n * @example\n * ```typescript\n * import { standardSchemaToJSONSchema, toStandardSchema } from '@mastra/schema-compat';\n * import { z } from 'zod';\n *\n * const zodSchema = z.object({ name: z.string() });\n * const standardSchema = toStandardSchema(zodSchema);\n *\n * // For output types (default)\n * const outputSchema = standardSchemaToJSONSchema(standardSchema);\n *\n * // For input types (tool parameters)\n * const inputSchema = standardSchemaToJSONSchema(standardSchema, { io: 'input' });\n * ```\n */\nexport function standardSchemaToJSONSchema(\n schema: StandardSchemaWithJSON,\n options: {\n target?: StandardJSONSchemaV1.Target;\n io?: 'input' | 'output';\n override?: (typeof JSON_SCHEMA_LIBRARY_OPTIONS)['override'];\n } = {},\n): JSONSchema7 {\n const { target = 'draft-07', io = 'output', override = JSON_SCHEMA_LIBRARY_OPTIONS.override } = options;\n const jsonSchemaFn = schema['~standard'].jsonSchema[io];\n let jsonSchema = jsonSchemaFn({\n target,\n libraryOptions: {\n ...JSON_SCHEMA_LIBRARY_OPTIONS,\n override,\n },\n }) as JSONSchema7;\n\n // make sure only jsonSchema is left, no standard schema metadata\n jsonSchema = JSON.parse(JSON.stringify(jsonSchema));\n\n return jsonSchema;\n}\n"]}
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkAR3LTBIK_cjs = require('./chunk-AR3LTBIK.cjs');
3
+ var chunkQ6XZFGLX_cjs = require('./chunk-Q6XZFGLX.cjs');
4
4
  var chunkUFJG5KPA_cjs = require('./chunk-UFJG5KPA.cjs');
5
5
  var chunk3MLZICLP_cjs = require('./chunk-3MLZICLP.cjs');
6
6
  var chunkDZUJEN5N_cjs = require('./chunk-DZUJEN5N.cjs');
@@ -10,7 +10,7 @@ var zodFromJsonSchema = require('zod-from-json-schema');
10
10
  var zodFromJsonSchemaV3 = require('zod-from-json-schema-v3');
11
11
  var v4 = require('zod/v4');
12
12
 
13
- // ../_vendored/ai_v4/dist/chunk-GBOGIFXJ.js
13
+ // ../_vendored/ai_v4/dist/chunk-OPIPXJLE.js
14
14
  var __create = Object.create;
15
15
  var __defProp = Object.defineProperty;
16
16
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -3608,20 +3608,20 @@ function applyCompatLayer({
3608
3608
  mode
3609
3609
  }) {
3610
3610
  if (mode === "jsonSchema") {
3611
- const standardSchema = chunkAR3LTBIK_cjs.toStandardSchema(schema);
3611
+ const standardSchema = chunkQ6XZFGLX_cjs.toStandardSchema(schema);
3612
3612
  for (const compat of compatLayers) {
3613
3613
  if (compat.shouldApply()) {
3614
3614
  const compatSchema = compat.processToCompatSchema(standardSchema);
3615
- return chunkAR3LTBIK_cjs.standardSchemaToJSONSchema(compatSchema);
3615
+ return chunkQ6XZFGLX_cjs.standardSchemaToJSONSchema(compatSchema);
3616
3616
  }
3617
3617
  }
3618
- return chunkAR3LTBIK_cjs.standardSchemaToJSONSchema(standardSchema);
3618
+ return chunkQ6XZFGLX_cjs.standardSchemaToJSONSchema(standardSchema);
3619
3619
  } else {
3620
3620
  let zodSchema2;
3621
3621
  if (isZodType(schema)) {
3622
3622
  zodSchema2 = schema;
3623
3623
  } else {
3624
- if (chunkAR3LTBIK_cjs.isStandardSchemaWithJSON(schema)) {
3624
+ if (chunkQ6XZFGLX_cjs.isStandardSchemaWithJSON(schema)) {
3625
3625
  throw new Error("StandardSchemaWithJSON is not supported for applyCompatLayer and aiSdkSchema mode");
3626
3626
  }
3627
3627
  zodSchema2 = convertSchemaToZod(schema);
@@ -4881,8 +4881,8 @@ var SchemaCompatLayer3 = class {
4881
4881
  * @returns
4882
4882
  */
4883
4883
  processToJSONSchema(schema, io = "input") {
4884
- const standardSchema = chunkAR3LTBIK_cjs.toStandardSchema(schema);
4885
- const jsonSchema2 = chunkAR3LTBIK_cjs.standardSchemaToJSONSchema(standardSchema, {
4884
+ const standardSchema = chunkQ6XZFGLX_cjs.toStandardSchema(schema);
4885
+ const jsonSchema2 = chunkQ6XZFGLX_cjs.standardSchemaToJSONSchema(standardSchema, {
4886
4886
  target: "draft-07",
4887
4887
  io
4888
4888
  // Use input mode so fields with defaults are optional
@@ -4904,7 +4904,7 @@ var SchemaCompatLayer3 = class {
4904
4904
  "~standard": {
4905
4905
  version: 1,
4906
4906
  vendor: "mastra",
4907
- validate: (value) => chunkAR3LTBIK_cjs.toStandardSchema(schema)["~standard"].validate(value),
4907
+ validate: (value) => chunkQ6XZFGLX_cjs.toStandardSchema(schema)["~standard"].validate(value),
4908
4908
  jsonSchema: {
4909
4909
  input: () => {
4910
4910
  return this.processToJSONSchema(schema, "input");
@@ -5162,8 +5162,8 @@ var SchemaCompatLayer3 = class {
5162
5162
  };
5163
5163
  const schemaTarget = this.getSchemaTarget();
5164
5164
  const target = (schemaTarget && SCHEMA_TARGET_TO_STANDARD[schemaTarget]) ?? schemaTarget;
5165
- const standardSchema = chunkAR3LTBIK_cjs.toStandardSchema(zodSchema2);
5166
- const jsonSchema2 = chunkAR3LTBIK_cjs.standardSchemaToJSONSchema(standardSchema, {
5165
+ const standardSchema = chunkQ6XZFGLX_cjs.toStandardSchema(zodSchema2);
5166
+ const jsonSchema2 = chunkQ6XZFGLX_cjs.standardSchemaToJSONSchema(standardSchema, {
5167
5167
  target,
5168
5168
  io: "input"
5169
5169
  // Use input mode so fields with defaults are optional
@@ -5364,7 +5364,7 @@ var OpenAISchemaCompatLayer = class extends SchemaCompatLayer3 {
5364
5364
  */
5365
5365
  processToAISDKSchema(zodSchema2) {
5366
5366
  const compat = this.processToCompatSchema(zodSchema2);
5367
- const transformedJsonSchema = chunkAR3LTBIK_cjs.standardSchemaToJSONSchema(compat);
5367
+ const transformedJsonSchema = chunkQ6XZFGLX_cjs.standardSchemaToJSONSchema(compat);
5368
5368
  return jsonSchema(transformedJsonSchema, {
5369
5369
  validate: (value) => {
5370
5370
  const transformed = this.#traverse(value, transformedJsonSchema);
@@ -5374,7 +5374,7 @@ var OpenAISchemaCompatLayer = class extends SchemaCompatLayer3 {
5374
5374
  });
5375
5375
  }
5376
5376
  processToCompatSchema(schema) {
5377
- const originalStandardSchema = chunkAR3LTBIK_cjs.toStandardSchema(schema);
5377
+ const originalStandardSchema = chunkQ6XZFGLX_cjs.toStandardSchema(schema);
5378
5378
  return {
5379
5379
  "~standard": {
5380
5380
  version: 1,
@@ -5632,7 +5632,7 @@ function applyOpenAICompatTransforms(schema, modelInfo) {
5632
5632
  return schema;
5633
5633
  }
5634
5634
  const processedZodSchema = compatLayer.processZodType(zodSchema2);
5635
- return chunkAR3LTBIK_cjs.toStandardSchema(processedZodSchema);
5635
+ return chunkQ6XZFGLX_cjs.toStandardSchema(processedZodSchema);
5636
5636
  }
5637
5637
  function applyOpenAICompatToTools(tools, modelInfo) {
5638
5638
  if (!tools) {
@@ -5688,7 +5688,7 @@ var AnthropicSchemaCompatLayer = class extends SchemaCompatLayer3 {
5688
5688
  }
5689
5689
  processToAISDKSchema(zodSchema2) {
5690
5690
  const compat = this.processToCompatSchema(zodSchema2);
5691
- const transformedJsonSchema = chunkAR3LTBIK_cjs.standardSchemaToJSONSchema(compat);
5691
+ const transformedJsonSchema = chunkQ6XZFGLX_cjs.standardSchemaToJSONSchema(compat);
5692
5692
  return jsonSchema(transformedJsonSchema, {
5693
5693
  validate: (value) => {
5694
5694
  const transformed = this.#traverse(value, transformedJsonSchema);
@@ -5698,7 +5698,7 @@ var AnthropicSchemaCompatLayer = class extends SchemaCompatLayer3 {
5698
5698
  });
5699
5699
  }
5700
5700
  processToCompatSchema(schema) {
5701
- const originalStandardSchema = chunkAR3LTBIK_cjs.toStandardSchema(schema);
5701
+ const originalStandardSchema = chunkQ6XZFGLX_cjs.toStandardSchema(schema);
5702
5702
  return {
5703
5703
  "~standard": {
5704
5704
  version: 1,
@@ -5819,7 +5819,7 @@ var DeepSeekSchemaCompatLayer = class extends SchemaCompatLayer3 {
5819
5819
  }
5820
5820
  processToAISDKSchema(zodSchema2) {
5821
5821
  const compat = this.processToCompatSchema(zodSchema2);
5822
- const transformedJsonSchema = chunkAR3LTBIK_cjs.standardSchemaToJSONSchema(compat);
5822
+ const transformedJsonSchema = chunkQ6XZFGLX_cjs.standardSchemaToJSONSchema(compat);
5823
5823
  return jsonSchema(transformedJsonSchema, {
5824
5824
  validate: (value) => {
5825
5825
  const transformed = this.#traverse(value, transformedJsonSchema);
@@ -5829,7 +5829,7 @@ var DeepSeekSchemaCompatLayer = class extends SchemaCompatLayer3 {
5829
5829
  });
5830
5830
  }
5831
5831
  processToCompatSchema(schema) {
5832
- const originalStandardSchema = chunkAR3LTBIK_cjs.toStandardSchema(schema);
5832
+ const originalStandardSchema = chunkQ6XZFGLX_cjs.toStandardSchema(schema);
5833
5833
  return {
5834
5834
  "~standard": {
5835
5835
  version: 1,
@@ -6014,7 +6014,7 @@ var GoogleSchemaCompatLayer = class extends SchemaCompatLayer3 {
6014
6014
  // }
6015
6015
  processToAISDKSchema(zodSchema2) {
6016
6016
  const compat = this.processToCompatSchema(zodSchema2);
6017
- const transformedJsonSchema = chunkAR3LTBIK_cjs.standardSchemaToJSONSchema(compat);
6017
+ const transformedJsonSchema = chunkQ6XZFGLX_cjs.standardSchemaToJSONSchema(compat);
6018
6018
  const fixedJsonSchema = fixNullableUnionTypes(transformedJsonSchema);
6019
6019
  return jsonSchema(fixedJsonSchema, {
6020
6020
  validate: (value) => {
@@ -6025,7 +6025,7 @@ var GoogleSchemaCompatLayer = class extends SchemaCompatLayer3 {
6025
6025
  });
6026
6026
  }
6027
6027
  processToCompatSchema(schema) {
6028
- const originalStandardSchema = chunkAR3LTBIK_cjs.toStandardSchema(schema);
6028
+ const originalStandardSchema = chunkQ6XZFGLX_cjs.toStandardSchema(schema);
6029
6029
  return {
6030
6030
  "~standard": {
6031
6031
  version: 1,
@@ -6133,7 +6133,7 @@ var MetaSchemaCompatLayer = class extends SchemaCompatLayer3 {
6133
6133
  }
6134
6134
  processToAISDKSchema(zodSchema2) {
6135
6135
  const compat = this.processToCompatSchema(zodSchema2);
6136
- const transformedJsonSchema = chunkAR3LTBIK_cjs.standardSchemaToJSONSchema(compat);
6136
+ const transformedJsonSchema = chunkQ6XZFGLX_cjs.standardSchemaToJSONSchema(compat);
6137
6137
  return jsonSchema(transformedJsonSchema, {
6138
6138
  validate: (value) => {
6139
6139
  const transformed = this.#traverse(value, transformedJsonSchema);
@@ -6143,7 +6143,7 @@ var MetaSchemaCompatLayer = class extends SchemaCompatLayer3 {
6143
6143
  });
6144
6144
  }
6145
6145
  processToCompatSchema(schema) {
6146
- const originalStandardSchema = chunkAR3LTBIK_cjs.toStandardSchema(schema);
6146
+ const originalStandardSchema = chunkQ6XZFGLX_cjs.toStandardSchema(schema);
6147
6147
  return {
6148
6148
  "~standard": {
6149
6149
  version: 1,
@@ -6222,27 +6222,27 @@ var MetaSchemaCompatLayer = class extends SchemaCompatLayer3 {
6222
6222
 
6223
6223
  Object.defineProperty(exports, "JSON_SCHEMA_LIBRARY_OPTIONS", {
6224
6224
  enumerable: true,
6225
- get: function () { return chunkAR3LTBIK_cjs.JSON_SCHEMA_LIBRARY_OPTIONS; }
6225
+ get: function () { return chunkQ6XZFGLX_cjs.JSON_SCHEMA_LIBRARY_OPTIONS; }
6226
6226
  });
6227
6227
  Object.defineProperty(exports, "isStandardJSONSchema", {
6228
6228
  enumerable: true,
6229
- get: function () { return chunkAR3LTBIK_cjs.isStandardJSONSchema; }
6229
+ get: function () { return chunkQ6XZFGLX_cjs.isStandardJSONSchema; }
6230
6230
  });
6231
6231
  Object.defineProperty(exports, "isStandardSchema", {
6232
6232
  enumerable: true,
6233
- get: function () { return chunkAR3LTBIK_cjs.isStandardSchema; }
6233
+ get: function () { return chunkQ6XZFGLX_cjs.isStandardSchema; }
6234
6234
  });
6235
6235
  Object.defineProperty(exports, "isStandardSchemaWithJSON", {
6236
6236
  enumerable: true,
6237
- get: function () { return chunkAR3LTBIK_cjs.isStandardSchemaWithJSON; }
6237
+ get: function () { return chunkQ6XZFGLX_cjs.isStandardSchemaWithJSON; }
6238
6238
  });
6239
6239
  Object.defineProperty(exports, "standardSchemaToJSONSchema", {
6240
6240
  enumerable: true,
6241
- get: function () { return chunkAR3LTBIK_cjs.standardSchemaToJSONSchema; }
6241
+ get: function () { return chunkQ6XZFGLX_cjs.standardSchemaToJSONSchema; }
6242
6242
  });
6243
6243
  Object.defineProperty(exports, "toStandardSchema", {
6244
6244
  enumerable: true,
6245
- get: function () { return chunkAR3LTBIK_cjs.toStandardSchema; }
6245
+ get: function () { return chunkQ6XZFGLX_cjs.toStandardSchema; }
6246
6246
  });
6247
6247
  Object.defineProperty(exports, "ensureAllPropertiesRequired", {
6248
6248
  enumerable: true,