summaryrefslogtreecommitdiffhomepage
path: root/packages/cli/src/args.test.ts
diff options
context:
space:
mode:
authorAdam Malczewski <[email protected]>2026-06-12 20:13:55 +0900
committerAdam Malczewski <[email protected]>2026-06-12 20:13:55 +0900
commit020e051040001320955a70d6dcaab2d833013196 (patch)
tree1a0921487ae3c89befdbccc1754cd399c07ce1b9 /packages/cli/src/args.test.ts
parent35197ed933044d322d0a653c4e88a5f3e475fe76 (diff)
downloaddispatch-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.ts43
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");