asdf
Squash the current repository state back into one baseline commit while preserving the README reframing and repository contents. Constraint: User explicitly requested a single squashed commit with subject "asdf" Confidence: high Scope-risk: broad Reversibility: clean Directive: This commit intentionally rewrites published history; coordinate before future force-pushes Tested: git status clean; local history rewritten to one commit; force-pushed main to origin and instructkr Not-tested: Fresh clone verification after push
This commit is contained in:
commit
d2542c9a62
23
src/utils/zodToJsonSchema.ts
Normal file
23
src/utils/zodToJsonSchema.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
/**
|
||||
* 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
|
||||
}
|
||||
Reference in New Issue
Block a user