import type { ReasoningEffort } from "@dispatch/transport-contract"; /** * Pure helpers for the reasoning-effort selector (the thinking-depth knob). * * The canonical ladder + resolution chain are SERVER-owned (`wire@0.7.0` * `ReasoningEffort`; per-turn override → persisted conversation value → default * `"high"`). These helpers only shape the persisted value for display: a `null` * from `GET /conversations/:id/reasoning-effort` means "never set ⇒ the default * applies", so the selector shows `high (default)` — never "off". Zero DOM, * zero Svelte. */ /** The canonical ladder, in ascending thinking-depth order (`wire@0.7.0`). */ export const REASONING_EFFORT_LEVELS: readonly ReasoningEffort[] = [ "low", "medium", "high", "xhigh", "max", ]; /** The server's fallback when nothing is set (the resolution chain's tail). */ export const DEFAULT_REASONING_EFFORT: ReasoningEffort = "high"; /** Narrow an untrusted string (e.g. a `