Skip to main content

Event

Enum Event 

Source
pub enum Event {
Show 27 variants RunStarted { feature: String, tasks: Vec<PlannedTask>, }, TaskStarted { feature: String, task: String, title: String, }, Stage { task: String, stage: Stage, state: StageState, detail: Option<String>, elapsed_ms: Option<u64>, tail: Vec<String>, }, Resumed { task: String, stage: Option<Stage>, last_call: Option<String>, }, ApprovalRequested { task: String, call: String, tool: String, what: String, class: String, object: String, }, ApprovalDecided { task: String, call: String, decision: String, scope: Option<String>, by: String, how: String, class: String, object: String, }, ToolCall { task: String, turn: u32, tool: String, target: String, decision: String, ok: Option<bool>, tail: Vec<String>, }, Usage { task: String, input_tokens: u64, output_tokens: u64, cache_read_tokens: u64, cache_write_tokens: u64, usd: Option<f64>, }, TaskFinished { task: String, outcome: String, message: String, run: Option<String>, input_tokens: u64, output_tokens: u64, cache_read_tokens: u64, cache_write_tokens: u64, usd: Option<f64>, regression: Option<Regression>, }, CollectionChecked { task: String, files: Vec<CollectionFile>, }, RegressionBisected { task: String, runs: u32, result: Option<String>, }, AgentStarted { task: String, agent: String, mode: String, decides_alone: bool, known: bool, }, AgentUnasked { task: String, calls: u32, }, AgentPlan { task: String, entries: Vec<PlanEntry>, }, Said { task: String, turn: u32, text: String, }, Reasoning { task: String, turn: u32, text: String, }, Notice { text: String, }, Bug { task: String, step: BugEvent, }, Oracle { step: OracleEvent, }, PlanningStopped { unit: Option<String>, kind: String, next_skill: Option<String>, }, LadderOffered { unit: String, task: String, signals: Vec<String>, }, UnitPromoted { unit: String, from_unit: String, requirement: String, task: String, requirement_sha256: String, conversation_sha256: Vec<String>, signals: Vec<String>, by: String, via: String, }, Project { step: ProjectEvent, }, AskStep { conversation: String, turn: u32, tool: String, target: String, read: Option<String>, refused: bool, }, AskText { conversation: String, turn: u32, delta: String, }, AskTurnEnded { tag: String, output: Box<Value>, }, AskDone { report: Box<AskReport>, },
}
Expand description

Something a run did.

Variants§

§

RunStarted

A feature run begins: its tasks, as the graph has them (editors show them as a plan).

Fields

§feature: String

Feature directory name.

§tasks: Vec<PlannedTask>

Every task, in document order.

§

TaskStarted

A task attempt run begins.

Fields

§feature: String

Feature directory name.

§task: String

Task ID.

§title: String

Task title.

§

Stage

A stage of the task’s pipeline began, ended or does not apply.

Fields

§task: String

Task ID.

§stage: Stage

Which stage.

§state: StageState

Where it is.

§detail: Option<String>

1/2 · sample 2/3 for an attempt, a short commit id, a reason.

§elapsed_ms: Option<u64>

How long it took, once it ended.

§tail: Vec<String>

The last lines of a failed check (at most five).

§

Resumed

A run picks up an attempt a killed process left behind.

Fields

§task: String

Task ID.

§stage: Option<Stage>

The stage it was in, when known.

§last_call: Option<String>

The last tool call, when known.

§

ApprovalRequested

A call waits for a person: notify them.

Fields

§task: String

Task ID.

§call: String

The model’s call id.

§tool: String

The tool.

§what: String

What waits, e.g. cargo add x (no control characters, ≤ 60 chars).

§class: String

The class of the object a decision covers: write, command, network or mcp (empty: none, the call is decided once).

§object: String

The object’s short form: the path, argv#<12 hex>, <tool>@<12 hex> — no argv beyond what what shows.

§

ApprovalDecided

A person decided a call inline.

Fields

§task: String

Task ID.

§call: String

The model’s call id.

§decision: String

approve or reject.

§scope: Option<String>

once, task or run, for an approval.

§by: String

Who decided.

§how: String

How that is known: asserted, connected (or expired).

§class: String

The object’s class, as for Event::ApprovalRequested.

§object: String

The object’s short form.

§

ToolCall

A tool call the model asked for, with the policy’s decision.

Fields

§task: String

Task ID.

§turn: u32

Model turn (1-based) within the attempt.

§tool: String

The tool.

§target: String

Its target: a path, a command, a pattern.

§decision: String

allow, deny, approval, unknown, stop.

§ok: Option<bool>

Whether an allowed call succeeded.

§tail: Vec<String>

The last lines of a failed command (at most five).

§

Usage

Tokens so far in the current attempt.

Fields

§task: String

Task ID.

§input_tokens: u64

Input tokens.

§output_tokens: u64

Output tokens.

§cache_read_tokens: u64

Input tokens read from the cache.

§cache_write_tokens: u64

Input tokens written to the cache.

§usd: Option<f64>

USD, when priced.

§

TaskFinished

The task run ended.

Fields

§task: String

Task ID.

§outcome: String

verified, regression_only, failed, blocked, …

§message: String

The run’s message.

§run: Option<String>

The attempt’s agentplane run, when one ran.

