summaryrefslogtreecommitdiffhomepage
path: root/packages/cli/src/args.test.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.test.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.test.ts')
-rw-r--r--packages/cli/src/args.test.ts31
1 files changed, 31 insertions, 0 deletions
diff --git a/packages/cli/src/args.test.ts b/packages/cli/src/args.test.ts
index 70a4868..62bcafd 100644
--- a/packages/cli/src/args.test.ts
+++ b/packages/cli/src/args.test.ts
@@ -325,4 +325,35 @@ describe("parseArgs", () => {
expect(result.kind).toBe("error");
});
});
+
+ describe("open", () => {
+ it("parses 'open' with conversation id", () => {
+ expect(parseArgs(["open", "deadbeef"], { defaultServer })).toEqual({
+ kind: "open",
+ server: "http://localhost:24203",
+ conversationId: "deadbeef",
+ });
+ });
+
+ it("parses 'open' with --server", () => {
+ expect(
+ parseArgs(["open", "deadbeef", "--server", "http://example.com"], { defaultServer }),
+ ).toEqual({
+ kind: "open",
+ server: "http://example.com",
+ conversationId: "deadbeef",
+ });
+ });
+
+ it("requires a conversation id", () => {
+ const result = parseArgs(["open"], { defaultServer });
+ expect(result.kind).toBe("error");
+ if (result.kind === "error") expect(result.message).toContain("conversation id");
+ });
+
+ it("rejects unknown flags", () => {
+ const result = parseArgs(["open", "deadbeef", "--bogus"], { defaultServer });
+ expect(result.kind).toBe("error");
+ });
+ });
});