MCPcopy Create free account
hub / github.com/claude-code-best/claude-code / executeHookCallback

Function executeHookCallback

src/utils/hooks.ts:5008–5064  ·  view source on GitHub ↗
({
  toolUseID,
  hook,
  hookEvent,
  hookInput,
  signal,
  hookIndex,
  toolUseContext,
}: {
  toolUseID: string
  hook: HookCallback
  hookEvent: HookEvent
  hookInput: HookInput
  signal: AbortSignal
  hookIndex?: number
  toolUseContext?: ToolUseContext
})

Source from the content-addressed store, hash-verified

5006}
5007
5008async function executeHookCallback({
5009 toolUseID,
5010 hook,
5011 hookEvent,
5012 hookInput,
5013 signal,
5014 hookIndex,
5015 toolUseContext,
5016}: {
5017 toolUseID: string
5018 hook: HookCallback
5019 hookEvent: HookEvent
5020 hookInput: HookInput
5021 signal: AbortSignal
5022 hookIndex?: number
5023 toolUseContext?: ToolUseContext
5024}): Promise<HookResult> {
5025 // Create context for callbacks that need state access
5026 const context = toolUseContext
5027 ? {
5028 getAppState: toolUseContext.getAppState,
5029 updateAttributionState: toolUseContext.updateAttributionState,
5030 }
5031 : undefined
5032 const json = await hook.callback(
5033 hookInput,
5034 toolUseID,
5035 signal,
5036 hookIndex,
5037 context,
5038 )
5039 if (isAsyncHookJSONOutput(json)) {
5040 return {
5041 outcome: 'success',
5042 hook,
5043 }
5044 }
5045
5046 const processed = processHookJSONOutput({
5047 json,
5048 command: 'callback',
5049 // TODO: If the hook came from a plugin, use the full path to the plugin for easier debugging
5050 hookName: `${hookEvent}:Callback`,
5051 toolUseID,
5052 hookEvent,
5053 expectedHookEvent: hookEvent,
5054 // Callbacks don't have stdout/stderr/exitCode
5055 stdout: undefined,
5056 stderr: undefined,
5057 exitCode: undefined,
5058 })
5059 return {
5060 ...processed,
5061 outcome: 'success',
5062 hook,
5063 }
5064}
5065

Callers 1

executeHooksFunction · 0.85

Calls 2

isAsyncHookJSONOutputFunction · 0.85
processHookJSONOutputFunction · 0.85

Tested by

no test coverage detected