pub struct Block {
pub index: u64,
pub prompt: String,
pub command: String,
pub output: String,
pub exit_code: Option<i32>,
pub started_at_unix_ms: u64,
pub ended_at_unix_ms: Option<u64>,
pub cwd: Option<String>,
pub yurai: Yurai,
}Expand description
Re-export the wire shape so callers don’t have to choose between tear-core and tear-types — they’re the same type.
Fields§
§index: u64§prompt: String§command: String§output: String§exit_code: Option<i32>§started_at_unix_ms: u64§ended_at_unix_ms: Option<u64>§cwd: Option<String>Working directory at prompt start, captured from the
shell’s OSC 7 file://<host><path> notification.
None when the shell hasn’t emitted OSC 7 (older
configurations or pure /bin/sh).
yurai: YuraiWHO ran this block — the provenance of the pane that produced it, stamped at prompt start.
Not Option: every block answers the question, and
Yurai::Unknown IS an answer — the honest one for a
pane no attested connection minted, or for a record
written before this field existed. Making it optional
would let a consumer skip the question entirely, which
is the state this field exists to remove.
This is the field a block history is worth having.
Without it an agent-run rm -rf and an operator-run one
are the same row, so “who ran this” is answerable only
by correlating logs — a reconstruction, not a record.
With it, attribution is carried by the artifact itself.
Tier-honest: this records a CLAIM at the tier it was
made. Yurai::Automation means a connection declared
itself automation; it is not proof, and
Yurai’s own docs are the authority on that boundary.
Implementations§
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Block
impl<'de> Deserialize<'de> for Block
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<Block, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<Block, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
impl Eq for Block
Source§impl Serialize for Block
impl Serialize for Block
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for Block
Auto Trait Implementations§
impl Freeze for Block
impl RefUnwindSafe for Block
impl Send for Block
impl Sync for Block
impl Unpin for Block
impl UnsafeUnpin for Block
impl UnwindSafe for Block
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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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.