From f30c2a7f8213ab17c7911e771aef5df072d0898c Mon Sep 17 00:00:00 2001 From: Dotta Date: Wed, 15 Apr 2026 21:32:50 -0500 Subject: [PATCH] fix(dev-runner): restore bounded output handling --- scripts/dev-runner.ts | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/scripts/dev-runner.ts b/scripts/dev-runner.ts index b5956b0004a..a30096882a4 100644 --- a/scripts/dev-runner.ts +++ b/scripts/dev-runner.ts @@ -4,6 +4,7 @@ import { existsSync, mkdirSync, readdirSync, rmSync, statSync, writeFileSync } f import path from "node:path"; import { createInterface } from "node:readline/promises"; import { stdin, stdout } from "node:process"; +import { createCapturedOutputBuffer, parseJsonResponseWithLimit } from "./dev-runner-output.ts"; import { shouldTrackDevServerPath } from "./dev-runner-paths.mjs"; import { createDevServiceIdentity, repoRoot } from "./dev-service-profile.ts"; import { bootstrapDevRunnerWorktreeEnv } from "../server/src/dev-runner-worktree.ts"; @@ -385,27 +386,29 @@ async function runPnpm(args: string[], options: { shell: process.platform === "win32", }); - let stdoutBuffer = ""; - let stderrBuffer = ""; + const stdoutBuffer = createCapturedOutputBuffer(); + const stderrBuffer = createCapturedOutputBuffer(); if (spawned.stdout) { spawned.stdout.on("data", (chunk) => { - stdoutBuffer += String(chunk); + stdoutBuffer.append(chunk); }); } if (spawned.stderr) { spawned.stderr.on("data", (chunk) => { - stderrBuffer += String(chunk); + stderrBuffer.append(chunk); }); } spawned.on("error", reject); spawned.on("exit", (code, signal) => { + const stdout = stdoutBuffer.finish(); + const stderr = stderrBuffer.finish(); resolve({ code: code ?? 0, signal, - stdout: stdoutBuffer, - stderr: stderrBuffer, + stdout: stdout.text, + stderr: stderr.text, }); }); }); @@ -554,7 +557,7 @@ async function getDevHealthPayload() { if (!response.ok) { throw new Error(`Health request failed (${response.status})`); } - return await response.json(); + return await parseJsonResponseWithLimit(response); } async function waitForChildExit() {