pub struct AgentWire {Show 15 fields
pub slot: SessionSlot,
pub label: String,
pub lifecycle: SessionLifecycleState,
pub heal_attempt: Option<u32>,
pub heal_attempts: Option<u32>,
pub has_background_work: bool,
pub pending: Option<PendingInteractionKind>,
pub pending_depth: usize,
pub pending_seq: u64,
pub last_activity: Option<SystemTime>,
pub reason: Option<String>,
pub failed_turn: Option<SystemTime>,
pub died: bool,
pub tree: Option<String>,
pub work: Option<WorkState>,
}Expand description
One seat’s row: the surface’s own AgentRow, plus the read that is per
SEAT rather than per project.
A home row is a seat, and its where cell is that seat’s own working tree.
ProjectWire::work cannot answer it - that read is the project’s own path
from the lead’s seat - so a worker row drew the project’s branch, and on a
fleet with workers in worktrees that is eight rows reading main.
The fields are spelled out rather than the row being carried whole, so a
field added to AgentRow has to be carried here deliberately rather than
reaching a client by accident.
Fields§
§slot: SessionSlot§label: String§lifecycle: SessionLifecycleState§heal_attempt: Option<u32>Which heal attempt is next while the seat is Restarting; None
for every other lifecycle.
heal_attempts: Option<u32>How many restarts a heal may make, so the row can say “1 of 3”.
has_background_work: bool§pending: Option<PendingInteractionKind>§pending_depth: usize§pending_seq: u64The ask’s identity: how many asks have ever arrived for the seat. A client announces a new ask by this number, so a re-read is not news and an ask replacing another is.
last_activity: Option<SystemTime>§reason: Option<String>§failed_turn: Option<SystemTime>When the seat’s newest turn ended in failure, filtered by what has
been shown: None once the seat has been shown since the failure,
or while it is being shown now.
died: boolWhether a session on the seat ended and no reader has been shown it since: the row’s failure is the durable trace of a crash nobody watched.
tree: Option<String>The seat’s own tree as a NAME, home-shortened, when the worker runs
somewhere other than its project’s directory: the fact the row’s
where cell says. None for a seat in its project’s own tree.
work: Option<WorkState>The same tree’s STATE - branch, changed count, gate - None for a
seat forge holds no directory for.
Read through the same shared cache the project rows use, so a lead’s tree is one read drawn twice rather than two reads.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for AgentWire
impl<'de> Deserialize<'de> for AgentWire
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for AgentWire
impl RefUnwindSafe for AgentWire
impl Send for AgentWire
impl Sync for AgentWire
impl Unpin for AgentWire
impl UnsafeUnpin for AgentWire
impl UnwindSafe for AgentWire
Blanket Implementations§
§impl<T> AnySync for T
impl<T> AnySync for T
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
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
impl<S, T> Duplex<S> for Twhere
T: FromSample<S> + ToSample<S>,
§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
§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