diff options
| author | Adam Malczewski <[email protected]> | 2026-06-21 23:04:27 +0900 |
|---|---|---|
| committer | Adam Malczewski <[email protected]> | 2026-06-21 23:04:27 +0900 |
| commit | e2f7ce2782b46619442d422743ecb8959fd4fc59 (patch) | |
| tree | bb8f21f5f337fb1d8beb2cd5bc154788c33df8f7 | |
| parent | 9797e095b7c268cf2d4e7b8d35a5f04a7d363fb1 (diff) | |
| download | dispatch-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.ts | 32 |
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; } |
