1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
//! The wire contract between `ferrox-server` and everything that talks
//! to it: the web UI served at `/`, the desktop shell that spawns the
//! server as a child process, `ferrox chat`, and any third-party client.
//!
//! Why a crate instead of literals at both ends: the UI is deliberately
//! "just another API client" (see `docs/plans/ferrox-ui.md`) -- it calls
//! the same public endpoints an IDE would, so the public contract cannot
//! rot without the UI breaking first. That only holds if there is
//! exactly one definition of each path and each payload shape. A
//! hand-copied `"/v1/chat/completions"` in a frontend is a contract that
//! drifts silently; a `pub const` that both sides import is one that
//! cannot.
//!
//! Scope rule: this crate owns *ferrox-specific* additions and control
//! surfaces (health/capabilities, the process-ready handshake, usage
//! timings, task progress). The OpenAI-compatible request/response
//! bodies stay in `ferrox-server` where they are validated -- mirroring
//! someone else's schema here would create a second place for it to be
//! wrong.
//!
//! Deliberately dependency-light (serde only): a desktop shell, a CLI
//! and a WASM frontend may all link it.
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use next_request_id;
pub use Usage;