Reproduction
The JavaScript package's exact-argv mode is ideal for native executables:
new ProcessRunner({ mode: "exec", file, args })
On Windows, command shims such as VS Code's code.cmd require a shell. The shell spec accepts only a completed command string:
new ProcessRunner({ mode: "shell", command })
There is no supported executable-plus-args form that delegates Windows command-line construction to Node. The exported quote() helper uses POSIX single quotes, which cmd.exe does not recognize, so consumers cannot safely assemble arbitrary arguments themselves.
Requested interface
Please support { mode: "shell", file, args } with platform-correct argument handling, or expose a Windows-safe command builder for the cmd.exe shell path.
Downstream workaround
link-assistant/formal-ai#990 routes asynchronous native executable boundaries through command-stream, but temporarily retains child_process.spawn(file, args, { shell: true }) for its Windows-only code.cmd --install-extension ... boundary.
Reproduction
The JavaScript package's exact-argv mode is ideal for native executables:
On Windows, command shims such as VS Code's
code.cmdrequire a shell. The shell spec accepts only a completed command string:There is no supported executable-plus-args form that delegates Windows command-line construction to Node. The exported
quote()helper uses POSIX single quotes, whichcmd.exedoes not recognize, so consumers cannot safely assemble arbitrary arguments themselves.Requested interface
Please support
{ mode: "shell", file, args }with platform-correct argument handling, or expose a Windows-safe command builder for thecmd.exeshell path.Downstream workaround
link-assistant/formal-ai#990 routes asynchronous native executable boundaries through command-stream, but temporarily retains
child_process.spawn(file, args, { shell: true })for its Windows-onlycode.cmd --install-extension ...boundary.