pub enum WaveState {
Idle,
Swell,
Streaming,
Tool,
Network {
sines: u8,
},
Stalled,
}Expand description
Discriminates the wave animation mode for the input separator row.
Derived once per render frame by crate::app::App::wave_state from live
agent state. The renderer receives a WaveState value — it never inspects
wall-clock time directly so snapshot tests remain deterministic.
§Variants
| Variant | When shown | Colour |
|---|---|---|
Idle | Agent is not busy — flat ▁ baseline | teal |
Swell | Busy, awaiting first token — high amplitude, slow roll | teal |
Streaming | Token stream active — medium amplitude, medium ω | teal |
Tool | Tool execution in progress — choppy short-λ wave | teal |
Network | External/background requests inflight — superposed sines | violet |
Stalled | No progress for >stall_threshold — flat + error tint | red |
Foreground agent work (Swell/Streaming/Tool) renders in the teal accent;
WaveState::Network — background/external requests run by the task supervisor
(memory enrichment, telemetry, MCP, egress, background shell) — renders in a distinct
violet gradient so concurrent background activity is visually separable from the
agent’s own turn.
Variants§
Idle
Agent idle — renders a static thin baseline.
Swell
Busy, waiting for the first token.
Streaming
Token stream active (fixed ω; tps modulation deferred to v2).
// TODO(#5096-tps): modulate omega by live tok/s once a per-turn rate metric exists
Tool
Tool execution in progress.
Network
External/background requests inflight (task-supervisor work: enrichment,
telemetry, MCP, egress, background shell). Rendered in violet to set it
apart from foreground agent work. sines is clamped to 1..=3.
Stalled
No progress for longer than the stall threshold.
Trait Implementations§
impl Copy for WaveState
impl Eq for WaveState
impl StructuralPartialEq for WaveState
Auto Trait Implementations§
impl Freeze for WaveState
impl RefUnwindSafe for WaveState
impl Send for WaveState
impl Sync for WaveState
impl Unpin for WaveState
impl UnsafeUnpin for WaveState
impl UnwindSafe for WaveState
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request