export declare const Tools: { readonly FileRead: "file.read"; readonly FileWrite: "file.write"; readonly FileEdit: "file.edit"; readonly Shell: "shell"; readonly Search: "search"; readonly Other: "other"; }; export type ToolName = typeof Tools[keyof typeof Tools]; export type ObserverEvent = 'beforeTool' | 'afterTool' | 'beforePrompt' | 'sessionStart'; export interface ObserverContext { event: ObserverEvent; traceId: string; agent: { id: string; role: string; team: string; }; provider: string; thread: { id: string; }; tool: { name: ToolName | string; rawName: string; input: unknown; }; cwd: string; sessionId: string; config?: Record; pass(): ObserverResult; } export type ObserverResult = { type: 'pass'; }; export type HookEvent = 'beforeTool' | 'afterTool' | 'beforePrompt' | 'sessionStart'; export interface HookContext { event: HookEvent; traceId: string; agent: { id: string; role: string; team: string; }; provider: string; thread: { id: string; }; tool: { name: ToolName | string; rawName: string; input: unknown; }; cwd: string; sessionId: string; config?: Record; pass(): HookResult; deny(reason: string): HookResult; inject(message: string): HookResult; modify(patch: ToolInputPatch): HookResult; } export type HookResult = { type: 'pass'; } | { type: 'deny'; reason: string; } | { type: 'inject'; message: string; } | { type: 'modify'; patch: ToolInputPatch; }; export interface ToolInputPatch { input?: Record; systemPromptPrepend?: string; } export type Capability = 'inject' | 'deny' | 'modify' | 'ask';