From a3b557222a95965de39920922df21439d69def57 Mon Sep 17 00:00:00 2001 From: Olcan Date: Fri, 30 May 2025 01:35:03 -0700 Subject: tweaks to shell abort logic based on feedback (#618) --- packages/server/src/tools/shell.ts | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) (limited to 'packages/server/src') diff --git a/packages/server/src/tools/shell.ts b/packages/server/src/tools/shell.ts index a4634a3e..b43b2d0a 100644 --- a/packages/server/src/tools/shell.ts +++ b/packages/server/src/tools/shell.ts @@ -200,21 +200,16 @@ export class ShellTool extends BaseTool { }; shell.on('exit', exitHandler); - const abortHandler = () => { + const abortHandler = async () => { if (shell.pid && !exited) { try { // attempt to SIGTERM process group (negative PID) - // if SIGTERM fails after 200ms, attempt SIGKILL + // fall back to SIGKILL (to group) after 200ms process.kill(-shell.pid, 'SIGTERM'); - setTimeout(() => { - try { - if (shell.pid && !exited) { - process.kill(-shell.pid, 'SIGKILL'); - } - } catch (_e) { - console.error(`failed to kill shell process ${shell.pid}: ${_e}`); - } - }, 200); + await new Promise((resolve) => setTimeout(resolve, 200)); + if (shell.pid && !exited) { + process.kill(-shell.pid, 'SIGKILL'); + } } catch (_e) { // if group kill fails, fall back to killing just the main process try { -- cgit v1.2.3