mirror of
http://10.0.2.1:3031/sauer/claude-code.git
synced 2026-06-30 19:16:58 +10:00
24 lines
761 B
TypeScript
24 lines
761 B
TypeScript
|
|
/**
|
||
|
|
* Converts Zod v4 schemas to JSON Schema using native toJSONSchema.
|
||
|
|
*/
|
||
|
|
|
||
|
|
import { toJSONSchema, type ZodTypeAny } from 'zod/v4'
|
||
|
|
|
||
|
|
export type JsonSchema7Type = Record<string, unknown>
|
||
|
|
|
||
|
|
// toolToAPISchema() runs this for every tool on every API request (~60-250
|
||
|
|
// times/turn). Tool schemas are wrapped with lazySchema() which guarantees the
|
||
|
|
// same ZodTypeAny reference per session, so we can cache by identity.
|
||
|
|
const cache = new WeakMap<ZodTypeAny, JsonSchema7Type>()
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Converts a Zod v4 schema to JSON Schema format.
|
||
|
|
*/
|
||
|
|
export function zodToJsonSchema(schema: ZodTypeAny): JsonSchema7Type {
|
||
|
|
const hit = cache.get(schema)
|
||
|
|
if (hit) return hit
|
||
|
|
const result = toJSONSchema(schema) as JsonSchema7Type
|
||
|
|
cache.set(schema, result)
|
||
|
|
return result
|
||
|
|
}
|