From 4ce9caed0415fba0f489ffe1645d97bd571cf376 Mon Sep 17 00:00:00 2001 From: Teknium <127238744+teknium1@users.noreply.github.com> Date: Sun, 7 Jun 2026 18:23:42 -0700 Subject: [PATCH] fix(tui): type execFileNoThrow stdio/ChildProcess and make memoryMonitor critical test heap-independent (#40612) Salvaged from #40415; re-verified on main, tightened, tested. Co-authored-by: psionic73 --- .../packages/hermes-ink/src/utils/execFileNoThrow.ts | 10 +++++----- ui-tui/src/__tests__/memoryMonitor.test.ts | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ui-tui/packages/hermes-ink/src/utils/execFileNoThrow.ts b/ui-tui/packages/hermes-ink/src/utils/execFileNoThrow.ts index 13780c8027c..a4e32ed14b3 100644 --- a/ui-tui/packages/hermes-ink/src/utils/execFileNoThrow.ts +++ b/ui-tui/packages/hermes-ink/src/utils/execFileNoThrow.ts @@ -1,4 +1,4 @@ -import { spawn } from 'child_process' +import { spawn, type ChildProcess, type StdioOptions } from 'child_process' type ExecFileOptions = { input?: string timeout?: number @@ -32,11 +32,11 @@ export function execFileNoThrow( // doesn't inherit those pipe FDs — prevents handle leaks that can // keep the parent process alive. No output data is collected in // this mode; both stdout and stderr will be empty strings. - const stdioConfig = options.resolveOnExit - ? ['pipe', 'ignore', 'ignore'] as const - : 'pipe' as const + const stdioConfig: StdioOptions = options.resolveOnExit + ? ['pipe', 'ignore', 'ignore'] + : 'pipe' - const child = spawn(file, args, { + const child: ChildProcess = spawn(file, args, { cwd: options.useCwd ? process.cwd() : undefined, env: options.env, stdio: stdioConfig diff --git a/ui-tui/src/__tests__/memoryMonitor.test.ts b/ui-tui/src/__tests__/memoryMonitor.test.ts index f79d7aa9d4c..0a8d853398f 100644 --- a/ui-tui/src/__tests__/memoryMonitor.test.ts +++ b/ui-tui/src/__tests__/memoryMonitor.test.ts @@ -42,7 +42,7 @@ describe('startMemoryMonitor thresholds (#34095)', () => { // ceiling. With relative thresholds (~88%), 2.5GB is well within normal. const onCritical = vi.fn() withHeap(2.5 * GB) - stop = startMemoryMonitor({ intervalMs: 1, onCritical }) + stop = startMemoryMonitor({ criticalBytes: 7 * GB, highBytes: 5 * GB, intervalMs: 1, onCritical }) await vi.advanceTimersByTimeAsync(5)