summaryrefslogtreecommitdiffhomepage
path: root/packages/cli/src/main.ts
diff options
context:
space:
mode:
authorAdam Malczewski <[email protected]>2026-06-21 22:55:31 +0900
committerAdam Malczewski <[email protected]>2026-06-21 22:55:31 +0900
commit9797e095b7c268cf2d4e7b8d35a5f04a7d363fb1 (patch)
treea85cf5240037d019624ac194e4650c7b2f8d8ab2 /packages/cli/src/main.ts
parentf518ae6f98681225d921c66985f1115d20119f00 (diff)
downloaddispatch-9797e095b7c268cf2d4e7b8d35a5f04a7d363fb1.tar.gz
dispatch-9797e095b7c268cf2d4e7b8d35a5f04a7d363fb1.zip
feat(cli): add 'open' command to signal frontend without sending a message
dispatch open <conversationId> broadcasts a conversation.open WS message to all connected frontend clients without sending any message. Useful after 'read' or 'send --queue' when you just want the frontend to open/focus a conversation's tab.
Diffstat (limited to 'packages/cli/src/main.ts')
-rw-r--r--packages/cli/src/main.ts17
1 files changed, 17 insertions, 0 deletions
diff --git a/packages/cli/src/main.ts b/packages/cli/src/main.ts
index 04e7231..365096a 100644
--- a/packages/cli/src/main.ts
+++ b/packages/cli/src/main.ts
@@ -24,6 +24,7 @@ const USAGE = `Usage:
dispatch models [--server <url>]
dispatch list [<prefix>] [--server <url>]
dispatch read <conversationId> [--server <url>]
+ dispatch open <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] [--open]
dispatch --help
@@ -73,6 +74,22 @@ async function main(): Promise<void> {
if (last.content.length > 0) process.stdout.write(`${last.content}\n`);
break;
}
+ case "open": {
+ const resolved = await resolveConversationId(
+ { fetchImpl: globalThis.fetch },
+ { server: parsed.server, shortId: parsed.conversationId },
+ );
+ if (typeof resolved !== "string") {
+ process.stderr.write(`${resolved.error}\n`);
+ process.exit(1);
+ }
+ await openConversation(
+ { fetchImpl: globalThis.fetch },
+ { server: parsed.server, conversationId: resolved },
+ );
+ process.stdout.write(`Signaled frontend to open ${resolved}\n`);
+ break;
+ }
case "send": {
const resolved = await resolveConversationId(
{ fetchImpl: globalThis.fetch },