mirror of
https://github.com/hanzoai/dev.git
synced 2026-10-25 03:32:32 +00:00
Pydantic omits `required` entirely when every argument is optional, which is how FastMCP writes most of a Python server's tools. Our Object serializer read an absent list as "every property is required", so the model was told `agent` needs all fifteen of its arguments and `mpc` all seventeen — 17 of the Hanzo server's 95 tools, measured by running their live schemas through the converter. JSON Schema reads an absent list as requiring nothing, so write that list where a server omits one. While in the same resolver: measure a scalar `type` against the same six types the union path already measures against, rather than against `!= "null"`. The list is named once and read by both, so they cannot disagree about what we can hold, and a type outside it degrades to an accept-all string instead of failing the whole tool it sits in.
codex-core
This crate implements the business logic for Codex. It is designed to be used by the various Codex UIs written in Rust.
See also: Slash Commands for a complete list of interactive commands available in the TUI.
Dependencies
Note that codex-core makes some assumptions about certain helper utilities being available in the environment. Currently, this
macOS
Expects /usr/bin/sandbox-exec to be present.
Linux
Expects the binary containing codex-core to run the equivalent of codex debug landlock when arg0 is codex-linux-sandbox. See the codex-arg0 crate for details.
All Platforms
Expects the binary containing codex-core to simulate the virtual apply_patch CLI when arg1 is --codex-run-as-apply-patch. See the codex-arg0 crate for details.