Packages
Hooks
Prompt lifecycle hooks, hook controls, and hook helper functions.
Import from @anvia/core/hooks when a reusable package needs hook contracts without importing agent construction or tool APIs. Application code can also import these symbols from @anvia/core.
PromptHook
interface PromptHook<RawResponse = unknown> {
onRunStart?: HookCallback<RunStartHookArgs>;
onRunEnd?: HookCallback<RunEndHookArgs>;
onRunError?: HookCallback<RunErrorHookArgs>;
onTurnStart?: HookCallback<TurnStartHookArgs>;
onTurnEnd?: HookCallback<TurnEndHookArgs<RawResponse>>;
onCompletionCall?: HookCallback<CompletionCallHookArgs>;
onCompletionResponse?: HookCallback<CompletionResponseHookArgs<RawResponse>>;
onCompletionError?: HookCallback<CompletionErrorHookArgs>;
onToolCall?: ToolCallHookCallback<ToolCallHookArgs>;
onToolResult?: HookCallback<ToolResultHookArgs>;
onToolError?: HookCallback<ToolErrorHookArgs>;
}
Purpose: intercept run lifecycle, turn lifecycle, completion calls, completion responses, completion errors, tool calls, tool results, and tool errors.
Return behavior: hook callbacks may continue, cancel, skip a tool, or request tool approval depending on the hook phase.
Controls
type HookAction = { type: "continue" } | { type: "terminate"; reason: string };
type ToolCallHookAction =
| { type: "continue" }
| { type: "skip"; reason: string }
| { type: "terminate"; reason: string }
| ({ type: "approval_request" } & ToolApprovalRequestOptions);
type HookResult = HookAction | undefined;
type ToolCallHookResult = ToolCallHookAction | undefined;
type ToolHookArgs = {
toolName: string;
toolCallId?: string;
internalCallId: string;
args: string;
};
type RunControl = {
continue(): HookAction;
cancel(reason: string): HookAction;
};
type ToolCallControl = {
run(): ToolCallHookAction;
skip(reason: string): ToolCallHookAction;
cancel(reason: string): ToolCallHookAction;
requestApproval(options?: ToolApprovalRequestOptions): ToolCallHookAction;
};
Purpose: give hook callbacks explicit control objects instead of requiring hand-written action objects.
Return behavior: controls create actions consumed by the active prompt request.
Helpers
function createHook<RawResponse = unknown>(hook: PromptHook<RawResponse>): PromptHook<RawResponse>;
function cancelPrompt(reason: string): HookAction;
function skipTool(reason: string): ToolCallHookAction;
function requestToolApproval(options?: ToolApprovalRequestOptions): ToolCallHookAction;
const runControl: RunControl;
const toolCallControl: ToolCallControl;
Purpose: define hooks and create common hook actions.
Notable errors: terminating hooks produce PromptCancelledError from @anvia/core/request. Approval requests without a configured handler produce ToolApprovalRequiredError from @anvia/core/request.
