fix: skip shell wrapper for .exe files in canExecute on Windows
spawnSync with shell:true passes unquoted paths to cmd.exe, which fails when the path contains spaces (e.g. 'C:\Program Files\...\opencode.exe'). .exe files are native executables that do not need a shell, so only enable shell:true for .cmd/.bat/.ps1 shims that require it.