pub struct PeerInput {
pub header: InputHeader,
pub directed_interaction_id: Option<InteractionId>,
pub convention: Option<PeerConvention>,
pub content: ContentInput,
pub payload: Option<Value>,
pub handling_mode: Option<HandlingMode>,
pub sender_taint: Option<SenderContentTaint>,
pub objective_id: Option<ObjectiveId>,
pub system_prompts: Vec<String>,
pub injected_context: Vec<ContentInput>,
}Expand description
Peer-originated input from comms.
Fields§
§header: InputHeader§directed_interaction_id: Option<InteractionId>Exact per-input interaction identity for a host-residency-fenced supervisor-bridge delivery. Ordinary peer traffic and peer-only legacy bridge deliveries leave this absent.
This persisted field is capability-adjacent data, not authority. The runtime validates its independently carried input, correlation, idempotency, durability, and peer-shape facts before admission and mints terminal-publication metadata from the validated value.
convention: Option<PeerConvention>The peer convention (message, request, response).
content: ContentInputThe peer content — the single typed owner of this input’s content fact
(plain text or multimodal blocks). Message-style peer traffic uses this
directly. Request/response prompt projection is runtime-owned and must
be reconstructed from convention + payload + source rather than
helper-rendered prose. The text projection is derived at read time via
ContentInput::text_content; it is never stored separately.
payload: Option<Value>Structured peer payload, when one exists.
For Request, this is the request params. For Response*, this is the
response result payload. Message traffic leaves this unset.
handling_mode: Option<HandlingMode>Optional handling-mode override for actionable peer inputs.
When present on Message/Request/no-convention, overrides kind-based
policy defaults. Forbidden on ResponseProgress; ResponseTerminal may
carry a typed override for requester reaction urgency (enforced by
[validate_peer_handling_mode]).
sender_taint: Option<SenderContentTaint>Sender-declared content taint carried inside the signed comms
envelope, when the sender made a declaration. None means “no
declaration” — a real third state that must never be coalesced into
meerkat_core::comms::SenderContentTaint::Clean. Content-adjacent
payload only: it makes no admission or routing decision. Additive on
durable input persistence (absent on older persisted inputs).
objective_id: Option<ObjectiveId>§system_prompts: Vec<String>Ordinary System messages authored for this exact peer-delivered turn.
This is per-turn transcript content, not immutable session configuration. The runtime preserves exact bytes, duplicates, and admission order when merging a batch.
injected_context: Vec<ContentInput>Host-attached injected context carried by supervisor-authored work
deliveries (remote mob members over the supervisor bridge). Each entry
lowers into a separate
ConversationAppendRole::InjectedContext transcript append placed
immediately BEFORE this input’s peer append, in order. Forbidden on
steer-mode deliveries (the steer realization path carries no
transcript appends — enforced by
crate::peer_handling_mode::validate_peer_handling_mode). Additive
on durable input persistence (absent on older persisted inputs).