claude-flow
Version:
Ruflo - Enterprise AI agent orchestration for Claude Code. Deploy 60+ specialized agents in coordinated swarms with self-learning, fault-tolerant consensus, vector memory, and MCP integration
267 lines • 7.22 kB
TypeScript
/**
* V3 Hooks System - Type Definitions
*
* Provides extensible hook points for tool execution, file operations,
* and session lifecycle events. Integrates with event bus for coordination.
*
* @module v3/shared/hooks/types
*/
/**
* Hook event types
*/
export declare enum HookEvent {
PreToolUse = "hook:pre-tool-use",
PostToolUse = "hook:post-tool-use",
PreEdit = "hook:pre-edit",
PostEdit = "hook:post-edit",
PreRead = "hook:pre-read",
PostRead = "hook:post-read",
PreWrite = "hook:pre-write",
PostWrite = "hook:post-write",
PreCommand = "hook:pre-command",
PostCommand = "hook:post-command",
SessionStart = "hook:session-start",
SessionEnd = "hook:session-end",
SessionPause = "hook:session-pause",
SessionResume = "hook:session-resume",
PreAgentSpawn = "hook:pre-agent-spawn",
PostAgentSpawn = "hook:post-agent-spawn",
PreAgentTerminate = "hook:pre-agent-terminate",
PostAgentTerminate = "hook:post-agent-terminate",
PreTaskExecute = "hook:pre-task-execute",
PostTaskExecute = "hook:post-task-execute",
PreTaskComplete = "hook:pre-task-complete",
PostTaskComplete = "hook:post-task-complete",
PreMemoryStore = "hook:pre-memory-store",
PostMemoryStore = "hook:post-memory-store",
PreMemoryRetrieve = "hook:pre-memory-retrieve",
PostMemoryRetrieve = "hook:post-memory-retrieve",
OnError = "hook:on-error",
OnWarning = "hook:on-warning"
}
/**
* Hook priority levels (higher = earlier execution)
*/
export declare enum HookPriority {
Critical = 1000,
High = 500,
Normal = 0,
Low = -500,
Lowest = -1000
}
/**
* Tool information for tool-related hooks
*/
export interface ToolInfo {
/** Tool name (e.g., 'Read', 'Write', 'Bash') */
name: string;
/** Tool parameters */
parameters: Record<string, unknown>;
/** Estimated execution time in ms */
estimatedDuration?: number;
/** Tool category */
category?: 'file' | 'bash' | 'search' | 'edit' | 'git' | 'other';
}
/**
* Command information for command-related hooks
*/
export interface CommandInfo {
/** Command string */
command: string;
/** Working directory */
cwd?: string;
/** Environment variables */
env?: Record<string, string>;
/** Command timeout in ms */
timeout?: number;
/** Whether command is destructive */
isDestructive?: boolean;
}
/**
* File operation information
*/
export interface FileOperationInfo {
/** File path */
path: string;
/** Operation type */
operation: 'read' | 'write' | 'edit' | 'delete';
/** File content (for write/edit operations) */
content?: string;
/** Previous content (for edit operations) */
previousContent?: string;
/** File size in bytes */
size?: number;
}
/**
* Session information
*/
export interface SessionInfo {
/** Session ID */
id: string;
/** Session start time */
startTime: Date;
/** Session end time */
endTime?: Date;
/** Session metadata */
metadata?: Record<string, unknown>;
/** User ID (if available) */
userId?: string;
}
/**
* Agent information
*/
export interface AgentInfo {
/** Agent ID */
id: string;
/** Agent type/role */
type: string;
/** Agent configuration */
config?: Record<string, unknown>;
/** Parent agent ID */
parentId?: string;
}
/**
* Task information
*/
export interface TaskInfo {
/** Task ID */
id: string;
/** Task description */
description: string;
/** Task priority */
priority?: number;
/** Assigned agent ID */
agentId?: string;
/** Task metadata */
metadata?: Record<string, unknown>;
}
/**
* Memory operation information
*/
export interface MemoryInfo {
/** Memory key */
key: string;
/** Memory value */
value?: unknown;
/** Memory namespace */
namespace?: string;
/** TTL in seconds */
ttl?: number;
}
/**
* Error information
*/
export interface ErrorInfo {
/** Error object */
error: Error;
/** Error context */
context?: string;
/** Error severity */
severity: 'warning' | 'error' | 'fatal';
/** Recoverable flag */
recoverable: boolean;
}
/**
* Hook context - contains information about the event being hooked
*/
export interface HookContext {
/** Event type */
event: HookEvent;
/** Timestamp when hook was triggered */
timestamp: Date;
/** Correlation ID for tracking related events */
correlationId?: string;
/** Tool information (for tool hooks) */
tool?: ToolInfo;
/** Command information (for command hooks) */
command?: CommandInfo;
/** File operation information (for file hooks) */
file?: FileOperationInfo;
/** Session information (for session hooks) */
session?: SessionInfo;
/** Agent information (for agent hooks) */
agent?: AgentInfo;
/** Task information (for task hooks) */
task?: TaskInfo;
/** Memory information (for memory hooks) */
memory?: MemoryInfo;
/** Error information (for error hooks) */
error?: ErrorInfo;
/** Additional metadata */
metadata?: Record<string, unknown>;
}
/**
* Hook result - returned by hook handlers
*/
export interface HookResult {
/** Whether the hook succeeded */
success: boolean;
/** Result data (can modify context) */
data?: Partial<HookContext>;
/** Error if hook failed */
error?: Error;
/** Whether to continue executing other hooks */
continueChain?: boolean;
/** Whether to abort the operation */
abort?: boolean;
/** Hook execution time in ms */
executionTime?: number;
/** Additional metadata */
metadata?: Record<string, unknown>;
}
/**
* Hook handler function type
*/
export type HookHandler = (context: HookContext) => Promise<HookResult> | HookResult;
/**
* Hook definition with metadata
*/
export interface HookDefinition {
/** Unique hook ID */
id: string;
/** Hook event type */
event: HookEvent;
/** Hook handler function */
handler: HookHandler;
/** Hook priority */
priority: HookPriority;
/** Hook name/description */
name?: string;
/** Whether hook is enabled */
enabled: boolean;
/** Hook timeout in ms */
timeout?: number;
/** Hook metadata */
metadata?: Record<string, unknown>;
}
/**
* Hook statistics
*/
export interface HookStats {
/** Total hooks registered */
totalHooks: number;
/** Hooks by event type */
byEvent: Record<HookEvent, number>;
/** Total executions */
totalExecutions: number;
/** Total failures */
totalFailures: number;
/** Average execution time in ms */
avgExecutionTime: number;
/** Total execution time in ms */
totalExecutionTime: number;
}
/**
* Hook execution options
*/
export interface HookExecutionOptions {
/** Timeout in ms (overrides hook-specific timeout) */
timeout?: number;
/** Whether to continue on error */
continueOnError?: boolean;
/** Maximum parallel executions */
maxParallel?: number;
/** Whether to collect results from all hooks */
collectResults?: boolean;
}
//# sourceMappingURL=types.d.ts.map