mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-26 00:52:18 +03:00
Landed with the design call resolved per the owner's pick — **option 1**: the synced store is now endpoint-agnostic (persistDiscoveredModels and managedModelImport no longer drop non-chat models at write time), and chat selectability moved to read time (auto-pool expansion in autoStrategy applies filterChatSelectableModels; the models-route projection already had its chatOnly filter). Your discovery test now passes end-to-end (3/3): /api/show capabilities persist per connection and image/embedding requests route through the advertising host. Reconciliation notes: conflicted areas merged onto the current tip (adobe discovery import, requestedModel preflight signature, resolvedProvider fast-path coexists with the synced-route override — explicit resolution wins); carried base-red drains (#10055 memoization, #11071 test variants) dropped as already-landed; the managed-model-import exclusion test was propagated to the new contract (image/video models persist; the read filter still hides them from chat pickers — pinned by a new assertion). Full battery: 205/206 focused (the one red is a confirmed periodic-timer timing flake on the loaded devbox — 20/20 isolated), autoCombo vitest 30/30, combo suites 46/46, gates + typecheck clean. Thank you @yourspraveen — the capability probe + routing design was right; it just needed the store contract opened up. Fixes #11087.
37 lines
1.4 KiB
JavaScript
37 lines
1.4 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
import { existsSync } from "node:fs";
|
|
import {
|
|
resolveRuntimePorts,
|
|
withRuntimePortEnv,
|
|
resolveMaxOldSpaceMb,
|
|
warnConflictingHeapLimits,
|
|
buildStandaloneNodeOptions,
|
|
spawnWithForwardedSignals,
|
|
} from "../build/runtime-env.mjs";
|
|
import { bootstrapEnv } from "../build/bootstrap-env.mjs";
|
|
|
|
const env = bootstrapEnv();
|
|
const runtimePorts = resolveRuntimePorts(env);
|
|
const childEnv = withRuntimePortEnv(env, runtimePorts);
|
|
|
|
// #2939 / #10353: OMNIROUTE_MEMORY_MB is the Docker/standalone heap knob.
|
|
// When it is set, we append --max-old-space-size last (V8 last-flag wins).
|
|
// When it is unset and NODE_OPTIONS already pins the heap, keep NODE_OPTIONS
|
|
// (#5238). Warn when both are set and the numbers disagree.
|
|
const maxOldSpaceMb = resolveMaxOldSpaceMb(childEnv.OMNIROUTE_MEMORY_MB);
|
|
warnConflictingHeapLimits(childEnv, maxOldSpaceMb);
|
|
childEnv.NODE_OPTIONS = buildStandaloneNodeOptions(childEnv, maxOldSpaceMb);
|
|
|
|
// Prefer the WS-aware wrapper (server-ws.mjs) over the bare Next standalone
|
|
// server.js: it installs the trusted peer-IP stamp (scripts/dev/peer-stamp.mjs)
|
|
// that the authz middleware needs to allow loopback/LAN access to LOCAL_ONLY
|
|
// routes. Falling back to server.js fails CLOSED (every LOCAL_ONLY request 403s)
|
|
// rather than trusting the spoofable Host header.
|
|
const entry = existsSync("server-ws.mjs") ? "server-ws.mjs" : "server.js";
|
|
|
|
spawnWithForwardedSignals("node", [entry], {
|
|
stdio: "inherit",
|
|
env: childEnv,
|
|
});
|