github can1357/oh-my-pi v17.0.0

5 hours ago

@oh-my-pi/pi-agent-core

Breaking Changes

  • Replaced the irc, job, and launch tools with a unified hub tool.
  • Removed the tool discovery system (including the search-tool-bm25 tool) and its associated configuration settings (tools.discoveryMode, tools.essentialOverride, mcp.discoveryMode, and mcp.discoveryDefaultServers).
  • Removed the resolve tool; plan approval and preview actions now use writes to the xd://propose virtual device path.

Added

  • Introduced the xd:// virtual device protocol for mounting tools as URLs readable/writable via read/write tools, configurable via the new tools.xdev setting (defaults to true).
  • Added the hub tool, consolidating agent peer messaging, background job control, and supervised long-running processes.
  • Added the edit.enforceSeenLines configuration setting (defaults to false) to optionally reject edits on lines that have not been fully displayed.
  • Added the ToolLoadMode type and an optional satisfies predicate to SoftToolRequirement to support compliance checks against specific invocation shapes (such as writing to a virtual device path).

@oh-my-pi/pi-ai

Changed

  • Improved Ollama streaming performance by parsing NDJSON response bytes directly instead of decoding and buffering network chunks as text.

Fixed

  • Fixed Cursor TLS connection resets causing process-fatal uncaught exceptions, allowing the active turn to fail or retry gracefully without terminating the session.
  • Fixed Amazon Bedrock stream error handling to correctly handle non-Error values that cannot be serialized by JSON.stringify.

@oh-my-pi/pi-coding-agent

Breaking Changes

  • Merged the irc, job, and launch tools into a single unified hub tool (loadMode: "essential"). Messaging, job control, and process supervision operations are now routed through this single tool. SDK: IrcTool, JobTool, LaunchTool, IrcDetails, and JobToolDetails have been removed in favor of HubTool, CoordinationDetails, LaunchToolDetails, and hubToolRenderer from tools/hub.
  • Removed the hidden resolve tool. Staged actions are now finalized through three plain-text resolution devices: xd://resolve (apply preview), xd://reject (discard preview), and xd://propose (submit a plan slug/title for approval). The write tool is now auto-included whenever a deferrable tool is present or plan mode is enabled. SDK: ResolveTool and HIDDEN_TOOLS.resolve have been removed in favor of dispatchResolutionDevice() and queueResolveHandler().
  • Unified tool presentation on loadMode (essential | discoverable), replacing the custom-tool xdev?: boolean opt-out. Custom, extension, MCP, RPC host, image-generation, and TTS tools now default to discoverable and mount under xd:// when enabled. generate_image, tts, and MCP tools are now exposed as xd:// devices in default sessions instead of shipping their schemas top-level.
  • Removed the BM25 tool-discovery system, including the search_tool_bm25 tool, the tools.discoveryMode, mcp.discoveryMode, and mcp.discoveryDefaultServers settings, and per-tool MCP selection. All connected MCP tools are now enabled and mounted under the xd:// transport. SDK: search_tool_bm25, the tool-discovery module, and associated AgentSession discovery/MCP-selection methods have been removed.
  • Removed the legacy report_finding tool. Reviewer agents now record findings through incremental yield sections. SDK: reportFindingTool and HIDDEN_TOOLS.report_finding have been removed.
  • Removed the ssh agent tool (remote command execution). The ssh:// read/write/search protocol, the omp ssh host-management CLI, and SSH host discovery are retained. SDK: SshTool, loadSshTool, the ssh/ssh-executor module, and AgentSession.refreshSshTool have been removed.
  • Removed the tools.essentialOverride setting, the mcp_tool_selection session message type, and the xdev --tools token.

Added

  • Added xd:// virtual tool devices (controlled by the tools.xdev setting, default on), allowing mounted tools to be discovered via read xd://, documented via read xd://<tool>, and executed via write xd://<tool>.
  • Added the edit.enforceSeenLines setting (default off) to gate the hashline seen-line guard. When enabled, edits anchored on lines that a prior read or grep never displayed are rejected.
  • Added per-agent prewalk for subagents, featuring a prewalk frontmatter field, a task.agentPrewalk settings override toggled from the /agents dashboard, and a task.prewalk boolean (default off) to arm the bundled generic task agent.

Changed

  • Renamed "dev.autoqa.consent" to "dev.autoqaConsent" and "todo.reminders.max" to "todo.remindersMax" to eliminate nested configuration prefix collisions in standard JSON/YAML.
  • Made the hashline seen-line guard opt-in and off by default, and stopped excluding column-clipped (>512-char) lines from a snapshot's seen set, allowing single-line edits on long lines to apply without a full-width re-read.
  • Changed the default astGrep.enabled setting to false.
  • Batched todo operations with real tool calls to prevent solo todo turns and extra round trips.
  • Changed all bundled TTSR rules to warn instead of interrupting generation.
  • Renamed the system prompt's project-context section wrapper from <context> to <repo-rules> to prevent collisions with the task tool's context parameter under in-band XML tool dialects.
  • Rendered read xd:// calls in a compact grouped read view instead of a full tool-execution card.
  • Updated --tools to reject unknown tool names with a usage error instead of silently narrowing the toolset.
  • Capped the xd:// device docs inlined into the system prompt to a 48k-char budget (10k per device) to prevent large MCP catalogs from bloating requests; devices past the cap are listed by name and summary and fetched on demand. External (dynamic-mount) tool descriptions embed at most 200 chars — schemas stay intact, full text via read xd://<tool>.
  • Dead BM25-discovery settings keys (tools.discoveryMode, tools.essentialOverride, mcp.discoveryMode, mcp.discoveryDefaultServers) are cleaned from configs on load; tools.xdev keeps its default (true).
  • Mid-session xd:// mount changes (e.g. MCP connect/disconnect) no longer rewrite the system prompt: the delta is announced to the model as a steered system notice ("these tools became available" / "no longer mounted"), so the provider prompt cache stays intact; device docs join the prompt on the next unrelated rebuild.

