(
prompt: string,
permissionMode: string,
toolUseContext: ToolUseContext,
requestPrompt?: (
sourceName: string,
toolInputSummary?: string | null,
) => (request: PromptRequest) => Promise<PromptResponse>,
)
| 3983 | * @returns Async generator that yields progress messages and hook results |
| 3984 | */ |
| 3985 | export async function* executeUserPromptSubmitHooks( |
| 3986 | prompt: string, |
| 3987 | permissionMode: string, |
| 3988 | toolUseContext: ToolUseContext, |
| 3989 | requestPrompt?: ( |
| 3990 | sourceName: string, |
| 3991 | toolInputSummary?: string | null, |
| 3992 | ) => (request: PromptRequest) => Promise<PromptResponse>, |
| 3993 | ): AsyncGenerator<AggregatedHookResult> { |
| 3994 | const appState = toolUseContext.getAppState() |
| 3995 | const sessionId = toolUseContext.agentId ?? getSessionId() |
| 3996 | if (!hasHookForEvent('UserPromptSubmit', appState, sessionId)) { |
| 3997 | return |
| 3998 | } |
| 3999 | |
| 4000 | const hookInput: UserPromptSubmitHookInput = { |
| 4001 | ...createBaseHookInput(permissionMode), |
| 4002 | hook_event_name: 'UserPromptSubmit', |
| 4003 | prompt, |
| 4004 | } |
| 4005 | |
| 4006 | yield* executeHooks({ |
| 4007 | hookInput, |
| 4008 | toolUseID: randomUUID(), |
| 4009 | signal: toolUseContext.abortController.signal, |
| 4010 | timeoutMs: TOOL_HOOK_EXECUTION_TIMEOUT_MS, |
| 4011 | toolUseContext, |
| 4012 | requestPrompt, |
| 4013 | }) |
| 4014 | } |
| 4015 | |
| 4016 | /** |
| 4017 | * Execute session start hooks if configured |
no test coverage detected