pub struct Call {Show 14 fields
pub tool: String,
pub subject: Option<String>,
pub arguments: Option<Output>,
pub outcome: Outcome,
pub at: Seq,
pub output: Option<Output>,
pub called: TimeMs,
pub answered: Option<TimeMs>,
pub timing: Timing,
pub effect: Option<Effect>,
pub render: Option<RenderIntent>,
pub exit_code: Option<i64>,
pub took_us: Option<u64>,
pub landing: Option<Landing>,
}Expand description
One tool call inside a turn.
Fields§
§tool: StringThe tool’s own name, as the Ledger records it.
subject: Option<String>What it acted on, when the arguments name one thing. A display reading rather than a field: the arguments are free JSON and this picks the one a person recognises the call by.
arguments: Option<Output>What it was called with, bounded exactly the way Output is and
cut off at the same limit.
A person judging a call needs what went in, not only what came
back: “the tool failed” and “the tool was asked for the wrong
path” are read from different halves of the same row. subject
stays one display reading of these rather than a replacement for
them. None when the recorded call carried no arguments this
build can read as text; the whole of them is in the Ledger at
at, which is where the cut lines went too.
outcome: Outcome§at: SeqWhere in the Ledger the bytes are. The row shows a shape; this is how somebody reads the rest.
output: Option<Output>What it said, bounded. None when the call has not answered, or
when the result carried nothing this build can read as text.
called: TimeMsWhen the Ledger wrote the call, read from that record the way
Turn::t is, so a replayed session keeps its original times.
answered: Option<TimeMs>When the Ledger wrote the result paired with this call. None
exactly when outcome is Outcome::Waiting: the two are set by
one pairing, and an answer outside the window is not guessed.
timing: TimingWhether answered - called is how long the call took. One value
for both times: two records a build writes are both measured or
both not, and the one exception - an answer the city supplied
after a restart - makes the span unmeasured either way.
effect: Option<Effect>What boundary the tool was registered as crossing when it was
called, as its tool_called line recorded it. None for a tool
the bench did not know, and for a line written before the key
existed.
render: Option<RenderIntent>How the tool was registered to be drawn, from the same line: a
terminal, a diff, or the generic row. None in the same cases;
a page draws such a call as generic. A diff’s locations are the
registration’s and empty today - the file is Call::subject.
exit_code: Option<i64>The code the command of an exec call ended with, as its paired
result recorded it. None for every other tool, for a command a
signal stopped or the city never waited on - which have no code -
and for a call not yet answered: no code is drawn rather than an
invented one.
took_us: Option<u64>Whole microseconds the call took, as its paired tool_result.took_us
recorded it (kernel D20). None for a call not yet answered and for
a line written before the key existed: a page then shows
answered - called in milliseconds (crates/wire/spec/Reading.lean D28).
landing: Option<Landing>Where the letter a send call sent landed, paired by SignalId
from the signal_landed its delivery wrote under the sending run
(crates/wire/spec/Reading.lean D42, kernel D38). None for every
other tool, for a call whose letter is not yet delivered, and for
a Ledger written before the line existed: a page then draws what
the tool itself answered.