Fixed

  • Fixed a bug where a nested configuration value (like dev.autoqa.consent / dev.autoqaConsent) would incorrectly satisfy a parent key lookup (like dev.autoqa), causing Auto QA to be enabled and prompt for consent by default when it should have been disabled.
  • Fixed compiled appserver startup deadlocking before socket creation when user extensions were present.
  • Fixed Bash internal URLs remaining unresolved when used as unquoted arguments inside command substitutions.
  • Fixed --tools silently dropping hidden tool names like xdev and yield.
  • Fixed the built-in fd printing broken pipe errors when a downstream pipeline reader exited early; it now exits silently with status 141.
  • Fixed prewalk repeatedly continuing after a bash-only task (such as commit) had already completed.
  • Fixed the Bash tool hanging when in-process commands read process substitution operands.
  • Fixed /share and /export web views rendering inline Markdown inside list items as literal text.
  • Fixed plan-mode re-entry dropping a new plan request when a prior plan artifact existed; re-entry now anchors on the new request and folds old-plan corrections into it.
  • Fixed ACP clients rendering xd:// device dispatches as file edits; they now map to an execute-kind tool call titled with the device URL.
  • Fixed non-yolo approval modes double-prompting for xd:// device dispatches.
  • Fixed TTSR rules with leading inline regex flags failing to compile and being silently dropped in Bun/JS environments, and recovered scope tokens and sibling values from malformed frontmatter.

@oh-my-pi/collab-web

Changed

  • Consolidated the legacy irc and job tool renderers into a unified hub renderer for messaging, background jobs, and process supervision, while preserving existing visual styles.
  • Enhanced rendering for xd:// device dispatches to resolve through their inner tool's renderer, preserving generated-image thumbnails and MCP/autoresearch presentations under a unified xd:// card label.

Removed

  • Removed custom visualization for the search_tool_bm25 tool, which now falls back to generic rendering.

@oh-my-pi/hashline

Added

  • Added enforceSeenLines option to PatcherOptions (defaulting to true) to control whether seen-line validation is enforced on anchored edits, allowing tags to validate on content hash alone when disabled.

@oh-my-pi/pi-natives

Fixed

  • Fixed the in-process grep builtin to correctly handle escaped alternation (|) in default and -G (GNU basic-regex) searches, while preserving the correct regex dialects for -E, -F, and -P.

@oh-my-pi/pi-tui

Added

  • Improved LaTeX rendering for \underbrace, \overbrace, \overset, \underset, and \stackrel to use drawn horizontal braces with centered labels and stacked annotations instead of flat inline glyphs.
  • Improved LaTeX rendering of multi-letter subscripts and superscripts by displaying them as raised or lowered blocks instead of ragged per-character Unicode glyphs.
  • Added an opt-in Editor.setImeSafeCursorLayout() method to protect macOS IME preedit while retaining the compact bordered layout by default.

Fixed

  • Fixed SIXEL image rendering where images with cell heights not divisible by 6 would have their bottom portion overwritten by subsequent content.
  • Fixed an issue where the Kitty OSC 99 desktop-notification capability probe would leak raw text into the terminal pane when running inside a multiplexer like tmux or screen.

@oh-my-pi/pi-utils

Fixed

  • Improved SSE streaming performance by batching complete lines into a single UTF-8 decode per chunk, reducing decoder overhead.
  • Fixed an issue in parseFrontmatter where a single malformed YAML line would corrupt sibling values by parsing each line independently.

What's Changed

  • fix(ttsr): register rules with inline regex flags and malformed scope by @roboomp in #5489
  • fix(bash): resolve internal URLs in command substitutions by @roboomp in #5536
  • fix(amazon-bedrock): guard baseMessage against undefined JSON.stringify by @roboomp in #5540
  • perf(stream): batch response decoding by @roboomp in #5544
  • fix(prewalk): stop completion turn loops by @roboomp in #5553
  • fix(tui): protect editor border from IME preedit by @roboomp in #5569
  • fix(export): render inline Markdown in list items by @roboomp in #5570
  • fix(shell): materialize process substitution fds for builtins by @roboomp in #5564
  • fix(coding-agent): lazily load compiled extension modules by @roboomp in #5571
  • fix(plan-mode): anchor re-entry on the new request by @roboomp in #5577
  • fix(tui): round SIXEL encode height to multiple of 6 to prevent image… by @H4vC in #5595
  • fix(tui): suppress OSC 99 capability probe under tmux by @roboomp in #5583
  • fix(ai): handle Cursor HTTP/2 TLS session errors by @roboomp in #5594

Full Changelog: v16.5.2...v17.0.0

Don't miss a new oh-my-pi release

NewReleases is sending notifications on new releases.