mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-25 16:42:16 +03:00
A compatible node created with prefix "tokenrouter" was silently unreachable: the runtime model resolver (src/sse/services/model.ts) skips compatible-node lookup for built-in registry ids/aliases, so "tokenrouter/qwen/..." routed to the built-in tokenrouter provider and failed with "No active credentials for provider: tokenrouter" even though the node itself worked when addressed by its internal id. Reject reserved prefixes at the write path instead: - new shared module src/shared/constants/reservedProviderPrefixes.ts (REGISTRY ids + aliases, case-sensitive, built lazily) — single source of truth consumed by both the runtime guard and the validation schemas so they can never drift apart - createProviderNodeSchema / updateProviderNodeSchema now reject reserved prefixes with a clear message naming the colliding prefix - src/sse/services/model.ts consumes the shared module; runtime behavior is byte-for-byte unchanged (verified e2e) Set semantics mirror the old inline guard exactly: manual alias ids outside REGISTRY (xiaomi/llamacpp/aq) do not intercept nodes at runtime and stay allowed; mixed-case input (TokenRouter) does not collide with the exact-match runtime lookup either.