Merge pull request #379 from ruan-cat/fix/websearch-windows-spawnSync

fix(websearch): add shell option for Windows spawnSync compatibility
This commit is contained in:
Kai (Tam Nhu) Tran
2026-01-27 15:11:42 -05:00
committed by GitHub
+15 -1
View File
@@ -26,6 +26,18 @@
const { spawnSync } = require('child_process');
// ============================================================================
// PLATFORM DETECTION
// ============================================================================
/**
* Windows platform flag - used for shell option in spawnSync calls.
* On Windows, globally installed CLI tools via npm/pnpm are .cmd/.bat files,
* which require shell: true to execute properly.
* @see https://github.com/kaitranntt/ccs/issues/378
*/
const isWindows = process.platform === 'win32';
// ============================================================================
// CONFIGURATION - Edit these for prompt engineering
// ============================================================================
@@ -154,7 +166,6 @@ process.stdin.on('error', () => {
*/
function isCliAvailable(cmd) {
try {
const isWindows = process.platform === 'win32';
const whichCmd = isWindows ? 'where.exe' : 'which';
const result = spawnSync(whichCmd, [cmd], {
@@ -292,6 +303,7 @@ function tryGeminiSearch(query, timeoutSec = DEFAULT_TIMEOUT_SEC) {
timeout: timeoutMs,
maxBuffer: 1024 * 1024 * 2,
stdio: ['pipe', 'pipe', 'pipe'],
shell: isWindows,
}
);
@@ -358,6 +370,7 @@ function tryOpenCodeSearch(query, timeoutSec = DEFAULT_TIMEOUT_SEC) {
timeout: timeoutMs,
maxBuffer: 1024 * 1024 * 2,
stdio: ['pipe', 'pipe', 'pipe'],
shell: isWindows,
}
);
@@ -417,6 +430,7 @@ function tryGrokSearch(query, timeoutSec = DEFAULT_TIMEOUT_SEC) {
timeout: timeoutMs,
maxBuffer: 1024 * 1024 * 2,
stdio: ['pipe', 'pipe', 'pipe'],
shell: isWindows,
});
if (spawnResult.error) {