(
prompt: string,
permissionMode: string,
toolUseContext: ToolUseContext,
requestPrompt?: (
sourceName: string,
toolInputSummary?: string | null,
) => (request: PromptRequest) => Promise<PromptResponse>,
)
| 3919 | * @returns Async generator that yields progress messages and hook results |
| 3920 | */ |
| 3921 | export async function* executeUserPromptSubmitHooks( |
| 3922 | prompt: string, |
| 3923 | permissionMode: string, |
| 3924 | toolUseContext: ToolUseContext, |
| 3925 | requestPrompt?: ( |
| 3926 | sourceName: string, |
| 3927 | toolInputSummary?: string | null, |
| 3928 | ) => (request: PromptRequest) => Promise<PromptResponse>, |
| 3929 | ): AsyncGenerator<AggregatedHookResult> { |
| 3930 | const appState = toolUseContext.getAppState() |
| 3931 | const sessionId = toolUseContext.agentId ?? getSessionId() |
| 3932 | if (!hasHookForEvent('UserPromptSubmit', appState, sessionId)) { |
| 3933 | return |
| 3934 | } |
| 3935 | |
| 3936 | const hookInput: UserPromptSubmitHookInput = { |
| 3937 | ...createBaseHookInput(permissionMode), |
| 3938 | hook_event_name: 'UserPromptSubmit', |
| 3939 | prompt, |
| 3940 | } |
| 3941 | |
| 3942 | yield* executeHooks({ |
| 3943 | hookInput, |
| 3944 | toolUseID: randomUUID(), |
| 3945 | signal: toolUseContext.abortController.signal, |
| 3946 | timeoutMs: TOOL_HOOK_EXECUTION_TIMEOUT_MS, |
| 3947 | toolUseContext, |
| 3948 | requestPrompt, |
| 3949 | }) |
| 3950 | } |
| 3951 | |
| 3952 | /** |
| 3953 | * Execute session start hooks if configured |
no test coverage detected