summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAdam Malczewski <[email protected]>2026-06-21 23:04:27 +0900
committerAdam Malczewski <[email protected]>2026-06-21 23:04:27 +0900
commite2f7ce2782b46619442d422743ecb8959fd4fc59 (patch)
treebb8f21f5f337fb1d8beb2cd5bc154788c33df8f7
parent9797e095b7c268cf2d4e7b8d35a5f04a7d363fb1 (diff)
downloaddispatch-e2f7ce2782b46619442d422743ecb8959fd4fc59.tar.gz
dispatch-e2f7ce2782b46619442d422743ecb8959fd4fc59.zip
fix(cli): fire --open signal before streaming starts, not after
For both 'send' and 'chat' commands, the --open signal now fires immediately after the conversation ID is known (before stream consumption), so the frontend opens the tab right away instead of waiting for the turn to complete.
-rw-r--r--packages/cli/src/main.ts32
1 files changed, 16 insertions, 16 deletions
diff --git a/packages/cli/src/main.ts b/packages/cli/src/main.ts
index 365096a..6df6e23 100644
--- a/packages/cli/src/main.ts
+++ b/packages/cli/src/main.ts
@@ -101,6 +101,14 @@ async function main(): Promise<void> {
}
const conversationId = resolved;
+ if (parsed.open) {
+ await openConversation(
+ { fetchImpl: globalThis.fetch },
+ { server: parsed.server, conversationId },
+ );
+ process.stdout.write(`Signaled frontend to open ${conversationId}\n`);
+ }
+
if (parsed.queue) {
const queued = await enqueueMessage(
{ fetchImpl: globalThis.fetch },
@@ -133,14 +141,6 @@ async function main(): Promise<void> {
process.stdout.write(`${extractLastText(collected)}\n`);
process.stdout.write(`[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;
}
case "chat": {
@@ -162,6 +162,14 @@ async function main(): Promise<void> {
{ server: parsed.server, request },
);
+ if (conversationId && parsed.open) {
+ await openConversation(
+ { fetchImpl: globalThis.fetch },
+ { server: parsed.server, conversationId },
+ );
+ process.stdout.write(`Signaled frontend to open ${conversationId}\n`);
+ }
+
for await (const event of events) {
const rendered = renderEvent(event, { showReasoning: parsed.showReasoning });
if (rendered?.stdout) process.stdout.write(rendered.stdout);
@@ -170,14 +178,6 @@ 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;
}