Run events
The machine-readable record of one b10x-loom run, written as one JSON object per line on standard output when the operator asks for it. Every line carries the stream's schema version. The records project what the run already does: the route it took, each model turn, each tool call a model made, the usage a provider reported, each agent session metaharness ran for it, named by its trace-ir/1 digest and summarized, the approvals the run stopped for, and exactly one terminal record, last, with the stop reason and the process exit status. A record adds no authority and is not evidence.
intake.events is one of intake's bounded contexts. All domains.
Types
ApprovalEvent
intake.events.ApprovalEvent is a record of one field:
actions—List<String>
RouteEvent
intake.events.RouteEvent is a record of two fields:
protocol—Stringaccepted—Boolean
RunEvent
intake.events.RunEvent is one of seven shapes, told apart by a kind field — tagged, so a decoder never has to guess which branch it is reading:
Approval—intake.events.ApprovalEventRoute—intake.events.RouteEventSession—intake.events.SessionEventTerminal—intake.events.TerminalEventToolCall—intake.events.ToolCallEventTurn—intake.events.TurnEventUsage—intake.events.UsageEvent
RunEventLine
intake.events.RunEventLine is a record of two fields:
schema_version—intake.events.SchemaVersionevent—intake.events.RunEvent
SchemaVersion
intake.events.SchemaVersion is one of V1.
SessionEvent
intake.events.SessionEvent is a record of 21 fields:
transcript_digest—Optional<String>, which may be absentsource—Optional<String>, which may be absentadapter—Optional<String>, which may be absentmodel—Optional<String>, which may be absentmodels—Optional<List<intake.events.SessionModel>>, which may be absentturns—Optional<Integer>, which may be absenttokens_basis—Optional<String>, which may be absentinput_tokens—Optional<Integer>, which may be absentoutput_tokens—Optional<Integer>, which may be absentcache_read_input_tokens—Optional<Integer>, which may be absentcache_creation_input_tokens—Optional<Integer>, which may be absentcost_usd—Optional<Decimal>, which may be absentduration_ms—Optional<Integer>, which may be absentduration_api_ms—Optional<Integer>, which may be absentfirst_timestamp_ms—Optional<Integer>, which may be absentlast_timestamp_ms—Optional<Integer>, which may be absentis_error—Optional<Boolean>, which may be absentstop_reason—Optional<String>, which may be absenttool_calls—Optional<List<intake.events.SessionToolCall>>, which may be absentunk—Optional<Integer>, which may be absentprojection_error—Optional<String>, which may be absent
SessionModel
intake.events.SessionModel is a record of six fields:
name—Stringinput_tokens—Optional<Integer>, which may be absentoutput_tokens—Optional<Integer>, which may be absentcache_read_input_tokens—Optional<Integer>, which may be absentcache_creation_input_tokens—Optional<Integer>, which may be absentcost_usd—Optional<Decimal>, which may be absent
SessionToolCall
intake.events.SessionToolCall is a record of four fields:
call_id—Optional<String>, which may be absentname—Optional<String>, which may be absentanswered—Booleanerror—Optional<Boolean>, which may be absent
TerminalEvent
intake.events.TerminalEvent is a record of six fields:
stop_reason—Optional<intake.routing.StopReason>, which may be absentexit_status—Integerprotocol—Optional<String>, which may be absentsteps—Optional<Integer>, which may be absenterror—Optional<String>, which may be absentunperformed_actions—Optional<List<String>>, which may be absent
ToolCallEvent
intake.events.ToolCallEvent is a record of four fields:
turn—Integercall_id—Stringname—Stringarguments—String
TurnEvent
intake.events.TurnEvent is a record of four fields:
turn—Integerphase—intake.context.RequestPhasemodel—Stringturn_stop—String
UsageEvent
intake.events.UsageEvent is a record of eight fields:
turn—Integermodel—Stringinput_tokens—Optional<Integer>, which may be absentoutput_tokens—Optional<Integer>, which may be absentcached_input_tokens—Optional<Integer>, which may be absentcache_creation_input_tokens—Optional<Integer>, which may be absentreasoning_output_tokens—Optional<Integer>, which may be absentfinal_usage—Boolean
One of the types above is reached by nothing else in this system: intake.events.RunEventLine. No entity, view, command, event, error or crossing names it, so it is either vocabulary something outside this specification uses or a leftover — and only a person can tell which.
Generated from intake v1 · model digest 91e7b24c1442a41a622f4feaa84db250d7769d7784122bae93f2e0cda0c64c8e · contract digest slice-sha256/2:a708dcb37dfd6f01f017f11b3480c7819b1e1bc01597f82bd9d4370d2fc438df. Do not edit this file; change the specification and regenerate it with task docs-generate.