OMO 5.0.0-beta.52
This is the beta that makes assistant-response editing a real OmO capability, keeps child sessions from inheriting interactive question tools, and closes several compiled-runtime, memory, task, and doctor rough edges. The engine underneath is senpi 2026.9.10.
Native and shared sessions
Edit assistant responses instead of restarting the conversation. senpi now exposes edit_assistant_message over RPC and ctx.editAssistantMessage() through the extension API. The operation accepts an entry id, replacement text, optional expectedLeafId, summarization, and custom instructions. The leaf token is checked before mutation and before the unchanged fast path, so a stale client cannot rewrite a conversation that another client has already advanced. Results distinguish edited, unchanged, and cancelled outcomes, while failures carry typed codes for streaming, missing entries, wrong entry kind, empty text, and stale leaves. /tree editing branches at the selected assistant entry, preserves the original session file, and continues from the corrected response. Shared-host /tree edits now route to the host rather than a local shadow session.
Questions are now a complete built-in interaction surface. request_user_input is selected for OpenAI GPT models and ask_user_question for other models, with wait-or-continue behavior, partial answers, idle and hard timeouts, resume/reload recovery, and one-time orphaned-after-restart delivery. askUser.enabled and askUser.timeoutMinutes configure it, while --no-ask-user disables it for one run. RPC extension UI now carries question requests, progress, deadline refreshes, resolution broadcasts, and pending state; clients without the capability receive a sequential fallback. Goal continuation treats a question as a legal ending and asks through the tool when only a user decision can unblock the run.
Child sessions stay headless. OmO hides both question tools from in-process children, passes --no-ask-user to RPC children, and cancels question UI requests in headless auto-answer mode instead of allowing a detached child to hang.
Memory and task reliability
Memory failures explain the cause, not a code frame. Reflection child stderr is distilled to a bounded cause line before it reaches health notices, fingerprints, completion payoffs, summaries, or /facts; the full diagnostic remains in the durable child log and completion record. This keeps repeated failures grouped by their actual cause without exposing source excerpts in every notice.
Transient memory identities are reclaimed safely. One-shot children use a transient run root removed at shutdown, abandoned roots and repo-less historical identities are swept by age, and cross-identity guards use structural boundaries instead of enumerating the entire agents directory. omo doctor reports durable, transient, and transient-run identity counts.
Task and team errors render as errors. Lead team tools now use typed tool errors, preserve structured details, and render compact team rows with member status and bounded failure reasons. Windows task-record writes retry sharing violations and terminal persistence failures settle waiters with an explicit error record, releasing residency so dependent DAG nodes do not hang forever.
Runtime and diagnostics
Compiled children use the compiled engine itself. A single-file omo binary no longer scans PATH and accidentally launches a different senpi installation for memory or RPC children. --no-extensions is honored by the compiled launcher, so bare reflection children stay bare and RPC children do not load the plugin twice.
Doctor is actionable across editions. Native, OpenCode, and Codex doctor output now names the edition, installed version, latest channel version, and the exact update command. Windows fixture paths use the same native canonicalization as the child process.
Native parity and packaging fixes. The native edition includes the senpi Venice provider, and compiled webfetch binaries inline css-tree data needed by Bun's embedded filesystem. Task tools retain model variants across continuation seams, task-store contention waits within a bounded retry budget, and native installs include Context7 and grep_app MCP parity where configured.
Engine: senpi 2026.9.10
Assistant-response editing is available to every host. RPC and extension clients can edit an assistant entry with optimistic concurrency and typed errors, and shared-host /tree edits reach the canonical host session.
Venice AI is built in. VENICE_API_KEY is documented in help, the provider appears as Venice AI, and venice defaults to z-ai-glm-5-3 through the OpenAI-compatible privacy-first provider path.
Question handling is durable. RPC, extension UI, and app-server clients receive question lifecycle events, timeout outcomes, replay on resume, cancellation on turn end, and exactly-once delivery for unanswered questions. Settings and --no-ask-user control the feature.
More engine fixes ship underneath. Anthropic tool-search results are readable, native search 400s retry on the same model before fallback, gateway reference names are normalized safely, resumed oversized sessions reduce context deterministically before opening, Claude SDK executable discovery requires a verified spawnable file, Codex multi-account refresh avoids holding the auth lock across exchange, and Bun-compiled webfetch assets are self-contained. The full engine changelog is included in this release.
npm i -g omo-ai@betaAfter updating, restart running sessions: a process cannot adopt a new payload in place, and omo doctor identifies sessions still using an older payload.