fix(coding-agent): do not inject bunfs script path into subagent prompts (#3002)

The presence of `process.argv[1]` in the current invocation does not
imply that the current `pi` process is being invoked as a script.
Specifically, in the case of a bun compiled binary, `process.argv[1]`
will be the virtual path `/$bunfs/root/pi`, which is not a real file on
the filesystem.  This causes the subagent extension to inject this path
into the child `pi` invocation, which is interpreted as part of the
prompt, which confuses the subagent.

This change uses the script only if it is not a bunfs virtual script

Co-authored-by: nathyong <nathyong@noreply.github.com>
This commit is contained in:
nathyong
2026-04-15 04:33:05 +10:00
committed by GitHub
parent ec4d413fc9
commit 462b3d21e3

View File

@@ -219,7 +219,8 @@ async function writePromptToTempFile(agentName: string, prompt: string): Promise
function getPiInvocation(args: string[]): { command: string; args: string[] } {
const currentScript = process.argv[1];
if (currentScript && fs.existsSync(currentScript)) {
const isBunVirtualScript = currentScript?.startsWith("/$bunfs/root/");
if (currentScript && !isBunVirtualScript && fs.existsSync(currentScript)) {
return { command: process.execPath, args: [currentScript, ...args] };
}