You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Our roadmap benchmarks the agent against Hermes and openclaw (ROADMAP.md, "Fast-Follow: Hermes Parity"). Hermes is a personal-assistant agent. If the goal is the best coding agent, that is the wrong comparison class, and it shows: before this epic, not one open issue tracked a coding-agent capability gap. A keyword sweep of the whole tracker returned zero issues ever mentioning lsp, hashline, edit format, subagent, vision, DAP, or debugger.
This epic adds the missing comparison class. The reference point is omp (31 built-in tools, 60+ providers, 14 LSP ops, 28 DAP ops), whose thesis is that the harness, not the model, is the bottleneck.
Where we are ahead
Worth stating, because none of it should be traded away to close the gaps below: durable journal with offset replay and reattach; ACP sessions that actually resume (session/load); multi-tenant SSH hosting with per-tenant jails; LLM spend metered into a real ledger; crash isolation via OTP; and surfaces omp has no equivalent for (LiveView, Telegram/Discord/Email gateway, cron, Symphony).
Shipped
AGENTS.md / CLAUDE.md discovery, across the TUI, ACP (per session root), and headless surfaces. Withheld under RAXOL_PROFILE=benchmark for the same reason skills are.
Hash-anchored edit format. read_file prefixes every line LINE:HASH|; edit_file addresses ranges by copying those prefixes into from/to. The model stops retyping the text it replaces, and a file that changed underneath fails the hash check instead of being corrupted. old_string stays as a fallback.
Actionable tool errors. ToolConverter.public_error/2 is a whitelist, so every edit failure previously reached the model as the bare string tool error. Each failure mode now says what to do next.
LSP wiring (Wire the LSP client into the coding agent toolset #932, PR Wire the LSP client into the coding agent #943). The client was not merely disconnected: Port.open was passed {:packet, 0}, which is not a valid option, so no server had ever started, and it never sent textDocument/didOpen, without which servers publish no diagnostics at all. Now two tools (lsp read-only, lsp_rename gated), servers pooled per language and owned by the session, .raxol/lsp.json config, and UTF-16 column handling so a rename cannot corrupt a line holding non-ASCII. A jailed session gets no LSP.
Parallel sub-agents. task takes prompts and fans out up to four concurrent delegations under Raxol.Agent.TaskSupervisor, unlinked, so one crash or timeout is a failed entry rather than a dead turn.
Open
Roughly in priority order:
Post-write diagnostics: surface new problems for a file automatically after write_file/edit_file, rather than only when the model thinks to ask. Split out of Wire the LSP client into the coding agent toolset #932, which shipped everything else: it touches Code.Edit, which the hash-anchored edit format rewrote, and taking the conflict before that landed was not worth it. The lsp tool's diagnostics op gives the capability meanwhile.
Named so the omission is a decision rather than an oversight: DAP/debugger control, ast_grep/ast_edit structural rewrites, persistent Python/JS eval cells, browser and desktop control, atomic commit splitting, a /review verdict command, shell completions, and read-write collab. Several are strong features; none is on the critical path to a coding agent that lands its edits.
Guard
Nothing here may compromise the single-module invariant, the frame budget, or the fail-closed posture of the authorizer, the jail, and the spend gate.
Our roadmap benchmarks the agent against Hermes and openclaw (
ROADMAP.md, "Fast-Follow: Hermes Parity"). Hermes is a personal-assistant agent. If the goal is the best coding agent, that is the wrong comparison class, and it shows: before this epic, not one open issue tracked a coding-agent capability gap. A keyword sweep of the whole tracker returned zero issues ever mentioninglsp,hashline,edit format,subagent,vision,DAP, ordebugger.This epic adds the missing comparison class. The reference point is omp (31 built-in tools, 60+ providers, 14 LSP ops, 28 DAP ops), whose thesis is that the harness, not the model, is the bottleneck.
Where we are ahead
Worth stating, because none of it should be traded away to close the gaps below: durable journal with offset replay and reattach; ACP sessions that actually resume (
session/load); multi-tenant SSH hosting with per-tenant jails; LLM spend metered into a real ledger; crash isolation via OTP; and surfaces omp has no equivalent for (LiveView, Telegram/Discord/Email gateway, cron, Symphony).Shipped
AGENTS.md/CLAUDE.mddiscovery, across the TUI, ACP (per session root), and headless surfaces. Withheld underRAXOL_PROFILE=benchmarkfor the same reason skills are.read_fileprefixes every lineLINE:HASH|;edit_fileaddresses ranges by copying those prefixes intofrom/to. The model stops retyping the text it replaces, and a file that changed underneath fails the hash check instead of being corrupted.old_stringstays as a fallback.ToolConverter.public_error/2is a whitelist, so every edit failure previously reached the model as the bare stringtool error. Each failure mode now says what to do next.Port.openwas passed{:packet, 0}, which is not a valid option, so no server had ever started, and it never senttextDocument/didOpen, without which servers publish no diagnostics at all. Now two tools (lspread-only,lsp_renamegated), servers pooled per language and owned by the session,.raxol/lsp.jsonconfig, and UTF-16 column handling so a rename cannot corrupt a line holding non-ASCII. A jailed session gets no LSP.tasktakespromptsand fans out up to four concurrent delegations underRaxol.Agent.TaskSupervisor, unlinked, so one crash or timeout is a failed entry rather than a dead turn.Open
Roughly in priority order:
write_file/edit_file, rather than only when the model thinks to ask. Split out of Wire the LSP client into the coding agent toolset #932, which shipped everything else: it touchesCode.Edit, which the hash-anchored edit format rewrote, and taking the conflict before that landed was not worth it. Thelsptool'sdiagnosticsop gives the capability meanwhile.web_searchorfetch: the agent cannot read anything outside the workspacetodotool for long-horizon workbash: no PTY, no background jobs, 30s ceilingasktool for structured mid-turn questionsBackend.HTTPcannot send image content blocksDeliberately not scheduled
Named so the omission is a decision rather than an oversight: DAP/debugger control,
ast_grep/ast_editstructural rewrites, persistent Python/JS eval cells, browser and desktop control, atomic commit splitting, a/reviewverdict command, shell completions, and read-write collab. Several are strong features; none is on the critical path to a coding agent that lands its edits.Guard
Nothing here may compromise the single-module invariant, the frame budget, or the fail-closed posture of the authorizer, the jail, and the spend gate.