feat(FN-2689): standardize cross-platform shell selection

- Add engine shell utility to resolve the correct shell per platform
- Update routine runner to execute commands through shared shell selection
- Update cron runner to use the same cross-platform shell behavior
- Apply shared shell handling in dashboard routes for command execution
- Add shell utility tests covering platform-specific selection behavior
This commit is contained in:
Fusion
2026-04-27 08:33:03 -07:00
committed by gsxdsm
parent e877d99262
commit db95f77d7b
5 changed files with 28 additions and 4 deletions

View File

@@ -24,6 +24,7 @@ import type {
import type { HeartbeatMonitor } from "./agent-heartbeat.js";
import type { AiPromptExecutor } from "./cron-runner.js";
import { createLogger } from "./logger.js";
import { defaultShell } from "./shell-utils.js";
const log = createLogger("routine-runner");
const execAsync = promisify(exec);
@@ -264,7 +265,7 @@ export class RoutineRunner {
const { stdout, stderr } = await execAsync(command, {
timeout: timeoutMs ?? DEFAULT_TIMEOUT_MS,
maxBuffer: MAX_BUFFER,
shell: "/bin/sh",
shell: defaultShell,
});
return {