Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -770,6 +770,13 @@ ALLOW_API_KEY_REVEAL=false
# Validated to >= 1, clamped to <= 32. | Default: 3
# COMBO_CONCURRENCY_PER_MODEL=3

# Agentic-stall response classifier (opt-in, default OFF).
# Used by: open-sse/services/combo/agenticStall.ts — classifies a combo member's
# "finish: stop + narration + zero tool calls" answer to a tool-result turn as a
# stall. Classification only for now: no combo call site consumes the verdict yet.
# Set to 1 (or true) to enable. | Default: false
# OMNIROUTE_AGENTIC_STALL_FAILOVER=false

# Disable conversation-history tracking (#13150).
# Used by: open-sse/services/conversationTracker.ts. resolveConversationId()
# returns an untracked result before it reads SQLite or parses message history,
Expand Down
1 change: 1 addition & 0 deletions changelog.d/features/13954-agentic-stall-classifier.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- **feat(combo):** add the agentic-stall response classifier (`open-sse/services/combo/agenticStall.ts`) — flags a `finish: stop` + narration + zero-tool-call answer to a tool-result turn. Opt-in via `OMNIROUTE_AGENTIC_STALL_FAILOVER=1` (default OFF); classification only, no combo call site yet ([#13954](https://github.com/cheaper-inference/OmniRoute/pull/13954) - thanks @patrykkopycinski)
1 change: 1 addition & 0 deletions docs/reference/ENVIRONMENT.md
Original file line number Diff line number Diff line change
Expand Up @@ -321,6 +321,7 @@ OmniRoute provides a two-layer defense: request-side injection scanning and resp
| `OMNIROUTE_REDACT_THINKING` | `true` | `open-sse/executors/base/redactThinkingBeta.ts` | Set `false` to stop OmniRoute adding the `redact-thinking-2026-02-12` Anthropic beta itself (empty signature-only thinking blocks). Requests with `thinking.display: "summarized"` skip it regardless; a client-negotiated redact beta or a CC-compatible `requestDefaults.redactThinking` opt-in keeps it. Claude OAuth requests keep the beta (it is part of the Claude Code OAuth fingerprint) unless the default-off `CLAUDE_OAUTH_SUMMARIZED_THINKING_UNREDACTED` feature flag is on. |
| `BARE_MODEL_DEFAULT_OVERRIDE_LEGACY` | `false` | `open-sse/services/model.ts` | Legacy `resolveBareModelToConnectionDefault` behaviour (#4825): replace any bare model name with the selected connection's `defaultModel`. Off by default, only `auto` or an empty model is replaced; logs one warning per pair when on. |
| `COMBO_CONCURRENCY_PER_MODEL` | `3` | `open-sse/services/comboConfig.ts` | Per-model concurrency cap for round-robin combos (#9100). The round-robin combo semaphore was hard-capped at 3 concurrent requests per model with no override, serializing higher-concurrency traffic behind that cap. Validated to `>= 1`, clamped to `<= 32`. |
| `OMNIROUTE_AGENTIC_STALL_FAILOVER` | `false` | `open-sse/services/combo/agenticStall.ts` | Opt-in: set to `1` (or `true`) to enable the agentic-stall response classifier, which flags a combo member's `finish: stop` + narration + zero-tool-call answer to a tool-result turn as a stall. Default OFF. Classification only for now — no combo call site consumes the verdict yet. |
| `DISABLE_CONTEXT_WINDOW_CHECKS` | `false` | `open-sse/handlers/chatCore.ts` | Dangerous opt-in that skips OmniRoute's local context-window / max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits; prompt compression and the model's own output-token cap remain active. Effective precedence is Feature Flags DB override > environment variable > default; no restart is required. |
| `OMNIROUTE_SELF_HOSTED_PROVIDERS` | _(unset)_ | `open-sse/services/selfHostedEntry.ts` | Inline YAML `providers:` document (RIC-738, D4). When set (with or without a `strategy:` block), `/v1/chat/completions` diverts to the self-hosted unified OpenAI-compatible entry instead of the cloud pipeline. Unset (the default): the route falls straight through to the existing cloud pipeline. See `docs/routing/SELF_HOSTED_OPENAI_ENTRY.md`. |
| `OMNIROUTE_SELF_HOSTED_PROVIDERS_FILE` | _(unset)_ | `open-sse/services/selfHostedEntry.ts` | Path to a YAML file holding the same `providers:` document as `OMNIROUTE_SELF_HOSTED_PROVIDERS`, for deployments that prefer a file over an inline env var. Either one activates the self-hosted entry. |
Expand Down
Loading
Loading