oh-my-openagent v5.0.0-beta.42

v5.0.0-beta.42Pre-release
Changed 2
  • Terminal monitors and background Bash sessions are recorded per session with a single startup notification
  • @code-yeongyu/senpi updated to 2026.9.4-3
Fixed 18
  • Anthropic native tool search no longer returns 400 errors by fixing the tool_reference field name and gating BM25 server tool injection to supported models
  • Korean and non-ASCII characters in memory slugs, git paths, and recall query planning are now preserved with compatibility for directories written by older builds
  • GitHub releases are created as full releases and the Latest badge is determined from the highest published semver rather than tag order
  • Windows SQLite handle leak no longer stalls the harness by replacing prepare() calls with exec() in credential readers
  • Conditional x-search skill ships without startup logging
  • Bun skill guidance in ultrawork directive is gated instead of unconditional

From oh-my-openagent

omo 5.0.0-beta.42

beta.41 was never published: its first release attempt failed the CI gate and the retry re-selected the stale stamp commit, so the number was skipped rather than shipping a tree that lacked the engine bump. This release carries everything intended for beta.41.

Engine: @code-yeongyu/senpi 2026.9.4-3 (beta.40 shipped 2026.9.3-2 — this beta moves the engine across 2026.9.4, 2026.9.4-2 and 2026.9.4-3).

Highlights
Anthropic native tool search no longer 400s

The headline engine fix. Native tool search sent tool_reference blocks under a name field instead of the API's tool_name, and the BM25 server tool was injected on every anthropic-messages endpoint — including gateways, proxies and Kimi-coding hosts that reject it. Either one returned 400 tools.N.tool_search_tool_bm25_20251119.name: Input should be 'tool_search_tool_bm25' (or an opaque invalid-request error), after which the adapter disabled native search for the rest of the session. Injection is now gated to models that actually support tool search (Opus/Sonnet 4.5+ and the Fable line), and the reference field matches the wire contract. (senpi #1354)

Korean and non-ASCII memory finally round-trips

Memory slugs, git paths and recall query planning keep Korean/non-Latin letters instead of mangling them, with compatibility for directories written by older builds. (#7739, #7741)

Release plumbing corrected

Every GitHub release is created as a full release, and the Latest badge is decided from the highest published semver rather than tag order. (#7743, #7761)

Windows: a leaked SQLite handle no longer stalls the harness

node:sqlite's DatabaseSync.close() does not finalize outstanding statements on Bun 1.4, so one prepare() left the store's file handle open until GC. POSIX hides this (unlink ignores open handles) but Windows keeps the file locked, and the next open of the same store blocks — sibling-harness detection could stall for tens of seconds. Every prepare() in the credential readers and their tests is gone, replaced by exec() with a row-sink function, and a contract test now asserts that no file handle survives close(). (#7775)

Fixed
  • omo-senpi: the conditional x-search skill ships and no longer logs at startup (#7745); Bun skill guidance in the ultrawork directive is gated instead of unconditional (#7754); the senpi hooks-state lock is granted to every memory sandbox (#7756); unsupported isolation traversal fails closed instead of looking complete (#7769)
  • lsp-core: a diagnostic pull that times out now awaits its cancellation write, so $/cancelRequest is not lost on Windows (#7773)
  • senpi-task: PATH senpi executables that do not match the running engine are rejected (#7758); lead tasklist tools are deferred to tool_search (#7737)
  • omo-native/omob: hoisted bin dir resolution for scoped engine packages (#7755), architect blockers closed in the omob pipeline (#7747), skill-source filter + cache locking + provenance mirrors root-fixed (#7763), dev binary built from the latest commits with build provenance (#7740)
  • shared-skills: page work routes to a real browser before the CLI (#7751), browser QA and research browsing go through the eval kernel (#7750), CloakBrowser's venv interpreter is used in the launch step too (#7757)
  • Dependencies: @code-yeongyu/senpi pin moved to 2026.9.4-2 then 2026.9.4-3 (#7749, #7772)
  • Isolation QA snapshots assert the real per-platform contract instead of POSIX-only outcomes, so Windows reports capability failures explicitly (#7770, #7775)
Engine changes (senpi 2026.9.4 → 2026.9.4-3)
  • Terminal monitors and background Bash sessions are recorded per session, with a single startup notification for carried-over/lost/expired state, and monitors expose a stable mon_ id while bash_output/bash_input/bash_resize/kill_bash accept either id
  • A spawned RPC host that never answers get_protocol_info reports why instead of surfacing a raw powershell.exe failure, and no longer leaks its pidfile and socket
  • File-backed credential, auth and settings locks wait through bounded contention retries and report an actionable transient error instead of burning the provider fallback chain
  • Image generation treats a seeded placeholder key as absent, so it falls through to a configured gateway instead of failing with an OpenAI 401
  • Hook trust-state reads fail open when the lock directory cannot be created (sandboxed/read-only children); writers still fail closed
  • bun install --frozen-lockfile works on a clean checkout again
Internal / tests
  • Windows memory-core unmerged-entry timing (#7767), omob default dirs asserted with the host path separator (#7759), isolation state-race suite determinism (#7770)
  • Task and memory tool descriptions dieted (-369 tokens) (#7738), shipped skill descriptions rewritten as routing text (#7744), review-work replaced with orchestrator QA plus one gate reviewer (#7742), ulw-research browsing worker made binding and render-first (#7760)
View original

Upgraded? How did it go?

Discussion