Dashboard › opencode › Distillation
1a90fa44-61bf-4868-8976-d9879454be72["lore_tm_v1_POPl8Po5YjImHU3OpC2qUtXf30SfR2ztUpjpE86d6Ds","lore_tm_v1_7ippLD5Wzq1gdWu2sWgcAwtypEyy5ShEeIP2RjPO-5I","lore_tm_v1_pyt6jtjHt3QTQDaXnkz_cg3q-KOuivXzpu9k_wsaVAA","lore_tm_v1_69vcprtqvu0RGBGYSDX7OUn3lM8szCXuIVgbrKJwWGw","lore_tm_v1_4cVuqmpy1pnefVKf6dpE6NI-iN2V5x0tLQAlf4wdUtY","lore_tm_v1_ueu9IW7VORqAm4vbJ6zMGIvGz6Z-aTA_4nR1pc8vRAo"]
Date: Sep 14, 2026
/home/byk/Code/opencode/specs/v2/todo.md reports Post-Hono cleanup after migration to the Effect HttpApi backend: delete compatibility shims, shrink Zod surfaces, and simplify test harnesses that previously compared Hono and HttpApi behavior./home/byk/Code/opencode/specs/v2/todo.md reports New Data Mode is mostly complete, with Dax working through modeling subagents, skill invocations, and shell commands./home/byk/Code/opencode/specs/v2/todo.md lists runner follow-ups: preserve eager structured local-tool settlement; revisit per-turn tool-call limits, output truncation, and operational backpressure; remove the public in-memory @opencode-ai/llm tool loop after replacing its remaining one-turn native-adapter use with a narrow typed dispatcher; batch streamed deltas and add context indexes; expose replayable Session event cursors over HTTP and the generated SDK; integrate BackgroundJob with V2 tool execution for background bash jobs and agent dispatch, durable status observation, completion delivery, and explicit cancellation/continuation; add durable or clustered interruption, retries, and stale-owner fencing only when those slices become concrete./home/byk/Code/opencode/specs/v2/todo.md says eager local execution is deliberately unbounded in the current local slice while SQLite publication remains serialized./home/byk/Code/opencode/specs/v2/todo.md defines deferred durable continuation recovery requirements: model promoted input and projected-history state; queued-input promotion and steering assignment; provider-attempt preparation versus provider-dispatch ambiguity; required post-tool continuation across process loss; explicit retry and abandon decisions for unknown outcomes; bounded automatic retry only when provider and tool idempotency make it safe; retry budget, backoff, visible recovery status, startup discovery, and future clustered ownership fencing. It warns not to infer that ambiguous provider work is safe to retry from an advisory wake and not to introduce an enclosing durable execution identity solely to group these facts./home/byk/Code/opencode/specs/v2/todo.md lists plugin API ideas: give plugins immer drafts so bad mutations can be discarded; provide a global opencode instance; expose APIs such as opencode.session.prompt() and opencode.tool.register({...})./home/byk/Code/opencode/specs/v2/todo.md calls for another config pass to simplify mistakes and automatically convert old configs to the new format; it also notes a basic auth system exists that can track any kind of auth, not only providers./home/byk/Code/opencode/packages/opencode/src/session/run-state.ts defines SessionRunState.Interface with assertNotBusy(sessionID), cancel(sessionID), ensureRunning(sessionID, onInterrupt, work), and startShell(sessionID, onInterrupt, work, ready?); runners are stored in a process-instance Map<SessionID, Runner.Runner<SessionV1.WithParts>>, removed on idle, and cancelled concurrently with concurrency: "unbounded" during finalization./home/byk/Code/opencode/packages/opencode/src/session/run-state.ts, cancel(sessionID) first invokes cancelBackgroundJobs(background, sessionID), then cancels the existing runner; if no runner exists, it sets SessionStatus to { type: "idle" }. startShell(...) maps RunnerBusy to Session.BusyError({ sessionID }).cancelBackgroundJobs() in /home/byk/Code/opencode/packages/opencode/src/session/run-state.ts repeatedly cancels every running background job transitively associated through the job ID, metadata.sessionId, or metadata.parentSessionId; cancellation batches use concurrency: "unbounded", and cancelled job IDs plus discovered child session IDs are added to traversal sets./home/byk/Code/opencode/CONTEXT.md specifies boundary ordering: newly promoted user input or settled tool results precede a combined Mid-Conversation System Message; changes from multiple Context Sources admitted at one boundary combine into one such message, whose exact rendered text is persisted atomically with the advanced Context Snapshot./home/byk/Code/opencode/CONTEXT.md specifies first-turn initialization: the latest complete Baseline System Context is rendered and its Context Snapshot initialized without a redundant Mid-Conversation System Message; unavailable initial context blocks the turn, and initial System Context preparation occurs before first durable input promotion so input remains pending and retryable./home/byk/Code/opencode/CONTEXT.md specifies Context Source composition: keys are stable and namespaced; duplicate keys fail composition; SystemContext.combine(...) preserves caller order; the System Context Registry evaluates producers concurrently but combines them in stable contribution-key order; each loader returns one coherent typed value; SystemContext.make(...) hides the value type; its codec compares and stores the value; pure renderers generate baseline, update, and removal text only when needed./home/byk/Code/opencode/CONTEXT.md defines operations: SystemContext.initialize(...) observes composed context once and returns a fresh Baseline System Context plus Context Snapshot; SystemContext.reconcile(...) observes once and returns exactly one of unchanged, updated, replacement ready, or replacement blocked; SystemContext.replace(...) renders a fresh generation after compaction or another baseline replacement and blocks while previously admitted context is unavailable./home/byk/Code/opencode/packages/llm/src/route/executor.ts defines request-executor constants BODY_LIMIT = 16_384, MAX_RETRIES = 2, BASE_DELAY_MS = 500, MAX_DELAY_MS = 10_000, and REDACTED = "<redacted>"; retry delay uses jitter bounds from BASE_DELAY_MS * 2 ** attempt * 0.8 through BASE_DELAY_MS * 2 ** attempt * 1.2, capped at MAX_DELAY_MS./home/byk/Code/opencode/packages/llm/src/route/executor.ts uses one sensitive-name source across headers, URL query keys, and request/response body fields: SENSITIVE_NAME serves as both a substring matcher and body-field alternation list, while SHORT_QUERY_NAME handles anchored short query keys such as key and sig to avoid substring false positives.