# car-inference-types

Pure-serde conversation/message wire types for Common Agent Runtime inference —
`Message`, `ToolCall`, `ContentBlock`.

These define the multi-turn conversation wire form car-inference's protocol
handlers and local chat templates consume. They were extracted out of
`car-inference` so a **dependency-light** consumer can build and pattern-match
the real types without pulling the Candle/MLX inference stack:

- `car-inference` re-exports every type here
  (`pub use car_inference_types::{Message, ToolCall, ContentBlock}`), so its own
  callers are unchanged.
- `car-sync`'s transcript-resume projection (multi-device sync B2) builds
  `Vec<Message>` directly from folded conversation ops. Depending on this crate
  — instead of a hand-copied mirror — makes any change to `Message`'s shape a
  **compile error** at the resume site, not a runtime `from_value::<Message>`
  break in the daemon.

The crate is deliberately serde-only (zero Candle/MLX/tokenizer weight). Anything
that needs a model backend belongs in `car-inference`, not here.
