Engine: senpi 2026.9.19
Extensions that pull in jsdom or whatwg-url load again. The engine's extension loader wrapped every CommonJS dependency in a prologue that declared exports as a constant, so a module written as module.exports = exports = { ... } (the published shape of whatwg-url/lib/utils.js and jsdom's generated IDL utils) failed to parse and took the whole extension graph down with This assignment will throw because "exports" is a constant. pi-webfetch was the reported casualty. CommonJS now evaluates inside Node's module function wrapper, the per-file require carries a resolve that returns the file's absolute path (jsdom locates its XHR sync worker that way), and a module inside a require cycle receives the partially built exports of the module still evaluating instead of undefined, so @acemir/cssom's mutual requires resolve. A dependency whose body throws is evicted, so a later require re-throws instead of returning a half-built module, and .mjs / .mts files stay on the ESM path even without import or export statements.
Fixed
A repeat omob build no longer ships the previous build's engine copies. The reusable senpi cache clone kept the publish staging that the last build wrote into its workspaces, and the bundler resolved the agent core from that stale copy instead of the commit being built. Once the engine gained an export that copy lacked, every refresh failed with No matching export ... for import "prepareReadFolder" and the launcher refused to start; before that, it silently bundled a three-day-old agent core. The staging is now discarded before every install. (#8477)
- f9d0faa Merge pull request #8481 from code-yeongyu/release/v5.0.0-beta.77-source-state
- a58ca4f chore(omo-codex): regenerate the installer bundle for the current version
- d4c25b0 Merge pull request #8479 from code-yeongyu/fix/omob-cache-staging-residue
- 53437b4 Merge pull request #8478 from code-yeongyu/chore/changes-md-diff3-marker
- 215c847 chore(changes): drop a stray diff3 marker from the ledger
npm i -g omo-ai@beta