#4126·9router

Feature: add TypeSafe Jev as a combo routing strategy (alongside fallback / round-robin)

Author: kweinerCreated Sep 17, 2026Updated Sep 17, 2026

Summary

Add TypeSafe AI's Jev ("System One") model as a new per-combo routing strategy, alongside the existing fallback and round-robin strategies in open-sse/services/combo.js.

Background

Jev isn't a chat model — it's a decision-only model. You send it a state plus typed choice/score/noul questions and it returns a calibrated, structured answer in ~70-500ms via POST https://api.typesafe.ai/v1/systemone (not /v1/chat/completions). Docs: https://docs.typesafe.ai/api

That shape is a good fit for pre-generation routing: ask Jev a single choice question ("which of these N combo models best fits this request?") over the combo's model IDs, using the incoming request (prompt, detected capabilities, historical latency/cost per model, etc.) as state. This is a different, cheaper problem than the existing Fusion strategy (parallel panel + judge synthesis, #1835) — Fusion picks the best output after generating from multiple models; a Jev strategy would pick the best model before spending any generation tokens at all. Complementary, not overlapping.

Proposed strategy: "jev"

  • New value for a combo's strategy field (today: "fallback" | "round-robin"), wired into getRotatedModels() in open-sse/services/combo.js.
  • On each request, issue one choice question to POST /v1/systemone (model: "jev-latest") with the combo's model list as criteria options and the request body (or a summarized/redacted form of it) as state.
  • Reorder/select the model list based on the returned option + confidence, then fall through the normal fallback chain if the chosen model errors.
  • Fail open: any Jev error/timeout/missing TYPESAFE_API_KEY falls back to the combo's existing static order (or round-robin if configured) — never blocks a request on Jev being reachable.
  • New env var: TYPESAFE_API_KEY (mirrors the pattern used for other provider credentials).

Why this is worth having in 9router specifically

9router already does capability-based reordering (reorderByCapabilities) and a full LLM-judge strategy (Fusion). Jev fills the gap between those two: a cheap, low-latency, purpose-built classifier for "which model should handle this" — on TypeSafe's own numbers, tens to hundreds of times cheaper/faster than using a chat model as the judge for that decision. For a project whose whole pitch is squeezing more useful routing out of free/cheap tiers, an extra routing signal that costs a fraction of a cent and ~100ms seems directly on-thesis.

Offer

Happy to put up a PR for this if the design direction above (new strategy: "jev", hook point in getRotatedModels, fail-open behavior) looks right to the maintainers — just want to confirm alignment before investing the time, since I know the router/executor internals here aren't mine.

(Checked existing issues/PRs for "jev", "typesafe", "systemone" — didn't find a prior request for this.)