/** * Callback Registry - Global callback system for PraisonAI TypeScript * * Provides display and approval callbacks matching Python's callback system. * * @example * ```typescript * import { registerDisplayCallback, registerApprovalCallback } from 'praisonai'; * * // Register display callback * registerDisplayCallback('agent_output', (data) => { * console.log('Agent:', data.content); * }); * * // Register approval callback * registerApprovalCallback(async (action) => { * return action.risk === 'low'; // Auto-approve low risk * }); * ``` */ /** * Display callback function type */ export type DisplayCallbackFn = (data: DisplayCallbackData) => void | Promise; /** * Display callback data */ export interface DisplayCallbackData { type: string; content?: string; agentName?: string; toolName?: string; timestamp: number; metadata?: Record; } /** * Approval request */ export interface ApprovalRequest { action: string; arguments: Record; risk: 'low' | 'medium' | 'high' | 'critical'; toolName?: string; agentName?: string; description?: string; } /** * Approval decision */ export interface ApprovalDecision { approved: boolean; reason?: string; modifiedArgs?: Record; } /** * Approval callback function type */ export type ApprovalCallbackFn = (request: ApprovalRequest) => ApprovalDecision | Promise; /** * Register a display callback for a specific type */ export declare function registerDisplayCallback(displayType: string, callback: DisplayCallbackFn, isAsync?: boolean): void; /** * Unregister a display callback */ export declare function unregisterDisplayCallback(displayType: string, callback: DisplayCallbackFn): boolean; /** * Register global approval callback */ export declare function registerApprovalCallback(callback: ApprovalCallbackFn): void; /** * Clear approval callback */ export declare function clearApprovalCallback(): void; /** * Execute sync callbacks for a display type */ export declare function executeSyncCallback(displayType: string, data: Omit): void; /** * Execute all callbacks (sync and async) for a display type */ export declare function executeCallback(displayType: string, data: Omit): Promise; /** * Request approval for an action */ export declare function requestApproval(request: ApprovalRequest): Promise; /** * Check if approval callback is registered */ export declare function hasApprovalCallback(): boolean; /** * Get registered display types */ export declare function getRegisteredDisplayTypes(): string[]; /** * Clear all callbacks */ export declare function clearAllCallbacks(): void; /** * Common display types */ export declare const DisplayTypes: { readonly AGENT_OUTPUT: "agent_output"; readonly AGENT_THINKING: "agent_thinking"; readonly TOOL_CALL: "tool_call"; readonly TOOL_RESULT: "tool_result"; readonly LLM_REQUEST: "llm_request"; readonly LLM_RESPONSE: "llm_response"; readonly ERROR: "error"; readonly WARNING: "warning"; readonly INFO: "info"; readonly DEBUG: "debug"; readonly WORKFLOW_START: "workflow_start"; readonly WORKFLOW_COMPLETE: "workflow_complete"; readonly STEP_START: "step_start"; readonly STEP_COMPLETE: "step_complete"; }; export type DisplayType = typeof DisplayTypes[keyof typeof DisplayTypes]; declare const _default: { registerDisplayCallback: typeof registerDisplayCallback; unregisterDisplayCallback: typeof unregisterDisplayCallback; registerApprovalCallback: typeof registerApprovalCallback; clearApprovalCallback: typeof clearApprovalCallback; executeSyncCallback: typeof executeSyncCallback; executeCallback: typeof executeCallback; requestApproval: typeof requestApproval; hasApprovalCallback: typeof hasApprovalCallback; getRegisteredDisplayTypes: typeof getRegisteredDisplayTypes; clearAllCallbacks: typeof clearAllCallbacks; DisplayTypes: { readonly AGENT_OUTPUT: "agent_output"; readonly AGENT_THINKING: "agent_thinking"; readonly TOOL_CALL: "tool_call"; readonly TOOL_RESULT: "tool_result"; readonly LLM_REQUEST: "llm_request"; readonly LLM_RESPONSE: "llm_response"; readonly ERROR: "error"; readonly WARNING: "warning"; readonly INFO: "info"; readonly DEBUG: "debug"; readonly WORKFLOW_START: "workflow_start"; readonly WORKFLOW_COMPLETE: "workflow_complete"; readonly STEP_START: "step_start"; readonly STEP_COMPLETE: "step_complete"; }; }; export default _default;