Skip to main content

AgentMsg

Enum AgentMsg 

Source
pub enum AgentMsg {
Show 13 variants Ready, Pong { seq: u64, }, Event { event: String, fields: Value, }, Usage(Usage), Turn { outcome: Outcome, }, Result { outcome: Outcome, }, Failed { error: String, }, Gate { node: String, payload: Value, }, GateClosed { node: String, via: String, }, IntelHealth { all_down: bool, active: Option<IntelActive>, }, ToolRequest { id: u64, name: String, args: Value, }, BudgetRequest { id: u64, estimate: u64, }, TurnDone { turn: Box<TurnResult>, },
}

Variants§

§

Ready

Setup done (intel + scoped MCP connected); the child is about to loop. The supervisor’s crash-on-spawn fast-fail waits for this frame, so a child that dies during setup is detected without waiting for a deadline.

§

Pong

Answer to a ControlMsg::Ping.

Fields

§seq: u64
§

Event

A progress event (loop.step, tool.call, …). Arrival also resets the supervisor’s no-progress watchdog, so a child doing visible work is never reaped for silence. fields is opaque to the supervisor except for correlation.

Fields

§event: String
§fields: Value
§

Usage(Usage)

Incremental token/step usage, which the supervisor folds into the tree’s hierarchical accounting so a subtree cannot outspend the tree ceiling.

§

Turn

A warm session finished one turn (its reaction to one delivered event) and stays alive for the next. Carries that turn’s distilled outcome; unlike AgentMsg::Result it is not terminal, so the supervisor must not reap the child on seeing it. The supervisor applies the turn’s self-schedule / self-subscribe effects and may then Inject the next event.

Fields

§outcome: Outcome
§

Result

Terminal: the distilled result + final status. Sent exactly once.

Fields

§outcome: Outcome
§

Failed

Terminal: a fatal infrastructure failure (intel/mcp unreachable).

Fields

§error: String
§

Gate

A HUMAN GATE opened: a workflow human node suspended awaiting input. node is the workflow node id; payload is the resolved gate payload (what the human is being asked to look at). The supervisor records it (the served A2A task projects input-required, the gate resource serves the payload) and later fans the human’s reply DOWN as ControlMsg::Inject. Non-terminal; also progress for liveness.

Fields

§node: String
§payload: Value
§

GateClosed

The gate resolved (via = "reply" | "uri" | "timeout"): the supervisor clears the recorded gate and the A2A task returns to working. Non-terminal.

Fields

§node: String
§

IntelHealth

The child’s intelligence reachability, edge-triggered at the breaker / failover seam. Emitted ONLY on a transition: on entering all-endpoints-down (every configured endpoint’s breaker open, the failover sweep exhausted) and on recovering (any endpoint usable again). Edge-triggering keeps a wedged fleet from flooding the control channel. The supervisor has no LLM of its own and no live view of a child’s breaker state, so the child is the only party that can report this; the supervisor latches it into the intel_all_down process-global that the readiness probe, the agentd_intel_all_down gauge, and the agentd://intelligence / capacity bodies all read — one latched truth, eventually consistent (see crate::signals::set_intel_all_down). active is best-effort transport and index ONLY — never a URL or a credential, matching what the agentd://intelligence resource redacts.

Fields

§all_down: bool
§

ToolRequest

A turn worker / subagent asks the supervisor to execute an internal tool (memory, plan, subagent.run, sleep…). These round-trip rather than run in the child because the supervisor owns that state; letting a child mutate it directly would let concurrent children race each other. Answered by ControlMsg::ToolResult with the same id.

Fields

§id: u64
§name: String
§args: Value
§

BudgetRequest

Budget admission asked for before a model call, answered by ControlMsg::BudgetGrant. Asking first is what lets the supervisor shape spend across the whole tree instead of after the fact.

Fields

§id: u64
§estimate: u64
§

TurnDone

A Role::Turn worker finished its turn — terminal for that worker. Carries the transcript delta, the usage, and the outcome.

Fields

Trait Implementations§

Source§

impl Clone for AgentMsg

Source§

fn clone(&self) -> AgentMsg

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for AgentMsg

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for AgentMsg

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for AgentMsg

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more