MCPcopy Index your code
hub / github.com/codeaashu/claude-code / runPowerShellCommand

Function runPowerShellCommand

src/tools/PowerShellTool/PowerShellTool.tsx:663–1000  ·  view source on GitHub ↗
({
  input,
  abortController,
  setAppState,
  setToolJSX,
  preventCwdChanges,
  isMainThread,
  toolUseId,
  agentId
}: {
  input: PowerShellToolInput;
  abortController: AbortController;
  setAppState: (f: (prev: AppState) => AppState) => void;
  setToolJSX?: SetToolJSXFn;
  preventCwdChanges?: boolean;
  isMainThread?: boolean;
  toolUseId?: string;
  agentId?: AgentId;
})

Source from the content-addressed store, hash-verified

661 }
662} satisfies ToolDef<InputSchema, Out>);
663async function* runPowerShellCommand({
664 input,
665 abortController,
666 setAppState,
667 setToolJSX,
668 preventCwdChanges,
669 isMainThread,
670 toolUseId,
671 agentId
672}: {
673 input: PowerShellToolInput;
674 abortController: AbortController;
675 setAppState: (f: (prev: AppState) => AppState) => void;
676 setToolJSX?: SetToolJSXFn;
677 preventCwdChanges?: boolean;
678 isMainThread?: boolean;
679 toolUseId?: string;
680 agentId?: AgentId;
681}): AsyncGenerator<{
682 type: 'progress';
683 output: string;
684 fullOutput: string;
685 elapsedTimeSeconds: number;
686 totalLines: number;
687 totalBytes: number;
688 taskId?: string;
689 timeoutMs?: number;
690}, ExecResult, void> {
691 const {
692 command,
693 description,
694 timeout,
695 run_in_background,
696 dangerouslyDisableSandbox
697 } = input;
698 const timeoutMs = Math.min(timeout || getDefaultTimeoutMs(), getMaxTimeoutMs());
699 let fullOutput = '';
700 let lastProgressOutput = '';
701 let lastTotalLines = 0;
702 let lastTotalBytes = 0;
703 let backgroundShellId: string | undefined = undefined;
704 let interruptBackgroundingStarted = false;
705 let assistantAutoBackgrounded = false;
706
707 // Progress signal: resolved when backgroundShellId is set in the async
708 // .then() path, waking the generator's Promise.race immediately instead of
709 // waiting for the next setTimeout tick (matches BashTool pattern).
710 let resolveProgress: (() => void) | null = null;
711 function createProgressSignal(): Promise<null> {
712 return new Promise<null>(resolve => {
713 resolveProgress = () => resolve(null);
714 });
715 }
716 const shouldAutoBackground = !isBackgroundTasksDisabled && isAutobackgroundingAllowed(command);
717 const powershellPath = await getCachedPowerShellPath();
718 if (!powershellPath) {
719 // Pre-flight failure: pwsh not installed. Return code 0 so call() surfaces
720 // this as a graceful stderr message rather than throwing ShellError — the

Callers 1

callFunction · 0.85

Calls 15

getCachedPowerShellPathFunction · 0.85
execFunction · 0.85
getPlatformFunction · 0.85
shouldUseSandboxFunction · 0.85
featureFunction · 0.85
getKairosActiveFunction · 0.85
logEventFunction · 0.85
registerForegroundFunction · 0.85
unregisterForegroundFunction · 0.85
startPollingMethod · 0.80
maxMethod · 0.80
stopPollingMethod · 0.80

Tested by

no test coverage detected