export type PermissionState = "allow" | "deny" | "ask"; export type BuiltInToolName = "bash" | "read" | "write" | "edit" | "grep" | "find" | "ls"; export type ToolPermissions = Record; export type BashPermissions = Record; export type SkillPermissions = Record; export type SpecialPermissionName = "doom_loop" | "external_directory"; export type SpecialPermissions = Record; export interface PermissionDefaultPolicy { tools: PermissionState; bash: PermissionState; mcp: PermissionState; skills: PermissionState; special: PermissionState; } export interface AgentPermissions { defaultPolicy?: Partial; tools?: ToolPermissions; bash?: BashPermissions; mcp?: ToolPermissions; skills?: SkillPermissions; special?: SpecialPermissions; } export interface GlobalPermissionConfig extends AgentPermissions { defaultPolicy: PermissionDefaultPolicy; } export type BashAnalysisStatus = "ok" | "unparseable" | "too_large" | "unavailable"; export interface BashCommandUnit { command: string; startIndex: number; endIndex: number; kind: "command" | "opaque" | "output_redirect"; hasOutputRedirect: boolean; } export interface BashPermissionCheck extends BashCommandUnit { state: PermissionState; matchedPattern?: string; } export interface PermissionCheckResult { toolName: string; state: PermissionState; matchedPattern?: string; command?: string; bashAnalysisStatus?: BashAnalysisStatus; bashChecks?: BashPermissionCheck[]; target?: string; source: "tool" | "bash" | "mcp" | "skill" | "special" | "default"; }