From a0a922c868dedcf916255b50cd0c42b78f8cb434 Mon Sep 17 00:00:00 2001 From: George Levis Date: Tue, 26 May 2026 12:53:56 +0300 Subject: [PATCH] fix(cli): drain stdout before exit in export command Large export output was truncated when piped because stdout writes weren't fully flushed before process exit. Added explicit drain/wait to ensure complete output delivery. Fixes #29330 --- packages/opencode/src/cli/cmd/export.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/opencode/src/cli/cmd/export.ts b/packages/opencode/src/cli/cmd/export.ts index 9eb1faffea7f..9b92d6969a83 100644 --- a/packages/opencode/src/cli/cmd/export.ts +++ b/packages/opencode/src/cli/cmd/export.ts @@ -287,5 +287,15 @@ const run = Effect.fn("Cli.export.body")(function* (args: { sessionID?: string; process.stdout.write(JSON.stringify(args.sanitize ? sanitize(exportData) : exportData, null, 2)) process.stdout.write(EOL) + + if (!process.stdout.isTTY) { + yield* Effect.promise( + () => + new Promise((resolve) => { + process.stdout.once("drain", resolve) + setTimeout(resolve, 1000) + }), + ) + } }).pipe(Effect.catchCause(() => fail(`Session not found: ${sessionID!}`))) })