/** * src/plugin/pipeline.ts — Central Hook Dispatch Pipeline for Weavetab Plugins * * Dispatches lifecycle events: * - onBeforeAction / beforeToolCall: Intercept tool calls, modify arguments, or block unauthorized actions * - onAfterAction / afterToolCall: Transform, redact, or augment tool return results * - onDOMMutation: Stream real-time DOM mutation deltas to registered plugins * - onPageNavigate: Notify plugins upon browser navigation */ import type { DOMMutationDelta } from "./interface.js"; export type BeforeToolCallHook = (toolName: string, args: Record, session?: any) => Promise | { __blocked: boolean; reason?: string; } | void> | Record | { __blocked: boolean; reason?: string; } | void; export type AfterToolCallHook = (toolName: string, args: Record, result: any, session?: any) => Promise | any | void; export type PageNavigateHook = (url: string, session?: any) => Promise | void; export type DOMMutationHook = (delta: DOMMutationDelta, session?: any) => Promise | void; export interface PluginHooksRegistry { beforeToolCall?: BeforeToolCallHook[] | BeforeToolCallHook; afterToolCall?: AfterToolCallHook[] | AfterToolCallHook; onBeforeAction?: BeforeToolCallHook[] | BeforeToolCallHook; onAfterAction?: Array<(tool: string, result: any, session?: any, args?: Record) => any> | ((tool: string, result: any, session?: any, args?: Record) => any); onDOMMutation?: DOMMutationHook[] | DOMMutationHook; onPageNavigate?: PageNavigateHook[] | PageNavigateHook; } declare class HookPipeline { private beforeToolCallHooks; private afterToolCallHooks; private onDOMMutationHooks; private onPageNavigateHooks; /** * Register hooks for a specific plugin. */ registerPluginHooks(pluginName: string, hooks: Partial & Record): void; /** * Remove all hooks registered by a plugin on unload. */ unregisterPluginHooks(pluginName: string): void; /** * Dispatches beforeAction / beforeToolCall hooks in sequence. * If a hook returns an object, arguments are augmented/modified. * If a hook returns { __blocked: true, reason } or throws, execution is aborted. */ dispatchBeforeToolCall(toolName: string, args: Record, session?: any): Promise>; /** * Alias for dispatchBeforeToolCall. */ dispatchBeforeAction(toolName: string, args: Record, session?: any): Promise>; /** * Dispatches afterAction / afterToolCall hooks in sequence. * Allows plugins to inspect, transform, or redact tool results. */ dispatchAfterToolCall(toolName: string, args: Record, result: any, session?: any): Promise; /** * Alias for dispatchAfterToolCall. */ dispatchAfterAction(toolName: string, result: any, session?: any, args?: Record): Promise; /** * Dispatches DOM mutation deltas to all listening plugins. */ dispatchDOMMutation(delta: DOMMutationDelta, session?: any): Promise; /** * Dispatches onPageNavigate hooks when navigation occurs. */ dispatchPageNavigate(url: string, session?: any): Promise; /** * Clears all registered hooks. */ clearAllHooks(): void; } export declare const hookPipeline: HookPipeline; export {};