/** * Permission system types for Wave Agent SDK * Dependencies: None */ import { AskUserQuestion, AskUserQuestionInput, AskUserQuestionOption } from "./tools.js"; /** Permission mode configuration */ export type PermissionMode = "default" | "bypassPermissions" | "acceptEdits" | "plan" | "dontAsk"; /** Result of a permission check */ export interface PermissionDecision { /** Whether to allow or deny the operation */ behavior: "allow" | "deny"; /** Optional message explaining the decision (required for deny) */ message?: string; /** Signal to change the session's permission mode */ newPermissionMode?: PermissionMode; /** Signal to persist a new allowed rule */ newPermissionRule?: string; /** Signal to clear the conversation context and proceed with the plan */ clearContext?: boolean; } /** Callback function for custom permission logic */ export type PermissionCallback = (context: ToolPermissionContext) => Promise; /** Internal context passed to PermissionManager */ export interface ToolPermissionContext { /** Name of the tool being executed */ toolName: string; /** Current permission mode */ permissionMode: PermissionMode; /** Custom permission callback if provided */ canUseToolCallback?: PermissionCallback; /** Tool input parameters for better context */ toolInput?: Record; /** Suggested prefix for bash commands */ suggestedPrefix?: string; /** Whether to hide the persistent permission option (e.g., "Don't ask again") in the UI */ hidePersistentOption?: boolean; /** The ID of the tool call that triggered this permission request */ toolCallId?: string; /** The content of the plan being exited from */ planContent?: string; } /** List of tools that require permission checks in default mode */ export declare const RESTRICTED_TOOLS: readonly ["Edit", "Bash", "Write", "EnterPlanMode", "ExitPlanMode", "AskUserQuestion"]; /** Type for restricted tool names */ export type RestrictedTool = (typeof RESTRICTED_TOOLS)[number]; export declare const OPERATION_CANCELLED_BY_USER = "Operation cancelled by user"; export type { AskUserQuestion, AskUserQuestionInput, AskUserQuestionOption };