From c1e03f246445f5d235567723e59cace5d9b38f47 Mon Sep 17 00:00:00 2001 From: mitchell Date: Fri, 17 Apr 2026 22:52:09 -0400 Subject: [PATCH] refactor: move final rendering into Renderer class --- index.ts | 11 ++--------- src/render/index.ts | 19 +++++++++++++++++-- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/index.ts b/index.ts index f815384..554c645 100644 --- a/index.ts +++ b/index.ts @@ -91,16 +91,9 @@ async function main() { convo.messages.push({ role: "assistant", content: await text }); await convoFile.write(JSON.stringify(convo)); - if (!plainOut) { - const [width] = process.stdout.getWindowSize(); - await Bun.spawn({ - cmd: ["glow", "-w", `${width}`, "-"], - stdin: textStream, - stdout: "inherit", - }).exited; - } + await renderer.renderFinal(textStream); - renderer.renderStats(await totalUsage, start, stop); + await renderer.renderStats(totalUsage, start, stop); } await main(); diff --git a/src/render/index.ts b/src/render/index.ts index 0c9a006..9fa80d2 100644 --- a/src/render/index.ts +++ b/src/render/index.ts @@ -131,12 +131,27 @@ export default class Renderer { } } - renderStats(usage: LanguageModelUsage, start: number, stop: number) { - const { inputTokens, outputTokens } = usage; + async renderStats( + usage: PromiseLike, + start: number, + stop: number, + ) { + const { inputTokens, outputTokens } = await usage; const context = (inputTokens ?? 0) / 1000; const output = (outputTokens ?? 0) / 1000; const time = (stop - start) / 1000; const template = `Context: ${context.toFixed(1)}k, Output: ${output.toFixed(1)}k, Time: ${time.toFixed(2)}s\n`; process.stderr.write(chalkStderr.dim(template)); } + + async renderFinal(textStream: AsyncIterableStream) { + if (this.isPlain) return; + + const [width] = process.stdout.getWindowSize(); + await Bun.spawn({ + cmd: ["glow", "-w", `${width}`, "-"], + stdin: textStream, + stdout: "inherit", + }).exited; + } }