All files / server/services/sandbox/execution-phases router-phase.ts

100% Statements 3/3
75% Branches 3/4
100% Functions 1/1
100% Lines 3/3

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30                                      16x 16x   16x              
// router-phase.ts
// Pure routing logic: decides between Docker and Local execution
// Extracted from ExecutionManager.setupSimulationProcess()
 
import { config } from "../../../config";
import type { ExecutionState } from "../execution-manager";
 
interface RouterDecision {
  useDocker: boolean;
  shouldThrowOnNoDocker: boolean;
}
 
/**
 * Pure routing function: decides between Docker and Local execution
 * 
 * @param state - Current execution state
 * @returns RouterDecision with routing information
 */
export function decideExecutionRoute(state: ExecutionState): RouterDecision {
  const useDocker = !!(state.dockerAvailable && state.dockerImageBuilt);
  const shouldThrowOnNoDocker = config.serverMode === "docker" && config.simulationMode === "docker-sandbox";
 
  return {
    useDocker,
    shouldThrowOnNoDocker,
  };
}