Skip to content

feat(sse): per-request Auto-Combo controls (X-OmniRoute-Mode / X-OmniRoute-Budget) — closes #6023 #6024 #6025 - #6057

Merged
diegosouzapw merged 5 commits into
release/v3.8.44from
feat/auto-combo-request-controls-6022
Jul 4, 2026
Merged

diegosouzapw merged 5 commits into
release/v3.8.44from
feat/auto-combo-request-controls-6022

Conversation

@diegosouzapw

Copy link
Copy Markdown
Collaborator

What

Adds per-request Auto-Combo routing controls via two response-safe request headers, so a caller can steer an auto combo on a single request without mutating its stored config.

Header Accepts Effect
X-OmniRoute-Mode preset alias (fast, balanced, quality, cheap, reliable, offline) or a raw mode-pack name (ship-fast, cost-saver, quality-first, offline-friendly, reliability-first) Overrides scoring weights for this request. balanced/default → default weights. Unknown values ignored.
X-OmniRoute-Budget positive USD number Hard per-request cost ceiling — candidates above it are filtered before selection, falling back to the cheapest healthy one. Garbage ignored.
curl -sS localhost:20128/v1/chat/completions \
  -H "X-OmniRoute-Mode: fast" -H "X-OmniRoute-Budget: 0.05" \
  -d '{"model":"auto","messages":[{"role":"user","content":"hi"}]}'

Why this shape

The auto-combo engine already consumes config.modePack and config.budgetCap (weights resolution + budget filtering with cheapest-fallback both already exist in engine.ts). The only gap was a per-request entry point. So this PR adds:

  • Pure resolvers resolveRequestModePack / parseRequestBudgetCap in open-sse/services/autoCombo/requestControls.ts (no engine changes).
  • Header parsing in src/sse/handlers/chat.ts, threaded through relayOptions.
  • Precedence in combo.ts auto path: request header overrides stored config for that request only; absent/invalid header preserves the combo's saved config.

Scope note

This closes the input-side children of umbrella #5811 (#6023 budget-cap, #6024 latency-vs-quality presets, #6025 mode-pack header). The remaining umbrella child #6022 (X-OmniRoute-Decision trace response header) is a separate output-side threading job (combo selection → chatCore response-header builders) and is intentionally not in this PR. #6010 (fastest routing + MCP tool) already shipped in #6011.

Tests / validation (Hard Rule #18)

  • TDD: tests/unit/auto-combo-request-controls-6024.test.ts (5) — presets, aliases, raw pack names, balanced→default, unknown-ignored, budget parse/reject. Green.
  • typecheck:core clean · check:cycles clean · check:docs-sync clean · eslint clean on touched files · auto-combo-engine + auto-combos-suffixes-4235 suites green.

Docs: docs/routing/AUTO-COMBO.md → new "Per-Request Controls (headers)" section.

…mniRoute-Budget headers

Steer an `auto` combo on a single request without mutating its stored config:
- X-OmniRoute-Mode  (#6024/#6025): friendly presets (fast/balanced/quality/cheap/
  reliable/offline) or a raw mode-pack name; balanced/default force default weights.
- X-OmniRoute-Budget (#6023): hard per-request USD cost ceiling.

Pure resolvers in open-sse/services/autoCombo/requestControls.ts feed the engine's
existing config.modePack / config.budgetCap inputs (no engine changes). Threaded via
relayOptions (chat.ts) into handleComboChat's auto path; unknown/garbage values are
ignored so saved config is preserved. Docs: docs/routing/AUTO-COMBO.md.

Closes #6023, #6024, #6025.
Regression guard: tests/unit/auto-combo-request-controls-6024.test.ts (5).
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Warning

You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again!

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@diegosouzapw
diegosouzapw merged commit 2fa47b7 into release/v3.8.44 Jul 4, 2026
1 of 3 checks passed
@diegosouzapw
diegosouzapw deleted the feat/auto-combo-request-controls-6022 branch July 4, 2026 07:38
tkgo11 pushed a commit to tkgo11/OmniRoute that referenced this pull request Sep 23, 2026
…Route-Budget) — closes cheaper-inference#6023 cheaper-inference#6024 cheaper-inference#6025 (cheaper-inference#6057)

Per-request Auto-Combo controls (X-OmniRoute-Mode / X-OmniRoute-Budget). Integrated into release/v3.8.44.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant