From 0dbd12e295a0a1df92915b0b3016397a1c49a296 Mon Sep 17 00:00:00 2001 From: Olcan Date: Fri, 30 May 2025 23:25:44 -0700 Subject: [PATCH] expose shell process group id to model, along with instructions for how to terminate or signal the group (#645) --- packages/core/src/tools/shell.md | 4 +++- packages/core/src/tools/shell.ts | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/core/src/tools/shell.md b/packages/core/src/tools/shell.md index 069a76db..17c39196 100644 --- a/packages/core/src/tools/shell.md +++ b/packages/core/src/tools/shell.md @@ -1,6 +1,7 @@ This tool executes a given shell command as `bash -c `. Command can start background processes using `&`. -Command itself is executed as a subprocess. +Command is executed as a subprocess that leads its own process group. +Command process group can be terminated as `kill -- -PGID` or signaled as `kill -s SIGNAL -- -PGID`. The following information is returned: @@ -12,3 +13,4 @@ Error: Error or `(none)` if no error was reported for the subprocess. Exit Code: Exit code or `(none)` if terminated by signal. Signal: Signal number or `(none)` if no signal was received. Background PIDs: List of background processes started or `(none)`. +Process Group PGID: Process group started or `(none)` diff --git a/packages/core/src/tools/shell.ts b/packages/core/src/tools/shell.ts index 4efc3500..d0cad218 100644 --- a/packages/core/src/tools/shell.ts +++ b/packages/core/src/tools/shell.ts @@ -282,6 +282,7 @@ export class ShellTool extends BaseTool { `Exit Code: ${code ?? '(none)'}`, `Signal: ${processSignal ?? '(none)'}`, `Background PIDs: ${backgroundPIDs.length ? backgroundPIDs.join(', ') : '(none)'}`, + `Process Group PGID: ${shell.pid ?? '(none)'}`, ].join('\n'); }