MCPcopy Create free account
hub / github.com/WJX20/claude-code / executePreToolHooks

Function executePreToolHooks

src/utils/hooks.ts:3480–3522  ·  view source on GitHub ↗
(
  toolName: string,
  toolUseID: string,
  toolInput: ToolInput,
  toolUseContext: ToolUseContext,
  permissionMode?: string,
  signal?: AbortSignal,
  timeoutMs: number = TOOL_HOOK_EXECUTION_TIMEOUT_MS,
  requestPrompt?: (
    sourceName: string,
    toolInputSummary?: string | null,
  ) => (request: PromptRequest) => Promise<PromptResponse>,
  toolInputSummary?: string | null,
)

Source from the content-addressed store, hash-verified

3478 * @returns Async generator that yields progress messages and returns blocking errors
3479 */
3480export async function* executePreToolHooks<ToolInput>(
3481 toolName: string,
3482 toolUseID: string,
3483 toolInput: ToolInput,
3484 toolUseContext: ToolUseContext,
3485 permissionMode?: string,
3486 signal?: AbortSignal,
3487 timeoutMs: number = TOOL_HOOK_EXECUTION_TIMEOUT_MS,
3488 requestPrompt?: (
3489 sourceName: string,
3490 toolInputSummary?: string | null,
3491 ) => (request: PromptRequest) => Promise<PromptResponse>,
3492 toolInputSummary?: string | null,
3493): AsyncGenerator<AggregatedHookResult> {
3494 const appState = toolUseContext.getAppState()
3495 const sessionId = toolUseContext.agentId ?? getSessionId()
3496 if (!hasHookForEvent('PreToolUse', appState, sessionId)) {
3497 return
3498 }
3499
3500 logForDebugging(`executePreToolHooks called for tool: ${toolName}`, {
3501 level: 'verbose',
3502 })
3503
3504 const hookInput: PreToolUseHookInput = {
3505 ...createBaseHookInput(permissionMode, undefined, toolUseContext),
3506 hook_event_name: 'PreToolUse',
3507 tool_name: toolName,
3508 tool_input: toolInput,
3509 tool_use_id: toolUseID,
3510 }
3511
3512 yield* executeHooks({
3513 hookInput,
3514 toolUseID,
3515 matchQuery: toolName,
3516 signal,
3517 timeoutMs,
3518 toolUseContext,
3519 requestPrompt,
3520 toolInputSummary,
3521 })
3522}
3523
3524/**
3525 * Execute post-tool hooks if configured

Callers 1

runPreToolUseHooksFunction · 0.85

Calls 5

getSessionIdFunction · 0.85
hasHookForEventFunction · 0.85
logForDebuggingFunction · 0.85
createBaseHookInputFunction · 0.85
executeHooksFunction · 0.85

Tested by

no test coverage detected