( toolName: string, toolUseID: string, toolInput: ToolInput, error: string, toolUseContext: ToolUseContext, isInterrupt?: boolean, permissionMode?: string, signal?: AbortSignal, timeoutMs: number = TOOL_HOOK_EXECUTION_TIMEOUT_MS, )
| 3490 | * @returns Async generator that yields progress messages and blocking errors |
| 3491 | */ |
| 3492 | export async function* executePostToolUseFailureHooks<ToolInput>( |
| 3493 | toolName: string, |
| 3494 | toolUseID: string, |
| 3495 | toolInput: ToolInput, |
| 3496 | error: string, |
| 3497 | toolUseContext: ToolUseContext, |
| 3498 | isInterrupt?: boolean, |
| 3499 | permissionMode?: string, |
| 3500 | signal?: AbortSignal, |
| 3501 | timeoutMs: number = TOOL_HOOK_EXECUTION_TIMEOUT_MS, |
| 3502 | ): AsyncGenerator<AggregatedHookResult> { |
| 3503 | const appState = toolUseContext.getAppState() |
| 3504 | const sessionId = toolUseContext.agentId ?? getSessionId() |
| 3505 | if (!hasHookForEvent('PostToolUseFailure', appState, sessionId)) { |
| 3506 | return |
| 3507 | } |
| 3508 | |
| 3509 | const hookInput: PostToolUseFailureHookInput = { |
| 3510 | ...createBaseHookInput(permissionMode, undefined, toolUseContext), |
| 3511 | hook_event_name: 'PostToolUseFailure', |
| 3512 | tool_name: toolName, |
| 3513 | tool_input: toolInput, |
| 3514 | tool_use_id: toolUseID, |
| 3515 | error, |
| 3516 | is_interrupt: isInterrupt, |
| 3517 | } |
| 3518 | |
| 3519 | yield* executeHooks({ |
| 3520 | hookInput, |
| 3521 | toolUseID, |
| 3522 | matchQuery: toolName, |
| 3523 | signal, |
| 3524 | timeoutMs, |
| 3525 | toolUseContext, |
| 3526 | }) |
| 3527 | } |
| 3528 | |
| 3529 | export async function* executePermissionDeniedHooks<ToolInput>( |
| 3530 | toolName: string, |
no test coverage detected