summaryrefslogtreecommitdiffhomepage
path: root/packages/cli/src/args.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/args.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/args.ts')
-rw-r--r--packages/cli/src/args.ts23
1 files changed, 23 insertions, 0 deletions
diff --git a/packages/cli/src/args.ts b/packages/cli/src/args.ts
index 4d6652e..d4ed0e9 100644
--- a/packages/cli/src/args.ts
+++ b/packages/cli/src/args.ts
@@ -28,6 +28,7 @@ export type ParsedCommand =
readonly open: boolean;
}
| { readonly kind: "list"; readonly server: string; readonly query?: string }
+ | { readonly kind: "open"; readonly server: string; readonly conversationId: string }
| { readonly kind: "read"; readonly server: string; readonly conversationId: string }
| {
readonly kind: "send";
@@ -110,6 +111,28 @@ export function parseArgs(argv: readonly string[], opts: ParseOpts): ParsedComma
return { kind: "read", server, conversationId };
}
+ if (first === "open") {
+ let server = opts.defaultServer;
+ let conversationId: string | undefined;
+ for (let i = 1; i < argv.length; i++) {
+ const arg = argv[i] as string;
+ if (arg === "--server") {
+ if (i + 1 >= argv.length) return { kind: "error", message: "--server requires a value" };
+ server = argv[++i] as string;
+ } else if (arg.startsWith("--")) {
+ return { kind: "error", message: `Unknown flag: ${arg}` };
+ } else if (conversationId !== undefined) {
+ return { kind: "error", message: `Unexpected argument for 'open': ${arg}` };
+ } else {
+ conversationId = arg;
+ }
+ }
+ if (conversationId === undefined) {
+ return { kind: "error", message: "'open' requires a conversation id" };
+ }
+ return { kind: "open", server, conversationId };
+ }
+
if (first === "send") {
let server = opts.defaultServer;
let conversationId: string | undefined;