Durable worker transcripts — cyberine transcript
A loop worker's events.jsonl is telemetry, not a transcript: each entry's detail is a
120-character slice of the prompt, so when a fleet worker fails there was previously no way to
see what it was actually told, what a tool returned, or where it went wrong. Every loop worker
(LoopAgentAdapter) now records its own durable, incremental transcript — the full sequence of
messages the model saw, redacted (src/core/redact.ts) and flushed to disk one round at a time
so a killed worker still leaves a readable partial record up to its last completed round.
cyberine transcript <runId> # single worker in the run — prints it directly
cyberine transcript <runId> <stepId>__<agentId> # pick one worker when a run has severalTranscripts live at .local/runs/<runId>/<stepId>__<agentId>.transcript.jsonl, one JSONL line
per recorded round ({ at, seq, messages }). Recording is unconditional for any loop worker
dispatched through WorkflowEngine (no env flag to enable it) — Task.transcriptSink, set by
WorkflowEngine.runWorker, is the wiring point; a task dispatched outside the engine
(Orchestrator.dispatch, a standalone script) simply has no sink and records nothing.
Known Limitations and Deferred Work (src/adapters/LoopAgentAdapter.ts's transcript flush,
src/store/RunStore.ts's appendTranscript). The log is a passive RECORD only — resuming a
worker's live message history FROM its transcript (making the log authoritative) is a
deliberately separate, larger decision, not implemented here. There is no retention/cleanup:
transcript files live exactly as long as their run directory does, with no independent sweep
of their own (mirrors .output tail files' existing lifecycle). A worker that hits its
historyCompressionBudget and compacts (see COMPACTION-SPILL, src/core/historyCompression.ts)
still records every message it ever SAW in the transcript, even messages later dropped from the
live in-memory history by compaction — the transcript is a append-only record of the
conversation as it happened, not a mirror of the adapter's current working context.
Repeat-tool nudge — advisory reminder when a worker repeats the exact same call
safetyRails.checkPreCallCaps (iteration + token caps) runs once PER DISPATCH; a worker grepping the same pattern forty times inside ONE dispatch is invisible to it, and the only thing that...
Capability-aware routing — cyberine route
Cyberine routes each task by marginal cost so it works standalone (a Claude Code / Codex replacement) on whatever you already pay for. Every worker carries a costModel and a priorityRank...