diff options
| author | Adam Malczewski <[email protected]> | 2026-06-12 20:13:55 +0900 |
|---|---|---|
| committer | Adam Malczewski <[email protected]> | 2026-06-12 20:13:55 +0900 |
| commit | 020e051040001320955a70d6dcaab2d833013196 (patch) | |
| tree | 1a0921487ae3c89befdbccc1754cd399c07ce1b9 /packages/cli/src/args.ts | |
| parent | 35197ed933044d322d0a653c4e88a5f3e475fe76 (diff) | |
| download | dispatch-020e051040001320955a70d6dcaab2d833013196.tar.gz dispatch-020e051040001320955a70d6dcaab2d833013196.zip | |
feat(reasoning-effort): persisted per-conversation + per-turn override, threaded to providers
- conversation-store: get/setReasoningEffort (own key space, mirrors cwd)
- session-orchestrator: resolveReasoningEffort (override -> stored -> 'high'),
StartTurnInput.reasoningEffort, warm() parity (cache-safe)
- transport-http: /chat validation (400 on bad level) + GET/PUT
/conversations/:id/reasoning-effort
- transport-ws: chat.send threading + validation
- cli: --effort <low|medium|high|xhigh|max>
993 vitest + 189 bun tests green; typecheck + biome clean.
Diffstat (limited to 'packages/cli/src/args.ts')
| -rw-r--r-- | packages/cli/src/args.ts | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/packages/cli/src/args.ts b/packages/cli/src/args.ts index 2c554e8..b3fa1e5 100644 --- a/packages/cli/src/args.ts +++ b/packages/cli/src/args.ts @@ -5,6 +5,14 @@ * Validates required flags and reports unknown flags as errors. */ +export type ReasoningEffort = "low" | "medium" | "high" | "xhigh" | "max"; + +const VALID_EFFORTS: readonly ReasoningEffort[] = ["low", "medium", "high", "xhigh", "max"]; + +export function isValidEffort(value: string): value is ReasoningEffort { + return (VALID_EFFORTS as readonly string[]).includes(value); +} + export type ParsedCommand = | { readonly kind: "models"; readonly server: string } | { @@ -15,6 +23,7 @@ export type ParsedCommand = readonly file?: string | undefined; readonly cwd?: string | undefined; readonly conversationId?: string | undefined; + readonly reasoningEffort?: ReasoningEffort | undefined; readonly showReasoning: boolean; } | { readonly kind: "help" } @@ -53,6 +62,7 @@ export function parseArgs(argv: readonly string[], opts: ParseOpts): ParsedComma let file: string | undefined; let cwd: string | undefined; let conversationId: string | undefined; + let reasoningEffort: ReasoningEffort | undefined; let showReasoning = false; let server = opts.defaultServer; @@ -83,6 +93,22 @@ export function parseArgs(argv: readonly string[], opts: ParseOpts): ParsedComma case "--show-reasoning": showReasoning = true; break; + case "--effort": + if (i + 1 >= argv.length) + return { + kind: "error", + message: `--effort requires a value (one of: ${VALID_EFFORTS.join(", ")})`, + }; + { + const val = argv[++i] as string; + if (!isValidEffort(val)) + return { + kind: "error", + message: `Invalid effort level "${val}". Must be one of: ${VALID_EFFORTS.join(", ")}`, + }; + reasoningEffort = val; + } + break; default: return { kind: "error", message: `Unknown flag: ${arg}` }; } @@ -103,6 +129,7 @@ export function parseArgs(argv: readonly string[], opts: ParseOpts): ParsedComma file, cwd, conversationId, + reasoningEffort, showReasoning, }; } |