§input_tokens: u64

Input tokens, all attempts and the acceptance call.

§output_tokens: u64

Output tokens.

§cache_read_tokens: u64

Input tokens read from the cache.

§cache_write_tokens: u64

Input tokens written to the cache.

§usd: Option<f64>

USD, when priced.

§regression: Option<Regression>

A regression-only tick: why, worded.

§

CollectionChecked

The attempt’s changed test files were checked against what the run collected (collection.checked).

Fields

§task: String

Task ID.

§files: Vec<CollectionFile>

Each judged file: path, state, what decided it.

§

RegressionBisected

The bisection for an already-passing tick ended (regression.bisected).

Fields

§task: String

Task ID.

§runs: u32

Acceptance runs it took.

§result: Option<String>

The task that made the tests pass, before_feature, or null.

§

AgentStarted

An external agent makes the attempt: its name, and what its permission mode is (decides_alone: calls it makes without asking never reach speccoder, so an empty Needs You proves nothing).

Fields

§task: String

Task ID.

§agent: String

The agent’s name.

§mode: String

Its permission mode, in a sentence.

§decides_alone: bool

It is in a mode that decides some calls without asking.

§known: bool

A recording of its version says whether it asks (false: not known, and said so).

§

AgentUnasked

An external agent changed something without asking (its own settings let it): the count so far.

Fields

§task: String

Task ID.

§calls: u32

Calls it reported making without a request of speccoder’s.

§

AgentPlan

An external agent’s plan for its attempt, as it last sent it: its claim of what it will do, never evidence.

Fields

§task: String

Task ID.

§entries: Vec<PlanEntry>

The entries, in its order.

§

Said

What the model said in a turn, beside its tool calls: its account of what it is doing — a claim, never evidence. Control characters escaped; at most 2000 characters.

Fields

§task: String

Task ID.

§turn: u32

Model turn (1-based) within the attempt.

§text: String

The words.

§

Reasoning

The model’s summary of its reasoning in a turn, as the provider gave it ([model] reasoning_summary): its account of why — a claim, never evidence. Control characters escaped; at most 4000 characters.

Fields

§task: String

Task ID.

§turn: u32

Model turn (1-based) within the attempt.

§text: String

The summary.

§

Notice

Anything else worth a line (convergence rounds, notices).

Fields

§text: String

The line.

§

Bug

A bug’s step (bug.* on the event stream).

Fields

§task: String

The task (T003, bug:<slug>).

§step: BugEvent

What happened.

§

Oracle

The oracle at review (oracle.* on the event stream): stage names, counts and digests — never a test’s content, never held-out material.

Fields

§step: OracleEvent

What happened.

§

PlanningStopped

Plan through stopped (planning.stopped).

Fields

§unit: Option<String>

The unit, once it exists.

§kind: String

questions, review, failed, done.

§next_skill: Option<String>

The skill a continuation runs next.

§

LadderOffered

A quick change or bug fix that grew is offered as a spec of its own (ladder.offered): the signals that hold, by id.

Fields

§unit: String

Its unit.

§task: String

The task.

§signals: Vec<String>

S1…S4.

§

UnitPromoted

A unit was promoted from a quick change or bug fix (unit.promoted): ids and digests, never the words.

Fields

§unit: String

The new unit.

§from_unit: String

Where it came from.

§requirement: String

The requirement promoted.

§task: String

The task it came from.

§requirement_sha256: String

The requirement’s words’ digest.

§conversation_sha256: Vec<String>

The digests of the conversations carried.

§signals: Vec<String>

The signals that held.

§by: String

Who.

§via: String

Through what.

§

Project

A new project’s step, its creation or its undo (scaffold.*, project.*): step ids, argv, states, digests — never the idea, never the folder’s path.

Fields

§step: ProjectEvent

What happened.

§

AskStep

An Ask turn read something (ask.step).

Fields

§conversation: String

The conversation.

§turn: u32

The turn.

§tool: String

The tool.

§target: String

What it read, in one line.

§read: Option<String>

The read id the answer may cite, when it returned something.

§refused: bool

It failed or was refused.

§

AskText

An Ask turn’s answer as it is written (ask.text).

Fields

§conversation: String

The conversation.

§turn: u32

The turn.

§delta: String

The next words.

§

AskTurnEnded

Inside the Ask plane: a turn’s raw end, which ask::turn turns into Event::AskDone; never forwarded.

Fields

§tag: String

ask:<conversation>#<turn>.

§output: Box<Value>

The loop’s output.

§

AskDone

An Ask turn ended (ask.done).

Fields

§report: Box<AskReport>

The turn as shown.

Trait Implementations§

Source§

impl Clone for Event

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Event

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for Event

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for Event

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for Event

Auto Trait Implementations§

§

impl Freeze for Event

§

impl RefUnwindSafe for Event

§

impl Send for Event

§

impl Sync for Event

§

impl Unpin for Event

§

impl UnsafeUnpin for Event

§

impl UnwindSafe for Event

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> IntoMaybeUndefined<T> for T

Source§

fn into_maybe_undefined(self) -> MaybeUndefined<T>

Converts this value into a three-state builder argument.
Source§

impl<T> IntoOption<T> for T

Source§

fn into_option(self) -> Option<T>

Converts this value into an optional builder argument.
Source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

Source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more