pub(crate) struct TaskFeed {
pending: HashMap<String, Pending>,
owners: HashMap<String, String>,
}Expand description
Per-stream state: one per stdout reader. Holds only shell tasks that have
started and not yet ended, plus the owners of subagent Bash calls whose
task_started hasn’t arrived yet, so it stays small.
Fields§
§pending: HashMap<String, Pending>§owners: HashMap<String, String>Implementations§
Source§impl TaskFeed
impl TaskFeed
Sourcepub(crate) fn apply(
&mut self,
store: &Store,
broker: Option<&Broker>,
block_id: &str,
line: &Value,
now_ms: i64,
) -> bool
pub(crate) fn apply( &mut self, store: &Store, broker: Option<&Broker>, block_id: &str, line: &Value, now_ms: i64, ) -> bool
Apply one parsed stdout line. Returns true when the registry changed,
in which case background-task-updated has been published.
Sourcefn settle_vanished(
&mut self,
store: &Store,
block_id: &str,
still_live: Option<&[String]>,
) -> bool
fn settle_vanished( &mut self, store: &Store, block_id: &str, still_live: Option<&[String]>, ) -> bool
End every task that left the snapshot and got no end event since: the
CLI stopped tracking it without saying so (a subagent’s task, dropped
when the CLI started a new session segment, per the 2026-09-30 retro).
With still_live, a vanished task listed again is kept. The row ends
stopped, at the time it left the snapshot.
Sourcefn note_owner(&mut self, line: &Value)
fn note_owner(&mut self, line: &Value)
A subagent’s own stream lines carry parent_tool_use_id = the Agent
call that spawned it (also that subagent’s meta.json toolUseId).
Remember it for each Bash call such a line issues; the call’s
task_started, which follows in the same message, claims it.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for TaskFeed
impl RefUnwindSafe for TaskFeed
impl Send for TaskFeed
impl Sync for TaskFeed
impl Unpin for TaskFeed
impl UnsafeUnpin for TaskFeed
impl UnwindSafe for TaskFeed
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<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§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.§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.§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.§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.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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