summaryrefslogtreecommitdiffhomepage
path: root/packages/cli/src
diff options
context:
space:
mode:
authorAdam Malczewski <[email protected]>2026-06-21 21:47:34 +0900
committerAdam Malczewski <[email protected]>2026-06-21 21:47:34 +0900
commitba9149a6474d0b4cb01c325acea1c83e04f22379 (patch)
tree1aa6fe1ab8f8895cde6a189f060ba0d8021844e1 /packages/cli/src
parent1049c38af2466eaa4dbb698af3cf56a4826c26c6 (diff)
downloaddispatch-ba9149a6474d0b4cb01c325acea1c83e04f22379.tar.gz
dispatch-ba9149a6474d0b4cb01c325acea1c83e04f22379.zip
feat(cli): add --open flag to model-name chat command
dispatch <model> --text "..." --open now starts a new conversation AND signals the frontend to open the tab — no need for a separate 'dispatch send --open' step.
Diffstat (limited to 'packages/cli/src')
-rw-r--r--packages/cli/src/args.test.ts4
-rw-r--r--packages/cli/src/args.ts6
-rw-r--r--packages/cli/src/main.ts10
3 files changed, 19 insertions, 1 deletions
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 [<prefix>] [--server <url>]
dispatch read <conversationId> [--server <url>]
dispatch send <conversationId> --text "..." [--queue] [--open] [--cwd <dir>] [--effort <level>] [--server <url>]
- dispatch <modelName> --text "..." [--file <path>] [--cwd <dir>] [--conversation <id>] [--effort <level>] [--server <url>] [--show-reasoning]
+ dispatch <modelName> --text "..." [--file <path>] [--cwd <dir>] [--conversation <id>] [--effort <level>] [--server <url>] [--show-reasoning] [--open]
dispatch --help
Effort levels: low, medium, high (default), xhigh, max`;
@@ -153,6 +153,14 @@ async function main(): Promise<void> {
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;
}