Dashboard › opencode › Distillation
745354f7-f355-483e-ba81-7f46e129adce["lore_tm_v1_5nPzf6lFWaLgk9x6D4p9EgIctXt5PUmpeXJP-M7hRFw","lore_tm_v1_FD0q3r9JAvHAZMqdsmzdMli5jjDI2gzrrYWkE0xTvuE","lore_tm_v1_OVSlL0CJEAvu3cs0QdyY7jbR6sK_5QrbUSoCXD_gUsY","lore_tm_v1_TMGBIZSImVZduNpgyjMaOp0dtG4N9Kf8YDKwYkMFzOA","lore_tm_v1_NIDp_5WsLtqAs6bViEVb70tNNap1oZPSluHvucsWMJw","lore_tm_v1_Jt7Ro7OJeRxGRnrxZ7Sd3IZ12AXS8PNGXVh5-apvSZo","lore_tm_v1_-IJ9GTfdev8KvCfUPK6NBgu8l-40QWvv7691xgaDpHA","lore_tm_v1_Al021vA4U3Ua_sbQqcnrwucfEJR-0lFd3oeAGx91dEU","lore_tm_v1_LRItqDahWeY1zE4jcNdcE5hVfimcA9Z1ehFH2xQVS9o","lore_tm_v1_olub9C52GYnfgFQYlwMemSYkJDmianY245w2zVaAtYM"]
Date: Sep 16, 2026
packages/sdk/js/src/v2/gen/types.gen.ts: session.next.prompt.admitted properties include optional requestExecution?: boolean; session.next.prompt.execution_requested requires timestamp, sessionID, and messageID; and session.next.step.recovered requires timestamp, sessionID, executionID, and phase: "ready" | "unknown" | "continue", with optional assistantMessageID?: string.packages/core/test/session-runner-recorded.test.ts: HTTP cassette session-runner/openai-chat-streams-text uses fixtures under fixtures/recordings, records when process.env.RECORD === "true", and otherwise replays; OpenAI Chat uses https://api.openai.com/v1, bearer OPENAI_API_KEY falling back to "fixture", maxTokens: 20, temperature: 0, and model gpt-4o-mini.SessionExecutionLocal.make() invokes sessionRunner.run({ ...claim, force, recoveryInputID }); the test graph includes Database.node, EventV2.node, SessionProjector.node, SessionStore.node, AgentV2.node, ToolRegistry.node, SessionRunnerModel.node, SystemContextRegistry.node, SkillGuidance.node, ReferenceGuidance.node, Config.node, Snapshot.node, SessionRunnerLLM.node, and SessionV2.node.ses_runner_recorded; project worktree and session directory are /project; the prompt is Say hello in one short sentence. with resume: false; then session.resume(sessionID) is called.agent: "build", finish: "stop", and text Hello!.packages/core/test/session-runner-recorded.test.ts: 1. session.next.prompt.admitted.1, 2. session.next.prompted.1, 3. session.next.step.started.1, 4. session.next.text.started.1, 5. session.next.text.ended.1, 6. session.next.step.ended.2.packages/core/test/session-runner-tool-events.test.ts fixture details: session ID ses_tool_event_test; tool call ID call-image, tool name read, input path pixel.png; tool output includes text Image read successfully and an image/png file named pixel.png with a data:image/png;base64,... URI; structured output is { type: "media", mime: "image/png" }.session.next.tool.success.1, serializes the media base64 exactly once, omits the compatibility result property, and preserves reconstructed content containing the text and image file.LLMEvent.toolCall and LLMEvent.toolResult have providerExecuted: true, the published session.next.tool.success.1 retains its result property.{ type: "error", value: "Cannot read binary file" } emits no session.next.tool.success.1 event and does emit session.next.tool.failed.1.SessionEvent.Tool.Success.data containing result still decodes, and the decoded result matches { type: "content" }.LLMEvent.stepStart({ index: 0 }) followed by LLMEvent.stepFinish({ index: 0, reason: "stop" }) does not publish session.next.step.ended.2; instead, publisher.stepSettlement() records { finish: "stop" }.packages/schema/test/event-manifest.test.ts public event counts: EventManifest.ServerDefinitions.length is 61, EventManifest.Definitions.length is 91, EventManifest.Latest.size is 91, and EventManifest.Durable.size is 38.SessionV1.Event.Definitions order: 1. Created, 2. Updated, 3. Deleted, 4. MessageUpdated, 5. MessageRemoved, 6. PartUpdated, 7. PartRemoved, 8. PartDelta, 9. Diff, 10. Error.Session.Event === SessionEvent; Session.Event.Definitions === SessionEvent.Definitions; Workspace.Event === WorkspaceEvent; Workspace.Event.Definitions === WorkspaceEvent.Definitions; latest session.next.step.ended maps to SessionEvent.Step.Ended; latest todo.updated maps to SessionTodo.Event.Updated; and latest project.updated maps to Project.Event.Updated.Project.Event.Definitions contains only Project.Event.Updated; FileSystem.Event.Definitions contains only FileSystem.Event.Edited; Integration.Event.Definitions contains Integration.Event.Updated then Integration.Event.ConnectionUpdated; Permission.Event.Definitions contains Permission.Event.Asked then Permission.Event.Replied; Reference.Event.Definitions contains only Reference.Event.Updated; IdeEvent.Definitions contains only IdeEvent.Installed; and EventManifest.Latest excludes ide.installed.EventManifest.Definitions.slice(46, 49) is [SessionV1.Event.PartDelta, SessionV1.Event.Diff, SessionV1.Event.Error]; durable manifest excludes session.next.step.ended.1; session.next.step.ended.2 maps to SessionEvent.Step.Ended; and session.next.prompt.execution_requested.1 maps to SessionEvent.PromptExecutionRequested.packages/sdk/openapi.json: public event type session.next.step.recovered has event IDs matching ^evt_, session IDs matching ^ses, optional assistant-message IDs matching ^msg_, additionalProperties: false, and required properties timestamp, sessionID, executionID, and phase; phase enum values are exactly ready, unknown, and continue.session_execution: required columns are id, session_id, owner_id, phase, time_created, and expires_at; nullable columns are assistant_message_id and recovery_error; primary key session_execution_pk is on id; unique index session_execution_session_idx is on session_id; non-unique index session_execution_owner_idx is on owner_id; and session_id references session(id) with ON DELETE CASCADE.session_execution_phase_check: "phase" IN ('ready', 'safe', 'unknown', 'continue').session_recovery: required columns are session_id, execution_id, continuation_message_id, phase, wake_pending, wake_attempts, and time_created; nullable columns are assistant_message_id and recovery_error; wake_pending defaults to "true" and wake_attempts defaults to "0"; primary key session_recovery_pk is on execution_id.session_recovery foreign keys: session_id β session.id, assistant_message_id β session_message.id, and continuation_message_id β session_input.id, all with ON DELETE CASCADE.session_recovery_continuation_message_idx on continuation_message_id; non-unique session_recovery_wake_pending_error_attempts_created_execution_idx ordered across wake_pending, recovery_error, wake_attempts, time_created, and execution_id.session_input_wake_pending_promoted_attempts_time_created_id_idx, ordered across wake_pending, promoted_seq, wake_attempts, time_created, and id.