chat_core/chat/state.rs
1pub struct NoModel;
2pub struct WithModel<P>(pub(crate) P);
3
4pub struct Unstructured;
5pub struct Structured<T>(pub(crate) std::marker::PhantomData<T>);
6pub struct Embedded;
7
8/// Type-state marker for a `Chat` that streams *both* outputs and inputs.
9/// Built via [`ChatBuilder::with_input_stream`]. Gates the
10/// `Chat<CP, InputStreamed>::stream(&mut messages)` method, which returns a
11/// [`ChatStream`](crate::chat::input::ChatStream): the output stream you
12/// iterate with `.next()`, carrying an input side you push to with
13/// `.send()`. The marker is intentionally not generic — input always rides
14/// the channel as `PartEnum`, and mapping any producer (microphone, camera)
15/// into `PartEnum` happens caller-side, before `send`.
16pub struct InputStreamed;