mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-07-31 20:32:20 +03:00
Reliability (D → A) — fix the 6 BUG findings:
- bin/cli/tray/autostart.mjs: replace `return ignoreFailure ? false : false`
(always-false ternary) with a meaningful branch that rethrows when
`ignoreFailure` is false.
- open-sse/services/combo.ts: reorder the quality-validation block so the
`combo.target.failed` emit runs BEFORE the `break` — the previous order
left the emit unreachable.
- src/app/api/playground/simulate-route/route.ts: drop the duplicate
`modelLower.includes("1m") || modelLower.includes("1m")` (and the 2m
twin) — both sides of the `||` were identical so the second check was
dead code.
- scripts/check/check-env-doc-sync.mjs: pass `localeCompare` to Array.sort
instead of relying on the default coercion-to-string ordering.
- src/sse/handlers/chat.ts: guard the cache TTL check with an explicit
`combosCachePromise !== null` so we don't evaluate a Promise as a
boolean.
Security (C → A) — close the Dockerfile hotspots:
- Builder stage now runs `npm ci`/`npm install` with `--ignore-scripts`
to neutralise transitive install-time RCE. OmniRoute's own postinstall
only rewrites a packaged `app/node_modules`, so it has nothing to do
during a fresh in-container install.
- Runner-base now drops to the baked-in `node` non-root user (UID/GID
1000) before the CMD runs. /app is chowned after all COPYs so the
runtime user can still read every file. The runner-cli stage briefly
elevates back to root for the apt + global npm installs and then
pins USER node again.