pub struct SubagentState {Show 17 fields
pub status: SubagentStatus,
pub partial_text: String,
pub tool_log: Vec<String>,
pub conversation_state: Vec<Value>,
pub finished_at: Option<Instant>,
pub cancel_requested: bool,
pub terminal: Option<TerminalDiagnostic>,
pub step: String,
pub tools: u32,
pub history: Option<Vec<Arc<Value>>>,
pub last_response_start: usize,
pub archive_meta: Option<SubagentArchiveMeta>,
pub archive_dir: Option<PathBuf>,
pub archive_path: Option<PathBuf>,
pub finalization_started: bool,
pub finalization_ready: bool,
pub archive_error: Option<String>,
}Expand description
All mutable state shared between the subagent thread and its handle. Collapsed behind a single RwLock so a status poll takes exactly one lock.
Fields§
§status: SubagentStatus§partial_text: String§tool_log: Vec<String>§conversation_state: Vec<Value>§finished_at: Option<Instant>Stamped once by finalize_subagent at thread exit.
cancel_requested: boolSet by cancel() before the shutdown signal is sent. Read by finalize_subagent to label the terminal status correctly.
terminal: Option<TerminalDiagnostic>§step: StringWhat the worker is doing right now: the same text as its latest
SubagentUpdate (“💭 thinking…”, “⚙ bash (tool #2)”, “$ cargo test”).
Those events ride the stream of the turn that started the worker; a
background worker outlives that turn, so clients read its progress
from here (via SubagentDisplayRow) once the turn has ended.
tools: u32Tool calls started so far (the “tool #N” in step).
history: Option<Vec<Arc<Value>>>The worker’s real message history, from the runtime’s last
SessionEvent::MessageHistory. Written to the resume archive by the
finalizer and then released, so finished handles stay small.
last_response_start: usizeByte offset in partial_text where the latest model response starts.
Completion previews show that response (the worker’s final word), not
the first words of the whole run.
archive_meta: Option<SubagentArchiveMeta>Identity needed to resume from the archive after the handle is reaped.
archive_dir: Option<PathBuf>Archive destination captured at launch, independent of later config changes.
archive_path: Option<PathBuf>Where the finalizer wrote this worker’s resume archive.
finalization_started: boolManaged workers remain publicly running until their recovery outcome is published.
finalization_ready: bool§archive_error: Option<String>Implementations§
Source§impl SubagentState
impl SubagentState
pub fn public_status(&self) -> SubagentStatus
pub fn new() -> SubagentState
Sourcepub fn note_progress(&mut self, step: &str, tools: u32)
pub fn note_progress(&mut self, step: &str, tools: u32)
Record the worker’s latest progress line and tool count.
Sourcepub fn last_response_text(&self) -> &str
pub fn last_response_text(&self) -> &str
Text of the latest model response (empty if none started yet).
Sourcepub fn safe_fail(&mut self, diagnostic: TerminalDiagnostic)
pub fn safe_fail(&mut self, diagnostic: TerminalDiagnostic)
Persist only typed, allowlisted failure data. Raw provider errors never enter state.
Trait Implementations§
Source§impl Debug for SubagentState
impl Debug for SubagentState
Source§impl Default for SubagentState
impl Default for SubagentState
Source§fn default() -> SubagentState
fn default() -> SubagentState
Auto Trait Implementations§
impl Freeze for SubagentState
impl RefUnwindSafe for SubagentState
impl Send for SubagentState
impl Sync for SubagentState
impl Unpin for SubagentState
impl UnsafeUnpin for SubagentState
impl UnwindSafe for SubagentState
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
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
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 more