48a78f278c
normalizeTools only ran toolWireSchema/zodToWireSchema/arkToWireSchema inside the if (doInjectIntent) branch, so any tool whose intentMode resolved to "omit" (function intent, or intent: "omit" like the builtin eval/resolve) had its live arktype/zod schema object left in parameters. The pruneDescriptions branch already wire-encoded unconditionally, so the two branches disagreed; first-party providers re-encoded with toolWireSchema themselves and never noticed, but any downstream consumer that serialized parameters as-is ended up with an invalid schema (arktype AST: object-valued required, domain instead of type, no properties). Hoist toolWireSchema(t) out of the inject-intent branch so it always runs and inject intent on top, mirroring the pruneDescriptions shape. Drop the now-redundant isZodSchema/isArkSchema/zodToWireSchema/ arkToWireSchema imports. Fixes #3074