import { BASH_TOOL_NAME } from '../../tools/BashTool/toolName.js' import { POWERSHELL_TOOL_NAME } from '../../tools/PowerShellTool/toolName.js' import { isEnvDefinedFalsy, isEnvTruthy } from '../envUtils.js' import { getPlatform } from '../platform.js' export const SHELL_TOOL_NAMES: string[] = [BASH_TOOL_NAME, POWERSHELL_TOOL_NAME] /** * Runtime gate for PowerShellTool. Windows-only (the permission engine uses * Win32-specific path normalizations). Ant defaults on (opt-out via env=0); * external defaults off (opt-in via env=1). * * Used by tools.ts (tool-list visibility), processBashCommand (! routing), * and promptShellExecution (skill frontmatter routing) so the gate is * consistent across all paths that invoke PowerShellTool.call(). */ export function isPowerShellToolEnabled(): boolean { if (getPlatform() !== 'windows') return false return process.env.USER_TYPE === 'ant' ? !isEnvDefinedFalsy(process.env.CLAUDE_CODE_USE_POWERSHELL_TOOL) : isEnvTruthy(process.env.CLAUDE_CODE_USE_POWERSHELL_TOOL) }