From ba9149a6474d0b4cb01c325acea1c83e04f22379 Mon Sep 17 00:00:00 2001 From: Adam Malczewski Date: Sun, 21 Jun 2026 21:47:34 +0900 Subject: feat(cli): add --open flag to model-name chat command MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit dispatch --text "..." --open now starts a new conversation AND signals the frontend to open the tab — no need for a separate 'dispatch send --open' step. --- packages/cli/src/args.test.ts | 4 ++++ packages/cli/src/args.ts | 6 ++++++ packages/cli/src/main.ts | 10 +++++++++- 3 files changed, 19 insertions(+), 1 deletion(-) (limited to 'packages') diff --git a/packages/cli/src/args.test.ts b/packages/cli/src/args.test.ts index 392d560..70a4868 100644 --- a/packages/cli/src/args.test.ts +++ b/packages/cli/src/args.test.ts @@ -51,6 +51,7 @@ describe("parseArgs", () => { conversationId: undefined, reasoningEffort: undefined, showReasoning: false, + open: false, }); }); @@ -66,6 +67,7 @@ describe("parseArgs", () => { conversationId: undefined, reasoningEffort: undefined, showReasoning: false, + open: false, }); }); @@ -100,6 +102,7 @@ describe("parseArgs", () => { conversationId: "abc", reasoningEffort: undefined, showReasoning: true, + open: false, }); }); @@ -115,6 +118,7 @@ describe("parseArgs", () => { conversationId: undefined, reasoningEffort: "high", showReasoning: false, + open: false, }); }); diff --git a/packages/cli/src/args.ts b/packages/cli/src/args.ts index b4478b0..4d6652e 100644 --- a/packages/cli/src/args.ts +++ b/packages/cli/src/args.ts @@ -25,6 +25,7 @@ export type ParsedCommand = readonly conversationId?: string | undefined; readonly reasoningEffort?: ReasoningEffort | undefined; readonly showReasoning: boolean; + readonly open: boolean; } | { readonly kind: "list"; readonly server: string; readonly query?: string } | { readonly kind: "read"; readonly server: string; readonly conversationId: string } @@ -189,6 +190,7 @@ export function parseArgs(argv: readonly string[], opts: ParseOpts): ParsedComma let conversationId: string | undefined; let reasoningEffort: ReasoningEffort | undefined; let showReasoning = false; + let open = false; let server = opts.defaultServer; for (let i = 1; i < argv.length; i++) { @@ -218,6 +220,9 @@ export function parseArgs(argv: readonly string[], opts: ParseOpts): ParsedComma case "--show-reasoning": showReasoning = true; break; + case "--open": + open = true; + break; case "--effort": if (i + 1 >= argv.length) return { @@ -256,5 +261,6 @@ export function parseArgs(argv: readonly string[], opts: ParseOpts): ParsedComma conversationId, reasoningEffort, showReasoning, + open, }; } diff --git a/packages/cli/src/main.ts b/packages/cli/src/main.ts index dd8cfa8..04e7231 100644 --- a/packages/cli/src/main.ts +++ b/packages/cli/src/main.ts @@ -25,7 +25,7 @@ const USAGE = `Usage: dispatch list [] [--server ] dispatch read [--server ] dispatch send --text "..." [--queue] [--open] [--cwd ] [--effort ] [--server ] - dispatch --text "..." [--file ] [--cwd ] [--conversation ] [--effort ] [--server ] [--show-reasoning] + dispatch --text "..." [--file ] [--cwd ] [--conversation ] [--effort ] [--server ] [--show-reasoning] [--open] dispatch --help Effort levels: low, medium, high (default), xhigh, max`; @@ -153,6 +153,14 @@ async function main(): Promise { if (conversationId) { process.stdout.write(`\n[conversation] ${conversationId}\n`); + + if (parsed.open) { + await openConversation( + { fetchImpl: globalThis.fetch }, + { server: parsed.server, conversationId }, + ); + process.stdout.write(`Signaled frontend to open ${conversationId}\n`); + } } break; } -- cgit v1.2.3