- Errors: single enum mirroring the Python SDK's exception hierarchy
(CliNotFound, CliConnection, Process, JsonDecode, MessageParse). Each
Python class becomes a variant; the Process variant carries exit code +
optional captured stderr.
- Options: ClaudeAgentOptions as a plain struct with a builder. Covers the
full subprocess-arg surface (system_prompt with String / PresetAppend /
File forms, tools / allowed / disallowed, permission_mode, model and
fallback, cwd / cli_path / settings, env, extra_args, effort, output_format,
mcp_servers, fork_session, include_partial_messages, etc.). Deferred
fields documented inline.
- Messages: ContentBlock enum (Text / Thinking / ToolUse / ToolResult /
ServerToolUse / ServerToolResult / Unknown) with serde tag dispatch and
an Unknown fallthrough for forward compatibility. Top-level Message enum
uses a hand-written Deserialize that dispatches on the "type" tag so
unrecognised top-level frames land in Message::Unknown with the raw JSON
preserved (matches the Python SDK's "skip unknown" behaviour, but lets
Rust callers introspect).
Unit tests cover roundtrip for the common shapes (assistant text +
thinking + tool_use, user with both string and structured content, result,
system, unknown top-level).