github code-yeongyu/oh-my-openagent v5.0.0-beta.42

4 hours ago

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)

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

NewReleases is sending notifications on new releases.