( toolName: string, toolUseID: string, toolInput: ToolInput, error: string, toolUseContext: ToolUseContext, isInterrupt?: boolean, permissionMode?: string, signal?: AbortSignal, timeoutMs: number = TOOL_HOOK_EXECUTION_TIMEOUT_MS, )
| 3634 | * @returns Async generator that yields progress messages and blocking errors |
| 3635 | */ |
| 3636 | export async function* executePostToolUseFailureHooks<ToolInput>( |
| 3637 | toolName: string, |
| 3638 | toolUseID: string, |
| 3639 | toolInput: ToolInput, |
| 3640 | error: string, |
| 3641 | toolUseContext: ToolUseContext, |
| 3642 | isInterrupt?: boolean, |
| 3643 | permissionMode?: string, |
| 3644 | signal?: AbortSignal, |
| 3645 | timeoutMs: number = TOOL_HOOK_EXECUTION_TIMEOUT_MS, |
| 3646 | ): AsyncGenerator<AggregatedHookResult> { |
| 3647 | const appState = toolUseContext.getAppState() |
| 3648 | const sessionId = toolUseContext.agentId ?? getSessionId() |
| 3649 | if (!hasHookForEvent('PostToolUseFailure', appState, sessionId)) { |
| 3650 | return |
| 3651 | } |
| 3652 | |
| 3653 | const hookInput: PostToolUseFailureHookInput = { |
| 3654 | ...createBaseHookInput(permissionMode, undefined, toolUseContext), |
| 3655 | hook_event_name: 'PostToolUseFailure', |
| 3656 | tool_name: toolName, |
| 3657 | tool_input: toolInput, |
| 3658 | tool_use_id: toolUseID, |
| 3659 | error, |
| 3660 | is_interrupt: isInterrupt, |
| 3661 | } |
| 3662 | |
| 3663 | yield* executeHooks({ |
| 3664 | hookInput, |
| 3665 | toolUseID, |
| 3666 | matchQuery: toolName, |
| 3667 | signal, |
| 3668 | timeoutMs, |
| 3669 | toolUseContext, |
| 3670 | }) |
| 3671 | } |
| 3672 | |
| 3673 | export async function* executePermissionDeniedHooks<ToolInput>( |
| 3674 | toolName: string, |
no test coverage detected