(
prompt: string,
permissionMode: string,
toolUseContext: ToolUseContext,
requestPrompt?: (
sourceName: string,
toolInputSummary?: string | null,
) => (request: PromptRequest) => Promise<PromptResponse>,
)
| 3824 | * @returns Async generator that yields progress messages and hook results |
| 3825 | */ |
| 3826 | export async function* executeUserPromptSubmitHooks( |
| 3827 | prompt: string, |
| 3828 | permissionMode: string, |
| 3829 | toolUseContext: ToolUseContext, |
| 3830 | requestPrompt?: ( |
| 3831 | sourceName: string, |
| 3832 | toolInputSummary?: string | null, |
| 3833 | ) => (request: PromptRequest) => Promise<PromptResponse>, |
| 3834 | ): AsyncGenerator<AggregatedHookResult> { |
| 3835 | const appState = toolUseContext.getAppState() |
| 3836 | const sessionId = toolUseContext.agentId ?? getSessionId() |
| 3837 | if (!hasHookForEvent('UserPromptSubmit', appState, sessionId)) { |
| 3838 | return |
| 3839 | } |
| 3840 | |
| 3841 | const hookInput: UserPromptSubmitHookInput = { |
| 3842 | ...createBaseHookInput(permissionMode), |
| 3843 | hook_event_name: 'UserPromptSubmit', |
| 3844 | prompt, |
| 3845 | } |
| 3846 | |
| 3847 | yield* executeHooks({ |
| 3848 | hookInput, |
| 3849 | toolUseID: randomUUID(), |
| 3850 | signal: toolUseContext.abortController.signal, |
| 3851 | timeoutMs: TOOL_HOOK_EXECUTION_TIMEOUT_MS, |
| 3852 | toolUseContext, |
| 3853 | requestPrompt, |
| 3854 | }) |
| 3855 | } |
| 3856 | |
| 3857 | /** |
| 3858 | * Execute session start hooks if configured |
no test coverage detected