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.test.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.test.ts')
| -rw-r--r-- | packages/cli/src/args.test.ts | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/packages/cli/src/args.test.ts b/packages/cli/src/args.test.ts index 02b9e9b..ce278bb 100644 --- a/packages/cli/src/args.test.ts +++ b/packages/cli/src/args.test.ts @@ -49,6 +49,7 @@ describe("parseArgs", () => { file: undefined, cwd: undefined, conversationId: undefined, + reasoningEffort: undefined, showReasoning: false, }); }); @@ -63,6 +64,7 @@ describe("parseArgs", () => { file: "foo.txt", cwd: undefined, conversationId: undefined, + reasoningEffort: undefined, showReasoning: false, }); }); @@ -96,10 +98,51 @@ describe("parseArgs", () => { file: undefined, cwd: "/tmp", conversationId: "abc", + reasoningEffort: undefined, showReasoning: true, }); }); + it("parses --effort high", () => { + const result = parseArgs(["m", "--text", "x", "--effort", "high"], { defaultServer }); + expect(result).toEqual({ + kind: "chat", + server: "http://localhost:24203", + modelName: "m", + text: "x", + file: undefined, + cwd: undefined, + conversationId: undefined, + reasoningEffort: "high", + showReasoning: false, + }); + }); + + it.each(["low", "medium", "high", "xhigh", "max"] as const)("accepts --effort %s", (level) => { + const result = parseArgs(["m", "--text", "x", "--effort", level], { defaultServer }); + expect(result.kind).toBe("chat"); + if (result.kind === "chat") expect(result.reasoningEffort).toBe(level); + }); + + it("errors when --effort has no value", () => { + const result = parseArgs(["m", "--text", "x", "--effort"], { defaultServer }); + expect(result.kind).toBe("error"); + if (result.kind === "error") expect(result.message).toContain("--effort requires a value"); + }); + + it("errors on invalid effort level", () => { + const result = parseArgs(["m", "--text", "x", "--effort", "banana"], { defaultServer }); + expect(result.kind).toBe("error"); + if (result.kind === "error") { + expect(result.message).toContain("banana"); + expect(result.message).toContain("low"); + expect(result.message).toContain("medium"); + expect(result.message).toContain("high"); + expect(result.message).toContain("xhigh"); + expect(result.message).toContain("max"); + } + }); + it("errors when text and file are both missing", () => { const result = parseArgs(["my-model"], { defaultServer }); expect(result.kind).toBe("error"); |
