pub struct DockNodeView {
pub node_id: String,
pub tool_name: String,
pub status: String,
pub age_ms: i64,
pub stuck: bool,
pub run_in_background: Option<bool>,
}Fields§
§node_id: String§tool_name: String§status: String§age_ms: i64§stuck: booltrue when status == "running", past DOCK_STUCK_THRESHOLD_MS,
AND the block’s own ProcessBroker lifecycle is not Running —
i.e. nothing srv-side is actively backing this block’s turn at
all. Coarse: this is block-level, not node-level, liveness (a
block mid-turn on a LATER tool call would still read Running and
suppress the flag for an earlier stuck node in the same block) —
see spec §3.1’s own framing of this as “the same signal a human
would manually cross-reference today, automated,” not a perfect
per-node liveness oracle.
Does NOT cover a backgrounded call stuck in the actual dock UI
(issue #2518): status here is the RAW ToolNode status, which is
terminal (“success”) for an accepted background launch within ~a
second — this field can never go true for that case no matter how
long the real dock row has been showing running, because the
server has no visibility into whether a <task-notification> ever
arrived (that reclassification is entirely client-side, in
tool-adapter.ts). See run_in_background below: a true there
combined with a long age_ms is worth checking by hand even when
stuck reads false.
run_in_background: Option<bool>params.run_in_background === true on the pushing client’s own
ToolNode, if it’s a Bash call and the renderer reported it.
None for every non-Bash tool and for older clients that predate
this field. See stuck’s doc comment above for why this exists.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for DockNodeView
impl RefUnwindSafe for DockNodeView
impl Send for DockNodeView
impl Sync for DockNodeView
impl Unpin for DockNodeView
impl UnsafeUnpin for DockNodeView
impl UnwindSafe for DockNodeView
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