Tags: NomenAK/OmniRoute
Tags
deploy state (v3.8.3+2 local) before reset to v3.8.7
deploy state after v3.8.3 rebase + db migration fix backport — image … …omniroute:v3.8.3-dbfix-2026-05-26 healthy in prod since 2026-05-26 15:56 UTC
fix(mitm): drop .js extension on manager.runtime re-export for webpac… …k build Cherry-picked from upstream main (bundled in dd790c3). Without this, webpack production build fails with "Module not found: Can't resolve ./manager.js". The .js extension was meant for ESM runtime but webpack cannot resolve it since only manager.ts exists at build time. Not yet back-ported to release/v3.8.0 upstream as of 2026-05-20.
fix(mitm): drop .js extension on manager.runtime re-export for webpac… …k build Cherry-picked from upstream main (bundled in dd790c3). Without this, webpack production build fails with "Module not found: Can't resolve ./manager.js". The .js extension was meant for ESM runtime but webpack cannot resolve it since only manager.ts exists at build time. Not yet back-ported to release/v3.8.0 upstream as of 2026-05-20.
fix(antigravity): strip thinkingConfig for Claude models in Antigravi… …ty envelope (#17) When a Claude model is dispatched through Antigravity with reasoning_effort set, openaiToGeminiCLIRequest sets generationConfig.thinkingConfig (a Gemini-specific field). The Cloud Code Claude endpoint does not understand Gemini thinkingConfig and must not receive it. applyAntigravityGenerationDefaults (called inside wrapInCloudCodeEnvelope) correctly bumps maxOutputTokens to thinkingBudget+1 before this strip runs, so the output-token budget is preserved even after the Gemini-specific field is removed. Pre-existing failure deferred during the 2026-05-12 incident sweep. Root cause: the v3.8.0 refactor unified the Claude and Gemini Antigravity paths through openaiToGeminiCLIRequest but omitted the thinkingConfig strip that the old openaiToClaudeRequestForAntigravity path implicitly provided by never setting it. Co-authored-by: OmniRoute Ops <ops@nomenak.dev>
test(sse-heartbeat): integration coverage for shape + strip non-colli… …sion
build(docker): add python3 + make + g++ to builder stage for native m… …odule compilation better-sqlite3 12.9.0 (and other native deps) lacks prebuilt binaries for node 26.1.0 + linux/arm64. Without Python, make, and g++ the builder stage fails on `prebuild-install || node-gyp rebuild --release`. Local-only — upstream is x86-centric and prebuilds work there. This is needed for arm64 builds on the A1 host. Upstream PR candidate but not required for them since CI runs on x64.
fix(translator): coerce submit_pr_review functionalChanges/findings t… …o arrays Capy reviews routed through OmniRoute as claude-opus-4-6 -> xiaomi-mimo/ mimo-v2.5-pro hit a retry loop (200+ retries / 6m+ per session) when MiMo emitted the submit_pr_review tool call with missing or non-array functionalChanges/findings fields. Capy rejected with "expected: array" and the model could not recover. The shim runs after the OpenAI->Anthropic tool_use translation and defensively coerces both required-array fields. Handles 5 malformation modes: omitted, null, plain object, empty string, stringified array. Streaming integration buffers raw args for shimmed tools, suppresses passthrough input_json_delta, then emits one corrective delta with the fully patched JSON just before content_block_stop. Note: this also neutralises any collateral damage from the existing strip-empty fix (diegosouzapw#1852) wiping legitimate empty findings/functionalChanges arrays from MiMos output. Recurring at 100/day on this fork. Local-only for now; consider upstreaming once stable. Co-authored-by: OmniRoute Ops <ops@nomenak.dev>