Dashboard › opencode › Distillation
3d5b842a-6ec7-41be-83db-e4ddc1d5af54["lore_tm_v1_jrGCijGF0Axo7jRwziIK29-dGrCrvviM60Lg4xPbS6Y","lore_tm_v1_kprBAvQOgxj7rhxJGPbSVh8Qq_S-pkFa6Evj2slslqc","lore_tm_v1_I4ry8oufsg7rC40bbdQRapBPlnxmxZoLK7yIHFvQ6yo"]
Date: Sep 16, 2026
packages/core/src/session/message-updater.ts to import message from ./recovery-id and handle "session.next.prompt.execution_requested" as a no-op in the in-memory message adapter."session.next.step.interrupted" message update marks the owned assistant message completed at event.data.timestamp, sets finish = "error", and copies event.data.error.SessionMessage.ToolStateError with { type: "unknown", message: "Tool execution interrupted" }; it preserves object-valued input, preserves structured and content only for previously running tools, uses {} for string input, and stamps each tool’s completion time."session.next.step.recovered" message update performs no mutation when event.data.phase === "continue"."Provider Step outcome unknown after server restart" for phase "unknown" and "Session execution interrupted by server restart" for other non-"continue" phases.SessionMessage.Synthetic message when no assistantMessageID exists; the synthetic message uses id: message(event.data.executionID), type: "synthetic", the recovery error text, the event’s sessionID, and time.created = event.data.timestamp.finish = "error", assigns the recovery error, and appends SessionMessage.AssistantText with ID recovery:${event.data.executionID} and the recovery error text."Tool execution outcome unknown after server restart"; object-valued input is retained, while structured and content survive only for tools that were running.packages/core/src/session/compaction.ts dependencies with optional beforeStream?: () => Effect.Effect<void> and invokes this hook before streaming begins.SessionExecutionClaim.Claim through packages/core/src/session/context-epoch.ts preparation, insertion, and advancement paths so context-epoch persistence is tied to the active execution claim.decode(value: unknown) => Schema.decodeUnknownOption(Prompt)(value) to the session-input implementation.LifecycleConflict handling, checks that loaded input rows belong to the requested sessionID, and uses deterministic prompt-execution event IDs of the form evt_prompt_execution_${input.id}.settleRecoveryWake(...), execution-pending checks, and recovery participation in queued-input and steer promotion queries.