ferrox-api 0.14.0

Shared route constants and wire DTOs for the Ferrox HTTP surface and its clients
Documentation
# ferrox-api

The wire contract between `ferrox-server` and its clients.

Route constants and serde DTOs shared by the server, Ferrox Studio (the
separate web app in `ui/`), the desktop shell that spawns the server,
and `ferrox chat`. A path or a payload shape gets exactly one
definition instead of one per end.

Contents:

- `routes`: every path the server serves, named once.
- `health`: the three-state `/health` handshake (`ready`, `detecting`,
  `unavailable`) with a machine reason code and a human sentence per
  capability.
- `lifecycle`: the `ferrox.server.ready` stdout line carrying the
  address the server ended up bound to and its pid, which is what makes
  `--port 0` usable by a supervising process.
- `usage`: token accounting plus llama.cpp-style timings, with prefill
  and decode kept separate.
- `request_id`: server-assigned ids, stated in the first streamed chunk.
- `progress`: a rolling-window transfer rate and ETA that reports
  nothing until it has something true to report.

Depends on serde and nothing else, so a CLI, a desktop shell and a
browser-targeted frontend all link it.